来源:中国一卡通网 作者:段 斌 发布时间:2010-07-30 14:43:45 字体:[大 中 小]
摘 要:智能卡的安全报文功能可以有效地解决数据的可靠性、完整性和对数据发送方的认证等问题, 当智能卡用于网上付费或网上身份认证时, 其安全报文功能对网络认证和网上通信有着极为重要的作用。本文介绍在服务器通过网络对客户端IC 卡发送指令和接收响应的安全报文的实现方法。
图3 安全报文工作示意图
安全报文工作示意图如图3 所示。为最大限度地保证安全性, 安全顺序计数SSM 的值也用安全报文的形式生成并从网上传送。服务器端计算指令的MAC 和验证应答的MAC 工作都由PSAM 卡完成。
7 CA SE4 指令及应答安全报文的实现方法
(1) EXCHAN GE CHALL EN GE 指令的Com b ined mode 模式SM 形式CLA IN S P1 P2 L c TPV L P I‖CG YL e L L e TCS L Check sum8c 80 03 00 14 87 09 01‖eKSM (RND IFD 97 01 04 8e 04 xx xx xx xx 00
(2) 计算Check sum 过程:
①将指令的头4 个字节垫以’80’, ’00’, ’00’, ’00’生成块1; CLA IN S P1 P2 PADD IN GS ‘8C’‘80’ ‘03’ ‘00’ ‘00’ ‘00’
②将(TPV ,L , P I) 和CG 域的头5 个字节组成块2;
③将CG 域剩余的3 个字节和TL c,L ,L e 再垫以80, 00 组成块3;
④将前面执行的无安全报文形式的EXCHAN GE CHALL EN GE 指令的应答中(RND ICC)的头二个字节作为SSC 的初始值, 并将SSC 加1, 将SSC 分别与CLA , IN S 异或, 生成新的块1:
⑤对数据块用SM 密钥做DES 运算, 数据块的链接用CBC 模式, 设初始值为8 个字节的‘00’, 按图4 所示方法计算前面形成的数据块对的MAC;
⑥将计算得出的MAC 的头4 字节作为指令的校验码CC。
(3) 检测应答校验码的过程
用户卡首先产生响应1: ’61’, ’11’。在执行完带L e= ’11’的GET RESPON SE 指令后,用户卡将产生如下所示的响应2:TCG LCG P I‖CG TCC LCC Check sum SW 1 SW 2‘87’ ‘09’‘01’‖eKSM (RND ICC) ‘8E’ ‘04 ‘xxxxxxxx’ ‘90’ ‘00’
由响应中信息计算MAC 与响应中的Check sum 比较以检测响应报文校验码的操作过程如下:
①将TCG,L CG, P I 和CG 的头5 个字节组成块1将CG 域的后3 个字节并垫以‘80’,‘00’,‘00’,‘00’,‘00’组成块2
②将SSC 加1
③将块1 的头2 字节分别与SSC 异或产生新的块1
④对数据块用SM 密钥做DES 运算, 数据块的链接用CBC 模式, 设初始值In it ialvecto r 为8 个字节的‘00’, 按类似图4 所示方法计算前面形成的数据块队的MAC。
⑤将计算得出的MAC 的头4 个字节与应答中的Check sum 比较, 由此判断应答数据的完整性和正确性。对EXCHAN GECHALL EN GE 指令的应答不能作本步验证, 因IC 卡的SSC 已换成新的。但对于其它指令都需用此方法验证应答信息的可靠性。
图4 计算指令MAC 的过程
图5 响应中应用数据密文计算明文的过程
(4) 由密文获取明文的方法:对密文数据块用SM 密钥做DES- 1 解密运算, 数据块的链接用CBC 模式, 设初始值In it ial vecto r 为8 个字节的‘00’, 按图5 所示方法计算出密文数据的明文。此数据的头二字节即为新的SSC。
8 指令流程
(1) 交换随机数:
comm and: 80 80 03 00 04 01 02 03 04104respon se: 78 b1 f3 82 90 00得到SSC 的商始值: 78 61
(2) 计算exchange challenge 指令中的数据域密文comm and: 80 f8 00 87 08 01 02 03 04 80 00 00 00respon se: ac a6 00 16 02 d2 5a 72 d5 aa f6 34 5b 30 a6 e2 90 00得到数据域密文为: ac a6 00 16 02 d2 5a 72
(3) 计算com b ined mode 的exchange challenge 指令的MAC:comm and: 80 f8 00 87 18 f4 32 03 00 80 00 00 00 87 09 01 ac a6 00 16 02 d2 5a 72 97 0104 80 00respon se: c1 37 c2 16 5c fe af 38 31 7a 1a df 76 f0 79 26 22 35 2d 1e 37 5f 93 92 b8 9e b92b d9 35 b0 0e 90 00得到MAC: 22 35 2d 1e说明: 应答域设为97 01 08 则出错, 但没有应答域可以。
(4) 发com b ined mode 的exchange challenge 指令comm and: 8c 80 03 00 14 87 09 01 ac a6 00 16 02 d2 5a 72 97 01 04 8e 44 22 35 2d 1e 00 respon se: 87 09 01 99 f8 10 96 c3 e6 bc e0 8e 04 63 92 f5 ed 90 00 从密文数据99 f8 10 96 c3 e6 bc e0 解密出明文为: b3 a7 c5 5a, 得到SSC 的初始值为b3a7服务器将此SSC 加2 (因IC 卡生成应答安全报文时已将SSC 加1) , 便可生成发给IC 卡的指令安全报文形式。
推荐文章
论坛热帖