概要
特性
- M1卡也叫S50卡,MIFARE RF 接口 (ISO/IEC 14443 A)
- 非接触数据传输并提供能源(不需电池)非接触数据传输并提供能源(不需电池)
- 工作距离:可达100mm (取决于天线尺寸结构)工作距离:可达100mm (取决于天线尺寸结构)
- 工作频率:13.56 MHz工作频率:13.56 MHz
- 快速数据传输:106 kbit/s快速数据传输:106 kbit/s
- 高度数据完整性保护:16 Bit CRC,奇偶校验,位编码,位计数高度数据完整性保护:16 Bit CRC,奇偶校验,位编码,位计数
- 真正的防冲突真正的防冲突
- 每张卡均有唯一ID,可复制的中国卡例外。
存储方式
- M1卡有16个扇区,每个扇区有4个块,地址0~63,共64个块,每个块16字节数据。
- 0号块,由制造商占用,包含序列号等信息,0号块出厂时已固化,不可修改。(可复制卡除外。。。)
- 每个扇区的最后一个块,比如3号块,保存密码和控制位等信息。
扇区 | 块 | 块内16字节数据 | 说明 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
15 | 63 | KEYA | 控制位 | KEYB | 扇区块尾 | |||||||||||||
62 | 数据 | |||||||||||||||||
61 | 数据 | |||||||||||||||||
60 | 数据 | |||||||||||||||||
14 | 59 | KEYA | 控制位 | KEYB | 扇区块尾 | |||||||||||||
58 | 数据 | |||||||||||||||||
57 | 数据 | |||||||||||||||||
56 | 数据 | |||||||||||||||||
…… | …… | KEYA | 控制位 | KEYB | 扇区块尾 | |||||||||||||
数据 | ||||||||||||||||||
数据 | ||||||||||||||||||
数据 | ||||||||||||||||||
1 | 7 | KEYA | 控制位 | KEYB | 扇区块尾 | |||||||||||||
6 | 数据 | |||||||||||||||||
5 | 数据 | |||||||||||||||||
4 | 数据 | |||||||||||||||||
0 | 3 | KEYA | 控制位 | KEYB | 扇区块尾 | |||||||||||||
2 | 数据 | |||||||||||||||||
1 | 数据 | |||||||||||||||||
0 | 制造商占用 |
卡认证方法
- 读写器指定要访问的区,并选择密钥A或B。
- 卡从位块读区密钥和访问条件。然后,卡向读写器发送随机数。(第一轮)
- 读写器利用密钥和随机数计算回应值。回应值连同读写器的随机数,发送给卡(第二轮)。
- 卡通过与自己的随机数比较,验证读写器的回应值,再计算回应值并发送(第三轮)。
- 读写器通过比较,验证卡的回应值。读写器通过比较,验证卡的回应值。
- 在第一个随机数传送之后,卡与读写器之间的通讯都是加密的。在第一个随机数传送之后,卡与读写器之间的通讯都是加密的。
- 每个扇区的密码可以是不同的,也可以是相同的,如果都相同,会降低破解的难度。
- 所有操作之前,必须先进行认证操作,认证不通过,则无法进行读写操作。所有,不知道卡密码,是无法读出卡中的数据的。这就是IC卡的安全性所在。
读写卡流程
寻卡(REQUEST STANDARD / ALL)
卡上电复位后,通过发送request应答码(ATQA 符合ISO/IEC 14443A),能够回应读写器向天线范围内所有卡发出的request 命令。
寻卡有两种方式,一种是只寻找未休眠的卡,一种是寻找所有卡。如果发现卡无法休眠,也可能是寻卡的模式选择错误造成的。**
防冲突(ANTICOLLISION LOOP)
在防冲突循环中,读回一张卡的序列号。如果在读写器的工作范围内有几张卡,它们可以通过唯一序列号区分开来,并可选定以进行下一步交易。未被选定的卡转入待命状态,等候新的request命令。
选卡(SELECT CARD)
读写器通过select card命令选定一张卡以进行认证和存储器相关操作。该卡返回选定应答码(ATS= 08h),明确所选卡的卡型。
三轮认证(3 PASS AUTHENTICATION)
选卡后,读写器指定后续读写的存储器位置,并用相应密钥进行三轮认证。认证成功后,所有的存储器操作都是加密的。
读写
认证后可执行下列操作:
· 读数据块
· 写数据块
· 减值:减少数据块内的数值,并将结果保存在临时内部数据寄存器中。
· 加值:增加数据块内的数值,并将结果保存在数据寄存器中。
· 恢复:将数据块内容移入数据寄存器。
· 转存:将临时内部数据寄存器的内容写入数值块。
在读写器和卡之间的非接触通讯链接中实施下列机制,以保证数据传输的可靠性:
· 每块16 bit CRC
· 每字节的奇偶位
· 位计数检查
· 位编码,以区分”1”、 ”0”和无信息。
· 通道监控(协议序列和位流分析)
卡休眠(HALT)
操作完成后,可以将卡置成休眠转改,此时,将无法再进行读写操作。如寻卡模式为寻找未休眠卡,则不会再次出发寻卡成功。将卡置未休眠模式,可以防止连续出发刷卡操作。
操作位解析
现在的产品需求还没有用到修改操作位,没有做仔细的研究,待以后更新。。。
应用
IC卡可以作为门禁使用,也可以作为电子钱包,比如饭卡、公交卡使用。
当作为门禁卡使用时,一般在发卡时会将印刷在卡表面的卡号写入数据块中,在刷卡时,读取此卡号,再判断相应权限,完成开门等操作。
当作为饭卡等使用时,会进行卡的增值(充值),减值(消费)等操作。
其他
开发过程中查找了很多资料,其中https://blog.csdn.net/liujianhua1989/article/details/72639307是总结的很到位的,感谢提供帮助。