8.2 傳輸信息的完整性
8.2.1 采用CBC-MAC的完整性校驗方法
電子標簽和讀寫器通信過程中,發送方發送敏感信息前,讀寫器讀取電子標簽的UID,使用該UID對根密鑰進行分散得到電子標簽個性化密鑰K1。雙方通信過程中,使用MAC方式進行完整性校驗,具體過程如下:
a) 發送方用個性化密鑰K1計算待發送信息M的MAC值:MAC1=MAC(M,K1),并將MAC1附加至信息M后,將Token1=(M||MAC1)發送給接收方。
b) 接收方收到Token1后,用個性化密鑰K1計算收到的信息M的MAC值:MAC2=MAC (M,K1),比較MAC1和MAC2,如相等則通過完整性校驗。
MAC的計算過程如下:
a) 將信息M分成長度為n比特的數據分組M1,M2,…,Mj。若Mj的長度不夠,在后面補足,補足方式由具體應用規定;若Mj的長度剛好為n比特,則在其后補一個數據分組。
b) 計算C1=Enc(M1, K1)。
c) 當j>1時,計算Ci=Enc(Mi?Ci-1, K1) ,其中i=2,3,…,j。
d) MAC=Cj。
8.2.2 采用HMAC的完整性校驗方法
電子標簽和讀寫器通信過程中,發送方發送敏感信息前,讀寫器讀取電子標簽的UID,使用該UID對根密鑰進行分散得到電子標簽個性化密鑰K1。雙方通信過程中,使用HMAC的方式進行完整性校驗。
選擇一個密碼雜湊函數H,其輸入數據塊的字節長度為B(B=64),輸出數據塊字節長度為L(L為所選密碼雜湊算法的輸出長度)。鑒別密鑰K1的長度應是小于等于B,但大于等于L的任何正整數值。
定義兩個固定且不同的字符串ipad和opad:
ipad = 字節‘0x36’重復B次
opad = 字節‘0x5C’重復B次
計算信息M的HMAC:
HMAC(M)= H((K1 ?opad),H((K1 ? ipad),M))
具體計算過程說明如下:
a) 若密鑰K1長度小于B,在密鑰K1后面添加0來創建一個字長為B的字符串K;若K1長度大于B,返回密鑰長度錯誤。(例如,如果K1的字長是20字節,B=64字節,則K1后會加入44個字節0x00)。
b) 計算Si=K?ipad。
c) 將輸入信息M附加在Si之后。使用密碼雜湊函數H(Si,M)計算其雜湊值。
d) 計算So=K?opad。
e) 將c)得到的H(Si,M)附加在So后面,并用密碼雜湊函數H(So,H(Si,M))計算其雜湊值。
f) 以上e)得到密碼雜湊函數的輸出即為最終的HMAC值。
GB/T37033.2-2018信息安全技術射頻識別系統密碼應用技術要第2部分:電子標簽與讀寫器及其通信密碼應用技術要求
推薦文章: