CPU 卡操作系統(tǒng)--FMCOS
FMCOS 特點(diǎn)
支持 Single DES、Triple DES 算法:可自動(dòng)根據(jù)密鑰的長(zhǎng)度選擇 Single DES、Triple DES 算法
支持線路加密、線路保護(hù)功能:防止通信數(shù)據(jù)被非法竊取或篡改
支持在一張卡上實(shí)現(xiàn)多個(gè)不同的應(yīng)用:可建立三級(jí)目錄 z 支持電子錢包功能:錢包大小可由用戶自行設(shè)定
支持多種文件類型:包括二進(jìn)制文件、定長(zhǎng)記錄文件、變長(zhǎng)記錄文件、循環(huán)文件、錢包文件 z 支持 ISO14443-4:T=CL 通訊協(xié)議
滿足銀行標(biāo)準(zhǔn):符合《中國(guó)金融集成電路(IC)卡規(guī)范》電子錢包/存折規(guī)范。
防插拔功能:交易處理過(guò)程中非正常拔出的卡片自動(dòng)恢復(fù)
功能模塊
FMCOS 由傳輸管理、文件管理、安全體系、命令解釋四個(gè)功能模塊組成。
傳輸管理:按 ISO7816-3、ISO14443-4 標(biāo)準(zhǔn)監(jiān)督卡與終端之間的通信,保證數(shù)據(jù)正確地傳輸,防止卡與終端之間通訊數(shù)據(jù)被非法竊取和篡改。
文件管理:將用戶數(shù)據(jù)以文件形式存儲(chǔ)在 EEPROM 中,保證訪問(wèn)文件時(shí)快速性和數(shù)據(jù)安全性。 z 安全體系:安全體系是 FMCOS 的核心部分,它涉及到卡的鑒別與核實(shí),對(duì)文件訪問(wèn)時(shí)的權(quán)限控制機(jī)制。
命令解釋:根據(jù)接收到的命令檢查各項(xiàng)參數(shù)是否正確,執(zhí)行相應(yīng)的操作。
防沖突和選擇
每個(gè)串聯(lián)級(jí)別范圍內(nèi)地防沖突環(huán)
下面算法應(yīng)適用于防沖突環(huán):
步驟 1:PCD 為選擇的防沖突類型和串聯(lián)級(jí)別分配了帶有編碼的 SEL。
步驟 2:PCD 分配了帶有值為‘20’的 NVB。
注:該值定義了該 PCD 將不發(fā)送 UID CLn 的任何部分。因此該命令迫使工作場(chǎng)內(nèi)的所有 PICC 以其完整的 UID CLn 表示響應(yīng)。
步驟 3:PCD 發(fā)送 SEL 和 NVB
步驟 4:工作場(chǎng)內(nèi)的所有 PICC 擁有唯一序列號(hào),那么,如果一個(gè)以上的 PICC 響應(yīng),則沖突發(fā)生。
如果沒(méi)有沖突發(fā)生,則步驟 6 到步驟 10 可被跳過(guò)。
步驟 6:PCD 應(yīng)識(shí)別除第一個(gè)沖突的位置。
步驟 7:PCD 分配了帶有值的 NVB,該值規(guī)定了 UID CLn 有效比特?cái)?shù)。這些有效位應(yīng)是 PCD 所決定的沖突發(fā)生之前的被接受到的 UID CLn 的一部分再加上(0)b 或(1)b。典型的是實(shí)現(xiàn)是增加
(1)b。
步驟 8:PCD 發(fā)送 SEL 和 NVB,后隨有效位本身。
步驟 9:只有 PICC 的 UID CLn 中的一部分等于 PCD 所發(fā)送的有效位時(shí),PICC 才應(yīng)發(fā)送其 UID CLn
的其余部分。
步驟 10:如果出現(xiàn)進(jìn)一步?jīng)_突,則重復(fù)步驟 6~9。最大環(huán)數(shù)是 32。
步驟 11:如果不出現(xiàn)進(jìn)一步?jīng)_突,則 PCD 分配帶有值為“70”的 NVB。
步驟 12:PCD 發(fā)送 SEL 和 NVB,后隨 UID CLn 的所有 40 個(gè)位,后面有緊跟 CRC_A 校驗(yàn)和。
步驟 13:它的 UID CLn 與 40 個(gè)比特匹配,則該 PICC 以其 SAK 表示響應(yīng)。
步驟 14:如果 UID 完整,則 PICC 應(yīng)發(fā)送帶有清空的串聯(lián)級(jí)別位的 SAK,并從 READY 狀態(tài)轉(zhuǎn)換到 ACTIVE 狀態(tài)。
步驟 15:PCD 應(yīng)校驗(yàn) SAK 的串聯(lián)比特是否被設(shè)置,以決定帶有遞增串聯(lián)級(jí)別的進(jìn)一步防沖突環(huán)時(shí)候應(yīng)繼續(xù)進(jìn)行。
如果 PICC 的 UID 是已知的,則 PCD 可以跳過(guò)步驟 2~10 來(lái)選擇該 PICC,而無(wú)需執(zhí)行防沖突環(huán)。
圖 2-9 PCD 防沖突環(huán)流程圖
NVB 的編碼長(zhǎng)度:1 字節(jié)
較高 4 位稱為字節(jié)計(jì)數(shù),規(guī)定所有被 8 分開的有效數(shù)據(jù)位的數(shù),包括被 PCD 發(fā)送的 NVB 和 SEL。
這樣,字節(jié)奇數(shù)的最小值是 2 而最大值是 7。
較低 4 位稱為比特計(jì)數(shù),規(guī)定由 PCD 發(fā)送的模 8 所有有效數(shù)據(jù)位的數(shù)。
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含義 |
0 | 0 | 1 | 0 | - | - | - | - | 字節(jié)計(jì)數(shù)=2 |
0 | 0 | 1 | 1 | - | - | - | - | 字節(jié)計(jì)數(shù)=3 |
0 | 1 | 0 | 0 | - | - | - | - | 字節(jié)計(jì)數(shù)=4 |
0 | 1 | 0 | 1 | - | - | - | - | 字節(jié)計(jì)數(shù)=5 |
0 | 1 | 1 | 0 | - | - | - | - | 字節(jié)計(jì)數(shù)=6 |
0 | 1 | 1 | 1 | - | - | - | - | 字節(jié)計(jì)數(shù)=7 |
- | - | - | - | 0 | 0 | 0 | 0 | 比特計(jì)數(shù)=0 |
- | - | - | - | 0 | 0 | 0 | 1 | 比特計(jì)數(shù)=1 |
- | - | - | - | 0 | 0 | 1 | 0 | 比特計(jì)數(shù)=2 |
- | - | - | - | 0 | 0 | 1 | 1 | 比特計(jì)數(shù)=3 |
- | - | - | - | 0 | 1 | 0 | 0 | 比特計(jì)數(shù)=4 |
- | - | - | - | 0 | 1 | 0 | 1 | 比特計(jì)數(shù)=5 |
- | - | - | - | 0 | 1 | 1 | 0 | 比特計(jì)數(shù)=6 |
- | - | - | - | 0 | 1 | 1 | 1 | 比特計(jì)數(shù)=7 |
表 2.7 NVB 的編碼
SAK 的編碼(選擇確認(rèn))
當(dāng) NVB 規(guī)定 40 個(gè)有效位并且當(dāng)所有這么數(shù)據(jù)位與 UID CLn 相配時(shí),SAK 由 PICC 來(lái)發(fā)送。
第一字節(jié) | 第二、第三字節(jié) | |
SAK | CRC_A | |
(1字節(jié)) | (兩字節(jié)) |
圖 2-10 選擇確認(rèn)(SAK)
位 b3(串聯(lián)位)和 b6 的編碼在表 2.8 中給出。
表 2.8 SAK 的編碼
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含義 |
X | X | X | X | X | 1 | X | X | 串聯(lián)比特設(shè)置,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 內(nèi)容和串聯(lián)級(jí)別
UID 由 4、7 或 10 個(gè) UID 字母組成。因此,PICC 最多處理 3 個(gè)串聯(lián)級(jí)別,以得到所有 UID 字節(jié)。在每個(gè)串聯(lián)級(jí)別內(nèi),由 5 個(gè)數(shù)據(jù)字節(jié)組成的 UID 的一部分應(yīng)被發(fā)送到 PCD。根據(jù)最大串聯(lián)級(jí)別,定義了 UID 長(zhǎng)度的三個(gè)類型。該 UID 長(zhǎng)度應(yīng)與表 2.9 一致表 2.9 UID 長(zhǎng)度
UID0 | 描述 |
“08” | UID1 到 UID3 為動(dòng)態(tài)生成的隨機(jī)數(shù) |
“x0”-“x7” | 專有固定數(shù) |
“x9”-“xE” | |
“18”-“F8” | RFU |
“xF” |
UID 是一個(gè)固定的唯一數(shù)或由 PICC 動(dòng)態(tài)生成的隨機(jī)數(shù)。UID 的第一個(gè)字節(jié)(uid0)分配后隨 UID 字節(jié)的內(nèi)容。
表 2.10 單個(gè)長(zhǎng)度的 UID
UID0 | 描述 |
制造商 ID 根據(jù) ISO/IEC 7816-6/AM1* | 每個(gè)制造商對(duì)唯一編號(hào)的其他字節(jié)的值得唯一性負(fù)責(zé)。 |
值”81”到”FE”在 ISO/IEC 7816-6/AM1 中定義為“私用”,在這里不允許出現(xiàn) |
串聯(lián)標(biāo)記 CT 的值“88”因不用于單個(gè)長(zhǎng)度 UID 中的 uid0。
表 2.10 兩個(gè)和三個(gè)長(zhǎng)度的 UID
在 ISO/IEC 7816-6/AM1 中為“私用”標(biāo)出的值“81”到“FE”在本上下文中應(yīng)不予允許。
圖 2-11 串聯(lián)級(jí)別的使用
注:串聯(lián)標(biāo)記的途是迫使造成與具育較小 UID 長(zhǎng)度的 PICC 沖究.下列算法應(yīng)適用于 PCD 以獲得完整 UID;步驟 l:PCD 選擇串聯(lián)級(jí)別 1 步驟 2:應(yīng)執(zhí)行防沖突環(huán)
步驟 3:PCD 應(yīng)檢驗(yàn) SAK 的串聯(lián)比特
步驟 4:如果設(shè)置了串聯(lián)比特,PCD 應(yīng)增加串聯(lián)綴別并初始化一個(gè)新的防沖突環(huán)
傳輸協(xié)議
類型 A PICC 的協(xié)議激活
圖 3-1 從 PCD 角度來(lái)看的類型 A PICC 激活
選擇應(yīng)答請(qǐng)求
圖 3-2 選擇應(yīng)答請(qǐng)求
參數(shù)字節(jié)由兩部分組成(見下圖):
——最高有效半字節(jié) b8 到 b5 稱為 FSDI.它用于編碼 FSD。FSD 定義了 PCD 能收到的幀的最大長(zhǎng)度。FSD 的編碼在 25 中給出。
——最低有效半字節(jié) b4 到 bl 命名為 CID。它定義編址了的 PICC 的邏輯號(hào)在 0 到 14 范圍內(nèi)。值
15 為 RFU。CID 由 PCD 規(guī)定,并且對(duì)同一時(shí)刻處在 ACTIVE 狀態(tài)中的所有 PICC,它應(yīng)是唯一的。
CID 在 PICC 被激活期間是固定的.并且 PICC 應(yīng)使用 CID 作為其邏輯標(biāo)識(shí)符,它包含在接收到的第一個(gè)無(wú)差錯(cuò)的 RATS。
圖 3-3 RATS 參數(shù)字節(jié)的編碼