ZLG522S系列模块的应用Word格式文档下载.docx
《ZLG522S系列模块的应用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ZLG522S系列模块的应用Word格式文档下载.docx(69页珍藏版)》请在冰豆网上搜索。
IC卡是集成电路卡(IntegratedCircuitCard,ICC),在有些场合又称为智能卡、灵巧卡和智慧卡等。
将一张专用集成电路镶嵌于符合ISO/IEC7916标准的基片中,即制成一张IC卡,当然也可以封装成纽扣、钥匙牌和各种装饰物等特殊形状。
根据与外界数据交换的界面不同分为:
接触式IC卡、非接触式IC卡和双界面卡。
根据使用芯片的功能不同分为:
存储器卡、逻辑加密卡、CPU卡。
非接触式IC卡继承了接触式IC卡容量大、安全性高等优点,又克服了因触点外露导致的污染、磨损、静电以及插卡才能访问的缺点而得到广泛地应用。
Mifare系列非接触式IC卡是当前国内使用较广泛的卡,如公交卡、火车IC卡车票等。
如广州的羊城通使用的就是S50/70卡,广深和谐号票卡使用的就是MIFAREUltralight卡。
表1.1Mifare系列卡
名称
IC卡芯片
简称
MIFAREUltralight
MF0ICU1
MF0
MIFAREUltralightC
MF0ICU2
MIFAREMini
MF1ICS20
-
MIFAREStandard
MF1ICS50
MF1或S50
MF1ICS70
MF1或S70
MIFAREPLUS
MF1PLUSx0
PLUSCPU
MIFAREProX
MF2
MIFAREDESFire
MF3ICD20/40/80
MF3
MIFAREDESFireEV1
MF3ICD21/41/81
如表1.1所示。
MIFAREUltralight、MIFAREUltralightC、MIFAREMini、MIFAREStandard是逻辑加密卡;
MIFAREPLUS、MIFAREProX、MIFAREDESFire、MIFAREDESFireEV1是CPU卡。
其中MIFAREPLUS(PLUSCPU,后文均称为PLUSCPU)卡是基于MIFAREStandard的安全等级升级版。
第2章ZLG522S读写卡模块
2.1概述
ZLG522S系列读写卡模块是基于13.56MHz频率的系列读写卡模块。
它支持ISO14443标准协议,可支持MIFAREStandard、MIFAREUltralight、MIFAREProX、MIFAREDESFire、MIFAREPLUS。
它采用NXP公司的MFRC522,该芯片是NXP针对“三表”应用推出的一款低电压、低功耗、体积小的非接触式读写芯片。
本系列模块具有具有易用、可靠、多样和体积小等特点。
在介绍ZLG522S读写卡前先介绍一下S50/70卡和PLUSCPU卡。
图2.1ZLG522S系列模块
2.2S50/S70卡
2.2.1特点
♦容量为1K/4K字节E2PROM;
♦S50卡分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位;
♦S70卡分为40个扇区,前32个扇区每扇区4块,后8个扇区每个扇区为16块,
♦每个扇区有独立的一组密码及访问控制;
♦支持ISO14443-3A唯一序列号(4字节);
♦具有防冲突机制,支持多卡操作;
♦无电源,自带天线,内含加密控制逻辑和通信逻辑电路;
♦数据保存期为10年,可改写10万次,读无限次;
♦工作频率:
13.56MHz;
♦通信速率:
106KBit/s;
♦读写距离:
100mm以内(与读写器有关)
2.2.2数据结构
S50卡的数据结构如表3.1所示。
S70卡的前32个扇区的数据结构和S50卡的完全相同,后8个扇区的数据结构如表3.2所示。
表2.1S50卡的数据结构
扇区
块
数据块
备注
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
只读
数据/值块
KeyA
控制位
KeyB
扇区0区尾块
扇区1区尾块
…
15
扇区15区尾块
表2.2S70卡的32~39扇区的数据结构
32
14
扇区32区尾块
39
扇区39区尾块
S50/70卡的数据块都可以作为值块,值块中的数据有格式要求,若数据格式不对,则之操作时会失败,值块数据格式如表3.3所示。
表2.3值块的数据格式
字节
说明
值
/值
地址
/地址
每个扇区的最后一块为区尾块,该块是当前扇区的密钥和访问权限控制位存放块。
该块的前6字节为KeyA;
后6个字节为KeyB;
中间4个字节为控制位。
当密钥有效时,读出的密钥数据始终为0x00,即密钥不可读。
S50/S70的每个扇区都可设置一组密钥,每个数据块和区尾块可以单独设置访问权限(扇区32~39每5个数据块可设置一个访问权限)控制位的数据结构如表3.4所示。
其中下标表示所控制的数据块(扇区32~39中下标0表示控制的数据块为块0~4;
下标1表示控制的数据块为块5~9;
下标2表示控制的数据块为块10~14;
下标3表示控制的数据块为块15)。
‘/’表示数据位取反。
表2.4控制位数据结构
位
字节6
/C10
/C11
/C12
/C13
/C20
/C21
/C22
/C23
字节7
/C30
/C31
/C32
/C33
C10
C11
C12
C13
字节8
C20
C21
C22
C23
C30
C31
C32
C33
字节9
RFU
表2.5区尾块访问权限设置
访问控制位
所控制的访问对象
注释
KEYA
KEYB
C1
C2
C3
读
写
禁止
KeyB可读
KeyA|B
注:
灰色行为keyB可读并可用于存储数据的访问控制条件。
区尾块和keyA被预定义为传输配置状态。
因为在传输配置状态下keyB可读,新卡必须用keyA认证。
因为访问控制位本身也可以禁止访问,所以个人化时应当特别小心。
对数据块(块0~2或块0~14)的读写访问取决于其访问控制位,分为“禁止”、“KeyA”、“KeyB”和“KeyA|B”(KeyA或KeyB)。
相关访问控制位的设置确定了其用途以及相应的可用命令。
♦读写块:
允许读、写操作。
♦数值块:
运行另外的数值操作——加值、减值、传输和恢复。
在用于非充值卡的一种情况(‘001’)下,只能够读和减值。
在另一种情况(‘110‘)下,可以用keyB充值。
♦厂商块:
只读,不受访位控制位设置的影响!
♦密钥管理:
在传输配置状态下,必须用keyA认证。
表2.6数据块访问权限设置
所控制的访问操作
用途
加值
减值
传输
恢复
KeyA|B注
传输配置状态
KeyB注
读写块
数值块
如果相应扇区区尾块KeyB可读,则不得用作认证(前表中所有灰色行,但有些兼容卡则在KeyB可读的情况下,仍可以用KeyB做认证)。
如果读写器试图用灰色行的访问控制条件以KeyB认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问。
2.2.3操作流程
S50/70卡的所有数据块在满足读条件的情况下都可以用读命令进行访问,在满足写条件下除了厂商块外都可以用写命令进行写入。
S50/70卡没有专用的修改密钥和控制位的命令,若需要修改密钥或控制位,则需要采用‘读-改-写’的方式,即读出区尾块(密钥数据读出始终为0x00),修改需要改写的数据(若不修改密钥,则需要将密钥恢复成原来的值),然后将数据写入区尾块。
S50/70卡的值是一个long型的数,用特定的格式存放在数据块中,如表3.3所示。
S50/70卡没有专用的格式化值块的命令,若需要值块操作时,需要将数据块的内容格式化为值块格式,并用写命令写入(若数据块内的数据格式是值块的格式,则不需要该步骤),然后再用值块操作命令。
图2.2S50/70卡操作流程
2.3PLUSCPU卡
PLUSCPU卡在MIFAREStandard卡的基础上将安全等级做了大幅度提升。
2.3.1特点
♦2或4K字节E2PROM;
♦简单的固定存储器结构,与MIFAREMini,MIFAREStandard卡兼容;
♦存储器结构与MIFARES70相同(扇区,块);
♦可随意配置访问条件;
♦支持ISO14443-3A唯一序列号(4或7字节),支持任意随机ID;
♦多扇区认证,多块读和写;
♦AES用于认证、加密和认证数据完整性;
♦防撕裂保护;
♦密钥可存储为MIFARECRYPTO1密钥(2×
48位/扇区)或AES密钥(2×
128位/扇区);
♦完全虚拟卡概念;
♦中继攻击检查;
♦通信速率可达848Kbit/s;
♦单独写操作次数:
通常为200,000;
♦通过CCEAL4+安全认证。
PLUSCPU卡有4个安全等级:
♦安全等级0。
该等级为出厂模式,该模式下可以任意修改卡内的数据(无需认证密钥)。
♦安全等级1。
该等级和S50/70卡完全兼容,所有操作都和S50/70卡相同。
♦安全等级2。
该等级和S50/70卡相比,是在CRYPTO1认证前加入了AES认证(激活后只必须至少执行一次AES认证),但该等级下没有值块操作。
♦安全等级3。
该等级下的认证操作均为AES认证,读写器与卡之间的通信可选择数据加密或线路保护(MAC)。
2.3.2数据结构
PLUSCPU卡的数据结构是在S50/70卡的基础上增加了AES密钥和配置块,如表3.7所示。
表2.7PLUSCPU卡数据结构
0x0000~0x007F
扇区0~31
0x0080~0x00FF
扇区32~39
0xB000
MFP配置块(设置不带MAC读操作的次数)
0xB001
应用标识符(IID)
0xB002
ATS信息
0xB003
配置块(配置是否强制使用中继攻击检测和是否使用随机ID)
0x4000~0x403F
扇区0~31的AES密钥
KeyA=扇区号×
2
KeyB=扇区号×
2+1
0x4040~0x404F
扇区32~39的AES密钥
0x8000
NXP独有密钥(用于认证是否是NXP的卡)
0x9000
主控密钥
0x9001
配置密钥
0x9002
等级2升级密钥
0x9003
等级3升级密钥
0x9004
等级1增加AES认证密钥
0xA000
选择虚拟卡(VC)命令的MAC计算密钥
0xA001
中继攻击检测命令的MAC计算密钥
0xA080
虚拟卡(VC)轮询命令的数据加密密钥
0xA081
虚拟卡(VC)轮询命令的MAC计算密钥
2.3.3操作流程
PLUSCPU卡的操作分为以下几种:
♦数据/值块操作
♦卡片升级
♦卡片配置(安全等级3)
1.安全等级0下的操作
在安全等级0下,所有的数据块和配置块都可以任意写入(使用个人化命令,数据写入后不能读出,若有格式的配置块则需要按格式写入,若格式错误会出现卡片提升到相应等级后却不可用的情况)且不需要认证任何密钥。
当所有需要个人化的数据块(0x9000、0x9001、0x9002(若存在)和0x9003,这几个地址必须修改)被修改后,则可以用提交个人化命令将卡片提升到安全等级1。
在没有提交个人化前,所有数据块和配置块都可以任意修改。
2.安全等级1下的操作
该等级下的操作和S50/70卡完全一样,详细操作流程见3.2.3。
若卡号为7个字节,则在选择后需要在再次防碰撞(参数改为0x95)和选择,并将第1次防碰撞得出4字节卡号的第1字节0x88(级联字节)去掉,在与第2次防碰撞得出的4字节卡号合并在一起组成7字节的卡号。
防碰撞得出的什么卡号(不管是否有级联字节),选择卡时就输入什么卡号,认证时输入的卡号为最后一次选择卡时使用的卡号(若是使用激活函数,则认证时输入的卡号是激活函数输出卡号最后4字节)。
符合ISO14443-3A激活的流程如图3.3所示。
图2.3ISO14443-3A的激活流程
只有7字节和10字节卡号的情况下,前1、2次防碰撞得到的卡号才会有级联字节,最后一次防碰撞得到的卡号是没有级联字节,所以S50/70卡的激活不用处理级联字节。
PLUSCPU卡的卡号有4字节和7字节的区别,使用时完全按照ISO14443-3A的激活流程操作即可。
3.安全等级2下的操作
PLUSCPU卡安全等级2下的操作和S50/70卡比较多了一次AES认证,CRYPTO1认证使用的密钥不再是区尾块中存放密钥,而是用AES认证时生成的过程密钥与区尾块中存放密钥经过异或运算的结果作为CRYPTO1认证密钥。
该安全等级下没有值块操作。
PLUSCPU卡分为PLUSS和PLUSX。
PLUSS卡没有安全等级2。
图2.4安全等级2的操作流程
4.安全等级3下的操作
PLUSCPU卡在安全等级3下有很多个性化的操作。
本文中只介绍基本的操作(没有修改配置块时的功能操作),其他操作请参考PLUSCPU卡的数据手册。
PLUSCPU卡采用AES认证,若多个扇区的密钥相同时,且这几个扇区是连续操作,则更换扇区操作的时候不用再次认证密钥。
在安全等级3下PLUSS卡没有值块操作,且读写操作命令的参数选项没有PLUSX多。
PLUSCPU卡安全等级3下采用AES认证,所以区尾块的存放CRYPTO1密钥就无效,访问控制为字节5~9。
同S50/S70比较。
多了字节5,字节6~9的功能和S50/70完全相同,其功能见表3.4、表3.5和表3.6。
字节5是控制本扇区的数据块是否允许明文读取(默认为允许)。
表2.8安全等级3的区尾块
PLUSCPU卡安全等级3是工作在ISO14443-4,所以卡片激活后需要额外的操作让卡片处于ISO14443-4的激活状态。
图2.5安全等级3的操作流程
2.4DESFire卡
MIFAREDESFire(MF3ICD40)是符合ISO14443A的CPU卡。
传输协议遵循ISO14443-4部分。
2.4.1特点
♦操作距离:
最大100mm(取决于天线的形状)
♦操作频率:
13.56MHz
♦快速数据传输:
106kbit/s,424kbit/s
♦高数据完整性:
4字节MAC、16位CRC、奇偶校验、位编码、位计数
♦真实可确定的防冲突性
♦7字节的唯一标识符(符合ISO14443-3的级联第二层)
♦使用ISO14443-4传输协议
♦4k字节NV-存储器
♦NV-存储器写时间2ms(1ms擦除,1ms编程)
♦数据可保存10年
♦可写100,000次
♦一个卡最多可同时存在28个应用
♦每个应用程序多达16个文件
♦RF信道的硬件DES/3DES数据加密,可防止重放攻击。
♦通过4字节MAC进行数据验证
♦应用级验证
2.4.2数据结构
和S50/70以及PLUSCPU卡比较,DESFire卡的数据结构不再是固定地址的存储结构,而是采用文件的结构。
一张空白的DESFire卡是不能使用的,需要在上面创建文件后才能使用。
DESFire卡的NV存储器(MF3ICD40的用户存储空间为4K字节)通过灵活的文件系统来组织。
文件系统允许单张卡上存在最多28个不同的应用。
每个应用下最多可建立16个文件。
每个应用由它的3字节应用标识符(AID)表示。
支持5种不同的文件类型,如表2.9所示。
表2.9DESFire卡支持的文件类型及编码
文件类型
编码
标准数据文件
0x00
备份数据文件
0x01
带备份的值文件
0x02
带备份的线性记录文件
0x03
带备份的循环记录文件
0x04
DESFire卡的文件具有以下特点:
♦每个文件可在卡片初始化时在终端或读写卡器中创建。
♦如果文件或应用在操作中被废弃,可使它永久无效。
♦对文件结构本身产生影响的命令(例如,建立或删除一个应用,改变密钥)会启动一个自动的恢复机制,它可保护文件结构不会被破坏。
♦如果需要使用恢复机制,它在下一个命令执行之前完成,不需要用户的交互操作。
♦为了确保应用级的数据完整性,所有5个带备份的文件类型都实现了面向处理的备份。
在一个应用中,可以混合带备份和不带备份的文件类型,因此备份只用于文件0~7,而文件8~15不支持备份机制。
2.4.3安全性
7字节UID在生产线编程之后就不能再进行更改,这样就确保了每个器件的唯一性。
UID可用于为每个卡生成多种密钥。
在数据发送之前,卡和读写器之间可完成3重认证,这取决于配置使用DES还是3DES。
卡和读写器之间之间的数据传输可设置为以下3种安全等级:
♦直接的数据传输
♦带DES/3DES加密校验和(MAC)的直接数据传输
♦DES/3DES加密的数据传输(在加密之前进行CRC校验)
应用层允许对用户数据进行访问。
每个应用可最多设置14个不同的用户密钥用于控制对卡中保存的数据进行访问。
数据传输的安全等级可以通过创建文件时的通信设定字节进行设置:
表2.10通信设置编码
通信模式
B7-2
B1
B0
明文通信
000000
明文+MAC通信
完全DES/3DES加密的通信
DES和3DES密钥都保存在16个字节的字符串中。
如果密钥串的后半部分等于前半部分,密钥作为单DES密钥进行处理;
如果密钥串的后半部分不等于前半部分,密钥作为3DES密钥进行处理。
所有基于密钥的操作(认证,MAC,加密)分别使用DES或3DES方法进行进一步处理。
单DES密钥的例子:
0x00112233445566770011223344556677
0x00000000000000000000000000000000
3DES密钥的