M1卡开发总结

概要

特性

  1. M1卡也叫S50卡,MIFARE RF 接口 (ISO/IEC 14443 A)
  2. 非接触数据传输并提供能源(不需电池)非接触数据传输并提供能源(不需电池)
  3. 工作距离:可达100mm (取决于天线尺寸结构)工作距离:可达100mm (取决于天线尺寸结构)
  4. 工作频率:13.56 MHz工作频率:13.56 MHz
  5. 快速数据传输:106 kbit/s快速数据传输:106 kbit/s
  6. 高度数据完整性保护:16 Bit CRC,奇偶校验,位编码,位计数高度数据完整性保护:16 Bit CRC,奇偶校验,位编码,位计数
  7. 真正的防冲突真正的防冲突
  8. 每张卡均有唯一ID,可复制的中国卡例外。

存储方式

  1. M1卡有16个扇区,每个扇区有4个块,地址0~63,共64个块,每个块16字节数据。
  2. 0号块,由制造商占用,包含序列号等信息,0号块出厂时已固化,不可修改。(可复制卡除外。。。)
  3. 每个扇区的最后一个块,比如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 制造商占用

卡认证方法

  1. 读写器指定要访问的区,并选择密钥A或B。
  2. 卡从位块读区密钥和访问条件。然后,卡向读写器发送随机数。(第一轮)
  3. 读写器利用密钥和随机数计算回应值。回应值连同读写器的随机数,发送给卡(第二轮)。
  4. 卡通过与自己的随机数比较,验证读写器的回应值,再计算回应值并发送(第三轮)。
  5. 读写器通过比较,验证卡的回应值。读写器通过比较,验证卡的回应值。
  6. 在第一个随机数传送之后,卡与读写器之间的通讯都是加密的。在第一个随机数传送之后,卡与读写器之间的通讯都是加密的。
  7. 每个扇区的密码可以是不同的,也可以是相同的,如果都相同,会降低破解的难度。
  8. 所有操作之前,必须先进行认证操作,认证不通过,则无法进行读写操作。所有,不知道卡密码,是无法读出卡中的数据的。这就是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是总结的很到位的,感谢提供帮助。

你可能感兴趣的:(硬件)