杂说卡片与卡片安全 (让我们来说说低频卡/高频卡/磁条卡和接触式卡)

2013-08-30 366465人围观 ,发现 22 个不明物体 无线安全极客

本人在安全领域也有些年头了,首次在这里发帖,和大家做个朋友,相互探讨下,如果有相同兴趣爱好的,可以一起聊聊。首先声明,本人不是rfid行业或者相关行业的,此贴兴致纯属个人爱好,如有不同意见,也欢迎提出。这贴我不会讲太多的细节,但是不表示某些细节不重要或者不清楚, 希望以后针对有些topic再做展开。此贴只作为一个开张索引。

在标题上不特地指明是rfid卡是因为,这贴想讲的比较普遍一点,不仅仅是rfid,但是应该和rfid相对更相关一点。闲话不多,开始。

我这里主要讨论我所接触过的一些卡片,其实并不全面。主要分类:
1: 低频卡, 主要是指125k或者134kHz的卡片,其实低频卡有id卡和更复杂的卡片。

我主要接触的低频卡有以下几种常用的:
Em410: 简单来说他用曼彻斯特编码循环发送一组64bits的数据。64bits内部的含义去除各种校验位,起止位以后,表示5个byte。
Hid: 简单来说,用fsk编码循环发送一组数据(多少位是可变的), 相同时间段内8次波动和10次波动分别表示0或者1。
T55x7: 这个卡可牛逼了,可以形象的想做低频卡里的万精油, 有1个配置段,7个数据段(最后一个可以兼容密码段),和几个trace段 (印象里每个段都是32bits), 写的编码都一致,读的编码根据配置的编码来。


2:高频卡,主要是指13.56Mhz 的rfid卡

常见的有以下几种:
完全符合14443a的卡片: 非常多的CPU卡符合这个标准
部分符合14443a的卡片: 比如常用的M1 (S50, S70),就属于这类卡片, 对于M1, 他的物理层和防冲突协议都是用14443a的,但是内容交换协议是nxp私有的。
完全符合14443b的卡片: 很多交通卡符合这个标准, 第2代个人身份证也属于这个标准, 14443a/b 基本都是使用apdu和卡片做通讯和命令交换。 
支持nfc的卡片:绝大多数14443a/b的卡片,sony的felica,还有些别的符合nfc标准, m1其实不在nfc标准内,但是nxp的芯片基本都可以支持它
CPU卡: 这个就厂商多了去了,大多数符合建设部标准,或pboc标准。 这些标准简单来说就是实现了某些特定的APDU API。 

 CPU卡相当于低频里的T55x7, 也是非常牛逼的卡。 不过典型的卡COS都是固化进ROM的,表示里面的code不能修改,这个不够牛逼
更好的卡其实是可以改COS的CPU卡,简单来说,这种CPU卡COS是写在EEPROM里的,可以多次修改,给大家非常大的自由度。
 (这个绝对是研究高频卡的人的究极道路,可以做很多事情,我们可以叫他神卡,因为基本无所不能, taobao上卖的有些卡是基于这种卡做的, 以后可以详细分析)
 (很多人玩proxmark, 其实这个卡从使用角度比proxmark方便很多,而且功能也不弱[仅13。56Mhz来说], usability更是牛逼的不得了)

信用卡: 国外很多信用卡也是这个频率的, paywave或者别的卡,国外已经有很多这方面的研究, 以后也可以展开讨论。 不过这个国内应用不多。
secure element: 这个是很多android手机里的一个芯片,可以模拟TAG, google wallet就是基于这个芯片的, 以后也可以展开。 (由于非实时操作系统的时序问题,靠nfc芯片来模拟比较不可行,openpicc这种基本都是失败的,所以这个是王道)
别的卡: 这里先不展开了, 以后再说。

3:磁条卡

这个大家都很熟悉,信用卡,星巴克卡,很多会员卡都是这种,一般上面就一个id,只读的,可以复制这个id到别的卡上。但id相应的数据一般是服务器端的

4:接触式卡

接触式卡一般分开接触式逻辑卡和接触式CPU卡,区别就是有没有COS。 理论上接触式卡和高频的非接触式卡,cos的大部分都是一样的,只有通讯相关的不一样,因为不需要防冲突等。
典型的中石油卡,各种芯片卡都是这种,甚至我们所用的手机卡,其实也算接触式卡,新的手机卡很多都是接触式CPU卡。
PSAM卡也是其中的一类CPU卡,被放在读卡器里提供密码和算法等功能。 长相和手机里的SIM卡长的也一样。引脚定义到处可以找到。 
逻辑卡的话,常用的有4442,4428等,主要内部有一些存储,但相对保护比较简单。 
这部分现在也不展开了。

本文的目的主要是和大家一起共享一下现在常见的卡的种类。 欢迎讨论, 欢迎拍砖:)

这些评论亮了

  • @waynezhang  就是因为外行才会觉得我不懂你在说什么~要不然我怎么会说我不懂rfid了~我倒非常喜欢有内行的指点一下,我也没有什么口水战好挑衅,只不过我你所说的兼容是安全问题的话,那样子PLUS的出现原来不是为了解决classic而是为了增加NXP其业务的不安全啊~难怪~这样子我就知道你所谓的杂说卡片与卡片安全何来的呢!
    正如好像你所说的彼此都是外行,所以我更加觉得需要你找一个内行的去解释一下你所谓5577复制的这个行为是安全问题一说!究竟是因为其兼容模式而出现的利用,还是说因为em410有所谓的安全问题!要不然岂不是所有Java卡都是Exp?Linux下的Wine也就是安全问题的存在?
    我们彼此对于模拟、兼容这些正常业务有很大的分歧!最起码我是绝对不赞成你所谓的兼容是安全问题!
    我只是认可之前一篇文章所说的ID/UID的唯一性不再是唯一的!因为兼容/模拟的存在,所以不可完全信任ID/UID的唯一性作为识别!这是隐患!借用某牛所说的不要把risk和vulnerability混为一谈!这和你所谓的在安全业界打滚多年有相当的出入啊!
    而且你说你拿张R/W的COS的CPU卡~或者麻烦请你找内行的告诉我,什么是可读可写的COS的CPU卡!还是说要找一张没有COS而可编程的JAVA卡!
    我觉得彼此对于名词的理解有很大出入!不管是模拟、兼容、风险、漏洞、CPU、JAVA等等!拜托找个内行的真正科普一下,如果好像正如你所说的,你只是说这些是你的想法,那没有错啊!因为那是你的想法~不是代表所有的!你也说了你不是内行,那就更加希望不要用你所认为的去告诉我们这些外行,这就是所谓正确的!因为我一直都在找究竟什么是以上所说的正确的!那就是为什么我还会继续回复你这个文章的原因所在!
    欢迎你来分享你的知识和你的想法,但是你真的没有在文章提出任何所谓的安全!如果你喜欢好像别人那样子不质疑不怀疑你的内容的话,那就不要在Freebuf发布你的文章,任何人都可以质疑或者怀疑任何人所发表的言论,正如别人所说不要用你的思想去左右我的思想!
    )8( 亮了
发表评论

已有 21 条评论

取消
Loading...
css.php