高速公路ETC卡籤之我見9-常見算法



本部分主要介紹下高速公路ETC卡籤所涉及的主要算法,包括子密鑰推導、MAC計算以及過程密鑰,具體如後描述。

1.  子密鑰推導(密鑰分散)

子密鑰推導包括左半部分推導、右半部分推導以及合併三個環節。

  1. 左半部分的推導方法

推導雙倍長 DPK左半部分的方法:

  • 將應用序列號(分散係數)的最右16個數字作爲輸入數據

  • MPK 作爲加密密鑰

  • MPK 對輸入數據進行Triple DES運算

 

  1. 右半部分的推導方法

推導雙倍長DPK右半部分的方法:

  • 將應用序列號(分散係數)的最右16個數字的求反作爲輸入數據

  • MPK 作爲加密密鑰

  • MPK 對輸入數據進行TripleDES運算

  1. 合併

DPK = DPK_L || DPK_R

最終得到的DPK即爲MPK的子密鑰(分散結果)。

2.  MAC計算

MAC,即報文鑑別碼,按照如下的方式使用單重或三重DES加密方式產生MAC

  • 第一步:取8個字節的16進制數字‘0或者 4字節隨機數+4字節’0’(由業務類型確定)作爲初始變量。

  • 第二步:按照順序將以下數據串聯在一起形成數據塊:

  • 第三步:將該數據塊分成8字節爲單位的數據塊,標號爲D1D2D3D4等。最後的數據塊有可能是1-8個字節。

  • 第四步:如果最後的數據塊長度是8字節的話,則在其後加上16進制數字’80 00 00 00 00 00 00 00 ’,轉到第五步。 如果最後的數據塊長度不足8字節,則在其後加上16進制數字’80’,如果達到8字節長度,則轉入第五步;否則在其後加入16進制數字’0’直到長度達到8字節。

  • 第五步:對這些數據塊使用相應的密鑰進行加密。根據密鑰的長度採用Single DESTriple DES

  • 第六步:最終得到是從計算結果左側取得的4字節長度的MAC(或TAC)。

用長度爲16字節的密鑰產生MAC

 

用長度爲8字節的密鑰產生MAC

 

3.  過程密鑰產生

過程密鑰是在交易過程中用可變數據產生的單倍長密鑰。過程密鑰產生後只能在某過程/交易中使用一次。

下圖描述了 EP進行消費交易時產生過程密鑰的機制。這方法也用於不同交易類型的過程密鑰的產生,但輸入的數據取決於不同的交易類型。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章