POS 秘钥

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxw136511485/article/details/72763302

    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报文

猜你喜欢

转载自blog.csdn.net/zxw136511485/article/details/72763302