附錄B (資料性附錄) 讀寫器密碼安全應用實例
B.1 讀寫器基本結構
讀寫器的基本結構包括通信模塊、安全存取模塊(SAM)、處理器模塊和射頻模塊。讀寫器結構框圖如圖B.1所示。

圖B.1 讀寫器基本結構
通信模塊是讀寫器與系統之間的通信接口;射頻模塊是讀寫器與電子標簽之間的物理接口;安全存取模塊負責讀寫器的安全保護;處理器模塊負責對來自于電子標簽或系統的指令解析、數據處理和數據轉發。
B.2 讀寫器密碼安全需求
B.2.1 系統描述
圖B.2給出了用于某大型賽事電子門票的射頻識別系統框圖。

圖B.2電子門票射頻識別系統框圖
電子門票系統由電子標簽、讀寫器和上位機構成。其中,讀寫器采用射頻接口芯片和安全芯片來實現。
采用的安全芯片具有如下特性:
a) CPU:32位RISC處理器
b) 32KB EEPROM:用于數據和程序的存儲
c) 256KB FLASH:用于程序、函數庫和數據的存儲
d) MMU:存儲器管理單元,支持四種工作模式
e) 隨機數發生器
f) 安全探測:高低頻率檢測、高低電壓檢測
g) UART接口
h) 支持SM1\SM4、SM2、SM3、SM7密碼算法
B.2.2 安全級別
射頻識別系統的安全級別為第二級。
電子標簽功能參見附錄A,支持國產SM7密碼算法。
B.2.3 讀寫器密碼安全需求
根據系統的安全需求,讀寫器支持如下安全要素:
a) 存儲信息的保密性;
b) 存儲信息的完整性;
c) 與電子標簽傳輸信息的保密性;
d) 抗電子標簽原發抵賴;
e) 讀寫器與電子標簽雙向挑戰響應身份鑒別;
f) 訪問控制。
此外,讀寫器應支持與上位機之間的傳輸信息的保密性和完整性、身份鑒別、訪問控制、抗抵賴等安全要素。
B.3 SAM命令集
SAM支持的命令集說明如表B.1所示。
表B.1 SAM命令集說明
| 編號 | 命令 | 功能描述 |
|---|---|---|
| 1 | READ BINARY | 讀透明文件 |
| 2 | READ RECORD | 讀記錄 |
| 3 | UPDATE BINARY | 修改透明文件內容 |
| 4 | UPDATE RECORD | 修改記錄 |
| 5 | APPEND RECORD | 添加記錄 |
| 6 | VERIFY PIN | 驗證個人密碼 |
| 7 | EXTERNAL AUTHENTICATE | 外部認證 |
| 8 | GET CHALLENGE | 取隨機數 |
| 9 | INTERNAL AUTHENTICATE | 內部認證 |
| 10 | SELECT FILE | 選擇文件或應用 |
| 11 | GET RESPONSE | 取響應 |
| 12 | CREATE FILE | 建立文件 |
| 13 | RELOAD PIN | 重裝個人密碼 |
| 14 | CHANGE PIN | 修改個人密碼 |
| 15 | PIN CHANGE/UNBLOCK | 更改/解鎖個人密碼 |
| 16 | WRITE KEY | 重裝/解鎖密鑰 |
| 17 | CARD BLOCK | 環境鎖定 |
| 18 | APPLICATION BLOCK | 應用鎖定 |
| 19 | APPLICATION UNBLOCK | 應用解鎖 |
| 20 | FREEZE MF | 凍結MF |
| 21 | GET INFO | 取卡的特征信息 |
| 22 | CLEAR DF | 清除DF文件體 |
| 23 | GENERATE SM2 KEY | 產生SM2密鑰對 |
| 24 | STORE SM2 KEY | 安裝SM2密鑰 |
| 25 | GET SM2 KEY | 讀出SM2密鑰 |
| 26 | SM2 SIGNATURE | SM2簽名 |
| 27 | SIGNATURE VERIFY | SM2簽名認證 |
| 28 | SM2 ENCRYPT | SM2加密 |
| 29 | SM2 DECRYPT | SM2解密 |
| 30 | GENERATE ENVELOP | 產生數字信封 |
| 31 | OPEN ENVELOP | 打開數字信封 |
| 32 | SM3 COMPRESS | 安全哈希算法壓縮數據 |
| 33 | DECRYPT/ENCRYPT | 對稱算法加解密 |
| 34 | DELIVERY KEY | 密鑰分散 |
| 35 | CIPHER DATA | 對稱算法加解密,計算MAC |
B.4 密鑰管理
B.4.1 密碼算法配用
讀寫器配用SM1/SM4、SM2、SM3、SM7密碼算法,功能如下:
a) 對稱密碼算法SM7:用于讀寫器與電子標簽之間的挑戰響應身份鑒別和數據傳輸加密;
b) 對稱密碼算法SM1/SM4:用于密鑰分散、讀寫器數據存儲加密,以及與上位機的身份鑒別;
c) 非對稱密碼算法SM2:用于產生電子標簽內受保護數據的數字簽名,以及對數字簽名進行驗證;
d) 密碼雜湊函數SM3:用于產生摘要信息。
B.4.2 密鑰
系統中用到的密鑰如表B.2所示。
表B.2 系統中用到的密鑰
| 密鑰 | 算法 | 用途 | 產生 | 保存 | 生命周期 | 備份 |
|---|---|---|---|---|---|---|
| KA | SM1/SM4 | 分散出密鑰KE | 密碼機 | 密碼機 | 整個賽事 | 密碼機 |
| KB | SM1/SM4 | 分散出密鑰KF | 密碼機 | 密碼機、驗票讀寫器 | 整個賽事 | 密碼機 |
| KC | SM1/SM4 | 外部認證密鑰 | 密碼機 | 密碼機、驗票讀寫器 | 整個賽事 | 密碼機 |
| KD | SM2 | 簽名和驗證簽名 | 密碼機 | 私鑰:密碼機;公鑰:密碼機和驗票讀寫器 | 整個賽事 | 密碼機 |
| KE | SM7 | 門票的主密鑰 | 由密鑰KA分散出 | 門票 | 發票時:分散得到并寫入門票門票中:整個賽事 | 不備份 |
| KF | SM7 | 門票的驗票密鑰 | 由密鑰KB分散出 | 門票 | 發票時:分散得到并寫入門票驗票讀寫器中:分散得到一值到驗證密鑰結束門票中:整個賽事 | 不備份 |
| 注:表中,密碼機是指在密鑰生成、門票簽發,以及上位機與讀寫器通信安全保護時上位機中采用的密碼設備。 |
B.4.3 密鑰注入
讀寫器密鑰的分發和注入在密鑰管理中心進行,根據讀寫器的不同應用,向讀寫器內注入不同的密鑰,本應用中向驗票讀寫器中注入3個密鑰,包括用于分散得到驗票密鑰的SM1/SM4密鑰KB、用于與上位機身份鑒別用的SM1/SM4密鑰KC和SM2密鑰KD的公鑰。
密鑰的完整性檢驗利用SM3算法,在密鑰分發前計算密鑰的驗證碼,并將驗證碼隨密鑰一同分發,讀寫器在接收到密鑰后要對驗證碼進行驗證。
B.4.4 密鑰存儲
私鑰:SAM模塊不提供能夠導出保存在其中的非對稱密鑰對中私鑰的接口,也就是說一旦使用SAM模塊產生了密鑰對并保存起來,那么只有SAM自身擁有私鑰。
SM1/SM4密鑰:SM1/SM4分組密碼算法的密鑰不能通過任何接口讀出,只能在滿足安全條件下參與運算或被修改。
SM7密鑰:在讀寫器SAM內通過密鑰分散產生,用于與電子標簽的身份鑒別和訪問控制,在SAM內不存儲。
B.4.5 密鑰分散
密鑰分散方法如圖B.3所示,密鑰長度及密鑰分散因子長度均為16字節。將密鑰分散因子作為輸入數據,用SM1/SM4算法做加密運算,產生的16字節數據作為子密鑰。

圖B.3 密鑰分散計算方法
B.4.6 密鑰使用
讀寫器內的SM1/SM4密鑰KB用于分散出SM7算法使用的驗票密鑰。
讀寫器內的SM1/SM4密鑰KC用于讀寫器與上位機之間的身份鑒別,以及SAM內敏感信息加密。
讀寫器內的SM2密鑰對KD中的公鑰用于驗證數字簽名。
SM7密鑰由KB分散得到,其參與的加解密操作在SAM模塊內部完成,用于讀寫器與電子標簽挑戰響應身份鑒別,以及傳輸加密的密鑰協商。
B.5 訪問控制
B.5.1 文件系統
所有密鑰和其他數據都存儲在文件系統中,安全的文件系統是SAM模塊的安全基礎。讀寫器SAM文件系統結構及權限說明如表B.3所示。
表B.3 SAM文件結構及權限說明
| 文件名稱 | 標識符 | 權限 | 密鑰 | 說明 |
|---|---|---|---|---|
| 根目錄MF | 3F00 | 全局權限 | 主控密鑰KC,標識為0000的外部認證密鑰 | 成功認證后可獲得主控密鑰權限,可建立文件、目錄等相應權限操作 |
| 環境目錄DDF | 除0000、3F00、FFFF外其它值 | 全局權限 | 主控密鑰KC | 成功認證后可獲得主控密鑰權限,可建立文件、目錄等相應權限操作 |
| 應用目錄ADF | 除0000、3F00、FFFF外其它值 | 局部權限 | 主控密鑰KC | 成功認證后可獲得主控密鑰權限,可建立文件等相應權限操作 |
| 透明文件 | 除0000、3F00、FFFF外其它值 | 讀寫權限設置,可設置1-15級權限 | 主控密鑰KC或傳輸密鑰 | 讀寫該文件時,若需要計算密文和校驗碼,則使用讀/寫密鑰短標識對應的密鑰值進行計算 |
| 記錄文件 | 除0000、3F00、FFFF外其它值 | 讀寫權限設置,可設置1-15級權限 | 主控密鑰KC或傳輸密鑰 | 讀寫該文件時,若需要計算密文和校驗碼,則使用讀/寫密鑰短標識對應的密鑰值進行計算 |
| 安全文件 | 取值范圍0001~00FF | 只能寫入或修改,不能從SAM中讀出。更新密鑰可設置1-15級權限;密鑰使用可設置1-15級權限 | 主控密鑰KC或傳輸密鑰 | 存放SM1密鑰KA和KB。在更新密鑰時,若需要計算密文和校驗碼,則使用更新密鑰短標識對應的密鑰值進行計算 |
| SM2公鑰文件 | 除0000、3F00、FFFF外其它值 | 公鑰使用可設置1-15級權限,以保護加密和驗證簽名操作;公鑰讀寫可設置1-15級權限,以保護導入/導出 | 主控密鑰KC或傳輸密鑰 | 存放SM2公鑰數據。在導出/導入公鑰時,若需要計算密文和校驗碼,則使用讀/寫密鑰標識對應的密鑰值進行計算 |
| SM2私鑰文件 | 除0000、3F00、FFFF外其它值 | 私鑰使用可設置1-15級權限,以保護解密和簽名操作;私鑰寫可設置1-15級權限,以保護私鑰導入 | 主控密鑰KC或傳輸密鑰 | 存放SM2私鑰數據。在導入私鑰時,若需要計算密文和校驗碼,則使用寫密鑰標識對應的密鑰值進行計算 |
| 標識符為0000的SM1密鑰KC特指為主控密鑰。一個目錄(MF/DDF/ADF)下只能有一個主控密鑰。主控密鑰的建立是隨目錄一起建立的,可通過WRITEKEY 命令更新主控密鑰值。 |
B.5.2 訪問控制策略
安全管理系統支持為特定文件設定訪問權限。應用必須通過外部認證等方式取得相應權限后才能訪問特定文件。
訪問權限用2個字節表示,高字節對應全局權限,低字節對應局部權限。每個字節的高4位表示權限的下限,每個字節的低4位表示權限的上限。假設權限的高字節為‘XY’,若‘X’£‘Y’表示文件的全局權限在‘X’至‘Y’內;若‘X’>‘Y’,表示文件被禁止訪問;若為‘0Y’,表示沒有權限限制。權限的低字節說明與高字節相同。
B.6 讀寫器與電子標簽的雙向身份鑒別
采用雙向挑戰響應身份鑒別方式,鑒別流程如圖B.4所示。
電子標簽芯片被讀寫器選中后(REQA、ANTI、SELECT指令操作),必須進行雙向挑戰響應身份鑒別,通過身份鑒別后,才能對認證密鑰對應的塊進行相應控制權限的訪問。
認證前的準備:
a) 電子標簽和讀寫器使用相同的密碼算法SM7。
b) 電子標簽和讀寫器使用相同的密鑰。
c) 電子標簽和讀寫器使用各自的隨機數發生器。
認證過程:
a) 讀寫器發送鑒別指令以及指令參數(密鑰塊地址)。
b) 電子標簽接收指令后發送由隨機數發生器產生的32位Rb。
c) 讀寫器收到Rb后,由隨機數發生器產生32位隨機數Ra,并以128位KEY為密鑰進行加密,加密的明文為Ra(左半部分)Rb(右半部分)。加密結束,發送64位密文Token1 (低位先發)。
d) 電子標簽接收到Token1之后對其進行解密,解密后得到的明文右半部分Rb’與之前產生的Rb比較。
e) 電子標簽比較Rb’正確后,加密生成Token2,加密的明文為電子標簽新產生的32位隨機數Rb”(左半部分,Rb”用于密鑰協商)和解密Token1得到的Ra’(右半部分),得到的64位密文為Token2。如果Rb’與Rb不同,則電子標簽無響應并返回到空閑/掛起狀態。
f) 電子標簽加密完成后,發送Token2(低位先發)。在發送完信息后,電子標簽等待讀寫器發送的后續命令。
g) 讀寫器接收到Token2后,解密并比較所得到的Ra’與原先發送的Ra,如果Ra’比較正確,鑒別通過,否則鑒別失敗。

圖B.4 雙向鑒別流程
某一密鑰的鑒別通過后,所有該密鑰對應的訪問權限全部打開。
B.7 保密性和完整性
B.7.1 存儲信息的保密性和完整性
讀寫器SAM內存儲的敏感信息經過SM1/SM4密碼算法加密后存儲,保證存儲信息的保密性。
讀寫器SAM內存儲的敏感信息經過SM3密碼雜湊函數計算產生摘要信息,并存儲摘要信息,用于完整性校驗。
B.7.2 與電子標簽傳輸信息的保密性
對通信數據的加密采用基于SM7算法的流加密方式,數據發送端通過OFB模式循環產生密碼流,并將通信明文數據與密碼流異或后發出;數據接收端通過相同方法產生相同的密碼流,將接收到的加密數據與密碼流異或后得到數據明文。
在圖B.4描述的雙向身份鑒別過程結束后,電子標簽與讀寫器都繼續使用當次身份鑒別過程所使用的密鑰KEY,將身份鑒別過程中產生的Token2作為初始向量,通過SM7算法的OFB模式運算,所產生的加密結果用作流加密的密碼流,與通信數據明文(密文)異或后得到通信數據密文(明文)。
B.8 抗抵賴
讀寫器抗電子標簽原發抵賴,過程如下。
電子標簽發行階段:
a) 讀寫器通過雜湊算法SM3將電子標簽需要簽名的數據原文生成數字摘要。
b) 讀寫器用私鑰對數字摘要進行數字簽名。
c) 讀寫器將簽名數據原文、數字簽名、公鑰證書一起進行封裝,形成簽名結果發送給電子標簽,并存儲在電子標簽存儲器內。
應用階段:
a) 讀寫器讀取電子標簽內存儲的簽名數據原文、數字簽名和公鑰證書。
b) 讀寫器通過密碼雜湊函數SM3將電子標簽的簽名數據原文生成數字摘要。
c) 讀寫器驗證從電子標簽內讀取的公鑰證書,獲得電子標簽信息原發者的公鑰,利用該公鑰對從電子標簽內讀取的數字簽名進行解密,獲得電子標簽信息原發者生成的數字摘要。
d) 讀寫器將兩個摘要信息進行比較,結果一致則電子標簽的真實性驗證成功。
B.9 讀寫器與上位機通信安全
采用SM1/SM4密碼算法實現讀寫器與上位機的雙向身份鑒別。
采用SM1/SM4密碼算法對數據加密并計算校驗值(CBC-MAC),以實現讀寫器與上位機之間傳輸信息的保密性和完整性。
GB/T37033.2-2018信息安全技術射頻識別系統密碼應用技術要第2部分:電子標簽與讀寫器及其通信密碼應用技術要求
推薦文章: