POS 祕鑰

    POS祕鑰,有好幾種,主祕鑰,工作祕鑰,PIN祕鑰,MAC祕鑰等!

一、概念。

1.什麼是主祕鑰?

    主祕鑰,即(Terminal Master Key) TMK,主要作用是用來驗證工作祕鑰是否合法,以及加密TAK和TPK(TAK、TPK見下文),保證TAK和TPK在傳輸線路上的安全性。一般情況下是人工在POS設置或者通過IC卡導入,也有可能通過母POS下發!TMK被寫入密鑰保護芯片,此芯片具有開機程序自毀功能,能很好的保護TMK的安全性,主祕鑰是和每一臺POS相關聯的,即主祕鑰和Pos設備是一一對應的,生產中應保持POS的TMK與POS中心的主密鑰的一致性。TMK,分爲明文和密文。主祕鑰是由服務提供商提供。如果主祕鑰是密文,則需要先解密,然後校驗,校驗通過後,保存!

2.什麼是工作祕鑰?

    工作祕鑰也稱爲數據密鑰,包含PIN祕鑰,MAC祕鑰以及磁道祕鑰。在POS每次做簽到交易時,由POS中心下發給POS。需要經常性地定期更換,通常每天更換一次。

在聯機更新的報文中對工作密鑰必須用TMK加密,形成密文後進行傳輸。

3.PIN祕鑰。

    PIN祕鑰,(Terminal PIN encryption Key)TPK,用於計算加密PIN(個人銀行卡的密碼,6位數)。在簽到時,下發給POS終端,以密文的形式,POS終端接收到密文後,需要使用主祕鑰去解密,然後校驗,校驗通過後,將TPK存儲在專用的密鑰保護芯片裏。TPK用於加密在局域網內POS終端和POS中心之間傳送的PIN。TPK需要經常性地定期更換,通常每天更換一次。此密鑰具有開機自毀功能。

    當用戶在密碼鍵盤上輸入銀行卡密碼時,輸出的是加密後的密文(通過TPK加密PIN後的密文),那麼在網絡傳輸中,一直都使用的是該密文,即時被截獲,也是密文,所以最大限度的保護了用戶PIN的安全。

4.MAC祕鑰。

    MAC祕鑰,(Terminal Administrative Key)TAK,用於計算校驗MAC。MAC是用來完成消息來源正確性鑑別,防止數據被篡改或非法用戶竊入的數據。在簽到時,下發給POS終端,以密文的形式,Pos終端接收到密文後,需要使用主祕鑰去解密,然後校驗,校驗通過後,將TAK存儲在專用的密鑰保護芯片裏。TAK用於局域網內POS終端與POS中心之間傳送信息時,生成和校驗一個信息認證代碼(Message Authentication Code),從而達到信息認證的目的。TAK需要經常性地更換,通常每天更換一次。

5.磁道祕鑰。

磁道信息加密密鑰,TRK,用於加密磁道信息,例如髮卡方信息(包括卡片驗證碼CVN等信息)。當需要TRK時,在簽到時會下發給POS終端。


二、使用場景。

1.個人標識碼(personal identification number- PIN)的加密和解密中的PAN(primary account number)的計算過程。 

    PIN,即個人密碼,是在聯機交易中識別持卡人身份合法性的數據信息,在計算機和網絡系統中任何環節都不允許PIN以明文的方式出現

    PAN 標識髮卡機構和持卡人信息的數字代碼。它由髮卡機構標識代碼、個人賬戶標識和校驗位組成,是銀行卡金融交易的主要賬號,在銀行卡金融交易中等同於卡號。

    a). PIN的長度爲4-12位數字。

                                                                  PIN格式

位置

長度

說明

1

1 BYTE

PIN長度

2

7 BYTE

4-12PIN(每個字符佔4BIT,不足右補F)

    例如明文PIN:  123456 (6位數字)

            PIN格式:  0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF 

    b). PIN加密時需要使用到PAN(主賬號),

        PAN獲取規則左邊第二位開始,向左取12個字符。                          

                                                                    PAN格式

位置

長度

說明

1

2 BYTE

%H0000

3

6 BYTE

取主賬號的右12位(參見A.1

    例如 18位的PAN: 1234 5678 9012 3456 78  (18位數字)

                截取PAN:  6789 0123 4567    (12位數字)

               PAN格式:   0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67

    c). PIN BLOCK計算。

    PIN BLOCK格式等於PIN按位異或主賬號(PAN)。

    d). 加密。

    使用TPK(PIN KEY)與PIN BLOCK加密,得到密文,最終在網絡上傳遞的就是該密文。加密常使用3DES。

下面看實例。

    18位的卡號PIN加密時獲取PAN

    明文PIN:  123456

    截取前PAN: 1234 5678 9012 3456 78  (18位數字) 

    截取PAN:  6789 0123 4567    (12位數字)

    用於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


2. TAK(MAC祕鑰, MAC KEY)使用場景。

當交易數據打包爲ISO 8583包時,會將數據域的某一些域,使用TAK加密,生產密文,放在數據域的64域,發送給接收方,接收方收到數據後,首先會驗證MAC,將重新計算MAC值,以鑑別消息在傳送途中是否被篡改。


三、加密相關算法。

1. DES  (Data Encryption Standard) 。

      美國國家標準局1973年開始研究除國防部外的其它部門的計算機系統的數據加密標準,於1973年5月15日和1974年8月27日先後兩次向公衆發出了徵求加密算法的公告。加密算法要達到的目的(通常稱爲DES 密碼算法要求)主要爲以下四點:

    ☆提供高質量的數據保護,防止數據未經授權的泄露和未被察覺的修改; 

    ☆具有相當高的複雜性,使得破譯的開銷超過可能獲得的利益,同時又要便於理解和掌握; 

    ☆DES密碼體制的安全性應該不依賴於算法的保密,其安全性僅以加密密鑰的保密爲基礎; 

    ☆實現經濟,運行有效,並且適用於多種完全不同的應用。 

    1977年1月,美國政府頒佈:採納IBM公司設計的方案作爲非機密數據的正式數據加密標準(DES-Data Encryption Standard)。屬於對稱加密算法。

    DES算法的入口參數有三個:Key、Data、Mode。其中Key爲8個字節共64位(實際用到了56位,第8、16、24、32、40、48、56、64位是校驗位, 使得每個密鑰都有奇數個1),是DES算法的工作密鑰;Data爲8個字節64位,是要被加密或被解密的數據;Mode爲DES的工作方式,有兩種:加密或解密。

    首先看看DES的加密流程圖,如下所示,


    DES算法的步驟有以下4步:

(1). 首先將64位明文,進行初始置換;置換後,將數據分爲左右各32位,L0和R0;

(2).在祕鑰的控制下,經過16輪運算f();(每一輪都需要一個計算出一個子祕鑰K,f()是一個加密函數)

(3).16輪運算後,L16、R16(左右)交換,再進行逆置換;

(4).輸入64位密文;

2.3DES。

    3DES是DES加密算法的一種模式,它使用3條64位的密鑰對數據進行三次加密。數據加密標準(DES)是美國的一種由來已久的加密標準,它使用對稱密鑰加密法。簡單來說就是對數據進行三次DES加密。

    設Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密表,加密過程分3步,

     C=Ek3(Dk2(Ek1(P)))

    K1、K2、K3決定了算法的安全性,若三個密鑰互不相同,本質上就相當於用一個長爲168位的密鑰進行加密。多年來,它在對付強力攻擊時是比較安全的。若數據對安全性要求不那麼高,K1可以等於K3。在這種情況下,密鑰的有效長度爲112位,稱之爲雙倍長祕鑰算法。

3.ECB 和CBC。

    1).ECB 電碼本模式(Electronic Codebook Book (ECB))

這種模式是將整個明文分成若干段相同的小段,然後對每一小段進行加密。

        就是將數據按照8個字節一段進行DES加密得到一段8個字節的密文,最後一段不足8個字節(一般補0或者F),按照需求補足8個字節進行計算(並行計算),之後按照順序將計算所得的數據連在一起即可,各段數據之間互不影響。

    2).CBC密碼分組鏈接模式(Cipher Block Chaining (CBC))

這種模式是先將明文切分成若干小段,然後每一小段與初始塊或者上一段的密文段進行異或運算後,再與密鑰進行加密。

     需要初始化向量IV,來加密第一組數據D1,生成第一塊密文C1; 第二組數據D2與第一組的加密結果C1異或以後的結果進行DES加密,得到第二組密文C2; 之後的數據以此類推,得到Cn; 按順序連爲C1C2C3......Cn即爲加密結果。

PS:

1.假設des算法寫作DES,解密算法寫作UDES;

單倍長祕鑰算法,是指DES算法,單倍長密鑰爲k1,一次加密,

str = DES(str ,k1) 

雙倍長祕鑰算法,是指3DES算法,雙倍長密鑰爲k2,拆分爲前後兩部分k2=k21+k22,加密過程分3步,

          1).str = DES(str ,k21)

          2).str = UDES(str ,k22)

          3).str = DES(str ,k21)

2.校驗TPK 和TAK

1).校驗TPK:“PIN工作密鑰”前16個字節是密文,後4個字節是checkvalue;前16個字節解出明文後,對8個數值0做雙倍長密鑰算法,取結果的前四位與checkvalue 的值比較應該是一致的。
        D1 C3 65 E4 00 E1 79 29 13 AF 07 CD 19 06 9A 07 D2 B9 1C C5  
密文:D1 C3 65 E4 00 E1 79 29 13 AF 07 CD 19 06 9A 07  
checkvalue:D2 B9 1C C5
解出明文:11111111111111112222222222222222

再對8個數值0做雙倍長密鑰算法:key  11111111111111112222222222222222

                                                     data  00000000000000000000000000000000

                                                     result  D2B91CC5A758BB08D2B91CC5A758BB08

比較結果前四位:D2 B9 1C C5
    驗證通過!
2).校驗TAK:“MAC工作密鑰”前8個字節是密文,再8個字節是二進制零,後4個字節是checkvalue;前8個字節解出明文後,對8個數值0做單倍長密鑰算法,取結果的前四位與checkvalue 的值比較應該是一致的
      AE E9 84 62 B2 66 5F 24         00 00 00 00 00 00 00 00 AD C6 7D 84
密文:AE E9 84 62 B2 66 5F 24
checkvalue:AD C6 7D 84
解出明文:3333333333333333

再對8個數值0做單倍長密鑰算法: key 3333333333333333

                                                     data 0000000000000000

                                                    result ADC67D8473BF2F06

比較結果前四位:AD C6 7D 84
    驗證通過!


有關ISO 8583報文,詳情請看這篇文章 ISO 8583報文

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