該方法來源于PBOC標準。 命令安全報文中的MAC是使用命令的所有元素(包括命令頭和命令數(shù)據(jù)域中的數(shù)據(jù))來產(chǎn)生的。以保證命令連同數(shù)據(jù)能夠正確完整地傳送,并對發(fā)送方進行認證。 按照如下方式使用DEA加密方式產(chǎn)生MAC:
| 終端通過向IC卡發(fā)GET CHALLENGE命令獲得一個4字節(jié)隨機數(shù),后補’00 00 00 00’作為初始值。 | | 將5字節(jié)命令頭(CLA,INS,P1,P2,Lc)和命令數(shù)據(jù)域中的明文或密文數(shù)據(jù)連接在一起形成數(shù)據(jù)塊。注意,這里的Lc應是數(shù)據(jù)長度加上將計算出的MAC的長度(4字節(jié))后得到的實際長度。 | | 將該數(shù)據(jù)塊分成8字節(jié)為單位的數(shù)據(jù)塊, 表示為BLOCK1、BLOCK2、BLOCK3、BLOCK4等。最后的數(shù)據(jù)塊有可能是1~8個字節(jié)。 | | 如果最后的數(shù)據(jù)塊的長度是8字節(jié)的話,則在該數(shù)據(jù)塊之后再加一個完整的8字節(jié)數(shù)據(jù)塊‘80 00 00 00 00 00 00 00’, 轉(zhuǎn)到第五步。 如果最后的數(shù)據(jù)塊的長度不足8字節(jié),則在其后加入16進制數(shù)‘80’,如果達到8字節(jié)長度,則轉(zhuǎn)到第五步;否則接著在其后加入16進制數(shù)‘00’直到長度達到8字節(jié)。 | | 按照圖1和圖2所述的算法對這些數(shù)據(jù)塊使用指定密鑰進行加密來產(chǎn)生MAC。 | | 最終取計算結(jié)果(高4字節(jié))作為MAC。 |
圖片1.png (4.31 KB, 下載次數(shù): 41)
下載附件
2022-6-2 10:02 上傳
圖1安全報文中單倍長密鑰MAC計算
圖片2.png (6.66 KB, 下載次數(shù): 42)
下載附件
2022-6-2 10:03 上傳
圖2安全報文中雙倍長密鑰MAC算法 |