非接触式IC卡性能简介(M1)
一、 主要指标
l 容量为8K位EEPROM
l 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
l 每个扇区有独立的一组密码及访问控制
l 每张卡有唯一序列号,为32位
l 具有防冲突机制,支持多卡操作
l 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
l 数据保存期为10年,可改写10万次,读无限次
l 工作温度:-20℃~50℃(温度为90%)
l 工作频率:13.56MHZ
l 通信速率:106KBPS
l 读写距离:10mm以内(与读写器有关)
二、 存储结构
1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:
|
|
|
|
|
| 块0 |
| 数据块 | 0 |
扇区0 | 块1 |
| 数据块 | 1 |
| 块2 |
| 数据块 | 2 |
| 块3 | 密码A 存取控制 密码B | 控制块 | 3 |
| 块0 |
| 数据块 | 4 |
扇区1 | 块1 |
| 数据块 | 5 |
| 块2 |
| 数据块 | 6 |
| 块3 | 密码A 存取控制 密码B | 控制块 | 7 |
|
|
∶ ∶ ∶
|
|
|
| 0 |
| 数据块 | 60 |
扇区15 | 1 |
| 数据块 | 61 |
| 2 |
| 数据块 | 62 |
| 3 | 密码A 存取控制 密码B | 控制块 | 63 |
2、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:
★ 用作一般的数据保存,可以进行读、写操作。
★ 用作数据值,可以进行初始化值、加值、减值、读值操作。
4、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
|
密码A(6字节) 存取控制(4字节) 密码B(6字节)
5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:
块0: C10 C20 C30
块1: C11 C21 C31
块2: C12 C22 C32
块3: C13 C23 C33
三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如
进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。三个控制
位在存取控制字节中的位置,以块0为例:
对块0的控制:
bit 7 6 5 4 3 2 1 0
字节6 |
|
|
| C20_b |
|
|
| C10_b |
字节7 |
|
|
| C10 |
|
|
| C30_b |
字节8 |
|
|
| C30 |
|
|
| C20 |
字节9 |
|
|
|
|
|
|
|
|
( 注: C10_b表示C10取反 )
存取控制(4字节,其中字节9为备用字节)结构如下所示:
bit 7 6 5 4 3 2 1 0
字节6 | C23_b | C22_b | C21_b | C20_b | C13_b | C12_b | C11_b | C10_b |
字节7 | C13 | C12 | C11 | C10 | C33_b | C32_b | C31_b | C30_b |
字节8 | C33 | C32 | C31 | C30 | C23 | C22 | C21 | C20 |
字节9 |
|
|
|
|
|
|
|
|
( 注: _b表示取反 )
6、数据块(块0、块1、块2)的存取控制如下:
控制位(X=0.1.2)
| 访 问 条 件 (对数据块 0、1、2) | |||||
C1X | C2X | C3X | Read | Write | Increment | Decrement, transfer, Restore |
0 | 0 | 0 | KeyA|B | KeyA|B | KeyA|B | KeyA|B |
0 | 1 | 0 | KeyA|B | Never | Never | Never |
1 | 0 | 0 | KeyA|B | KeyB | Never | Never |
1 | 1 | 0 | KeyA|B | KeyB | KeyB | KeyA|B |
0 | 0 | 1 | KeyA|B | Never | Never | KeyA|B |
0 | 1 | 1 | KeyB | KeyB | Never | Never |
1 | 0 | 1 | KeyB | Never | Never | Never |
1 | 1 | 1 | Never | Never | Never | Never |
(KeyA|B 表示密码A或密码B,Never表示任何条件下不能实现)
例如:当块0的存取控制位C10 C20C30=1 0 0时,验证密码A或密码B正确后可读;
验证密码B正确后可写;不能进行加值、减值操作。
7、控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下:
|
|
| 密码A | 存取控制 | 密码B | |||
C13 | C23 | C33 | Read | Write | Read | Write | Read | Write |
0 | 0 | 0 | Never | KeyA|B | KeyA|B | Never | KeyA|B | KeyA|B |
0 | 1 | 0 | Never | Never | KeyA|B | Never | KeyA|B | Never |
1 | 0 | 0 | Never | KeyB | KeyA|B | Never | Never | KeyB |
1 | 1 | 0 | Never | Never | KeyA|B | Never | Never | Never |
0 | 0 | 1 | Never | KeyA|B | KeyA|B | KeyA|B | KeyA|B | KeyA|B |
0 | 1 | 1 | Never | KeyB | KeyA|B | KeyB | Never | KeyB |
1 | 0 | 1 | Never | Never | KeyA|B | KeyB | Never | Never |
1 | 1 | 1 | Never | Never | KeyA|B | Never | Never | Never |
例如:当块3的存取控制位C13 C23C33=1 0 0时,表示:
密码A:不可读,验证KEYA或KEYB正确后,可写(更改)。
存取控制:验证KEYA或KEYB正确后,可读、可写。
密码B:验证KEYA或KEYB正确后,可读、可写。
三、 工作原理
卡片的电气部分只由一个天线和ASIC组成。
天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。
ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个
8K位EEPROM组成。
工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
四、 M1射频卡与读写器的通讯
|
改变扇区
|
|
|
|
|
|
不改变扇区
复位应答(Answer to request)
M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。
防冲突机制 (Anticollision Loop)
当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。
选择卡片(Select Tag)
选择被选中的卡的序列号,并同时返回卡的容量代码。
三次互相确认(3 Pass Authentication)
选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)
对数据块的操作
读 (Read):读一个块;
写 (Write):写一个块;
加(Increment):对数值块进行加值;
减(Decrement):对数值块进行减值;
存储(Restore):将块中的内容存到数据寄存器中;
传输(Transfer):将数据寄存器中的内容写入块中;
中止(Halt):将卡置于暂停工作状态;
FMl702SL内部有8个寄存器页,每页有8个寄存器,每个寄存器有8位数据。这些寄存器是统一编址的,从Ox00~0x3F,MCU通过SPI 接口与 FMl702SL通信对这些寄存器进行设置。例如,MCU需要让FMl702SL执行某个命令(Transceive)时,把此命令的代码(1E)写入 Command寄存器就可以了。
必须注意的是,MCU对卡片的操作不是简单的一条指令所能完成的,其中必须有对FMl702SL硬件内部寄存器的设置。操作步骤如图5所示。
(1)复位初始化FMr702SL:初始化FMl702SL的SPI接口,初始化FMl702SL定时器,设置定时器控制寄存器,打开Txl、TX2。
(2)Request(请求):当一张Mifare卡片处在卡片读写器的天线的工作范围之内时,程序员控制读写器向卡片发出R:EQUEsT all(或REQUEsTstd)命令。卡片的ATR将启动,将卡片BLOCkO中的卡片类型(TagType)号共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。如果不进行复位请求操作,读写器对卡片的其它操作将不会进行。
(3)AntieollisionLOOp(防冲突机制):如果有多张Mifare卡片处在卡片读写器的天线的工作范围之内时,读写器将首先与每一张卡片进行通信,取得每一张卡片的系列号。由于每一张Mifare卡片都具有其唯一的序列号,决不会相同,因此读写器根据卡片的序列号来保证一次只对一张卡操作。该操作读写器得到卡的返回值为卡的序列号。
(4)Tag(选择卡片):完成了上述二个步骤之后,读写器必须对卡片进行选择操作。执行操作后,返回卡上的SIZE字节。
(5)Authentication(三次相互验证):经过上述三个步骤,在确认已经选择了一张卡片时,读写器在对卡进行读写操作之前,一必须对卡片上已经设置的密码进行认证。如果匹配,才允许进一步的读写操作。
(6)读写操作:对卡的最后操作是读、写、增值、减值、存储和传送等操作。
非接触式IC卡性能介绍(ML)
一、概述
MIFARE LIGHT 卡是一种小容量卡,共384位,适合于一卡一用。
二、主要指标
l 容量为384位
l 16位的数值计算
l 128位的数据区(如果不用钱包文件可达192位)
l 用户可自定义控制权限
l 唯一的32位序列号
l 工作频率:13.56MHZ
l 通信速率:106KB波特率
l 防 冲 突:同一时间可处理多张卡
l 读写距离:在10cm以内(与天线有关)
l 卡内无需电源
三、存储结构
ML卡共384位,分为12页,每页为4个字节。存储结构如下:
页号 | 字节0 | 字节1 | 字节2 | 字节3 |
|
0 | SerNr(0) | SerNr(1) | SerNr(2) | SerNr(3) | Block 0 |
1 | SerNr(4) | Size Code | Type(0) | Type(1) | |
2 | Data(0) | Data(1) | Data(2) | Data(3) | Data1 |
3 | Data(4) | Data(5) | Data(6) | Data(7) | |
4 | Value(0) | Value(1) | Value_b(0) | Value_b(1) | Value |
5 | Value(0) | Value(1) | Value_b(0) | Value_b(1) | |
6 | KeyA(0) | KeyA(1) | KeyA(2) | KeyA(3) | KeyA |
7 | KeyA(4) | KeyA(5) | AC-A | AC-A_b | |
8 | KeyB(0) | KeyB(1) | KeyB(2) | KeyB(3) | KeyB |
9 | KeyB(4) | KeyB(5) | AC-B | AC-B_b | |
A | Data(0) | Data(1) | Data(2) | Data(3) | Data2 |
B | Data(4) | Data(5) | Data(6) | Data(7) |
( 注:_b表示取反 )
1) 第0、1页存放着卡的序列号等信息,只可读。
2) 第2、3页及A、B两页数据块,可存贮一般的数据。
3) 和4、5页为数值块,可作为钱包使用,两字节的值以正和反两种形式存贮。只有减
值操作,没有加值操作。如果不做钱包使用,则可以做为普通的数据块使用。
4)第6、7、8、9页存储着密码A(6字节)、密码B(6字节)及存取控制。
5)第7页的2字节、第9页的2字节为存储控制,存储控制以正和反的形式存两次。
Bit 7 | --- |
Bit 6 | --- |
Bit 5 | Data2—Write –Enable |
Bit 4 | Data2—Read—Enable |
Bit 3 | Key+AC—Write—Enable |
Bit 2 | Value—Write—Enable |
Bit 1 | Data1—Write—Enable |
Bit 0 | Data1—Read—Enable |
例如:AC-A的初始值为ff,即‘11111111’,即:
Data1:可读、可写;
Value:可写;
AC-A:可写;
Data2:可读、可写;
6)一次写一页(4个字节),一次读两页(8个字节)。