欢迎您访问郑州兴邦电子股份有限公司官方网站!
阿里巴巴诚信通企业
全国咨询热线:40000-63966
兴邦电子,中国水控机第一品牌

联系兴邦电子

全国咨询热线:40000-63966

售后:0371-55132951/55132952

工厂:河南省 郑州市 高新区莲花街电子电器产业园

智能卡安全报文功能在网络认证和通信中的应用

文章出处:http://www.singbon.com 作者:段 斌   人气: 发表时间:2011年10月09日

[文章内容简介]:智能卡的安全报文功能可以有效地解决数据的可靠性、完整性和对数据发送方的认证等问题, 当智能卡用于网上付费或网上身份认证时, 其安全报文功能对网络认证和网上通信有着极为重要的作用。本文介绍在服务器通过网络对客户端IC 卡发送指令和接收响应的安全报文的实现方法。

    1 引 言
 
    随着电子商务的发展, 对安全可靠地实现网上支付及网上身份认证的要求越来越突出, 而利用带操作系统的智能CPU 卡是解决这个问题的首选方案。为防止信息在网上被截取、篡改或失密, 可以利用智能卡的安全报文功能。智能卡的安全报文功能, 是指若智能卡中的某应用文件的某些操作(如读、写等) 在发卡时已被设定为安全报文形式, 那么在对智能卡的该应用文件进行这些操作时, 终端发的指令和智能卡的应答都必须采用带MAC 或加密数据域的安全报文的形式。安全报文传送的目的是保证终端和智能卡之间所交换数据的可靠性、完整性和对发送方的认证。数据完整性和对发送方的认证通过使用WAC 来实现。数据的可靠性通过对数据域的加密来得到保证。
 
    2 系统结构
 
    2.1.1 概述
 
     本文所设计系统采用客户机ö服务器模式, 其中客户端为用户IC 卡操作方, 它连接IC 卡读卡器读写用户IC 卡, 服务器端为管理方和认证方, 它连接读卡器及PSAM 卡。系统有四个主体: 客户机(软件)、用户智能卡ICC、服务器(软件)、PSAM 卡。为保证系统的安全性, 操作ICC 的指令和应答都由服务器直接负责, 当客户机上有操作ICC 时由客户机通知服务器, 服务器产生操作ICC 的指令代码, 操作PSAM 卡计算出该指令信息安全报文的MAC 或数据域的密文, 形成安全报文形式的ICC 指令, 服务器将该指令经由网络送给客户机, 由客户机将此安全报文形式的指令代码送给ICC。ICC 在执行指令或解密出应答中的数据信息时, 判断ICC执行指令的情况并获得应答中的数据信息。从这个过程可以看出, 服务器事实上是操作用户IC 卡的一个远程终端, 而网络和客户机只是传递信息的媒体。因此, 我们只需构架好服务器和客户机之间信息交换的通信链路, 并设计好传送和接收信息的函数及指令包装方法, 对智能卡的网络安全报文的讨论可以等价于当地终端操作ICC 的安全报文。
 
    2.1.2 服务器和客户机之间通信链路的建立
 


图1 系统结构图

    该过程的实现主要利用了M FC 中的CSocket 类, 分别在客户端建立发送套接字, 在服务器端建立侦听、接收套接字。客户端与服务器端数据通信过程如图2 所示。
 


图2 客户端与服务器端数据通讯过程

    客户端生成一个从CSocket 类派生的CRequestSock 类, 该类的主要作用是向服务器端发出建立套接字连接的请求, 向服务器端发送智能卡的响应数据以及接收服务器端给智能卡的指令。服务器端生成一个从CSocket 类派生的CL isten ingSock 类, 该类的主要作用是侦听信道, 为每一个客户端套接字的连接请求建立一个相应的接收套接字, 并将它放入一个接收套接字队列中。接着服务器端生成一个CSocket 类派生的接收套接字类(CClien tSock) , 该类的主要作用是接收从客户端送来的智能卡响应信息。
 
    Clien t 与Server 数据通信通道建立后, 客户端和服务器发送信息代码时采用各自的函数:SendM sg (CRequestSocket3 pRequestSocket, un signed char3 pM sg. in t pM sgL en)客户端和服务器接收信息代码时采用各自的函数: FetchM sg (CRequestSocket3 pRequestSocket)这样, 服务器通过网络和客户机对智能卡的操作指令及应答信息只需将实际代码加进上面的函数即可。

    3 安全报文传送

    安全报文传送的目的是保证数据的可靠性、完整性和对发送方的认证。数据完整性和对发送方的认证通过使用MAC 来实现。数据的可靠性通过对数据域的加密来得到保证。 

    (1) 安全报文传送格式: 安全报文传送格式符合ISO 7816—4 的规定。当CLA 字节的第二个半字节等于十六进制数字‘C’时, 表明对发送方命令数据采用安全报文传送。卡中文件在文件头的ACs 中设定了该文件的各种操作分别是否用安全SM 1 而在文件头的SM 字节中则设定了安全报文是采用认证模式(A u then t icMode) 还是采用组合(Com b inedMode)。 

    (2) 报文完整性和验证:MAC 是使用命令的所有元素(包括命令头) 来产生的。一条命令的完整性, 包括命令数据域(如果存在的话) 中的数据元, 通过安全报文传送得以保证。MAC是命令数据域中最后一个数据元。MAC 的长度规定为4 个字节。 

    (3) SSC 在安全报文中作用: SSC (Send Sequence Coun ter) 是指传送序列计数器, 在用安全报文保护功能以前, 需执行EXCHAN GE CHALL EN GE 指令获得同时作用于终端和智能卡的SSC。它主要起以下几方面的安全作用:
    ①密文多样性: 同样的数据块加密时有不同的表现形式;
    ②丢失和插入的检测: 因每次生成安全报文的双方SSC 都加1, 所以若有数据块丢失或插入能随时检测出来。检测到数据块丢失或插入的错误后, 需运行EXCHAN GE CHALL EN GE指令重新同步双方的SSC;防止“重放攻击”: SSC 的功能使得同样的数据每次传送时有不同的MAC。所以有“重放攻击”时能够马上发现。 

    在网络应用中, 服务器作为远程终端操作智能IC 卡, 指令和应答都要通过网络来传送, 客户端对指令和应答只起传递作用。为保证SSC 的不可见, 可约定客户机对服务器发来的EXCHAN GE CHALL EN GE 进行一定的处理, 先让智能卡执行无安全报文的EXCHAN GECHALL EN GE 指令, 再发com b ined mode 形式的EXCHAN GE CHALL EN GE 安全报文指令, 将智能卡返回的应答直接传送给服务器, 这样就保证了SSC 对网络的保密性。 

    4 智能卡中文件操作的安全报文特性设定 

    (1) 意义: 对智能卡的身份识别信息文件设定安全报文特性。可以保证身份识别号的完整性和可靠性; 在网上远程识别时, 保证智能卡身份识别号对终端的隐蔽性。 

    (2) 身份识别信息文件的设定: 在发卡程序中, 执行CREA TE EF 指令生成DF Secu rity子目录下身份识别信息文件EF02 时,AC READ 的b it6 设为1, 即设定读操作指令用安全报文SM。将SM b ite 的b it2, b it1 设为11, 设定安全报文采用组合模式(com b ined mode) 在组合模式的安全报文中, 首先要将应用数据加密成密文。然后, 由这些应用数据密文和文件头计算出MAC。智能卡安全报文的另外一种模式是认证模式(au then t ic mode)。在认证模式的安全报文中, 要传送的应用数据不加密, 仅仅检测报文的认证码。设定身份识别号在EF02 的第三条记录中(RECORD= 03)。 

    (3) 设定SM 后文件操作方式的改变: 操作带安全报文的文件需遵循下面两条原则:
    ①已设定的SM 模式必须满足最小要求: SM 模式要求按由小到大的排序是无SM 认证模式、组合模式。按照这条原则, 设定为au then t ic mode 的文件操作指令可以用com b inedmode 传送。但不能用无SM 的模式发送, 而设定为com b ined mode 的文件操作指令只能用com b ined mode 传送。 

    ②每一个响应都是用与之相对应的指令相同的安全报文模式: 若文件操作指令的安全报文设定为au then t ic mode, 则该指令对应的安全报文也为au then t ic mode, 而SM 为com b inedmode 的指令, 其对应的SM 也为com b inedmode。但需注意的是, 此处把CA SE 2 (指令中无数据) 或CA SE 3 (响应中无数据) 的指令或响应的com b ined mode 看作等于au then t ic mode。在对EF02 实现com b inedmode 的安全报文设定后, 传送READ RECORD 指令时必须用com b ined mode, 因指令中无传送数据, 所以指令的com b ined mode 也就等于au then t ic mode。而响应是按照com b ined mode 产生和从用户IC 卡传送出来, 不但带了MAC 认证码, 而且读出的身份认证信息也是密文。服务器(网上认证) 可由MAC 认证码判断响应信息的完整性, 身份认证信息的密文传送保证了身份认证信息的可靠性和对终端和网络的隐蔽性, 服务器须解密密文获得身份认证信息。 

    5 智能卡安全报文密钥的设定
 
    在发卡程序中, 执行WR ITE KEY IN STALL 指令生成DF Secu rity. ISF 中的KEY1 作为SM KEY。KEY1 的A KD 的b it5= 1 (将KEY1 定义为defau lt) , b it4, b it3= 11 (SM 设定为com b ined mode) , b it2, b it1, b it0= 111。在PSAM 卡中发送KEY2 作为计算和验证MAC 的加密、解密密钥。 

第1页第2页

    值得注意的是, 设定为com b ined mode 的SM KEY, 可用于没有设定安全报文指令的au then t ic mode 安全报文形式和com b ined mode 安全报文形式。 

    6 网上安全报文工作流程
 


图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 卡的指令安全报文形式。

第1页第2页

本文关键词:智能卡,网络认证,网上支付,报文功能
回到顶部