思步网

查看: 18860|回复: 32
打印 上一主题 下一主题

[理论与实践] 加密SIM卡开发流程

  [复制链接]
:lol



加密SIM卡开发流程
第一步:首先确认流程是否正确:

            ⑥获取ICCID,得到X1--|
                                |
                                |-⑦Kc=3DES(Km,X1)-|
                                |                  |
                        |--④Km-|                  |-⑧Kc=3DES(Kc,X2)-|
            |---②RND1--|                          |                |
            |           |------------⑤X2-----------|                     |
            |                                                       |
①取20字节--|                                                        |--⑨得到C
            |                                                       |
            |                                                       |
            |----------------------------③RND2-------------------------|



待续...① 从SIM卡接收到20字节的随机数;
② 从20字节随机数中取前4字节作为RND1;
③ 从20字节随机数中取后16字节作为RND2;
④ 取RND1的第四字节(从左到右)与“0X07”进行“与”操作,再对其结果取模5的值,模5的结果(0—4之间)即为所要选择的主密钥的索引号;再根据索引号从主密钥数组中找到一组Km;
⑤ 获取分散因子X2(8字节长),取RND1作为分散因子X2的前四字节,后面不足补0X20;
⑥ 获取分散因子X1(8字节长),取SIM卡的ICCID的后8字节即可;(注意:取回的ICCID每个字节的前4位和后4位是颠倒的)
⑦ 用Km左右主密钥,加密分散因子X1:(注意:加密数据是8字节,加密结果也是8字节)
a) Kcl = 3DES(Km, X1);(注意:Kcl为Kc的左8字节)
b) Kcr = 3DES(Km, NOT X1); (注意:Kcr为Kc的右8字节)
c) Kc = Kcl || Kcr;
⑧ 用第七步骤中的结果Kc作为主密钥,加密分散因子X2,加密方法同步骤七;
⑨ 用第八步骤中的结果Kc作为主密钥,加密RND2,得到的结果即为最后的密文C;
a) C = 3DES ( Kc, RND2);(注意:加密数据是16字节,加密结果也是16字节)
⑩ 最后在把厂商代码(1字节)、密钥版本(1字节)和密文C(16字节)发送回SIM卡。
第二步:确认加密算法是否正确:
按照下面的密钥对明文加密,如果结果是一致的,那说明加密算法正确。
* 8字节密钥,8字节明文
* Key   : 0123 4567 89ab cdef
* Plain  : 0123 4567 89ab cde7
* Cipher : c957 4425 6a5e d31d
*
* 16字节密钥,8字节明文
* Key   : 0123 4567 89ab cdef fedc ba98 7654 3210
* Plain  : 0123 4567 89ab cde7
* Cipher : 7f1d 0a77 826b 8aff
*
* 16字节密钥,16字节明文
* Key   : 0123 4567 89ab cdef fedc ba98 7654 3210
* Plain  : 0123 4567 89ab cdef 0123 4567 89ab cdff
* Cipher : 27a0 8440 406a df60 278f 47cf 42d6 15d7
*
* 24字节密钥,8字节明文
* Key   : 0123 4567 89ab cdef fedc ba98 7654 3210 89ab cdef 0123 4567
* Plain  : 0123 4567 89ab cde7
* Cipher : de0b 7c06 ae5e 0ed5
*
* 24字节密钥,16字节明文
* Key   : 0123 4567 89ab cdef fedc ba98 7654 3210 89ab cdef 0123 4567
* Plain  : 0123 4567 89ab cdef 0123 4567 89ab cdff
* Cipher : ad0d 1b30 ac17 cf07 0ed1 1c63 81e4 4de5
*
第三步:验证各个步骤是否正确:
1. 从SIM卡取回20字节随机数,这里用下面这组代替:
5C 34 44 66   20 20 20 20   01 C0 34 E4   19 AB 44 89   90 A5 03 56
2. 取得RND1:
RND1 = 5C 34 44 66
3. 取得RND2:
RND2 = 20 20 20 20   01 C0 34 E4   19 AB 44 89   90 A5 03 56
4. 取得Km:
Index = (0x66 & 0x07)%5 = 1;
Km = MainKey[1],在这里用下面这组替代:
6e 5b 38 47 d1 c7 c1 86 28 7c 18 6a 35 a5 e3 20
5. 获取分散因子X2:
X2 = 5C 34 44 66 20 20 20 20
6. 获取分散因子X1:
ICCID = 98 68 45 23 12 45 67 56 35 45
X1 = 45 23 12 45 67 56 35 45
7. 用Km加密X1:
X1 = 45 23 12 45 67 56 35 45
Km = 6e 5b 38 47 d1 c7 c1 86 28 7c 18 6a 35 a5 e3 20
Kcl = 3DES(Km , X1):
Kcl = 5A 6B 3D 1D A7 D6 09 35
Kcr = 3DES(Km , NOT X1):
Kcr = F9 75 AA E6 47 67 35 B3
Kc = 5A 6B 3D 1D A7 D6 09 35 F9 75 AA E6 47 67 35 B3
8. 用Kc加密X2:
X2 = 5C 34 44 66 20 20 20 20
Km = 5A 6B 3D 1D A7 D6 09 35 F9 75 AA E6 47 67 35 B3
Kcl = 3DES(Kc , X1):
Kcl = 4F F4 BC 09 32 57 92 7E
Kcr = 3DES(Kc , NOT X1):
Kcr = 87 23 26 36 8B 48 77 E9
Kc = 4F F4 BC 09 32 57 92 7E 87 23 26 36 8B 48 77 E9
9. 用Kc加密RND2:
Kc = 4F F4 BC 09 32 57 92 7E 87 23 26 36 8B 48 77 E9
C = 3DES(Kc, RND2);
C = AC DA 08 20 DC 5D EA 94 67 8C EA 4D F9 62 F8 76
10. 把密文C发送回SIM卡,SIM卡会发回91XX。当然根据上面的数据只能验证具体那个步骤可能有问题而已,这个数据发给SIM卡,返回的肯定是认证失败,因为这是我自己用的测试数据。

结束。大家有啥意见就直接提啊。



[ 本帖最后由 pengbaozhu 于 2008-12-1 21:06 编辑 ]


上一篇:ISO内审过程
下一篇:ISO的冥思矫正
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

好贴...lz有没有C的源码?
我也是坐沙发的
LZ你能不能淡定点哈~
沙发位出租~
鼎力支持!!
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
不错 支持一个了
向楼主学习
我也来顶一下..
确实不错,顶先
我了个去,顶了
以我的经验来看,楼主的想法是可以执行的~
很有借鉴意义,先收藏了,谢谢楼主。
很有借鉴意义,先收藏了,谢谢楼主。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部