付青琴,昂正全,徐平江
(1.国网电力科学研究院,江苏南京210003;2.北京航天飞行控制中心,北京100094)
智能卡之所以能够迅速地发展并且流行起来,其中一个重要的原因就在于它能够通过算法环境的安全体系给用户提供—个较高的安全性保证。而对智能卡进行认证,则能够获得智能卡的安全状态,获得一定的使用权限,从而进行一些与安全有关的操作。
传统的智能卡认证是通过智能卡和读写设备双方同时对相同的随机数进行某种相同的加密运算,然后判断双方运算结果的一致性来对智能卡的合法性进行验证,这样也就判定了一张智能卡是不是伪造卡。根据所认证的对象不同,智能卡认证又分为内部认证和外部认证两种。内部认证就是读写设备对智能卡的合法性进行的验证;外部认证就是智能卡对读写设备的合法性进行的验证[1,2]。
目前常用的认证算法是3DES算法。但是,随着3DES算法的被破解,芯片的安全性受到了威胁。如果有非法用户进行恶意的攻击,安全问题就岌岌可危。因为认证中采用的加密算法是固定的,非法用户就能够采用固定的算法进行攻击。另外,传统认证方法不能适应电流、功耗等攻击手段[3~13]。
针对此问题,本文设计了一个可以自定义算法环境的防攻击认证方法。此认证方法允许用户根据自己的应用要求设置算法环境,当算法环境变化时,认证采用的加密算法也是可变的。与此同时,还提供了一种防攻击的手段,此手段能够有效减少非法用户的攻击尝试次数,从而提高非法用户破解的难度。
传统智能卡的认证方法如图1所示,该方法先进行随机数的有效性验证,如果通过验证,则采用3DES算法对随机数进行加密,得到认证结果。将加密得到的认证结果与接受到的认证结果进行比较,如果一致,则认证成功;如果不一致,则认证失败,此时需要将认证对应的密钥尝试次数减1。
Figure 1 Traditional IC card external authentication method图1 传统智能卡外部认证方法
此种认证方法有自身的缺点,主要如下:
(1)传统认证方法固定采用3DES算法,攻击对象可以根据3DES算法的特点,专门针对3DES算法的破解来进行恶意攻击。如:常采用SPA、DPA攻击手段。
(2)传统认证方法先进行认证结果的比较,再扣减密钥的可尝试次数。但是,当攻击对象使用的认证结果与实际的认证结果不一致时,自动将智能卡进行断电操作,这时认证流程无法正常继续,那么相应认证密钥的可尝试计数器也就不会减1,这样攻击对象可以无限次地重复发送认证数据,直到尝试到正确的密钥。
针对常用认证方法存在的上述两个缺点,本文对认证命令及认证流程进行了重新设计,提出了一种自定义算法环境的防攻击认证方法。
自定义算法环境的防攻击认证方法流程如图2所示。
Figure 2 IC card external authentication method for avoiding attack图2 防攻击智能卡外部认证方法
从图2可以看出,改进的地方有两处:一是将尝试计数器减1操作提前到随机数验证之后;二是提供了一种自定义算法环境的加密方法,允许用户选择加密算法,从而提供多种认证算法,分别为:3DES算法(即8字节分组长度算法)、16字节分组长度算法。其中,3DES算法是目前流行的算法,16字节分组长度算法可以是任何算法,只要其分组长度为16字节即可。具体采用哪种算法进行认证,由应用者根据自己的需求决定。这就增加了应用的随机性和不确定性,提高了攻击的难度。
本文对现有的认证方法(包括内部认证和外部认证)分别进行了改进,可以认证MF、DDF、ADF等目录下的密钥,或者是主控(MK)密钥,从而达到一定的权限。
认证双方采用P1字节所指定的算法进行认证。认证分为内部认证与外部认证两种[14],格式分别如表1和表2所示。
表1中,(1)P1表示用户采用何种自定义的算法环境,比如:‘00’代表SM1算法,‘01’代表AES算法,‘02’代表3DES算法。
(2)P2的b1~b7为内部认证密钥的密钥标识。
(3)不管采用的认证算法分组长度是8或者16,其后跟随的认证数据长度Lc都是8。
(4)不管采用的认证算法分组长度是8或者16,其返回的加密认证数据长度Le都是8。
表2中,(1)P1表示用户采用何种自定义的算法环境,比如:‘00’代表SM1算法,‘01’代表AES算法,‘02’代表3DES算法。
(2)P2的b1~b7为外部认证密钥的密钥标识。
(3)不管采用的认证算法分组长度是8或者16,其后跟随的认证数据长度Lc都是8。
改进的基于用户自定义算法环境的防攻击智能卡认证方法包括以下步骤:
步骤1 智能卡产生一个随机数,随机数与智能卡本身所具有的识别码、密钥以及读卡机产生的随机数依据用户的指定,按照3DES算法或基于16字节分组长度算法进行加密,从而获得加密流。
步骤2 当采用基于16字节分组长度算法进行内部认证时,由于算法的分组长度为16字节,而输入的认证数据却只是8字节,需要将输入增加为16字节,则将8字节认证数据加上8字节认证数据的取反后得到的8字节一起构成16字节,qdrg进行加密,加密后的密文长度为16字节;由于传输的内部认证命令的输出认证数据长度为8字节,也需要将得到的16字节的结果中的前8个字节与后8个字节进行异或运算,得到最终的8个字节的认证数据,然后再传送出去。
Table 1 Command of internal authentication表1 内部认证的命令格式
Table 2 Command of external authentication表2 外部认证的命令格式
步骤3 当采用基于16字节分组长度算法进行外部认证时,所接受的数据格式同上述内部认证,需要智能卡先将卡内的“8字节随机数+8字节随机数的取反”用外部认证密钥加密后,前、后8字节异或,然后与输入的8字节外部认证数据比较,如果相同,则判定外部设备合法;否则,认为外部设备非法,拒绝后续流程。
进行外部认证的时候,为了防止用户的恶意攻击,设定一个限制外部认证密钥的使用次数计数器,在使用指定的外部认证密钥进行加密的时候,先判断指定的外部认证密钥可使用次数是否大于0,如果大于0,说明此密钥还可以用来做外部认证;否则,说明此密钥已经锁定,不能再用来做外部认证;如果密钥的使用次数大于0,将指定的外部认证密钥的可使用次数减1;如果最终外部认证成功,则将指定外部认证密钥的使用次数恢复成最大,以便后续认证继续使用。
与传统认证方法相比较,本文所提出的认证方法的优势如表3所示。从表3可以看出,本文提出的认证方案具有更高的安全性与适用性。
Table 3 Comparison of authentication methods表3 认证方法比较
本文提出一种改进的基于用户自定义算法环境的智能卡认证方法,使得智能卡可以根据用户自定义的算法环境,按照不同的算法进行认证,从而来改变全局安全状态寄存器或局部安全状态寄存器的值,这样既保证了认证算法的多样性,又提高了命令处理的复杂度。另外,本文还提出一种防攻击的方法,此方法通过限制外部认证密钥的使用次数,保证系统在被恶意攻击的情况下数据传输的安全性。
[1] Wang Ai-ying.Smart card technology[M].3rd Edition.Beijing:Tsinghua University Press,2009.(in Chinese)
[2] Mingwah Corporation.Smart Cos-PK-manual[Z].version 1.0.Shenzhen:Mingwah Ao han Science and Technology CO.,LTD.,2000.(in Chinese)
[3] Li Tao,Zeng Ying,Zhen Ji-na.A new remote double authentication scheme based on dynamic password[J].Microcomputer Information,2007,11(3):38-40.(in Chinese)
[4] Xue Feng,Wang Ding,Wang Li-ping,et al.Cryptanalysis of two smart card-based remote user password authentication protocol[J].Journal of Computer Applications,2012,32(7):2007-2009.(in Chinese)
[5] Wang Ya-fei.A smart card password authentication scheme study[J].Computer Applications and Software,2011,28(9):295-297.(in Chinese)
[6] Yang Li,Ma Jian-feng.Trusted mutual authentication scheme with smart cards and passwords[J].Journal of University of Electronic Science and Technology of China,2011,40(1):128-133.(in Chinese)
[7] Gao Liang,Fang Yong.A two-way user-identity authentication scheme based on smart card[J].Communications Technology,2011,44(2):85-86.(in Chinese)
[8] Kong Meng-rong,Zhu Guo-hua.Remote authentication scheme based on samrt card[J].Computer Engineering and Design,2008,29(3):606-608.(in Chinese)
[9] Wu Jian-wu.Novel remote password authentication scheme based on smart card[J].Computer Engineering &Applications,2007,43(33):158-160.(in Chinese)
[10] Zhang Xin,Feng Quan-yuan.Dynamic ID-based remote user authentication scheme[J].Computer Engineering and Design,2007,28(3):545-546.(in Chinese)
[11] Roweis S,Winfree E,Bvrgoyne R,et al.A sticker-based model for DNA computation[J].Journal of Computational Biology,1998,5(4):615-629.
[12] Adleman L.Molecular computation of solutions to combina
torial problems[J].Science,1994,266(5187):1021-1024.[13] ISO.ISO/IEC 7816-4,Identification cards-Integrated cir
cuit cards-part 4:organization,security and commands for interchange[S].Geneva:ISO,1996.
附中文参考文献:
[1] 王爱英.智能卡技术[M].第三版.北京:清华大学出版社,2009.
[2] 明华科技.SmartCos-PK-manual[M].Version 1.0.深圳:深圳市明华澳汉科技股份有限公司,2000.
[3] 李涛,曾英,甄姬娜.一种新的基于动态口令的远程双向认证[J].微计算机信息,2007,23(11):38-40.
[4] 薛峰,汪定,王立萍,等.对两个基于智能卡的口令认证协议的安全性分析[J].计算机应用,2012,32(7):2007-2009.
[5] 王亚飞.一种基于智能卡口令认证方案的研究[J].计算机应用与软件,2011,28(9):295-297.
[6] 杨力,马建峰.可信的智能卡口令双向认证方案[J].电子科技大学学报,2011,40(1):128-133.
[7] 高亮,方勇.一种基于智能卡的双向身份认证方案[J].通信技术,2011,44(2):85-86.
[8] 孔梦荣,朱国华.基于智能卡的远程认证体制[J].计算机工程与设计,2008,29(3):606-608.
[9] 吴建武.一种基于智能卡的远程口令认证方案[J].计算机工程与应用,2007,43(33):158-160.
[10] 张馨,冯全源.基于动态ID的远程用户身份认证方案[J].计算机工程与设计,2007,28(3):545-546.