首页 » 技术分享 » 密码键盘知识总结

密码键盘知识总结

 
文章目录

密码键盘介绍

密码键盘介绍一:基础知识

主密钥:一般是用来解密存储其他秘钥的。比如:解密工作密钥。主密钥包括本地主密钥(LMK)、 终端主密钥(TMK)等。

本地主密钥(LMK)Local Master Key:用于解密存储其它主密钥。比如:终端主密钥(TMK)。

终端主密钥(TMK)Terminal Master Key:用于解密工作密钥。如:PIN KEY, MAC KEY,COM KEY

工作密钥: 一般是在特定场景下,用来加解密其他报文的。工作密钥包括PinKey、MacKey、COM Key等。

PIN Key:持卡人密码的加密传输

MAC Key:用于交易报文的鉴别,保证数据完整性。

COM Key: 用于交易报文的通讯加密/解密

Pin运算:也就是计算PinBlock。对用户输入的密码信息(Pin)加密之后生成的报文。在生成PinBlock的时候,会先调用GetPin(要求用户输入密码)

GETPIN: 要求用户通过密码键盘输入密码。用户输入的密码是保存在密码键盘中,并通过事件通知上层应用用户输入的多少位的密码(注意,密码明文是不给上层应用的),最终返回给上层应用的是经过加密的PinBlock。

数据加解密: 通过指定加解密密钥、使用的算法,对待加解密数据进行运算。最主要的算法就是DES和3DES算法。

MAC运算:当发送报文时,使用MAC KEY对需要传输的报文进行运算,将生成的MAC信息合并到报文中,一起发送出去;当接收到报文时,先对报文的MAC信息进行校验,校验通过才处理报文。校验不通过,直接丢弃报文。保证报文传输的安全性,避免报文在传输过程中被恶意篡。

密码键盘介绍二:主密钥和工作密钥的导入

  • 导入主密钥: 将主密钥导入到密码键盘。

    • 本地主密钥(LMK)Local Master Key的下载: 密码键盘通常都会有一个“启动直接从键盘输入主密钥模式”。启动这个模式之后,就可以直接将密钥(明文)输入到密码键盘中。(出于安全方面的考虑,通常这个动作是由行方人员单独完成的)。
    • 终端主密钥(TMK)Terminal Master Key的下载: 一般终端主密钥是密文方式提供。首先,通过之前下载的本地主密钥(LMK)对终端主密钥(TMK)解密,然后将解密后的终端主密钥(明文)存储到密码键盘中。
  • 导入工作密钥:将工作密钥导入到密码键盘。通常有两种导入方式。
    • 通过密码键盘直接输入。启动直接从键盘输入工作密钥模式,然后直接输入工作密钥。
    • 通过密文方式提供。调用密码键盘的下载工作密钥方法,指定主密钥为终端主密钥(TMK)即可。(内部的原理:首先通过保存在密码键盘中的终端主密钥(TMK)明文对工作密钥解密;然后将工作密钥明文保存在密码键盘中)
  • 如何判断密钥是否被正确导入
    一般密码键盘在导入密钥的函数都会有一个返回验证码(一般可以通过设置来开启或关闭验证码)。这个验证码是使用当前导入的密钥(明文)对8字节0x00(0x0000000000000000)加密得到的结果。下载密钥时,就可以通过验证码来判断密钥是否被正确导入。

例子1: 下载主密钥(明文)

MasterKey(明文): 303132333435363738393A3B3C3D3E3F
返回验证码: B73D56FCF3E8DEFD

DES TOOL:
MasterKey(明文): 303132333435363738393A3B3C3D3E3F
待加密数据: 0000000000000000
加密结果: B73D56FCF3E8DEFD

例子2: 下载工作密钥(密文)

MasterKey(明文): 303132333435363738393A3B3C3D3E3F
PinKey(密文): 404142434445464748494A4B4C4D4E4F
返回验证码: 56C71DEDCC3DEFDE

DES TOOL:
MasterKey(明文): 303132333435363738393A3B3C3D3E3F
PinKey(密文): 404142434445464748494A4B4C4D4E4F

1.用MasterKey解密Pinkey,得到
PinKey(明文): 806A47E3E19D3FF1C3D9B9558220F0AA

2.用得到的Pinkey(明文)来加密数据
PinKey(明文): 806A47E3E19D3FF1C3D9B9558220F0AA
待加密数据: 0000000000000000
加密结果: 56C71DEDCC3DEFDE

密码键盘介绍三:数据加解密

如果要加解密数据,需要确定3个内容: 使用的密钥(明文)、采用的算法和待加解密数据

数据加密问题:

假设现在有如下信息:

  • 本地主密钥(LMK)(明文): 3031323334353637
  • 终端主密钥(TMK)(密文): 3837363534333231
  • 工作密钥 PinKey(密文): 4142434445464748
  • 待加密数据: 4A4B4C4D4E4F5051
  • 算法:DES

希望使用PinKey来加密数据,该如何做呢?

问题分析:

  1. 要用PinKey来加解密数据,我们需要得到PinKey(明文)
  2. 在基础知识部分,我们了解到PinKey(明文)是可以通过终端主密钥(TMK)解密来得到的。我们只要有终端主密钥(TMK)的明文,就可以解密PinKey。
  3. 同样终端主密钥(TMK)的明文可以通过本地主密钥(LMK)的明文解密得到。
  4. 这样,我们只要有本地主密钥(LMK)的明文就可以解密PinKey了,显然问题中已经提供了本地主密钥(LMK)的明文信息。

加密步骤:

按照我们前面的分析结果,来实施加密步骤:

  1. 使用本地主密钥(LMK)对终端主密钥(TMK)解密(DES算法):
    本地主密钥(LMK)(明文): 3031323334353637
    终端主密钥(TMK)(密文): 3837363534333231
    终端主密钥(TMK)(明文): 81E8F56701EEF115

  2. 使用终端主密钥(TMK)(明文)对PinKey(密文)解密(DES算法):
    终端主密钥(TMK)(明文): 81E8F56701EEF115
    PinKey(密文): 4142434445464748
    PinKey(明文): 623F1648EFE60C80

  3. DES算法,使用PinKey(明文)对数据加密
    PinKey(明文): 623F1648EFE60C80
    待加密数据: 4A4B4C4D4E4F5051
    加密结果: 371C20E09D7172F7

这样我们就得到了加密结果:371C20E09D7172F7

数据解密问题:

假设现在有如下信息:

  • PinKey(明文): 623F1648EFE60C80
  • 待解密数据: 371C20E09D7172F7
  • 算法:DES

希望使用PinKey来加密数据,该如何做呢?

  1. 用DES算法,使用PinKey(明文)对数据解密
    PinKey(明文): 623F1648EFE60C80
    待解密数据: 371C20E09D7172F7
    解密结果: 4A4B4C4D4E4F5051

这样我们就得到了解密结果:4A4B4C4D4E4F5051

特别说明:

  1. 为了保证安全:通常本地主密钥(LMK)(明文)是银行工作人员手工通过密码键盘输入的,其他人是看不到这个本地主密钥(LMK)(明文)。只有密码键盘里面保存了本地主密钥(LMK)(明文)信息。
    终端主密钥(TMK)和PinKey、MacKey等等都是密文方式传送的。(通常每天会更新)
  2. 这样这个密码键盘可以通过本地主密钥(LMK)(明文)来解密终端主密钥(TMK)(密文)、Pinkey(密文)和Mackey(密文),将解密后的明文信息保存在密码键盘中。
  3. 密码键盘就可以使用PinKey(明文)和MacKey(明文)来进行数据的加解密等运算。
    而外部传输的都是Key都是密文形式,保障了安全性。

密码键盘介绍四:PinBlock计算

PinBlock计算最常用的算法介绍:

PinBlock的算法比较多,这里只介绍最常用的算法:

  1. ANSI9.8 算法 (常用默认的算法) -- 带主账号信息
    1.格式化主账号(格式化具体内容见后面算法例子)
    2.格式化PIN(格式化具体内容见后面算法例子)
    3.格式化后的主账号与格式化后的Pin按位异或
    4.用PinKey密钥明文对上述结果加密
    5.得到PinBlock

  2. ANSI9.8 算法 (常用默认的算法) -- 不带主账号信息
    1.格式化PIN(格式化具体内容见后面算法例子)
    2.用PinKey密钥明文对上述结果加密
    3.得到PinBlock

  3. ASCII 格式(少用)
    PIN不与主账号进行运算直接 ASCII 码加密

  4. IBM3624 格式(少用)
    PIN不与主账号进行运算直接 BCD 码加密。

ANSI X9.8 Format(带主帐号信息)的PinBlock的计算(最常用的算法):

例子1:
主账号:123456789012345678(18位主账号信息==银行卡卡号)
明文pin:123456(6位密码信息)

1.格式化主账号
--删除主账号最右的1位校验位
12345678901234567
--取最右边的12位,得到
678901234567
--转换位16进制表示,每个数字占用4个bit
0x678901234567
--左侧补0,变成8字节数据
0x0000678901234567

2.格式化PIN
格式化PIN的规则:
BYTE 1 PIN的长度
BYTE 2 – BYTE 3/4/5/6/7 4--12个PIN(每个PIN占4个BIT)
BYTE 4/5/6/7/8 – BYTE 8 FILLER “F” (每个“F“占4个BIT)

pin(明文):123456
--转换位16进制表示,每个数字占用4个bit
0x123456
--第1字节标明密码长度,这里我们的密码长度是6位数字
0x06123456
--右侧补F,变成8字节数据
0x06123456FFFFFFFF

3.将格式化后的主账号和PIN进行按位异或
0000678901234567
06123456FFFFFFFF
--按位异或,得到结果
061253DFFEDCBA98

4.用PinKey明文对上述结果加密,得到的结果就是PINBLOCK
PinKey(明文): 623F1648EFE60C80
PinBlock: 1BBE711AC126A66C

ANSI X9.8 Format(不带主帐号信息)的PinBlock的计算

  • 格式化PIN
  • 用PinKey密钥明文对上述结果加密
  • 得到PinBlock

例子1:
明文pin:123456

1.格式化PIN
格式化PIN的规则:
BYTE 1 PIN的长度
BYTE 2 – BYTE 3/4/5/6/7 4--12个PIN(每个PIN占4个BIT)
BYTE 4/5/6/7/8 – BYTE 8 FILLER “F” (每个“F“占4个BIT)

pin(明文):123456
--转换位16进制表示,每个数字占用4个bit
0x123456
--第1字节标明密码长度,这里我们的密码长度是6位数字
0x06123456
--右侧补F,变成8字节数据
0x06123456FFFFFFFF

2.用PinKey明文对上述结果加密,得到的结果就是PINBLOCK
PinKey(明文): 623F1648EFE60C80
PinBlock: EF1FE78B08E170A9

如何通过密码键盘来计算PinBlock

通过密码键盘来计算PinBlock,通常包含如下几个步骤(不同厂家的产品顺序会不同)

  1. 要求用户输入Pin信息(通常是6位) --- 启动Pin运算
  2. 激活工作密钥(加密需要使用的密钥PinKey)
  3. 设置主帐号信息
  4. 设置Pin运算使用的算法
  5. 读取Pinblock信息。

密码键盘介绍五:MAC计算

MAC计算有很多,有ANSI9.9、ANSI9.19、银联算法、PBOC算法等等。本文只介绍最简单,也是用的比较多的两个算法。一个是ANSI9.9(DES算法),另一个是ANSI9.19(3DES算法)。

MAC计算(ANSI9.9MAC算法)

(最常用的单DES的MAC算法)

待加密数据: 0x 31323334353637383930313233343536
MacKey(明文): 1234567887654321

  1. 将待加密数据,每8个字节划分位1组数据,如果待加密数据不是8的倍数,右补齐0x00
    data0 = 3132333435363738
    data1 = 3930313233343536

  2. 用MacKey使用DES加密data0,得到:
    temp1 = 29EB081CD07ABE42

4.用temp1 XOR data1
29EB081CD07ABE42
XOR
3930313233343536
--得到
temp2 = 10DB392EE34E8B74

5.用MacKey使用DES加密temp2,得到:
MAC = 179CAE9CC5ADF086

===============

MAC计算(ANSI9.19MAC算法)

(最常用的单3DES的MAC算法)

3DES算法分析

根据前面的3DES算法图,分析得到算法的运算步骤如下:

  1. 3DES要求的密钥是16字节,把密钥分开为2个部分:LKey = 左边8个字节; RKey = 右边8个字节
  2. 待加密数据按照8个字节来分组:分成D0,D1,D2...DN
  3. 用Lkey对D0加密生成T1,T1异或D1生成T2,用Lkey对T2加密生成T3,以此类推。等到加密结果TN
  4. 用RKey对TN解密生成TN+1
  5. 用LKey对TN+1加密生成TN+2

TN+2就是最终3DES加密的结果。

3DES算法例子

MacKey(明文): B9020C9B5F2509E34D90215193DAE405
待加密数据: 31323334353637383930313233343536

D0 = 3132333435363738
D1 = 3930313233343536
LKey = B9020C9B5F2509E3
RKey = 4D90215193DAE405

D0通过LKey加密: T1 = 4F7B760387B3619A
T1 XOR D1: T2 = 764B4731B48754AC
T2通过LKey加密: T3 = 5225FCFD9474B439
T3通过RKey解密: T4 = C5D07C531F38D561 (注意这里是解密,别弄错了)
T4通过LKey加密: T5 = BA361543065DD616

加密结果: BA361543065DD616

如何通过密码键盘来计算MAC

通过密码键盘来计算MAC,通常包含如下几个步骤(不同厂家的产品顺序会不同)

  1. 激活工作密钥(加密需要使用的密钥MACKey)
  2. 设置MAC运算使用的算法
  3. 计算MAC,返回MAC值

 

 

 

本文以DES加密技术为基数,利用加密的软件算法,及加密硬件,设计了一套用于银行的加密平台,并针对该应用方案提出密钥管 理策略。

  加密键盘基本工作过程很简单,客户在密码键盘输入个人密码后,并不马上发送到前台主机,而是将其作为输入数据,预留加密键盘工作密钥作为加密的密钥,按一定算法生成客户密码的密文,然后再上传前台主机。  从 加密键盘工作过程看,加密算法、预留工作密钥是加密键盘的关键要素。对于银行来说,国际通用的加密算法标准是ANSI X 3.92 DES及ANSI X 9.8 PIN BLOCK银行卡密码标准,近年新生产的加密设备也支持三重DES的ANSI X 9.9及ANSI X 9.19标准。 

工作密钥是事先下载到密码键盘中作为加密运算的密钥,因其在DES加密运算中作用关键,必须保证密钥在键盘中不能被外部读取,下载密钥过 程必须是密文传输。为确保工作密钥安全,一般DES键盘均设置三级密钥管理体系,分为原始密钥(传输秘钥TEK)、管理密钥(主秘钥TMK)及工作密钥(TWK)。原始密钥、管理密钥及工作密钥的关系 是加密键盘出厂时预先写入原始密钥,运输到银行后,银行根据原始密钥下载自己的管理密钥,替换掉原始密钥作为根密钥,根据应用需要,再下载各组加密钥。  原始密钥是密码键盘生产厂家与银行事先商定,产品出厂前烧录到键盘的根密码。管理密钥一旦下载到密码键盘,原始密钥将会被管理密钥取代。原始密钥可以通过指令恢复。恢复原始密钥的指令使用后,管理密钥及工作密钥将被破坏,密码键盘恢复到出厂状态。  管理密钥是密码键盘真实的根密钥。由银行根据原始密钥加密下载到密码键盘中,替换掉密码键盘原始密钥作为根密钥,为加密下载所属工作密钥。管理密钥第一次下载通过原始密钥加密下载,以后再次修改管理密钥必须通过前次管理密钥加密下载。  工作密钥是真正用于DES加密运算的密钥,工作密钥通过所属的管理密钥进行管理。每个管理密钥可以管理多组不同的工作密钥,工作密钥需要通过所属管理密钥进行下载。根据不同运用,可以定义用于键盘加密输入工作密钥及用于MAC校验运算MAC密钥。

       四、加密平台方案设计  该方案通过在系统后台建立一套加密管理平台,对各组密码进行保存和管理,通过加密机、DES加密密码键盘等硬件设备,实现对客户密码的加密及解密。 

        1.管理密钥的初始化  加 密键盘初始化过程是在系统中对密码键盘设备进行注册登记。首先需要在银行主机上建立密钥库,当有新的加密键盘需要安装时,先对加密键盘设备写入本行设备编 号,然后根据键盘出厂原始密钥加密下载管理密钥到键盘中,同时更新银行主机密钥库,记录密码键盘设备编号及该键盘管理密钥,完成加密键盘的初始化。  DES加密键盘的初始化需要在安全环境中进行,密码键盘初始化程序通过串口将管理密钥注入密码键盘,然后才能正常使用。 

        2.加解密工作流程  在 网点安装后,每次柜员登录时,同时需要对加密键盘进行签到。加密键盘签到过程是根据加密键盘设备编号,从银行主机密钥库中取出该密码键盘管理密钥,并产生 新的工作密钥(PINK)及MAC密钥,然后加密下载到密码键盘中。下载成功后,更新主机密钥库中的工作密钥及MAC密钥,并与该柜员号进行关联,完成密 码键盘签到。当需要客户输入密码时,直接使用当天该柜员工作密钥通过ANSI9.8算法加密客户个人密码。提交后台主机前,使用当天该柜员MAC密钥对交易数据包进行MAC运算,得到MAC校验码,再将MAC校验码与交易数据包合并,上送到后台主机。银行主机接收数据后,使用MAC密钥对交易数据MAC校 验码进行验证。之后取出客户密码密文,使用工作密钥进行解密,得到客户密码进行相应处理。然后将处理结果返回前台。  柜员签退时,需要对加密键盘进行签退,加密键盘签退时更新银行主机密钥库,断开柜员与此编号键盘的联系,清除密钥库中使用的工作密钥及MAC密钥,保留管理密钥为下次密码键盘签到作准备。 

        3.涉及第三方的加密方案  此方案用于使用其他银行的账户在本行柜面或ATM等机具上办理业务,一般会连接人民银行、银联等第三方单位。因此第三方单位使用一个中转密钥用做转加密,此密钥由第三方单位共同管理,各输入一半。  客户在柜面输入密码后,通过本行的密钥加密,发往第三方单位以保证在传输过程中客户密码的安全性。密码加密串经转加密后,传给账户开户行,校验后,返回校验结果。加密方案的工作流程如图所示。 

 

DES的惟一密码学缺点是密钥长度相对比较 短。在实际运用中,我们采用三重DES算法。用两个密钥对明文进行三次加密,假设两个密钥是K1和K2,其算法步骤如下:用密钥K1进行DEA加密;用 K2对步骤1的结果进行DES解密;用步骤2的结果使用密钥K1进行DES加密。极大提高了密码的安全性,为银行业务的安全开展打开一把“保护伞”。

转载自原文链接, 如需删除请联系管理员。

原文链接:密码键盘知识总结,转载请注明来源!

0