智能卡安全初探

| 2009年3月23日星期一

From: http://www.sinoutopia.org/wp/?p=1918

今天一早,手机订阅的手机报上面就有一条新闻《一卡通“刷”进超市》。一直以来,对智能卡的安全都有所关注,最近也正好多看了些这方面的内容,就乘这个机会把相关的想法整理记录下来,与大家分享。

智能卡的种类非常多,如果按照存储方式来划分的话,主要由磁卡、IC 卡、异型卡(比如说那种打孔的大学食堂饭卡,这种名称是我自己随便定义的)等。

银行磁卡二代身份证饭卡

在这几种卡理存储量最大的是 IC 卡,磁卡和异形卡存储的数据都很少。异形卡一般只存储了用于标识自己的标识信息(序列号);磁卡一般保存了标识信息、少量的附加信息(简单的帐号信息、以 及校验信息);IC 卡保存了标识信息以外往往还有很多附加信息。目前,在国内使用得最广泛的智能卡系统就是磁卡,其次是 IC 卡,而异型卡基本上只在特定的领域才有使用。

保密性

由于各种智能卡的主要用途是用来识别用户的身份,因此,对于智能卡而言,CIA 中的“保密性”必然是最重要的了。

由于异形卡保存的信息完全是编码后保存在卡片的物理结构中,其实这种原理类似于传统的钥匙。只要有人能够拿到这种异形卡的图像信息或者物理接触卡片,就可以完全复制卡片中存储的标识信息。如果缺乏其他的手段,异形卡的数据几乎无法保障数据的保密性,复制卡片将难以避免。(扩展阅读《通过照片盗取钥匙易如反掌》)。

磁卡保存的信息是保存在卡片背面的磁条上的,由于现在的磁卡(主要是银行磁卡)基本上都满足 ISO7810 系列标准的相关要求,因此只要以非常低廉的价格购买到读写设备,就能完全复制卡片中的所有数据。当然,以现在民间的技术,对磁卡的读写操作是必须物理接触的。因此,只要能物理访问到磁卡,磁卡的保密性就难以得到保障。如果缺乏其他的手段,磁卡中数据的保密性几乎无法保障,复制卡片将难以避免。(扩展阅读《磁卡的基础知识》、《中国建设银行储蓄卡卡号编码规则和磁条数据格式标准》)

而对于 IC 卡而言,基本上可以分为接触式的 IC 卡非接触式的 IC 卡两种。接触式的 IC 卡大家见得最多的可能就是 IC 电话卡,非接触式的 IC 卡大家最常见的就是二代身份证和公交一卡通。IC 卡中有一类是只存储了用于标识卡片的序列号,这类 IC 卡通常被成为 ID 卡,而另外一类 IC 卡存储空间较大,而且能够实现一定的算法,通常被成为智能卡 IC 卡。 例如充值类的 IC 卡,比如电卡、IC 电话卡都是接触式的智能 IC 卡,门禁卡一般是非接触式的 ID 卡,二代身份证和护照一般都是非接触式的 IC 卡。ID 卡一般是只读卡片,卡内存储的数据只有一个由厂商写入的 ID 号,而这个 ID 号非常容易被复制(通过模拟电信号的方式实现)。而智能卡的数据读取和写入一般都通过密钥控制,甚至每个扇区都有相应的读密码和写密码。

ISO14443 Type A

目前,这方面已经有很多相关的研究成果,攻击者可以通过逆向工程的方法猜测 IC 卡中存储的密钥数据,这种思路来自于针对移动运营商 SIM 卡的攻击方法。一旦攻击者获得密钥数据,就可以对卡片进行复制和篡改。这种攻击已经非常广泛的流传开了~(扩展阅读《How they hacked it: The MiFare RFID crack explained》、《RFID hack could crack open 2 billion smart cards》、《Students’ Subway Security Talk Canceled by Court Order》、《Cryptanalysis of Crypto-1》,前段时间说到的对于护照的破解,并不是指出入境的护照。)

完整性

异形卡只要通过改变形状被改变卡片所存储的数据,如果在整个体系中缺乏其他的手段,异形卡所保存的数据几乎无法保证完整性。目前的解决方案通常是通 过设置校验位来检测数据损坏。由于异形卡通常记录的都是只读数据,因此除了标识符以外,很难保存其他数据,因此可以通过某种加密的方式对数据进行加密,增 加伪造卡片的难度。

同样,由于非常容易读取和修改磁卡中保存的数据,因此磁卡中数据完整性也完全依赖于整个体系中的其他手段,除非利用密码学提供的方法来保障磁卡中的数据安全,否则将很难以避免数据被篡改(《中国建设银行储蓄卡卡号编码规则和磁条数据格式标准》中描述的 CVV 就是一个非常好的防伪造、防篡改的方案)。但由于磁卡非常容易复制,在磁卡中存储类似余额这样的数据将无法得到安全保障(可以将消费前的磁条数据完全复制下来,消费完成后再将数据写回磁卡)。

对于 IC 卡而言,读写权限都依赖于密码,目前在已知攻击方法都是针对密码的攻击。在破解密码之后,再对 IC 卡内的数据进行完全复制或篡改。除此之外,尚未发现其他的攻击方法。

可用性

由于除非接触的 IC 卡以外,其他的智能卡几乎都是接触式的,而对于接触式的智能卡而言,除物理或电气损坏的方式以外,几乎没有有效的影响可用性攻击方式。对于非接触式的 IC 卡而言,主要的影响可用性的攻击方式是针对数据链路层的攻击(非接触式的 IC 卡通常符合 ISO14443、ISO15693、15693 等标准,使用固定的无线电频段,而 IC 卡发出的无线电信号非常微弱,因此无线电频率的阻塞可以有效的进行拒绝服务攻击),也有一些利用 IC 卡自身安全特性的拒绝攻击(例如二代身份证据说有一个安全特性是磁场场强超过一定程度, 二代身份证将自我保护,避免远程读取。另外通过暴力尝试接触式的 IC 卡的密码,诱发 IC 卡的安全机制导致 IC 卡自毁,从而实现拒绝服务攻击)。

PS:这篇文章已经太长了,先到这里,都是自己从各个渠道获得的信息整理而来,主要的目的是共享和备忘。如果有文中描述的内容有误,请大家通告一下,我会修改这篇文档。后面可能会写针对二代身份证和市政交通一卡通安全问题和解决方案的文章。

0 评论: