扇区 15 块 3 2 1 0 3 2 1 0 : : : 3 2 1 0 3 2 1 0 0 1 2 3 4 KEY A KEY A 块内字节编号 5 6 7 8 9 A 控制位 控制位 B C D E KEY B KEY B F 说明 扇区15尾块 数据 数据 数据 扇区14尾块 数据 数据 数据 14 : : : KEY A KEY A 扇区1尾块 数据 数据 数据 扇区0尾块 数据 数据 制造商占用块 1 0 控制位 控制位 KEY B KEY B
3.6.1 厂商代码块
这是第1区的第1块(块0)。它含有集成电路制造商数据。出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。
最高位最低位 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序列号检查字节制造厂商数据
3.6.2 数据块
各区均有3个16字节的块用于存储数据(区0只有两个数据块以及一个只读的厂商代码块)。
数据块可以通过读写控制位设置为: ??读写块,例如用于非接触门禁管理
??数值块,例如用于电子钱包,另有可直接控制存储值的命令,如增值、减值。 在任何存储器操作之前必须执行认证命令。
3.6.2.1数值块
数值块具有电子钱包功能(有效命令:read, write, increment,decrement, restore, transfer)。
数值块有固定的数据格式,以便于错误检测、纠错和备份管理。
5
数值块只能通过以数值块格式的写操作生成: ? ?
数值:有符号4字节数值。数值的最低字节存储在最低地址字节。负值以标准的2的补码形式存储。出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。 地址(Adr):1字节地址,当进行备份管理时,可用于保存块的地址。地址保存四次。两次取反,两次不取反。在increment、decrement、restore和transfer 操作中,地址
保持不变。它只能通过write命令更改。
字节号 15 14 13 12 11 10 9 8 数值 数值 说明 3.6.3 尾块(块3) ? ?
7 6 5 4 3 Adr 2 Adr 1 0 数值 Adr Adr 各区均有一个尾块,存有:
密钥A和B(可选),读时返回逻辑“0”。
该区四个块的读写条件,存储在字节6至9?。读写控制位也指定了数据块的类型(读写块或数值块)。
如果不需要密钥B,块3的最后6字节可以用作数据字节。
尾块的字节9可用于用户数据。因为此字节享有与字节6、7、8相同的读写权限。
字节号 0 1 说明
3.7 存储器读写
2 3 4 5 6 7 8 9 10 11 12 13 14 15 密钥B(可选) 密钥A 读写条件 必须如前所述,先选定卡并通过认证,才能执行存储器操作。
换区识别和选定过程认证过程不换区的新命令退出存储器操作 数值块 读,写,增值,减值,恢复,转账 读写块 读,写
6
存储器操作 操作 说明 读 写 增值 减值 转存 恢复
3.7.1 读写条件
每个数据块和尾块的读写条件均由3个bit定义,并以非取反和取反形式保存在各个区的尾块中。
读写控制位管理着使用密钥A和B读写存储器的权限。如果知道相关的密钥,并且当前读写条件允许,读写条件是可以更改的。 读写控制位 C13 C23 C33 C12 C22 C32 C11 C21 C31 C10 C20 C30 使用块型 读写、数值和尾块 读写、数值和尾块 数值 数值 数值 数值 读存储器块 写存储器块 增加块的内容,并将结果存入内部寄存器 减少块的内容,并将结果存入内部寄存器 将内部寄存器内容写入块中 将块中内容写入内部寄存器 对指定块可以执行的存储器操作取决于所用的密钥和存储在相应尾块中的读写条件。
有效命令
????????块 3 2 1 0 说明 尾块 数据块 数据块 数据块 read, write read, write, increment, decrement, transfer, restore read, write, increment, decrement, transfer, restore read, write, increment, decrement, transfer, restore 注意:在每一次存储器读写时,内部逻辑会验证存储条件的格式。如果发现个是错误,这个区将被永久性锁死。
注意:在下列说明中,读写控制位是仅以非取反形式表述的。 MF1的内部逻辑保证了命令只有在通过认证后才被执行。
3.7.2 尾块的读写条件
对密钥和控制位的读写取决于尾块(块3)的访问控制位,分为“禁止”、“KEY A”、“KEY B”和“KEY A|B”( KEY A或KEY B)。
访问控制位字节6字节7字节8字节9
7
访问控制位 C1 C2 0 0 1 1 0 0 0 1 0 1 0 1 C3 0 0 0 0 1 1 读 禁止 禁止 禁止 禁止 禁止 禁止 KEY A 写 Key A 禁止 Key B 禁止 Key A Key B 所控制的访问对象 访问控制位 读 Key A Key A Key A|B Key A|B Key A 写 Key B 禁止 禁止 禁止 Key A 读 Key A Key A 禁止 禁止 Key A KEY B 写 Key A 禁止 Key B 禁止 Key A Key B 禁止 禁止 注释 Key B可读 Key B可读 Key B可读 传输配置状态 Key Key B 禁止 A|B Key 1 0 1 禁止 禁止 Key B 禁止 A|B Key 1 1 1 禁止 禁止 禁止 禁止 A|B 注:灰色行为key B可读并可用于存储数据的访问控制条件。
尾块和key A被预定义为传输配置状态。因为在传输配置状态下key B可读,新卡必须用key A认证。
因为访问控制位本身也可以禁止访问,所以个人化时应当特别小心。
3.7.3 数据块的访问控制条件
对数据块(块0至2)的读写访问取决于其访问控制位,分为“禁止”、“KEY A”、“KEY B”和“kEY A|B”( KEY A或KEY B)。相关访问控制位的设置确定了其用途以及相应的可用命令。 ? ? ? ?
读写块:允许读、写操作。
数值块:运行另外的数值操作——加值、减值、转存和恢复。在用于非充值卡的一种情况(‘001’)下,只能够读和减值。在另一种情况(‘110‘)下,可以用key B充值。 制造厂商块:只读,不受访位控制位设置的影响! 密钥管理:在传输配置状态下,必须用key A 认证。
访问控制位 C1 C2 0 0 1 1 0 0 1 1 1 所控制的访问操作 读 key A|B key A|B1 key A|B1 key A|B1 key A|B1 key B key B1 禁止 11用途 减值 转存 恢复 1C3 0 0 0 0 1 1 1 1 写 key A|B key B1 key B1 key B1 禁止 key B 禁止 禁止 11加值 key A|B 禁止 禁止 key B1 禁止 禁止 禁止 禁止 10 1 0 1 0 1 0 1 key A|B 禁止 禁止 key A|B1 key A|B1 禁止 禁止 禁止 传输配置状态 读写块 读写块 数值块 数值块 读写块 读写块 读写块 如果相应扇区尾块Key B可读,则不得用作认证(前表中所有灰色行)。后果:如果读写器试图用灰
色行的访问控制条件以Key B认证任何扇区的任何块,卡将在认证后拒绝所有后续存储器访问。
8

