首页 > 代码库 > 杂说卡片与卡片安全 (让我们来说说低频卡/高频卡/磁条卡和接触式卡)
杂说卡片与卡片安全 (让我们来说说低频卡/高频卡/磁条卡和接触式卡)
本人在安全领域也有些年头了,首次在这里发帖,和大家做个朋友,相互探讨下,如果有相同兴趣爱好的,可以一起聊聊。首先声明,本人不是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等,主要内部有一些存储,但相对保护比较简单。
这部分现在也不展开了。