非接触式IC卡读卡器模块读卡原理实验
实验的目的在于了解非接触式IC卡读卡器及M1 卡原理及编程方法。
首先用程序对IC卡读卡器芯片(以下简称 PCD)进行寄存器初始化,完成后进入寻卡状态,通过天线发出寻卡信号。当有IC 卡(以下简称PICC,实验程序所使用的卡为MF1 S50 卡)进入天线有效操作区,并且得到能量后,返回给PCD 卡类型值。下一步PCD 对卡进行防冲突操作,PICC 得到防冲突操作信号后,返回给PCD 卡序列号。PCD 接收到序列号后,程序对序列号有效性判定。当确认PICC 序列号有效后,PCD 发送选卡命令,选卡命中包含送出所选卡序列号,这样保证进行下一步操作的卡唯一。PCD 装载密匙,所装载密匙与所要操作的PICC 扇区密匙一致,同一个扇有两组密匙,密匙A、B。如进行A 密匙认证则,装载的密匙为A 密匙,进行B 密匙认证,则需装载B 密匙。装载密匙成功后,开始三遍认证操作。
如下图所示为三遍认证的令牌原理框图:
认证过程是这样进行的:
(A)环:由 Mifare 1 卡片向读写器 发送一个随机数据 RB;
(B)环:由读写器收到RB 后向Mifare 1 卡片发送一个令牌数据TOKEN AB,其中包含了读写器发出的一个随机数据 RA;
(C)环:Mifare 1 卡片收到 TOKEN AB 后,对TOKEN AB 的加密的部分进行解密,并校验第一次由(A)环中Mifare 1 卡片发出去的随机数RB 是否与(B)环中接收到的TOKEN AB 中的RB 相一致;
(D) 环 : 如果(C)环校验是正确的,则Mifare 1 卡片向IC卡读写器 发送令牌TOKEN BA 给读写器;
(E)环:读写器收到令牌TOKEN BA 后,读写器将对令牌TOKEN BA 中的RB(随机数)进行解密;并校验第一次由(B)环中读写器发出去的随机数RA 是否与(D)环中接收到的 TOKEN BA 中的RA 相一致;
如果上述的每一个环都为“真”,都能正确通过验证,则整个的认证过程将成功。
读写器将能对刚刚认证通过的卡片上的这个扇区可以进入下一步的操作(READ/WRITE 等操作)。卡片中的其他扇区由于有其各自的密码,因此不能对其进行进一步的操作。如想对其他扇区进行操作,必须完成上述的认证过程。
认证过程中的任何一环出现差错,整个认证将告失败。必须从新开始。如果事先不知卡片上的密码,则由于密码的变化可以极其复杂,因此靠猜测密码而想打开卡片上的一个扇区的可能性几乎为零。
这里提醒一下程序员和卡片的使用者,必须牢记卡片中的 16 个扇区的每一个密码,否则,遗忘某一扇区的密码,将使该扇区中的数据不能读写。没有任何办法可以挽救这种低级错误。但是,卡片上的其他扇区可以照样使用。
上述的叙述已经可以充分地说明了 Mifare 1 卡片的高度安全性,保密性,及卡片的应用场合多样性,一卡多用(一卡通)。