CPU 卡操作系统--FMCOS

2017-10-31 09:58:08 重庆诺塔斯智能科技有限公司 860

FMCOS 特点

支持 Single DESTriple DES 算法:可自动根据密钥的长度选择 Single DESTriple DES 算法 

支持线路加密、线路保护功能:防止通信数据被非法窃取或篡改 

    支持在一张卡上实现多个不同的应用:可建立三级目录 z 支持电子钱包功能:钱包大小可由用户自行设定 

    支持多种文件类型:包括二进制文件、定长记录文件、变长记录文件、循环文件、钱包文件 z 支持 ISO14443-4T=CL 通讯协议 

    满足银行标准:符合《中国金融集成电路(IC)卡规范》电子钱包/存折规范。 

    防插拔功能:交易处理过程中非正常拔出的卡片自动恢复 

 

功能模块 

 

FMCOS 由传输管理、文件管理、安全体系、命令解释四个功能模块组成。 

传输管理:按 ISO7816-3ISO14443-4 标准监督卡与终端之间的通信,保证数据正确地传输,防止卡与终端之间通讯数据被非法窃取和篡改。 

文件管理:将用户数据以文件形式存储在 EEPROM 中,保证访问文件时快速性和数据安全性。 z 安全体系:安全体系是 FMCOS 的核心部分,它涉及到卡的鉴别与核实,对文件访问时的权限控制机制。 

命令解释:根据接收到的命令检查各项参数是否正确,执行相应的操作。 


防冲突和选择

每个串联级别范围内地防冲突环 

下面算法应适用于防冲突环: 

步骤 1:PCD 为选择的防冲突类型和串联级别分配了带有编码的 SEL。 

步骤 2:PCD 分配了带有值为‘20’的 NVB。 

注:该值定义了该 PCD 将不发送 UID CLn 的任何部分。因此该命令迫使工作场内的所有 PICC 以其完整的 UID CLn 表示响应。 

步骤 3:PCD 发送 SEL 和 NVB

步骤 4:工作场内的所有 PICC 拥有唯一序列号,那么,如果一个以上的 PICC 响应,则冲突发生。

如果没有冲突发生,则步骤 6 到步骤 10 可被跳过。 

步骤 6:PCD 应识别除第一个冲突的位置。 

步骤 7:PCD 分配了带有值的 NVB,该值规定了 UID CLn 有效比特数。这些有效位应是 PCD 所决定的冲突发生之前的被接受到的 UID CLn 的一部分再加上(0)b 或(1)b。典型的是实现是增加

1b 

步骤 8:PCD 发送 SEL 和 NVB,后随有效位本身。 

步骤 9:只有 PICC 的 UID CLn 中的一部分等于 PCD 所发送的有效位时,PICC 才应发送其 UID CLn

的其余部分。 

步骤 10:如果出现进一步冲突,则重复步骤 6~9。最大环数是 32。 

步骤 11:如果不出现进一步冲突,则 PCD 分配带有值为“70”的 NVB。 

步骤 12:PCD 发送 SEL 和 NVB,后随 UID CLn 的所有 40 个位,后面有紧跟 CRC_A 校验和。 

步骤 13:它的 UID CLn 与 40 个比特匹配,则该 PICC 以其 SAK 表示响应。 

步骤 14:如果 UID 完整,则 PICC 应发送带有清空的串联级别位的 SAK,并从 READY 状态转换到 ACTIVE 状态。 

步骤 15:PCD 应校验 SAK 的串联比特是否被设置,以决定带有递增串联级别的进一步防冲突环时候应继续进行。 

如果 PICC 的 UID 是已知的,则 PCD 可以跳过步骤 2~10 来选择该 PICC,而无需执行防冲突环。

图片1.png

2-9 PCD 防冲突环流程图 

 

 NVB 的编码长度:1 字节 

较高 4 位称为字节计数,规定所有被 8 分开的有效数据位的数,包括被 PCD 发送的 NVB SEL

这样,字节奇数的最小值是 2 而最大值是 7 

较低 4 位称为比特计数,规定由 PCD 发送的模 8 所有有效数据位的数。 

 

b8

b7

b6

b5

b4

b3

b2

b1

含义 

0

0

1

0

-

-

-

-

字节计数=2

0

0

1

1

-

-

-

-

字节计数=3

0

1

0

0

-

-

-

-

字节计数=4

0

1

0

1

-

-

-

-

字节计数=5

0

1

1

0

-

-

-

-

字节计数=6

0

1

1

1

-

-

-

-

字节计数=7

-

-

-

-

0

0

0

0

比特计数=0

-

-

-

-

0

0

0

1

比特计数=1

-

-

-

-

0

0

1

0

比特计数=2

-

-

-

-

0

0

1

1

比特计数=3

-

-

-

-

0

1

0

0

比特计数=4

-

-

-

-

0

1

0

1

比特计数=5

-

-

-

-

0

1

1

0

比特计数=6

-

-

-

-

0

1

1

1

比特计数=7

 

 2.7 NVB 的编码 

 

SAK 的编码(选择确认) 

NVB 规定 40 个有效位并且当所有这么数据位与 UID CLn 相配时,SAK PICC 来发送。 

 

第一字节


第二、第三字节

SAK


CRC_A

1字节)


(两字节)

 

2-10 选择确认(SAK

 

b3(串联位)和 b6 的编码在表 2.8 中给出。 

 

 2.8 SAK 的编码 

 

b8

b7

b6

b5

b4

b3

b2

b1

含义 

X

X

X

X

X

1

X

X

串联比特设置,UID 不完整 

X

X

1

X

X

0

X

X

UID 完整,PICC 遵循 ISO/IEC 14443-4

X

X

0

X

X

0

X

X

UID 完整,PICC 不遵循 ISO/IEC 14443-4

 

 

UID 内容和串联级别

UID 47 10 UID 字母组成。因此,PICC 最多处理 3 个串联级别,以得到所有 UID 字节。在每个串联级别内,由 5 个数据字节组成的 UID 的一部分应被发送到 PCD。根据最大串联级别,定义了 UID 长度的三个类型。该 UID 长度应与表 2.9 一致 2.9 UID 长度 

UID0

描述 

 “08”

UID1 UID3 为动态生成的随机数 

“x0”-“x7”

专有固定数 

“x9”-“xE”


“18”-“F8”

RFU

“xF”


UID 是一个固定的唯一数或由 PICC 动态生成的随机数。UID 的第一个字节(uid0)分配后随 UID 字节的内容。 

 2.10 单个长度的 UID

UID0

描述 

制造商 ID 根据 ISO/IEC

7816-6/AM1*

每个制造商对唯一编号的其他字节的值得唯一性负责。 

”81””FE”ISO/IEC 7816-6/AM1 中定义为私用,在这里不允许出现 

串联标记 CT 的值“88”因不用于单个长度 UID 中的 uid0 

2.10 两个和三个长度的 UID

ISO/IEC 7816-6/AM1 中为私用标出的值“81”“FE”在本上下文中应不予允许。 

图片.png


2-11 串联级别的使用

注:串联标记的途是迫使造成与具育较小 UID 长度的 PICC 冲究.下列算法应适用于 PCD 以获得完整 UID;步骤 lPCD 选择串联级别 1 步骤 2:应执行防冲突环 

步骤 3PCD 应检验 SAK 的串联比特 

步骤 4:如果设置了串联比特,PCD 应增加串联缀别并初始化一个新的防冲突环

传输协议

类型 A PICC 的协议激活

图片.png

3-1 PCD 角度来看的类型 A PICC 激活 

 

选择应答请求

图片.png

3-2 选择应答请求

参数字节由两部分组成(见下图): 

——最高有效半字节 b8 b5 称为 FSDI.它用于编码 FSDFSD 定义了 PCD 能收到的帧的最大长度。FSD 的编码在 25 中给出。 

——最低有效半字节 b4 bl 命名为 CID。它定义编址了的 PICC 的逻辑号在 0 14 范围内。值

15 RFUCID PCD 规定,并且对同一时刻处在 ACTIVE 状态中的所有 PICC,它应是唯一的。

CID PICC 被激活期间是固定的.并且 PICC 应使用 CID 作为其逻辑标识符,它包含在接收到的第一个无差错的 RATS 

3-3 RATS 参数字节的编码 

图片.png