银联规范的密钥体系


仔细看这张图,我花了好几个小时消化、自己画的这个密钥关系图……





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系统比一般操作系统更为坚固一个重要原因。)


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