基于RC522的非接触式IC卡读卡器设计含程序Word文件下载.docx
《基于RC522的非接触式IC卡读卡器设计含程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于RC522的非接触式IC卡读卡器设计含程序Word文件下载.docx(61页珍藏版)》请在冰豆网上搜索。
读写前射频卡与读写系统要进行三次应答认证,并且通信过程会产生随机数和加密的数据,防止各种破解和篡改,卡内每个存储区的访问密码和条件都不同。
1.2.3非接触式IC卡的发展趋势
随着非接触式IC卡的广泛应用与迅速发展,从目前看来,非接触式IC卡主要有以下几个发展趋势:
(1)大容量
“一卡多用”的新功能处于新的阶段,这种功能使得目前卡内16K的存储容量远远不能满足要求。
将来用户只用带着的一张具有多个功能IC卡,既能成为身份证和护照,又可以当做电子钱包、工作证,能存储个人简历,因此,研发更大卡内存储器的容量变得重要。
除了目前已经广泛使用的E2PROM存储器,一些新的存储器技术也正在开发,列如Flash+技术和铁电技术,未来IC卡行业使用的主要存储器极大可能是铁电存储器(FeRAM)[4]。
(2)更强的处理能力
IC卡在日常生活的普及,相关技术迅速发展,我们需要一张具有更强的处理能力的IC卡,有两种增强处理能力的方法:
其一是增加具有多样寻址方式的汇编指令,它能加快寻找有效数据的地址的速率,减少指令译码的工作量;
二是增加数据总线位数到32位,同时还可以提高内部时钟频率从5MHz到10MHz。
(3)低功耗
无论非接触式IC卡的是有源还是无源,低压低功耗设计对卡内芯片都是非常重要。
可以使用新型低功耗电池,达到增加电源提供给IC卡的时间,相当于增加了卡的使用时间;
可以增加无源非接触式IC卡的工作距离,远距离卡在通信效率和快捷性上都超过了近距离卡,远距离低功耗成为非接触式IC卡发展的必然趋势[4]。
(4)发展复合式IC卡
复合式卡的意思是双界面卡,接触式和非接触式的通信工作方式集成在一张卡上,也就是一卡两用,所以在结构上既有天线也有触点,使用起来更加灵活多变。
如今大多数国际大企业都成功开发并开始使用复合式卡。
1.3非接触式IC卡读卡器发展状况
现在,由于应用的场合不同,国内外出现大同小异的非接触式IC卡读卡器,有读卡器模块、便携式读卡器、高低频读卡器、双频标签读卡器、微波读卡器等各种各样的产品[5]。
这些产品有适合读写的距离大大不同。
但都有一个共同的特征,各种产品之间的区别不大,同质化严重,性能也相似,结构上都是读卡器芯片结合单片机,而并没有核心技术,缺乏成套技术的自主产权。
国外公司手中拥有读卡器的读卡器芯片的核心技术的控制权,在整个读卡器市场的利润,国外公司如TI、NXP等芯片厂商占绝大部分。
随着市场的发展,这些国外公司又同时在加强对整个非接触式IC卡技术的掌控,却有新的实力雄厚的ST(意法半导体)公司加入这一行,许多公司也觊觎这一迅速发展的市场。
TI和NXP公司牢牢控制着市场的主动权,提供从读卡模块、读卡器、读卡芯片及系统应用等一整套设备及服务。
令人欣慰的是,我国在这项技术的研究方面发展迅猛,在IC卡身份识别技术研究及产品研发方面,我国已经能够独立开发微波、低频和高频波的电子标签,拥有系统集成能力及读写器的技术。
1.4课题的设计内容
非接触近距离识别技术主要研究基于射频原理的非接触IC卡识别技术,具有操作快捷便利、可靠性高、安全性好、寿命长、防伪性好、抗干扰能力强等优点,被广泛应用于各种身份识别、收费系统中。
本次研究将掌握非接触式IC卡读卡器的原理,实现对非接触式IC卡的读写,能够正确读取IC卡的序列号及读卡用户信息,并通过计算机将信息显示出来。
2非接触式IC卡Mifare1S50技术支持
2.1Mifare1S50简介
MIFARE1s50是非接触智能IC卡。
其通信协议符合ISO/IEC14443A,通讯层(MIFARERF接口)符合ISO/IEC14443A标准的第2和第3部分。
其安全层支持域检验的CRYPTO1数据流加密。
在MIFARE卡结构中,芯片与一个几匝的天线线圈相连接,并封装到塑料中,制作了一个无源的近距离卡,不需要电池。
当卡接近读写器天线时,进入带有能量的电磁场,高速的RF通讯接口将以106kBit/s的速率传输数据[6]。
图2.1Mifare1s50卡
2.1.1Mifare1S50的特性
(1)MIFARERF接口(ISO/IEC14443A)
∙非接触数据通信并提供能量(无需电源)
∙通信距离:
大约100mm(取决于天线尺寸匝数)
∙工作频率:
13.56MHz
∙数据传输速率:
106kbit/s
∙高度数据安全性:
16位CRC,奇偶校验,位编码,位计数
∙多卡防冲撞
∙典型票务交易:
<
100ms
(2)EEPROM
∙1Kbyte,分为16个区,每区4个块,每块16字节。
∙用户自定义存储块的读写条件
∙数据可存储长达10年
∙可重复写入10万次
(3)安全性
安全的重点是防盗窃。
相互随机数和应答认证、数据加密和报文鉴别检查和,防止各种破解和篡改,使其更适于票务应用。
不可更改的序列号,保证了每张卡的唯一性[7]。
∙相互三轮应答认证(ISO/IECDIS9798-2)
∙射频通道数据加密
∙每个区的尾块有两个密钥,按应用场合不同密钥分级
∙每张卡的序列号唯一
∙在通信过程中以发送密钥保护对存储区的访问权
2.1.2结构功能说明
图2.2Mifare卡内部结构
图2.3Mifare卡的功能说明
RF接口:
∙调制解调器
∙检波器
∙时钟发生器
∙上电复位
∙稳压器
防冲突:
一一选定通信范围内的几张卡,然后先后操作。
认证:
在对任意存储器的存储块进行读写操作之前得先通过认证,必须各个存储区指定的密钥相匹配才能获得访问资格。
控制和算术逻辑单元:
写入特定的冗余格式的数据,可以读写、加减。
EEPROM接口
加密单元:
每次数据交换的CRYPTO1数据流都进行加密,防止数据被非法盗窃。
EEPROM:
1KB,分16区,每区4块。
每一块有16字节。
2.1.3存储区结构
1024x8bitEEPROM存储器分为16区,每区4块,每块16字节。
在擦处后的状态下,EEPROM的单元读为逻辑“0”,写后的状态下读为“1”。
表2.1存储区扇区结构
块内字节编号
扇区
块
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
说明
15
KEYA
控制位
KEYB
扇区15尾块
数据
14
扇区14尾块
:
扇区1尾块
扇区0尾块
制造商占用块
(1)制造商占用块
第1个区的第1个块(块0)。
它含有卡的序列号、检查字节和制造商数据。
由于安全和系统要求,此块只能由制造商在生产过程进行一次编程。
用户对块0只能进行只读,前4个字节是卡的序列号,此值唯一。
图2.4块0的存储结构
(2)数据块
各区均有3个16字节的块用于存储数据,除区0只有两个数据块以及一个只读的厂商代码块。
数据块可以通过读写控制位设置为:
读写块,比如用于非接触门禁系统,存储用户资料。
数值块,可以加减,可作电子钱包的用途。
在进行任一数据块操作之前,必须先通过认证环节。
此次研究我只使用读写块功能,用于存储用户的信息,我将自己的名字存储到0区的块1中。
(3)尾块
各区都有一个尾块,存有:
密钥A和B(可选),读块时返回逻辑“0”。
该区四个块的读写条件,存储在字节6至9了数据块的类型(读写块或数值块)。
每张卡的密钥A的默认密码是6个字节的“FF”。
如果不需要密钥B,块3的最后6字节可以用作数据字节,尾块的字节9可用于用户数据,因为此字节享有与字节6、7、8相同的读写权限[7]。
表2.2尾块的存储结构
字节号
10
11
12
13
密钥A
读写条件
密钥B(可选)
2.2通信原理
图2.5通信流程图
读写器发出或根据commandReg寄存器里得到的命令,按照对应区访问条件,再由数字控制单元来处理。
2.2.1寻卡(REQUEST)
读卡器向所有在天线范围内未进入休眠状态的卡发出的请求(0x26)命令,进入电磁场的卡被唤醒后,发送请求应答码(ATQA符合ISO/IEC14443A)。
2.2.2防冲突循环(ANTICOLL)
在防冲突过程中,读回一张卡的序列号。
若在读卡器的通信范围内同时有几张卡,这过程可以通过唯一序列号一一选定,并进行下一步操作。
没被选定的卡转入待命状态,等待新的请求命令。
2.2.3选卡(SELECTCARD)
然后选定卡片,得到校验码,将2个字节的卡片类型、4个字节的序列号和1字节的校验码进行CRC计算,将其发送给卡片,通信成功,则返回SAK(选择确认)SAK1字节+2字节CRC校验(0x18(24)共3个字节)。
2.2.4三轮认证(3PASSAUTHENTICATION)
选卡后,读写器指定后续读写的存储器位置,并用相应密钥进行三轮认证[8]。
认证成功后,所有的存储器操作都是加密的。
图2.6三轮认证的流程图
认证过程:
A环:
卡片向读卡器发送一个随机数据RB;
B环:
读卡器发出一组携带随机数据RA的令牌数据TOKENAB;
C环:
当卡片收到令牌数据TOKENAB后,对TOKENAB进行解密并得到RB,校验得到的RB与A环中发出的RB是否相同;
D环:
若校验得到的RB与A环中发出的RB相同,则卡片再次向读卡器发出令牌数据TOKENBA;
E环:
读卡器收到令牌数据TOKENBA后,对TOKENBA进行解密并得到RA;
校验得到的RA与B环中发出的RA是否相同。
如果以上的每一个环节都能顺利进行,每次校验结果都相同,则整个的认证过程将成功。
2.3存储器读写
在此强调,必须先依次通过防冲突和密钥认证过程,才能进行存储器操作。
先把该区的访问条件设置好了,区块才会执行相对应的操作。
表2.3存储器操作说明
存储器操作
操作
使用块型
读
读存储器块
读写、数值和尾块
写
写存储器块
增值
增加块的内容,并将结果存入内部寄存器
数值
减值
减少块的内容,并将结果存入内部寄存器
转存
将内部寄存器内容写入块中
恢复
将块中内容写入内部寄存器
2.3.1读写条件
对该区块是读是写需要设置3个控制位,并以原码和反码格式存放在每个区的尾块中。
这3个读写控制位还控制密钥A和B的访问权限。
如果知道正确的密钥,并且对应读写条件许可,读写条件是可以修改的[9]。
表2.4控制位对块的影响
读写控制位
有效命令
C13C23C33
read,write
→
尾块
C12C22C32
read,write,increment,decrement,transfer,restore
数据块
C11C21C31
C10C20C30
在表2.4中访问条件的每一位都用符号来表示,其中C13,C23,C33用来控制本区块3的访问条件;
C1X,C2X,C3X(X=0-2)用来控制本区块0-块2的访问条件[8]。
在每一次读写存储区时,存储条件必须正确。
如果发现是错误的,会锁死这个区块。
2.3.2尾块的读写条件
对密钥和控制位的读写取决于尾块(块3)的访问控制位,分为“禁止”、“KEYA”、“KEYB”和“KEYA|B”(KEYA或KEYB)[9]。
图2.7访问条件的组成
为了安全起见,访问条件的每一位即用原码又用反码存储,相当于存放了两遍。
特定的数据存放于访问条件的最后一个字节(9)。
表2.5块3的访问条件
访问控制位
所控制的访问对象
注释
C1
C2
C3
禁止
KeyA
KeyB
KeyB可读
KeyA|B
传输配置状态
附注2.1灰色行为keyB可读并可用于存储数据的访问控制条件。
如果C1、C2、C3=000,则keyA不能读,而持卡人在正确输入keyA后,可以改写keyA,读访问条件和读写keyB。
KeyA在任一条件下都禁止读出,但达到特定条件下可以修改。
KeyB作为密钥使用时,也是不能读出,但达到一定条件(输入正确的keyA)下能读出时,这时存放在keyB位置的内容为数据而不是密钥[9]。
尾块和keyA被预定义为传输配置状态。
因为在传输配置状态下keyB可读,新卡必须用keyA认证。
因为访问控制位本身也可以禁止访问,所以个人化时应当特别小心[8]。
2.3.3数据块的访问控制条件
不同的控制位的设置,相关的用途也不同。
∙读写块:
可读、写。
∙数值块:
运行另外的数值操作——加值、减值、转存和恢复。
在用于非充值卡的一种情况(‘001’)下,只能够读和减值。
在另一种情况(‘110’)下,可以用keyB充值。
∙制造厂商块:
只读,不受访位控制位设置的影响!
∙密钥管理:
在传输配置状态下,必须用keyA认证。
表2.6数据分组的访问条件
所控制的访问操作
用途
加值
keyA|B1
keyB1
读写块
数值块
3MFRC522射频芯片
3.1概述
MFRC522是具有高集成度读写卡芯片,也是一款常用的非接触式通信芯片,工作于13.56MHz的时钟频率。
也是NXP公司针对"
三表"
应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择[10]。
MFRC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议[11]。
支持ISO14443A的多层应用。
其芯片的TX1和TX2引脚可驱动读写器天线,发送经过调试的13.56MHz载波能量信号,该信号上就有我们需要的数据。
接收到的载波信号会通过接收器解调成有效信号,有效信号再经过A/D转换器转换成数字信号,该信号会依照ISO14443A协议处理,先进行错误检测(奇偶&
CRC)。
另外,它也能对数据进行算法加密,MFRC522支持MIFARE系列的卡,可验证该系列产品。
相比于其他芯片,它具有更快的近距离双向数据传输速率通信,高达424kbit/s。
MFRC522与MFRC500和MFRC530相比,即相似点也有很多差异。
它与微控制器间的数据交换可用SPI串行通信,也能根据应用场合功能不用,采用I2C或串行UART(类似RS232)模式。
当然,SPI通信连线更少,制作的PCB板体积更小,降低成本。
3.2特性
∙高集成度的调制解调电路;
∙可将发送器控制的TX管脚直接驱动天线;
∙支持ISO/IEC14443TypeA通信协议;
∙读写器模式中的ISO14443A协议的工作距离高达60mm,与天线的长度和匝数有关。
∙支持ISO14443212kbit/s和424kbit/s的更高传输速率的通信。
∙支持MIFARE&
reg;
Classic加密;
∙支持的主机接口:
-10Mbit/s的SPI接口
-I2C接口,快速模式的速率为400kbit/s,高速模式的速率为3400kbit/s
-串行UART,传输速率高达1228.8kbit/s,帧取决于RS232接口,电压电平取决于提供的管脚电压
∙64字节的发送和接收FIFO缓冲区;
∙灵活的中断模式;
∙可编程定时器。
∙具备软、硬件掉电和发送器掉电3种节电模式,其中"
发送器掉电"
则是关闭内部天线驱动器,即关闭电磁场;
∙内置温度传感器,以便在芯片温度过高时自动停止RF发射;
∙采用相互独立的多组电源供电,以避免模块间的相互干扰,提高工作的稳定性;
∙具备CRC和奇偶校验功能,CRC协处理器的16位长CRC计算多项式固定为:
x16+x12+x5+1,符合ISO/1EC14443和CCTITT协议[12];
∙内部振荡器,连接27.12MHz的晶体;
∙2.5~3.3V的低电压低功耗设计;
∙工作温度范围-30~+85℃;
∙5mm×
5mm×
0.85mm的超小体积。
3.3功能结构
3.3.1简化的MFRC522框图
图3.1简化MFRC522框图
模拟接口用来处理模拟信号的调制和解调。
非接触式UART用来处理与主机通信时的协议要求。
FI