IC卡公交收费机设计(一) ——MIFARE 1卡存储结构与特性 电子与信息工程学院
课 程 目 标 MIFARE 1卡存储结构与读写操作 MIFARE 1卡值块结构与值操作 MIFARE 1卡防冲突特性与防冲突操作
项目开发——IC卡公交收费系统 系统需求分析: 具备小额电子钱包功能,定额方式收费 操作方便快捷 工作距离<50cm 具备显示余额、异常报警(非法卡或余额不足) 可将当班收款额上传总站数据库 公交公司可调整定额额度 卡遗失可挂失 抗干扰能力强
项目实现之第一步——卡型选择 接触式逻辑加密卡 低频非接触式ID卡 高频非接触式逻辑加密卡 超高频非接触式IC卡 操作不方便 数据传输速率低,防冲突性能差;没有加密,不安全 数据传输率高,防冲突性能好,安全性高 读写距离远,防冲突性能好;容易受周围环境干扰,读写器成本高
目前13.56MHz的产品主要包括: ISO14443TypeA卡——Mifare 1 S50卡、Ultra Light卡 LEGIC Type A 卡、上海公交卡即华虹IC卡、复旦微电子Type A 卡 ISO14443TypeB卡——ATMEL RF020 ISO15693(电子标签)卡——PHILIPS I-Code2、TI Tag-it标签 I-CODE(电子标签)卡—— PHILIPS I-Code、上海贝岭BL75R02 SONY Felica卡——香港八达通、深圳通 中国二代身份证
Mifare 1非接触式IC卡 基本性能指标: 卡内器件: 无线智能卡芯片Mifare MF1 IC S50 +天线线圈 标准: 遵从ISO/IEC 14443 Type A 标准 工作频率: 13.56MHz 数据传送速率: 106kbit/s (9.4μs/bit)
Mifare 1卡片的存储结构 存储容量:1024×8位字长(即1KB), 存储介质:EEPROM 分为16个扇区(扇区0 ~15) 每个扇区有4个块(Block)块0、块1、块2和块3。 每个块有16个字节。 一个扇区共有 16 Byte×4 = 64 Byte
块功能详解 1)厂商块 地址:扇区0块0 内容:IC卡厂商标志,包含卡序列号SN、卡类型号TagType及卡容量字节等关键数据。 特性:只读,安全防伪 例: 420A7E0036 88 0400 4481740630373937H 卡容量字节SIZE 卡序列号SN 卡类型号TagType
块功能详解 2)数据块(块0~2) 每块16字节。可由区尾块中的存取控制位(access bits)配置为: 读写块: 用作一般的数据操作,可用读/写命令直接读/写整个块 值块: 用作定值操作,可以进行加值/减值(INC/DEC)的运算。 数据块数据的读/写/加值/减值条件: 符合该块存取条件的要求 + 通过该扇区的密码认证。
块功能详解 KEY A(6B)+ Access bits(4B)+KEY B(6B) 例: 3)区尾块 (Sector Trailer) 每个扇区的块3为区尾块,包含: KEY A(6B)+ Access bits(4B)+KEY B(6B) 例: A0A1A2A3A4A5 FF078069 B0B1B2B3B4B5 密钥A 默认值 密钥B 默认值 存取控制位 默认值
MIFARE 1卡特点:支持城市一卡通 EEPROM存储器结构提供多应用: 适合定额收费: 1K字节EEPROM,16个扇区, 4数据块/扇区,16字节/块。用户可以定义每一个存储器块的访问条件。每个扇区(每应用)拥有各自独立的密钥,支持带密钥层次的多应用。 适合定额收费: 卡芯片中内建有增值/减值的专项数学运算电路,非常适合公交/地铁等行业的定额收费系统
MIFARE 1卡防冲突特性 利用每张卡全球唯一的SN实现二进制树状搜索防冲突算法。 例: SN1:420A7E00 冲突1 选择SN2、SN3 冲突2 选择SN3
MIFARE 卡 防冲突流程 POWER OFF状态 RESET IDLE状态 REQUEST 命令 READY状态 ANTICOLLISION命令 启动防冲突循环 读取卡回送的UID(SN) SELECT UID命令 应用:AUTENTICATION/READ/WRITE/INC/DEC命令 WAKE UP 命令 ACTIVE状态 HALT命令 HALT状态
MIFARE 1卡特点:支持多卡同时操作 卡芯片与读写芯片中都内嵌防冲突模块,可实现真正的(硬件)防冲突,可高速识别天线范围内的多张卡,适应多人同时刷卡。
MIFARE 1卡的安全特性 密码认证:所有扇区需通过密码认证才能进行读/修改操作。 存取控制:所有块可通过设置存取控制条件限制存取。
Mifare 1 卡的密码认证方式 Mifare 1 卡的密码的认证采用了三次相互认证的方法,具有很高的安全性。
(A)环 :Mifare 1卡向读写器发送一个随机数据RB; (B)环 :读写器收到RB后向Mifare 1卡片发送一个令牌数据TOKEN AB=用读写器中存放的密码加密后的RB+读写器发出的一个随机数据RA; (C)环 :Mifare 1卡片收到 TOKEN AB 后,用卡中的密码对TOKEN AB的加密的部分进行解密得到RB’,并校验第一次由(A)环中Mifare 1卡片发出去的随机数RB是否与(B)环中接收到的TOKEN AB中的RB’相一致;若读写器与卡中的密码及加/解密算法一致,将会有RB=RB’,校验正确,否则将无法通过校验; (D) 环 :如果(C)环校验是正确的,则Mifare 1卡片用卡中存放的密码对RA加密后发送令牌TOKEN BA给读写器 ; (E)环 :读写器 收到令牌TOKEN BA后,用读写器中存放的密码对令牌TOKEN BA中的RA(随机数)进行解密得到RA’;并校验第一次由(B)环中读写器发出去的随机数RA是否与(D)环中接收到 的TOKEN BA中的RA’相一致;同样,若读写器与卡中的密码及加/解密算法一致,将会有RA=RA’,校验正确,否则将无法通过校验;
(A)环 :Mifare 1卡取随机数RB=1100,KEY1=1010, (B)环 :读写器取随机数RA=0011,KEY2=1010, 加密/解密算法:异或,接收RB 对RB加密:TOKENB=RB异或KEY2=0110,发送TOKENB+RA (C)环 :Mifare 1卡片对TOKEN B解密: RB‘=TOKENB异或KEY1=1100=RB,校验正确; (D) 环 :Mifare 1卡片对RA加密 TOKENA=RA异或KEY1=1001 ; (E)环 :读写器 收对TOKEN A解密: RA’=TOKENA异或KEY2=0011=RA,校验正确
Mifare 1 卡存取控制设置 Access bits(存取控制位):定义该扇区中4个块的访问条件,及定义数据块的类型(读写或值) A0A1A2A3A4A5 FF078069 B0B1B2B3B4B5 卡初始化后的存取控制条件为: 密码A永不可读,校验密码A或密码B正确后可以修改; 密码B在校验密码A或密码B正确后可读,可修改; 存取控制位在校验密码A或密码B正确后可读,可修改; 数据块在校验密码A或密码B正确后可读,可修改。
公交卡密钥存取条件的设置 对象:各扇区块3 存取条件: 密码A永不可读,校验密码A或密码B正确后可以修改 密码B在校验密码A或密码B正确后可读,可修改; 存取控制位在校验密码A或密码B正确后可读,可修改;
存取控制位对块3的控制结构 密码A 存取控制 密码B C1X3 C2X3 C3X3 read write never KEYA|B 1 never KEYA|B 1 Never KEYB
存取控制位的结构 C2X3_b C2X2_b C2X1_b C2X0_b C1X3_b C1X2_b C1X1_b C1X0_b C1X3 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 1
公交卡预付费金额存取条件设置 对象:扇区1块0~2 存取条件: 校验密码A或密码B正确后可读,可修改。
存取控制位对数据块的控制结构 C1XY C2XY C3XY Read Write Increment Decr,Transfer,restore KEYA|B 1 never KEYB Never
存取控制位的结构 C2X3_b C2X2_b C2X1_b C2X0_b C1X3_b C1X2_b C1X1_b C1X0_b C1X3 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 1
公交卡流水号存取条件设置 对象:扇区14块0 存取条件: 校验密码A/B正确可读,永不可修改。其他各块条件默认。
存取控制位对数据块的控制结构 C1XY C2XY C3XY Read Write Increment Decr,Transfer,restore KEYA|B 1 never KEYB Never
存取控制位的结构 C2X3_b C2X2_b C2X1_b C2X0_b C1X3_b C1X2_b C1X1_b C1X0_b C1X3 BX7 BX6 BX5 BX4 BX3 BX2 BX1 BX0 1
扇区14存取控制字节=EF 07 81 69H 将扇区14块3的内容修改为 FFFFFFFFFFFFEF078169FFFFFFFFFFFF
MIFARE 1卡特点:支持开放环境下的安全可靠应用 高保密性: 全球唯一SN; 密钥及传输密码保护,各扇区密码独立且有三套(KEYSET0、1、2)二个(KEY A、KEY B)密码。 密码认证采用三次相互认证; 存取控制位保护,用户可以定义每一个存储器块的访问条件 RF信道数据加密 高可靠性: 无线通讯链路使用各种校验机制确保数据可靠传输
实训5 MIFARE 1卡的读写操作与存储结构 按标志连接非接触式IC卡读写器的电源线,电源指示灯闪亮一下表示连接正确。注意电源+5V与地不可接反。 按标志连接非接触式IC卡读写器与PC机间的通信线,打开MIFARE系列非接触式IC卡演示软件MWRF,确认通信正常。 装载密码(Load Key)操作:在RFDEMO软件界面中选择密码集0(KEYSET0),密码A(KEY A),将扇区0-14的密码A设置为全F,而将扇区15的密码A设置为全0。启动密码下载,下载过程中红色指示灯点亮;下载完毕后红色指示灯熄灭。
MIFARE 1卡读写操作: 将MIFARE 1卡按任意方向置入MIFARE开发板天线有效工作范围内,对MIFARE 1卡的扇区0、1和15的块0、1、2进行读/写操作。记录读取的卡数据,标明各块的类型及卡的类型号、序列号、容量及各扇区的密码和访问权限。 注意:不得随意修改各扇区块3的数据,特别是访问权限字节,以免造成扇区被锁死。
MIFARE 1卡值操作: 将MIFARE 1卡按任意方向置入MIFARE开发板天线有效工作范围内,对MIFARE 1卡的扇区1块0做值块初始化,读出并记录块0数据,说明值块格式;对扇区1块0做加值/减值操作,读出并记录操作结果。
防冲突测试 (1)分别读出并记录二张MIFARE 1卡(分别记为1#卡、2#卡)的序列号,及其扇区0块1的内容,记录在报告上。 (2)将二张MIFARE 1卡同时放置在读写器天线有效工作范围内,在RFDEMO软件中执行读操作,根据读出的SN找出被选中的卡(例如为1#卡)。 (3)在RFDEMO软件中执行写操作,修改扇区0块1的内容并将数据记录在报告上。 (4)将被选中的卡撤离读写器天线有效工作范围,读出另一张卡(例如2#卡)的扇区0块1的内容,并将数据记录在报告上。 (5)取走(4)中的卡,重新读出并记录被选中的卡的扇区0块1的数据,并记录在报告上。 (6)比较上述实验数据,说明MIFARE1卡是否具备防冲突功能。
存取控制设置: (1)读出并记录扇区14块0的内容;修改内容并再次读出,记录修改后的内容。说明该块的存取控制条件。 (2)修改扇区14的存取控制字节,将扇区14块0设置为校验密码A/B正确可读,永不可修改。其他各块条件不变。 (3)重复(1),说明修改存取控制字节产生的结果。 (4)将存取控制位恢复为默认值。 注意:严禁修改对块3的设置,否则容易错误将存取控制位设为永不可写,将无法恢复为默认值。