密码键盘
密码键盘介绍
密码键盘介绍一:基础知识
主密钥:一般是用来解密存储其他秘钥的。比如:解密工作密钥。主密钥包括本地主密钥(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来加密数据,该如何做呢?
问题分析:
- 要用PinKey来加解密数据,我们需要得到PinKey(明文)
- 在基础知识部分,我们了解到PinKey(明文)是可以通过终端主密钥(TMK)解密来得到的。我们只要有终端主密钥(TMK)的明文,就可以解密PinKey。
- 同样终端主密钥(TMK)的明文可以通过本地主密钥(LMK)的明文解密得到。
- 这样,我们只要有本地主密钥(LMK)的明文就可以解密PinKey了,显然问题中已经提供了本地主密钥(LMK)的明文信息。
加密步骤:
按照我们前面的分析结果,来实施加密步骤:
-
使用本地主密钥(LMK)对终端主密钥(TMK)解密(DES算法):
本地主密钥(LMK)(明文): 3031323334353637
终端主密钥(TMK)(密文): 3837363534333231
终端主密钥(TMK)(明文): 81E8F56701EEF115
-
使用终端主密钥(TMK)(明文)对PinKey(密文)解密(DES算法):
终端主密钥(TMK)(明文): 81E8F56701EEF115
PinKey(密文): 4142434445464748
PinKey(明文): 623F1648EFE60C80
-
DES算法,使用PinKey(明文)对数据加密
PinKey(明文): 623F1648EFE60C80
待加密数据: 4A4B4C4D4E4F5051
加密结果: 371C20E09D7172F7
这样我们就得到了加密结果:371C20E09D7172F7
数据解密问题:
假设现在有如下信息:
- PinKey(明文): 623F1648EFE60C80
- 待解密数据: 371C20E09D7172F7
- 算法:DES
希望使用PinKey来加密数据,该如何做呢?
- 用DES算法,使用PinKey(明文)对数据解密
PinKey(明文): 623F1648EFE60C80
待解密数据: 371C20E09D7172F7
解密结果: 4A4B4C4D4E4F5051
这样我们就得到了解密结果:4A4B4C4D4E4F5051
特别说明:
- 为了保证安全:通常本地主密钥(LMK)(明文)是银行工作人员手工通过密码键盘输入的,其他人是看不到这个本地主密钥(LMK)(明文)。只有密码键盘里面保存了本地主密钥(LMK)(明文)信息。
终端主密钥(TMK)和PinKey、MacKey等等都是密文方式传送的。(通常每天会更新)
- 这样这个密码键盘可以通过本地主密钥(LMK)(明文)来解密终端主密钥(TMK)(密文)、Pinkey(密文)和Mackey(密文),将解密后的明文信息保存在密码键盘中。
- 密码键盘就可以使用PinKey(明文)和MacKey(明文)来进行数据的加解密等运算。
而外部传输的都是Key都是密文形式,保障了安全性。
密码键盘介绍四:PinBlock计算
PinBlock计算最常用的算法介绍:
PinBlock的算法比较多,这里只介绍最常用的算法:
-
ANSI9.8 算法 (常用默认的算法) -- 带主账号信息
1.格式化主账号(格式化具体内容见后面算法例子)
2.格式化PIN(格式化具体内容见后面算法例子)
3.格式化后的主账号与格式化后的Pin按位异或
4.用PinKey密钥明文对上述结果加密
5.得到PinBlock
-
ANSI9.8 算法 (常用默认的算法) -- 不带主账号信息
1.格式化PIN(格式化具体内容见后面算法例子)
2.用PinKey密钥明文对上述结果加密
3.得到PinBlock
-
ASCII 格式(少用)
PIN不与主账号进行运算直接 ASCII 码加密
-
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,通常包含如下几个步骤(不同厂家的产品顺序会不同)
- 要求用户输入Pin信息(通常是6位) --- 启动Pin运算
- 激活工作密钥(加密需要使用的密钥PinKey)
- 设置主帐号信息
- 设置Pin运算使用的算法
- 读取Pinblock信息。
密码键盘介绍五:MAC计算
MAC计算有很多,有ANSI9.9、ANSI9.19、银联算法、PBOC算法等等。本文只介绍最简单,也是用的比较多的两个算法。一个是ANSI9.9(DES算法),另一个是ANSI9.19(3DES算法)。
MAC计算(ANSI9.9MAC算法)
(最常用的单DES的MAC算法)
待加密数据: 0x 31323334353637383930313233343536
MacKey(明文): 1234567887654321
-
将待加密数据,每8个字节划分位1组数据,如果待加密数据不是8的倍数,右补齐0x00
data0 = 3132333435363738
data1 = 3930313233343536
-
用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算法图,分析得到算法的运算步骤如下:
- 3DES要求的密钥是16字节,把密钥分开为2个部分:LKey = 左边8个字节; RKey = 右边8个字节
- 待加密数据按照8个字节来分组:分成D0,D1,D2...DN
- 用Lkey对D0加密生成T1,T1异或D1生成T2,用Lkey对T2加密生成T3,以此类推。等到加密结果TN
- 用RKey对TN解密生成TN+1
- 用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,通常包含如下几个步骤(不同厂家的产品顺序会不同)
- 激活工作密钥(加密需要使用的密钥MACKey)
- 设置MAC运算使用的算法
- 计算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加密。极大提高了密码的安全性,为银行业务的安全开展打开一把“保护伞”。
文章最后发布于: 2019-08-28 09:15:01
相关阅读
前言 六月在李光的发起下开始了持续激情学习英语的小组,很高兴自己参加了这么棒的团队,按照光哥列好的计划我们开始了这一个月
进入新公司也有快三个月了,总结一下自己学到的东西和不足之处。 技术方面 更慎密的逻辑:以前做功能总是各种赶着来,但是新公司采
汉语语法有五级语法单位:语素→词→短语→句子→句群。中学语法我们重点讲词、短语和句子这三级。1.语素语素是语音语义的最小结合
随着社会的进步,现在人们的生活中用到的事物繁多,就说现在大家手机上使用的APP种类都会有成千上万个,那么这么多的平台都需要大家注
著作权 保护期限受时间限制: 著名权、修改权、保护作品完整权 著作权人确定: 个人在职期间的作品的著作权归单位享有 公司间若没有