銀聯規範的密鑰體系


仔細看這張圖,我花了好幾個小時消化、自己畫的這個密鑰關係圖……





MAC

報文鑑別碼  messang authentication code)

一種數據保護的算法方式,用來完成消息來源的正確性鑑別,防止數據被篡改或非法用戶竊入的數據。

將要傳輸的數據通過MAC計算,產生MAC碼跟在數據串後面,發送給設備。

設備接收到數據後,用相同的算法驗證下MAC是否正確。


先備知識:

DES(Data Encryption Standard 數據加密標準),密鑰長度56位。使用對稱密鑰加密法。

3DES使用3條64位的密鑰對數據進行三次加密。它以DES爲基本模塊,通過組合分組方法設計出分組加密算法。

3DES的MAC碼計算一般是把數據分段成8字節的來進行運算的,不足8字節的需要補齊。


加密過程:

首先用第一個數據塊和初始數據進行異或,然後用左8字節的密碼進行DES加密,

將結果和第二包數據異或,再用左8字節的密碼加密,直到最後一包數據,

然後在右8字節的密碼DES解密,然後再用左8字節的密碼進行DES加密得到8個字節的MAC碼。


詳細舉例:

a)  將欲發送給POS中心的消息中,從消息類型(MTI)到63域之間的部分構成MAC ELEMEMENT BLOCK (MAB).

b)  對MAB,按每8個字節做異或(不管信息中的字符格式),如果最後不滿8個字節,則添加“0X00”。

MAB = M1 M2 M3 M4

其中:

M1 = MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18

M2 = MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28

M3 = MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38

M4 = MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48

按如下規則進行異或運算:

                                MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18

XOR)                     MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28

                               --------------------------------------------------------

TEMP BLOCK1   =  TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18

然後,進行下一步的運算:

                                TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18

XOR)                     MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38

                                -------------------------------------------------------

TEMP BLOCK2  =   TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28

再進行下一步的運算:

                               TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28

XOR)                     MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48

                                -------------------------------------------------------

RESULT BLOCK    =  TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38
         

c)  將異或運算後的最後8個字節(RESULT BLOCK)轉換成16 個HEXDECIMAL:

RESULT BLOCK  = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38

                          = TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342 ||

                              TM351 TM352 TM361 TM362 TM371 TM372 TM381 TM382

d)  取前8 個字節用MAK加密:

ENC BLOCK1   =   eMAK( TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342 )

                        =   EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18

e)  將加密後的結果與後8 個字節異或:

                            EN11    EN12    EN13    EN14   EN15    EN16   EN17    EN18
XOR)                 TM351 TM352 TM361 TM362 TM371 TM372 TM381 TM382
                            -----------------------------------------------------------------

TEMP BLOCK  =  TE11  TE12  TE13  TE14  TE15  TE16  TE17  TE18

f)  用異或的結果TEMP BLOCK 再進行一次單倍長密鑰算法運算。

ENC BLOCK2  =     eMAK(TE11 TE12 TE13 TE14 TE15 TE16 TE17 TE18)

                       =     EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28

g)  將運算後的結果(ENC BLOCK2)轉換成16 個HEXDECIMAL:

ENC BLOCK2    =     EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28
                         =     EM211 EM212 EM221 EM222 EM231 EM232 EM241 EM242 ||

                                 EM251 EM252 EM261 EM262 EM271 EM272 EM281 EM282

示例:

ENC RESULT= %H84, %H56, %HB1, %HCD, %H5A, %H3F, %H84, %H84

轉換成16 個HEXDECIMAL:

“8456B1CD5A3F8484”

h)  取前8個字節作爲MAC值。
取”8456B1CD”爲MAC值。



PIN

舉例:

計算PIN算法,給出一個卡號,約定密鑰爲12位3,請計算PIN密文。要求算異或

例如:明文PIN爲: 123456,
假設:磁卡上的PAN:1234 5678 9012 3456 78
截取下的PAN:6789 0123 4567
則用於PIN加密的PAN爲:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
      PIN BLOCK爲:0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF
                              異或:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
                           結果爲:0x06 0x12 0x53 0xDF 0xFE 0xDC 0xBA 0x98



MD5

MD5(Message-Digest Algorithm 5 信息摘要算法5) 即哈希算法,一種雜湊算法。非對稱加密算法。

作用:在用數字簽名軟件簽署私人密鑰前,任意長度的大容量信息被壓縮成一個定長的十六進制數字串

特點:

1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,所得到的MD5值都有很大區別。

4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即僞造數據)是非常困難的。

應用:

一致性驗證:

對一段Message產生信息摘要Message-Digest,以防止被篡改。

數字簽名:

對一段Message產生fingerprint,以防止被篡改。

(記錄傳輸數據的MD5值,如果數據被修改,MD5值將不匹配。將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現(兩個MD5值不相同)。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。)

安全訪問認證:

在Unix系統中用戶的密碼是以MD5經Hash運算後存儲在文件系統中。用戶登錄輸入密碼時,系統將其進行MD5 Hash運算,與保存在文件系統中的MD5值比較,確定密碼是否正確。如此,系統不需要密碼的明碼就可確定用戶登錄系統的合法性。

(正是因爲這個原因,現在被黑客使用最多的一種破譯密碼的方法就是一種被稱爲"跑字典"的方法。有兩種方法得到字典,一種是日常蒐集的用做密碼的字符串表,另一種是用排列組合方法生成的,先用MD5程序計算出這些字典項的MD5值,然後再用目標的MD5值在這個字典中檢索。我們假設密碼的最大長度爲8位字節(8 Bytes),同時密碼只能是字母和數字,共26+26+10=62個字節,排列組合出的字典的項數則是P(62,1)+P(62,2)….+P(62,8),那也已經是一個很天文的數字了,存儲這個字典就需要TB級的磁盤陣列,而且這種方法還有一個前提,就是能獲得目標賬戶的密碼MD5值的情況下才可以。這種加密技術被廣泛的應用於Unix系統中,這也是爲什麼Unix系統比一般操作系統更爲堅固一個重要原因。)


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