来源:微型机与应用2011年第15期 作者:叶飞,徐骏善 发布时间:2012-02-21 09:12:35 字体:[大 中 小]
摘 要:针对AFC系统中非接触式IC卡存储数据和传输数据所受到的安全风险进行详细分析。从认证、加密、完整性三个方面对非接触式IC卡数据安全阐述了解决方案,并提出了部分实现。
随着整个社会信息化进程的不断发展,尤其是国家“三金工程”的启动和发展,IC卡在我国的应用范围正不断扩大。与此同时,针对IC卡及其系统的各种攻击性犯罪现象随时可能出现,这就使得IC卡数据加密的研究和实现处于十分重要的地位[1]。
IC卡的安全级别分为:非加密存储卡、逻辑加密存储卡、CPU卡。非加密存储卡不需要对其进行密码核对就可以进行读写操作,其安全性最差;逻辑加密存储卡需要先通过装置(一般为读卡器)将密码送入卡中,IC卡核对密码正确后,输出正确的应答信号,才能进行下一步的操作,这样可以防止对卡中信息的随意阅读和改写,其安全性远远高于非加密存储卡;CPU卡因其具有微处理器,具有更高的计算能力和和编程能力,故其安全级别比逻辑加密存储卡更高。
在地铁AFC系统中,国内大部分都采用了逻辑加密存储卡,如南京地铁目前单程票都采用了MIFARE的Ultralight Token,而储值票(方卡)则采用了Mifare Desfire和Mifare Standard,这几种卡都是逻辑加密存储卡。事实上,非加密存储卡因其较差的安全性已经在很大程度上退出了市场。
1 IC卡面临的安全问题
1.1 安全类型缺陷
由于成本所限,IC卡本身很难保证足够的安全,非法用户可以使用合法的读卡器或者自构一个读卡器,直接与IC卡进行通信,从而很容易地获取IC卡内的所存数据,使IC卡面临数据被改写的风险。而IC卡的数据通信链路是无线通信连接,与有线连接不一样,无线传输的信号本身是开放的,这就给非法用户的侦听带来了方便。
在读卡器中,除了中间件被用来完成数据的遴选、时间过滤和管理之外,读卡器只提供用户业务接口,但不提供能够让用户自行提升安全性能的接口。
1.2 AFC系统中IC卡的安全问题
(1)车票安全:防止伪造、克隆、篡改、泄密、偷盗;
(2)设备安全:防止车票被偷盗后进行加值或复制,防止业务程序被攻击改变,防止重要参数及数据被改变;
(3)数据安全:防止篡改、窃取、丢失、抵赖;
(4)系统安全:防止攻击、破坏,泄露重要信息。
对于IC卡单程票,经过半自动售票机、自动售票机等环节发售到乘客手中,到出站闸机再进行回收。在整个使用过程中,IC卡处于两种状态:(1)在系统运营人员管理中,包括单程票的采购、初始化、发售、回收、循环运输等环节。(2)在乘客手中,从购买单程票到出站之间,对于IC卡储值票,经过半自动售票机、自动售票机等设备发售到乘客手中后,将一直在乘客手中重复使用,直至被收回。两种情况中,IC卡在乘客手中时有更大的不安全风险。但是整体而言,单程票处在安全范围内比例要比储值票大,尤其是储值票,由于其储值金额可能较大,所以被攻击的可能性更大。
2 密码学概述
密码学通常被定义为在通信过程中进行解密和加密的过程和技巧。
密码技术可用于解决以下三大领域内的安全问题[2]:
(1)认证。用于可靠的确定某人或某物的身份,防止有人冒充合法用户或防止设备冒充合法资源。
(2)加密。对数据进行编码以防搭线窃听的过程。加密所提供的保护也称为机密性业务,提供该业务用以保护数据安全,不被非法者偷听。
(3)完整性。保证数据没有经过篡改,需要确认所收到的消息正是所发送的消息。
本文中涉及到传输数据的安全和存储数据的安全两个方面。其中传输数据的安全主要包括数据的机密性、完整性、可获取性和真实性。数据的机密性、完整性和可获取性是通过对数据的加解密来实现的。数据的真实性是通过相互认证技术实现的。存储数据的安全是指数据的持久性,是通过存储区域的访问条件控制和冗余存储实现的。
3 地铁非接触式IC卡的加密措施
3.1 认证
在对IC卡进行读写操作之前,必须对IC卡的密码进行认证。如果认证通过,才允许进行下一步操作。
非接触式IC卡的密码认证分为五个步骤,其过程如图1所示。
(A)由IC卡向读卡器发送一个随机数据RB。
(B)读卡器收到RB后,向IC卡发送一个令牌数据TOKEN AB=EK(RB||RA||ID||T1),其中RA是读卡器发出的一个随机数,ID是IC卡的物理唯一序列号,T1是附加的时间戳数据。EK表示一种加密算法,如ASH-1算法。
(C)IC卡收到TOKEN AB后,对TOKEN AB的加密部分进行解密,并校验第一次由(A)中的IC卡发出的随机数RB是否与(B)中接收到的TOKEN AB中的RB相一致。
(D)如果(C)环节校验结果正确,则IC卡向读卡器发送令牌TOKEN BA=EK(RA||RB||T2)给读卡器。
(E)读卡器收到令牌TOKEN BA后,将对令牌TOKEN BA中的RB(随机数)进行解密;并检验由(B)中读卡器发出的随机数RA是否与(D)中接收到的TOKEN BA中的RA一致。
地铁IC卡共有16个分区,每个分区都分别有自己的密码,互不干涉。因此即使通过了一个分区的的密码认证,也不能对其他的分区进行读写操作。如果想对其他分区进行操作,必须按照该分区密码重新完成上述的认证过程。每个分区都可独立地作为某一种应用,这也是IC卡一卡多用的原理。
如果上述的每一个环节都能正确通过验证,则整个认证过程将成功。认证过程中的任何一个环节出错,则整个认证过程终止,认证过程必须重新开始。如果事先不知道IC卡的密码,全部搜索需要很长时间,随机地给出一个密码而打开IC卡的一个分区的可能性几乎没有。
3.2 消息加密
目前使用较广泛的密码算法主要有对称密钥算法DES(Data Encryption Standard)、IDEA(International Data Encryption Algorithm)和公共密钥算法RSA(由Rivest,Shamir,Adleman三人于1978年提出),DSA(Digital Signature Algorithm)等。
3.2.1 南京地铁2号线采用了3DES算法
DES 算法产生于20 世纪70 年代,是传统的分组密码代码学的代表,其运算速度较快,但其密钥太短(56 bit),通过穷举法即可将其攻破。因此出现了改进的DES算法,即3DES算法[3]。3DES算法加密时对原始明文进行三次DES处理,采用K1、K2、K3三个不同密钥(长度均为8 B),如图2所示。解密时对密文按相反的顺序,还原成原始明文。为了减少系统在生产和管理密钥的开销,一般将K1、K3设为相同值,但K1、K2绝不能相同,否则三重DES就失去了意义。3DES虽然降低了一定的运算速度,但是密钥长度是原来的两倍,安全性能得到了极大提高,迄今为止尚未被攻破,已成为一种国际公认的加密标准。
其加密代码如图3所示。
推荐文章
论坛热帖