CPU卡發卡總結(二) 線路保護和線路加密

2022-03-31 04:18:17 字數 1836 閱讀 1191

安全報文傳送

三種情況:

- 線路保護:對傳輸的資料附加4位元組的mac碼,接收方收到後首先進行校驗,只有校驗正確的資料才予以接受,這樣就防止了對傳輸資料的篡改。

- 線路加密:對傳輸的資料進行des加密,這樣傳輸的就是密文,攻擊者即使獲得了資料也沒有意義。

- 線路加密保護:對傳輸的資料進行des加密後再附加4byte mac碼

如何使用安全報文傳送:

在建立檔案時改變檔案型別,使用線路保護則最高位置為1,使用線路加密則次高位置為1,使用線路加密保護則最高位和次高位都置為1.

在對檔案進行讀寫或使用金鑰時,如需採用安全報文傳送,必須置cla的後半位元組為十六進製制「4」

線路保護mac計算:

假設建立了乙個二進位制檔案,使用線路保護,檔案標識0x16,檔案空間0x20。

則向二進位制檔案中寫資料的指令為:

04d6960024 + val + mac

其中cla為04,因為檔案使用線路保護,所以後半位元組為4

ins為d6

p1為96,其中高3位為100,低5位為檔案標識

p2為00,為欲寫檔案的偏移量

lc為24

val為要寫入到二進位制檔案中的資料,0x20個位元組

mac就是我們需要計算的線路保護mac

而mac又是根據寫指令去除mac部分計算得到的,即是根據「04d6960024 + val」計算得到的。

mac計算步驟:

1、 終端向cpu卡傳送get challenge指令,取得4位元組隨機數,後補「0x00000000」,得到的8位元組結果作為mac計算的初始值。

2、 檢查「04d6960024 + val」的位元組數是否為8的倍數,不是則補「0x8000…」,是則補「0x8000000000000000」,然後將得到的結果按8位元組每塊分成d1、d2、d3…

3、 判斷金鑰的長度。

如果金鑰長度為8位元組,則按如下方式計算mac:

如果金鑰長度為16位元組,則按如下方式計算mac:

使用sam卡計算mac:

1、 終端向cpu卡傳送get challenge指令,取得4位元組隨機數,後補「0x00000000」,得到的8位元組結果作為mac計算的初始值。

2、 通用des初始化

80 1a + p1(金鑰用途)+ p2(金鑰版本)+ lc + data(分散因子)

3、 通用des計算

80 fa + p1 + p2(00) + lc + data(8位元組隨機數+)+ 「04d6960024 + val + 0x8000…」

這裡p1的取值是關鍵:00001001,即05,代表有初始值的mac計算

返回資料即為4位元組mac

線路加密計算:

具體計算方式同des/3des演算法,這裡介紹的是如何使用sam卡加密。

1、通用des初始化

80 1a + p1(金鑰用途)+ p2(金鑰版本)+ lc + data(分散因子)

2、通用des計算

80 fa + p1 + p2(00) + lc + 「明文」

這裡p1的取值是關鍵:00000000,即00,代表無後續快的加密計算

返回資料即為加密得到的密文

CPU卡發卡總結(四) 復合消費

復合消費主要面向於交通領域的應用,既可以滿足高速公路不停車收費系統的需求,也可以滿足城市公共運輸的應用需求。復合消費相對於普通消費來說多了乙個對復合記錄檔案的更新。比如在高速公路入口或者乘客上車時先做一次金額為 0的復合消費,從而正確記錄入口或者上車站點的相關資訊,之後在高速公路出口或者乘客下車時,...

CPU卡發卡總結(三) 充值和消費

充值 離線充值 1 選擇要充值的應用目錄。2 驗證口令金鑰。3 取得充值金鑰 這裡使用加密機提供的分散指令,用 ats作為分散因子對 00b0 金鑰進行分散得到充值金鑰 4 圈存交易初始化。5 生成過程金鑰。6 用過程金鑰計算 mac1 與初始化交易返回的 mac1 進行比對,若一致,則繼續執行。7...

CPU卡程式設計例項(二)軟體設計

2.1.工作原理 cpu卡在資料傳輸方式上與儲存卡是不同的,它採用的是序列非同步半雙工方式,所以在對cpu卡進行讀寫設計時,首先應計算出在i o線上資料的位寬,以保證通訊的正確 其次,由於採用的是msp430f系列微控制器,它採用了dco技術,其向系統提供的時鐘頻率是可調的,故應根據系統要求的時鐘頻...