2016-10-10 2 views
1

Je travaille actuellement sur un soft phone fonctionnant sous Windows, l'objectif étant de pouvoir faire un appel depuis un numéro de téléphone standard, en utilisant une carte sim, via VoLTE (Voice over LTE).Sim Authentification

Actuellement, je suis en mesure de contacter le HSS/HLR et recevoir un 401 non autorisé avec un nonce (selon la norme RFC3310). Ce nonce devrait recevoir en entrée un algorithme AKAv1-MD5, qui renverra une nouvelle valeur qui peut être envoyée au HSS/HLR et l'autorisation est faite, ceci ne peut être fait que sur une carte sim. Il ne peut pas être fait sur un ordinateur en raison d'une autre entrée à l'algorithme qui est hautement confidentiel et seulement connu par une carte SIM. Par conséquent, je voudrais savoir comment je peux interfacer avec une carte sim à travers un lecteur de cartes sim, envoyer le nonce à la carte, et le laisser calculer la réponse et la renvoyer. Comme mon projet est écrit en C#, il est préférable que certains en-têtes pour C# existent.

Étant donné que j'utilise VoLTE, la carte SIM doit être un USIM, l'interface doit donc être un USIM.

Je peux, si nécessaire, obtenir la clé Ki de la carte SIM, parce que je travaille avec un opérateur téléphonique.

Répondre

2

Vous (très probablement) la recherche de la commande AUTHENTICATE tel que défini dans 3GPP TS 31.102 (anciennes variantes de la même commande ont été considérés comme RUN GSM ALGORITHM ou INTERNAL AUTHENTICATE dans le passé).

Pour l'utiliser, vous devez remplir certaines conditions, citant TS 31,102:

La fonction est liée à un USIM particulier et ne doit pas être exécutable à moins que l'application USIM a été sélectionné et activé, et le répertoire en cours est l'ADF USIM ou tout sous-répertoire sous cet ADF et une procédure réussie de vérification par PIN a été effectuée (voir l'article 5).

La sélection de l'application USIM est décrite dans la section USIM sélection de l'application, quelques notes:

  • format de fichier EF.DIR est spécifié dans ETSI TS 102 221 (ISO 7816-4 provient de)

  • USIM AID devrait commencer par A00000000900001 (RID = A0000000090, PIX = 0001...) tel que défini dans ETSI TS 101 220

  • Pour la vérification du code PIN, la commande VERIFY PIN doit être utilisée comme définie dans ETSI TS 102 221 (il peut être plus facile de désactiver le code PIN). Prenez garde que vous devez pad la valeur PIN avec 'FF' octets, citant:

PIN et PIN2 sont codés sur 8 octets. Seuls les chiffres (décimaux) (0-9) doivent être utilisés, codés dans l'UIT-T T.50 [5] avec le bit 8 mis à zéro. Le nombre minimum de chiffres est 4.Si le nombre de chiffres présentés par l'utilisateur est inférieur à 8, le ME doit remplir le code PIN présenté avec «FF» avant de l'envoyer à l'application 3GPP.

La cryptographie sous-jacente est> un peu < décrit dans (probablement la section authentification et accord clé).

Pour réellement communiquer avec la carte à puce à partir de .NET, utilisez pcsc-sharp. Un exemple de code est here et here.


Si vous pouvez obtenir le Ki et connaître l'algorithme correct alors je vous recommande fortement d'utiliser l'approche d'émulation »si possible (ne peut pas aider ici - mais voir par exemple this post avec quelques liens intéressants).

Avertissement: Mon expérience amateur GSM a pris fin il y a plusieurs années (avant 2.5G) afin de valider s'il vous plaît ne mes pensées

Bonne chance - vous aurez besoin certainement!

EDIT>

Osmocom fournit un outil simple - Osmo-sim-auth qui effectue l'authentification - pourrait être utile pour vous.

+0

J'ai aussi trébuché sur Osmo-sim-auth, et il semble faire l'affaire. Mais pour être honnête, je ne sais pas si c'est correct de toute façon. Il est capable de communiquer avec une carte SIM et de calculer des informations d'identification UMTS, mais puis-je les utiliser pour l'authentification VoLTE (l'authentification 3g ne suffit pas)? – Niva

+0

@Niva Mon pari est oui. Je suis allé à travers quelques spécifications, mais ensuite trouvé [cet] article (http://www.simpletechpost.com/2012/11/aka-digest-authentication-scheme-for.html) qui semble raisonnable. A partir des spécifications, vous devez savoir si vous avez USIM ou ISIM pour un mappage d'identité différent. (Je suis sur une glace mince maintenant, alors s'il vous plaît ne valider mes pensées) – vlp

+0

L'osmo-sim-auth a fait le travail! Ma solution (ce n'est pas joli, mais ça marche!): J'utilise une application appelée boghe, écrite en C#, C++ et c. – Niva