首页
学习
活动
专区
圈层
工具
发布

Sim认证
EN

Stack Overflow用户
提问于 2016-10-10 07:15:25
回答 1查看 1.5K关注 0票数 2

我目前正在开发一个在windows上工作的软电话,目标是能够通过VoLTE (VoLTE)从标准的电话号码(使用sim卡)打电话。

目前,我可以联系HSS/HLR,并收到一个401未经授权与现在(根据标准RFC3310)。这个现在应该作为一个输入,一个AKAv1-MD5算法,它将返回一个新的值,可以发送到HSS/HLR并完成授权,这只能在sim卡上完成。它不能在计算机上完成,因为算法的另一个输入是高度机密的,并且只能通过sim卡知道。

因此,我想知道如何通过sim读卡器与sim卡进行接口,将nonce发送到卡上,并让它计算响应并返回。

由于我的项目是用C#编写的,如果存在C#的某些头,则更好。

由于我使用的是VoLTE,所以sim卡必须是USIM,因此接口必须是USIM。

如果需要的话,我可以从sim卡中获得Ki密钥,因为我和一个电话接线员一起工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-11 09:44:27

您(很可能)正在寻找在AUTHENTICATE中定义的3 3GPP 31.102命令(相同命令的前一个变体在过去被称为RUN GSM ALGORITHMINTERNAL AUTHENTICATE )。

要使用它,您必须满足一些条件,引用TS 31.102:

该函数与特定的USIM相关,除非已选择和激活USIM应用程序,而且当前目录是USIM ADF或该ADF下的任何子目录,并且已执行了成功的PIN验证过程(见第5条),否则该函数不得执行。

USIM应用程序的选择在USIM应用程序选择一节中作了说明,注意:

  • EF.DIR文件格式以ETSI TS 102 221指定(来源于ISO7816-4)。
  • USIM应从A00000000900001 (RID=A0000000090,PIX=0001...)开始,如ETSI TS 101 220中所定义
  • 对于PIN验证,应该按照在VERIFY PIN中定义的那样使用ETSI TS 102 221命令(完全禁用PIN可能更容易)。请注意,您需要使用'FF'字节填充PIN值,引用如下:

PIN和PIN2按8字节编码。只能使用(小数)数字(0-9),在ITU-TT.50 5中编码,位8设置为零。最小位数为4。如果用户显示的数字数小于8,则ME应在将其发送到3 3GPP应用程序之前用“FF”填充所显示的PIN。

底层密码学是>somewhat<在3 3GPP 33.102 (可能是节身份验证和密钥协议)中描述的。

要与来自.NET的智能卡进行实际通信,请使用pcsc-夏普。一些示例代码是这里这里

如果您能够获得Ki并知道正确的算法,那么如果可能的话,我强烈建议使用‘仿真方法’(在这里无法帮助--但请参见这个职位和一些有趣的链接)。

免责声明:我的爱好者GSM经验几年前结束了(2.5G之前),所以请确认我的想法

祝你好运--你一定会需要它的!

EDIT>

Osmocom提供了一个简单的工具--执行身份验证的奥斯摩-西姆-奥斯 --可能对您有帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39953009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档