改进的基于用户自定义算法环境的防攻击智能卡认证方法
技术领域
本发明属于智能卡的认证方法领域,涉及一种改进的基于用户自定义算法环境的防攻击智能卡认证方法。
背景技术
智能卡之所以能够迅速地发展并且流行起来,其中的一个重要的原因就在于它能够通过COS的安全体系给用户提供一个较高的安全性保证。而对智能卡进行认证,则能够获得智能卡片的安全状态,达到一定的使用权限,从而进行一些与安全有关的操作。
认证则是通过智能卡和读写设备双方同时对任意一个相同的随机数进行某种相同的加密运算,然后判断双方运算结果的一致性来对智能卡的合法性进行验证,这样也就判定了一张智能卡是不是伪造卡。根据所认证的对象不同,又分为内部认证和外部认证两种。内部认证就是读写设备对智能卡的合法性进行的验证;外部认证就是智能卡对读写设备的合法性进行的验证。
目前认证采用的算法,常用的是DES算法。但是随着对DES算法的破解,使得芯片的安全性受到了威胁,如果有非法用户进行恶意的攻击,安全问题就岌岌可危。
发明内容
本发明提出采用一种改进的基于用户自定义算法环境的智能卡认证方法。使得卡片可以根据用户自定义的算法环境,按照不同的算法进行认证,从而来改变全局安全状态寄存器或局部安全状态器的值,这样即保证了认证算法的多样性,又提高了命令处理的复杂度。
在本发明中,还提出一种防攻击的方法,此方法通过限制外部认证密钥的使用次数,保证系统在被恶意攻击的情况下,数据传输的安全性。
依据本发明的一种改进的基于用户自定义算法环境的防攻击智能卡认证方法,包括以下步骤:
(1)智能卡产生一个随机数,随机数与智能卡本身所具有的识别码、密钥,以及读卡机产生的随机数依据用户的指定,按照DES算法或基于16字节分组长度算法进行加密,从而获得加密流;
(2)当采用基于16字节分组长度算法进行内部认证时,由于算法的分组长度为16字节,而输入的认证数据却只是8字节,需要将输入增加为16字节,则将8字节认证数据加上8字节认证数据的取反后得到的8字节一起构成16字节,从而进行加密,加密后的密文长度为16字节;由于传输的内部认证命令的输出认证数据长度为8字节,也需要将得到的16字节的结果中,前8字节数据与后8字节的数据进行异或运算,得到最终的8个字节的认证数据,然后再传送出去;
(3)当采用基于16字节分组长度算法进行外部认证时,所接受的数据格式同上述内部认证,需要智能卡先将卡内的“8字节随机数+8字节随机数的取反”用外部认证密钥加密后,前后8字节异或,然后与输入的8字节外部认证数据比较,如果相同,则判定才外部设备合法;否则,认为外部设备非法,拒绝后续流程。
其中,在使用外部认证的时候,为了防止用户的恶意攻击,设定一个限制外部认证密钥的使用次数计数器,在使用指定的外部认证密钥进行加密的时候,先判断指定的外部认证密钥可使用次数是否大于0,如果大于0,说明此密钥还可以用来做外部认证;否则,说明此密钥已经锁定,不能再用来做外部认证;如果密钥的使用次数大于0,将指定的外部认证密钥的可使用次数减一;如果最终外部认证成功,则将指定外部认证密钥的使用次数恢复成最大,以便后续认证继续使用。
其中,所述内部认证的命令格式为:
1)P2的bit8位如果为1的话,则使用的密钥是ADF下密钥标识为bit1~bit7的内部认证密钥;
2)P2的bit8位如果为0的话,则使用的密钥是MF或DDF下密钥标识为bit1~bit7的内部认证密钥;
3)不管采用的认证算法分组长度是8或者16,其后跟随的认证数据长度Lc都是8;
4)不管采用的认证算法分组长度是8或者16,其返回的加密认证数据长度Le都是8。所述外部认证的命令格式为:
1)P2的bit8位如果为1的话,则使用的密钥是ADF下密钥标识为bit1~bit7的外部认证密钥;
2)P2的bit8位如果为0的话,则使用的密钥是MF或DDF下密钥标识为bit1~bit7的外部认证密钥;
3)不管采用的认证算法分组长度是8或者16,其后跟随的认证数据长度Lc都是8。
本发明的有益效果是:
1.认证方法多样性:即有DES算法,又有16字节分组长度算法,具体选择采用何种方法进行认证,用户可以根据自己的需要,自行确定算法环境。
2.对内部认证、外部认证的方法进行了改进,当采用16字节分组长度算法,由于算法的分组长度为16字节,而认证数据的长度却只需要8字节,这就添加了一些特殊的处理,使得窃听者破译的难度增加。
3.对外部认证密钥,增加使用次数的限制,如果密钥的使用次数减为0时,则禁止做任何认证操作,使卡片无效,从而防止了恶意攻击,增加了认证的可靠性。
附图说明
下面结合附图对本发明进一步说明。
图1是依据本发明的方法的内部认证实现流程图。
图2是依据本发明的方法的外部认证实现流程图。
具体实施方式
本发明可以提供多种认证算法,分别为:DES算法、16字节分组长度算法。其中:DES算法是目前流行的算法,16字节分组长度算法可以是任何算法,只要其分组长度为16字节即可。具体采用哪种算法进行认证,由应用者根据自己的需求决定采用哪种算法环境。这就增加了应用的随机性和不确定性,增加了攻击的难度。
本发明主要是对现有的认证方法(分为:内部认证、外部认证)进行了改进,可以分别认证MF、DDF、ADF下的密钥,或者是主控(MK)密钥,从而达到一定的权限。
下面将分别介绍内部认证、外部认证的命令格式。
1.内部认证命令格式
注:内部认证(INTERNAL AUTHENTICATE)命令所使用的密钥(由P2参数指定)必须满足可使用条件。
2.外部认证命令格式
注:外部认证(EXTERNAL AUTHENTICATE)命令所使用的密钥(由P2参数指定)必须满足可使用条件。验证失败,错误计数器减一。连续失败达到错误计数器设定的最大值,所用密钥将被锁定。
由于认证通常使用公知的DES算法,在此就不再对DES算法的认证部分做描述,只就16字节分组长度算法部分进行具体的解释。
当采用16字节分组长度算法进行内部认证时,由于算法的分组长度为16字节,而输入的认证数据却只是8字节,所以此时需要将输入增加为16字节,本发明就是将:“8字节认证数据+8字节认证数据的取反”进行加密,加密后的密文长度为16字节,而我们传输的内部认证命令的输出认证数据长度为8字节。这就需要将得到的16字节结果,前后8字节进行异或,得到最终的认证数据,然后再传送出去。当有外界截获此命令时,就算是已知16字节分组长度算法原理,但是想要从前后8字节异或后的8字节数据推出原始的16字节密文数据很难。再加上内部认证密钥的未知性,使得破解可能性极小。其具体实施流程图参见附图1。
当采用16字节分组长度算法进行外部认证时,所接受的数据格式同上述内部认证,需要智能购电卡先根据卡内的随机数用外部认证密钥加密后,前后8字节异或,然后与输入的8字节外部认证数据比较,相同的话,才认为外部设备合法。否则,认为外部设备非法,拒绝后续流程。由于随机数的时效性,算法的不公开性,和外部认证密钥的保密性,保证了应用的安全性。其具体实施流程图参见附图2。
而在外部认证的时候,为了防止用户的恶意攻击,在使用密钥进行加密的时候,先将密钥的可使用次数减一,如果认证成功了,再将密钥使用次数恢复成最大。
上面已经根据特定的示例性实施例对本发明进行了描述。对本领域的技术人员来说在不脱离本发明的范围下进行适当的替换或修改将是显而易见的。示例性的实施例仅仅是例证性的,而不是对本发明的范围的限制,本发明的范围由所附的权利要求定义。