• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

M1卡科普知识 

目录

生活中接触的IC卡实在是太多了,而其中又有很大一部分都是M1卡,那么什么是M1卡呢?

科普知识

日常生活中,我们经常能碰到各种各样的卡,如银行卡,信用卡,公交卡,饭卡,水电卡,一卡通,门禁卡……银行卡信用卡,背后有一条黑色的一般都是磁卡;另外有一些卡上有裸露的金属片,一般都是接触式IC卡;什么都没有看到的一般属于非接触IC卡,当然接触式IC卡和非接触IC卡有时候也可以合并在一起做成一张卡。

这里我们只简单介绍非接触式的IC卡,非接触式的IC卡可以大体分为两类:高频卡和低频卡。如我们上面的VIP会员卡一般都是高频卡,工作频率在13.56MHz,有效的耦合距离一般是0~15cm;另一种如经常使用门禁钥匙扣卡,有一种厚厚的卡(芒果卡)都属于低频卡,工作频率一般在125KHz和134KHz(典型值)。关于这两种卡如何区分,方法有很多:通过外观,通过手电筒看卡内线圈大小,通过读卡器等。

我们继续把范围缩小,只讲讲高频卡。非接触式高频卡大概可以分为以下几类:

  • 只读卡:也就是常规的ID卡
  • 逻辑加密存储卡:一般符合ISO14443a标准,占据了绝大部分市场,主要是Philips的Mifare系列
  • CPU卡:一般符合ISO14443b标准,CPU卡内有COS(可以简单认为是一个微型的系统),典型的卡COS都是固化进ROM的,而还有部分可以修改COS的CPU卡,这种卡COS是写在EEPROM里的,可以多次修改,简直就是神卡啊。不过由于具有COS,加密协议可以自己定义,安全性是十分高的,破解的难度也是非常大的。

虽然CPU卡安全性高,但是成本高,那可都是白花花的银子呀。所以目前市面上仍然有许多14443a标准的M1卡在使用。

能量传递

看到这里,可能有小伙伴会很好奇IC卡上如此复杂的电路,那它哪来的供电呢?

IC卡工作的能量主要来源于读写器发出的信号,这些信号由两部分叠加:

  • 供电基波:该基波被卡接收后,卡内的LC电路产生谐振,使电容供电,电容的另一端接一个二极管,将电荷传到另一个电容内储存,当电荷累积使电压达到一定的值时,它就就可作为一个电源了;
  • 组合数据信号:IC卡接到后解调出各个命令和数据,进而就可以按照命令要求进行接收和发送数据了;

读写器中发送电磁波的电路称为PCD(proximity coupling device),IC卡中接收电磁波的电路则称为PICC(proximity integrated circuit card)

NFC和RFID

在这里顺便科普两个常见的基本概念:NFC和RFID。

RFID,Radio Frequency Identification,全称无线射频识别技术。它主要是通过无线电讯号识别特定目标,并可读写数据,但仅仅是单向的读取。 RFID有低频(几mm的传输距离)、高频(13.56Mhz)、超高频、微波频段等,频段不同,导致功率不同,导致传输的距离不同。

NFC, Near Field Communication,近距离无线通讯技术。它是由飞利浦公司和索尼公司共同开发的一种非接触式识别和互联技术,可以在移动设备、电子产品等之间进行近距离无线通信。现在很多智能手机也都具有nfc功能了。NFC可以看作是RFID的子集,用的是RFID的高频(13.56MHz)的标准。NFC可以读取基于ISO14443a/b标准的标签(也就是上面提及的IC卡)。

M1卡详解

M1卡也就是上面我们提到的兼容ISO14443a标准的卡片,主要分为S50和S70,两种类型卡片的区别主要是卡上空间不同:S50为1K,S70为2K。下面我们继续分析S50卡:

S50卡分为16个扇区(sector),每个扇区有4个块(block),每个块的空间为16byte,(乘起来就刚好是1024byte=1K~~~)。

对于S50卡的16个扇区,每个扇区都有独立的keyA和keyB用来进行访问控制,也就是你必须知道了KeyA或者KeyB才能读取到扇区内保存的数据。不过在没有Key的情况下,一般也还是可以读取到卡号的,卡号区(一般是0扇区的0块)一般不加密。(好多个“一般”情况,不过业内大家都是这么做的。。。)

对于每个扇区4个块,块0~2为数据块,块3为控制块,上面说到的KeyA、KeyB(每个长度都是6byte)就保存在块3中,每次读取卡片的时候,都会进行key校验。

m1card

对于S70卡,存储空间为2K,分为32个扇区。

存取控制

这里的分析比较难理解,故不过多讲解,有兴趣的自行研究吧。。。

在读取卡片数据的时候,有时候我们会发现,为什么可以用KeyA或者KeyB对数据进行读取,为什么读取出来的块3原本属于KeyA的字节始终是0?其实这就涉及到了M1卡的读取控制权限问题啦。

在上面的分析中,我们知道了每个扇区的块3保存了keyA/keyB,两个key占用了12byte,剩下中间的4byte即为访问控制,也就是决定采用keyA/keyB对块0~2内数据的读写权限。其中有效的为6,7,8byte,第9byte可以作为数据存储单元。

具体的权限控制规则可以参考以下几个表:


码字很辛苦,转载请注明来自ChenJiehua《M1卡科普知识》

评论