物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  防伪  >  正文

非接触式智能卡安全协议改进研究

作者:冯静 许勇
来源:RFID世界网
日期:2009-07-29 09:02:30
摘要:随着身份认证技术向硬件发展和智能卡的广泛应用,非接触式智能卡系统安全问题的重要性日益显著。本文通过分析和利用现有的认证协议和密码算法,针对非接触式智能卡与读卡器间的通信提出了一种改进的安全协议。首先描述了改进的身份认证协议;然后介绍了安全信道的构建方法和数据完整性实现过程;最后通过对协议进行安全性分析,表明本协议有效抵抗了重放攻击和中间人攻击,降低了密钥泄漏的概率,减少了密钥泄漏的危害。

  1 引言

  随着智能卡技术的发展,智能卡可独立运行密码运算的自包容特性,使其在高安全性要求的场合得到了广泛的应用。目前,智能卡已广泛应用于身份合法性鉴别、数据存储或传输的私密性与完整性、信息交互的抗抵赖性以及移动计算等信息处理和信息安全领域。随着身份认证技术向硬件解决方案发展和智能卡的广泛应用,围绕着智能卡应用安全开展的理论和策略研究、芯片设计和产品开发既是学术界研究的热点,也是产业界关注的焦点。 

  非接触式智能卡作为智能卡技术的一个重要发展方向,卡与读卡器间的通信安全无疑是非接触式智能卡应用系统安全中的重中之重。非接触式智能卡通常含有用户的身份识别标示,通过特定的密码协议来保障其和读卡器间的安全交互。目前,非接触式智能卡存在的安全威胁主要包括如下几个方面:①智能卡的成本限制与协议安全强度之间的矛盾导致部分厂家为节约成本而舍弃安全性;② 设计者对智能卡的自包容特性盲目信任,对克隆攻击威胁认识不足;③智能卡的唯一身份标示容易泄露用户隐私。

  非接触式智能卡与读卡器间的信息安全包括了以下特性,即认证性、机密性和完整性。其安全应用的本质可总结为:构建安全终端(智能卡和读卡器之间的身份合法性鉴别)和搭建安全通道(在智能卡和读卡器之间搭建可信的智能卡信息交易通道)。

  本文通过分析和利用现有的认证协议和密码算法,针对非接触式智能卡与读卡器问的通信提出了一种改进的安全协议。

  本文所使用的符号如下:

  A:读卡器;B:智能卡;P:消息明文;Ei:i的公钥;Di:i的私钥;Ki:秘密密钥,i代表密钥所有者;Ks:会话密钥:Ri:i产生的随机数;P(R):由随机数R指向的身份信息;SSC:序列计数器。

  2 认证协议

  身份认证是指通信双方可靠地验证对方的身份。用以确保数据的真实性,阻止对手的主动攻击,如篡改或冒充等。认证往往是智能卡应用中安全保护的第一道防线。由于非接触式智能卡与读卡器间信道开放性的特点,使得身份信息在传递的过程中非常容易被泄露。因此一个安全的认证协议是非常重要的。

  目前智能卡上的身份认证一般都已经使用了动态鉴别,但其安全性完全依赖于密钥的私密性,一旦密钥泄漏,系统就会处于危险中。对此本文提出了以下改进。在非接触式智能卡中一般都存在着卡的唯一身份标识信息(如卡序列号,生产商代码等),在本协议中, 

身份认证协议

图1 身份认证协议

  对卡的身份标识信息进行扩展,使其成为一个唯一的身份标识数据块图D(当然不能太大导致超出卡的存储范围)。当每次卡与读卡器间进行相互认证时,只使用其中的一部分进行传输,具体协议如图1。在本协议中A、B预先知道了对方的公钥,并共享一个主秘密密钥Kab。协议描述如下:

  (1)A产生一个位置随机数R ,并用B的公钥Eb对其进行加密后传输给B,B收到后用自己的私钥Db进行解密得到Ra,R 经过一个位置置换函数T(位置的范围包括整个身份标识数据块图)得出D 中相应的数据信息位置,并读出该数据。

  (2)B用共享密钥Kab使用2-DES算法加密得出的身份信息,再产生一个位置随机数Rb,用A的公钥E 加密Rb,最后一起传送给A。

  (3)A用共享密钥K a b对消息2解密,将Ra输入与B中相同的位置置换函数T得出对应的数据信息位置,将K ab解密后得出的身份信息与A得出的信息进行对比,一致则认为B是合法的。再用A的私钥Da对Ea(Rb)进行解密得出Rb,将Rb经过位置置换函数T得出对应的数据信息位置,读出该数据,用kab使用2-DES算法加密该数据并传送给B,B解密后对其进行验证,一致则认为A是合法的,完成了A与B的相互认证。

  在这里,位置置换函数T起着非常重要的作用,它的任务是将接收到的随机数通过一系列的安全运算最终输出一个位置数,且要求这一过程只有A、B双方可以完成。我们可以使用2-DES算法生成MAC值的方法得出这一位置数,以位置随机数作为输入,使用共享密钥K ab得出一个函数值,即为所需的位置数。考虑到非接触式智能卡的硬件成本限制和认证的速度,大部分的数据流量都是用2-DES来加密的,而现在的智能卡大部分都添加了加密协处理器,可以加快加密速度。协议中的非对称算法使用的是ECC(椭圆曲线加密)算法,且只对两个随机数进行了加密,不会造成系统太大负担。

  3 信道安全

  在本协议中,每次通信都将使用一个新的随机选取的会话密钥,这样就使得利用用户的秘密密钥和公钥来发送的流量降低到最少,从而也减少了入侵者可能得到的密文数量。当会话建立后,所有的永久密钥都将退出通信过程,即使会话密钥暴露了,也可以将损害降到最低。

  下面介绍基于Diffie—Hellman密钥交换协议的会话密钥的产生。

  (1)A产生两个大随机数n和g,即D—H参数。这里要求n是一个素数,(n-1)/2也是一个素数,g是n的一个原根。这两个数可以公开的传送给B。

  (2)A选择一个大随机数X,x<n,X是保密的, 计算 ya=g x modn,将(n,g,Ya)发送给B。同样地,B 也选择一个秘密的大随机数Y,计算 =gYmodn,并 将Yb作为对A 的回应。

  (3)A通过计算K= yax modn得到了共享密钥Ka,B也通过计算K=ybx modn得到了共享密钥Kb。根据模算术定理,双方的计算结果是相同的。这样A、B就共享了一个秘密密钥K=Ka =Kb

  因为X和Y是保密的,一个入侵者可以利用的参数只有n、g、Ya和Yb。因而入侵者被迫取离散对数来确定密钥。例如,要获取B的秘密密钥,入侵者必须先计算Y,然后再使用B采用的同样方法计算其秘密密钥K。Diffie—Hellman密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。对于大的素数,计算出离散对数几乎是不可能的。

  同时为了防止中间人攻击,发送n、g、Y a和Yb时,使用主密钥K ab对其进行加密。具体协议如图2。 

 会话密钥生成协议

图2 会话密钥生成协议

  当然得到的K并不能直接用于会话密钥,因为这时的K只是长度不定的秘密数据串,而卡在进行加解密计算时所需的密钥长度是固定的。可以使用下面提到的Hash算法将可变长度的信息转化为固定长度的信息,而这个固定长度的数据串就是双方共享的会话密钥Ks。

  另外,在卡与终端进行通信时,若每次会话都重新生成一组D—H参数并执行相应的协商步骤,会造成通信的效率低下。因此,协议中建议采用同一组D—H参数来协商会话密钥,以保证执行效率。

  4 数据完整性

  由于非接触式智能卡与终端的通信是曝露在公开环境下的,双方在进行信息交换的时候,很容易遇到以下攻击:① 篡改通信数据;②使用伪造的消息,删除或使用之前发送的消息进行重放攻击。

  为了防止攻击者篡改A、B双方的通信数据,同时考虑到非接触式智能卡的运算效率,本协议使用MD5哈希算法计算数据的消息摘要得到固定长度的Hash值,附在密文后发送到接收方,接收方只需在解密密文后用MD5算法得出相应Hash值,并与接受到的Hash值相比较,结果相同则说明消息没有被篡改。 

消息传输协议

图3 消息传输协议

  而针对第二种情况,可以通过发送序列计数器机制保证信息的实时性和真实性,即在会话密钥的有效期内加入一个时间序列号。

  在安全通信中使用发送序列计数器机制不是由于它本身是安全方法,只有把发送序列计数器和安全协议结合起来才有意义,否则攻击者对计数器的任何修改都将难于察觉。序列计数器的工作原理是每个消息中含有一个依赖于它被发送的时间的序列号,这使得在过程中若去掉或插入一个消息时能立即被注意到,使得接受方可采取适当的对策。

  本协议中,每次会话都会产生一个唯一的共享密钥K,它可以用于对序列计数器(ssc)进行初始化。每发送一次消息计数器就被增量。计数器的长度可以根据需要通过哈希函数进行设定。具体协议如图3。

  5 安全性分析

  实际上不可能建立起一个具有完善的安全性能而不被任何人所渗透的完整系统,即使智能卡也是一样。为了保证双方通信的认证性、机密性和完整性,协议中针对这三方面进行了具体设计,希望使得它们之间的安全性可以相互叠加,即以逻辑或的关系结合在一起,当某一环节被攻击了,协议的后续操作能够有效的抵制和处理这些攻击。以下通过常见的攻击方法对本协议进行安全性分析。

  (1)在身份认证阶段,本协议不仅使用了非对称算法进行身份认证,同时加入了身份信息的动态认证,安全性不只紧紧依赖于密钥的保密性,同时也依赖于用户的身份标识信息的私密性,攻击者即使通过截获的大量信息分析出一方或双方私钥,也无法完成认证。因为攻击者无法通过截获的信息来获得完整的身份标识数据块图,因为攻击者并不知道置换函数的具体过程(它被秘密的存储在卡和终端内,并不出现在信道内),无法分析位置随机数所真正对应的位置号。有效抵制了猜测攻击。

  (2)本协议基于Diffie—Hellman算法,使用一次一密的方法来构建安全的通信信道。在会话密钥的生成过程中,通过加密公开数据防止了中间人攻击。同时即使本次会话密钥泄露了并不会导致之前会话密钥的泄漏,保证了密钥的前向安全性。

  (3)通过使用消息摘要的方式,有效防止了攻击者对消息的篡改。而在消息中加入序列计数器,则有效抵制了通过删除或使用之前发送的消息进行重放攻击。

  (4)为了防止基于已知明文一密文对的攻击,在本协议的通信过程中,避免了出现对应的明文一密文对。

  6 性能分析

  考虑到非接触式智能卡对实时性的要求较高,协议的实现过程需要具有较高的速率。在本协议中只有在身份认证的位置随机数传递和会话密钥生成时分别使用了ECC和Diffie—Hellman这两种非对称密钥算法。协议中的其他部分都使用了对称加密算法,计算速度很快。为了验证本协议的运算效率,模拟时钟频率为4.9MHz,带有DES协处理器的智能卡,在实验中对各步骤的耗时进行了测试。ECC密钥采用1 35b,Diffie—HelIman密钥采用1 28b,对称加密算法使用2-DES。在①②③节对协议的描述中,我们把安全协议分为3部分:①身份认证;②会话密钥生成:③双方的安全通信。在第一步耗时为0.742 s左右;第二步耗时为O.041 S左右,在此阶段D—H参数的生成和传递只需要一次,所以计算和通信时间不作考虑;第三步为双方的安全通信过程,由于使用了DES协处理器,每条消息的处理时间为0.25ms左右。在第一步中耗时较长,这是因为使用了非对称算法,且进行了多重置换。第二步由于使用了Diffie—Hellman算法进行密钥协商,耗时也较长。但总速度不超过1 S,可以认为协议能够满足实时性的要求。

  7 结束

  本文通过分析和利用现有的认证协议和密码算法,针对非接触式智能卡与读卡器间的通信提出了一种改进的安全协议。通过几种攻击方法对提出的协议进行验证,表明本协议可以有效抵抗重放攻击和中间人攻击;由于使用临时会话密钥,降低了密钥泄漏的概率;使用动态的身份信息,减少了密钥泄漏的危害。

  然而攻击的方法多种多 样,本协议仍然存在安全隐患,还需要通过更有效的方法对其进行分析和改进。考虑到非接触式智能卡的特性,本文的认证协议并没有引入可信的第三认证方,只是在卡与读卡器上完成独立的相互认证。

  (文/桂林电子科技大学计算机与控制学院 冯静 许勇)