基于RC522的非接触式IC卡读卡器设计(含程序) 下载本文

内容发布更新时间 : 2024/5/21 23:43:45星期一 下面是文章的全部内容请认真阅读。

中北大学2016届毕业设计说明书

?

可重复写入10万次

(3) 安全性

安全的重点是防盗窃。相互随机数和应答认证、数据加密和报文鉴别检查和,防止各种破解和篡改,使其更适于票务应用。不可更改的序列号,保证了每张卡的唯一性[7]。 ? 相互三轮应答认证(ISO/IEC DIS9798-2) ? 射频通道数据加密

? 每个区的尾块有两个密钥,按应用场合不同密钥分级 ? 每张卡的序列号唯一

?

在通信过程中以发送密钥保护对存储区的访问权

2.1.2 结构功能说明

天线能量卡数据读卡器4匝线圈嵌入的芯片模块

图2.2 Mifare卡内部结构

数字控制单元RF接口控制和算逻单元防冲突EEPROM接口认证天线加密

图2.3 Mifare卡的功能说明

1RF接口: ? 调制解调器

第 6 页共 61 页

中北大学2016届毕业设计说明书

? ? ? ?

检波器 时钟发生器 上电复位 稳压器

2防冲突:一一选定通信范围内的几张卡,然后先后操作。 ○

3认证:○在对任意存储器的存储块进行读写操作之前得先通过认证,必须各个存储

区指定的密钥相匹配才能获得访问资格。

4控制和算术逻辑单元:写入特定的冗余格式的数据,可以读写、加减。 ○

5EEPROM接口 ○

6加密单元:○每次数据交换的 CRYPTO1 数据流都进行加密,防止数据被非法盗窃。 7EEPROM: 1 KB,分16区,每区4块。每一块有16字节。 ○

2.1.3 存储区结构

1024 x 8 bit EEPROM存储器分为16区,每区4块,每块16字节。 在擦处后的状态下,EEPROM的单元读为逻辑“0”,写后的状态下读为“1”。

表2.1 存储区扇区结构 扇区 块 3 15 2 1 0 3 14 2 1 0 : : : : : : 3 1 2 1 0 3 0 2 1 0 KEY A 控制位 KEY B 扇区1尾块 块内字节编号

说明 0 1 2 3 4 5 6 7 8 9 A B C D E F KEY A 控制位 KEY B 扇区15尾块 数据 数据 数据 KEY A 控制位 KEY B 扇区14尾块 数据 数据 数据 数据 数据 数据 KEY A 控制位 KEY B 扇区0尾块 数据 数据 制造商占用块 第 7 页 共 61 页

中北大学2016届毕业设计说明书

(1)制造商占用块

第1个区的第1个块(块0)。它含有卡的序列号、检查字节和制造商数据。由于安全和系统要求,此块只能由制造商在生产过程进行一次编程。用户对块0只能进行只读,前4个字节是卡的序列号,此值唯一。

最高位最低位 X X X X X X X X 0字节 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15序列号检查字节制造厂商数据

图2.4 块0的存储结构

(2)数据块

各区均有3个16字节的块用于存储数据,除区0只有两个数据块以及一个只读的厂商代码块。数据块可以通过读写控制位设置为:

1 读写块,比如用于非接触门禁系统,存储用户资料。 ? ○

2 数值块,可以加减,可作电子钱包的用途。 ? ○

在进行任一数据块操作之前,必须先通过认证环节。此次研究我只使用读写块功能,用于存储用户的信息,我将自己的名字存储到0区的块1中。 (3)尾块

各区都有一个尾块,存有:

1密钥A和B(可选)○,读块时返回逻辑“0”。

2该区四个块的读写条件,存储在字节6至9?。读写控制位也指定了数据块○

的类型(读写块或数值块)。

每张卡的密钥A的默认密码是6个字节的“FF”。如果不需要密钥B,块3的最后6字节可以用作数据字节,尾块的字节9可用于用户数据,因为此字节享有与字节6、7、8相同的读写权限[7]。

表2.2 尾块的存储结构

字节号 说明 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 密钥B(可选) 第 8 页 共 61 页

密钥A 读写条件 中北大学2016届毕业设计说明书

2.2 通信原理

卡呼叫(休眠卡/全部)防冲突循环,取得卡号选卡(激活)切换扇区三轮认证(对指定扇区)不切换扇区读块写块加值减值恢复休眠转存

图2.5 通信流程图

读写器发出或根据commandReg寄存器里得到的命令,按照对应区访问条件,再由数字控制单元来处理。 2.2.1 寻卡(REQUEST)

读卡器向所有在天线范围内未进入休眠状态的卡发出的请求(0x26)命令,进入电磁场的卡被唤醒后,发送请求应答码(ATQA 符合ISO/IEC 14443A)。 2.2.2 防冲突循环(ANTICOLL)

在防冲突过程中,读回一张卡的序列号。若在读卡器的通信范围内同时有几张卡,这过程可以通过唯一序列号一一选定,并进行下一步操作。没被选定的卡转入待命状态,等待新的请求命令。 2.2.3 选卡(SELECT CARD)

然后选定卡片,得到校验码,将2个字节的卡片类型、4个字节的序列号和1字节的校验码进行CRC计算,将其发送给卡片,通信成功,则返回SAK(选择确认)SAK 1字节+2字节CRC校验(0x18(24)共3个字节)。 2.2.4 三轮认证(3 PASS AUTHENTICATION)

选卡后,读写器指定后续读写的存储器位置,并用相应密钥进行三轮认证[8]。

第 9 页 共 61 页

中北大学2016届毕业设计说明书

认证成功后,所有的存储器操作都是加密的。

(A)RB(E)非接触式卡片读卡器(B)TOKEN AB(D)TOKEN BAMifare 1卡片(C)

图2.6 三轮认证的流程图

认证过程:

A环:卡片向读卡器发送一个随机数据RB;

B环:读卡器发出一组携带随机数据RA的令牌数据TOKEN AB;

C环:当卡片收到令牌数据TOKEN AB后,对TOKEN AB进行解密并得到RB,校验得到的RB与A环中发出的RB是否相同;

D环:若校验得到的RB与A环中发出的RB相同,则卡片再次向读卡器发出令牌数据TOKEN BA;

E环:读卡器收到令牌数据TOKEN BA后,对TOKEN BA进行解密并得到RA;校验得到的RA与B环中发出的RA是否相同。

如果以上的每一个环节都能顺利进行,每次校验结果都相同,则整个的认证过程将成功。 2.3 存储器读写

在此强调,必须先依次通过防冲突和密钥认证过程,才能进行存储器操作。先把该区的访问条件设置好了,区块才会执行相对应的操作。

表2.3 存储器操作说明

存储器操作 操作 读 写 增值 减值 转存 恢复 说明 读存储器块 写存储器块 增加块的内容,并将结果存入内部寄存器 减少块的内容,并将结果存入内部寄存器 将内部寄存器内容写入块中 将块中内容写入内部寄存器 使用块型 读写、数值和尾块 读写、数值和尾块 数值 数值 数值 数值 2.3.1 读写条件

第 10 页 共 61 页