ATM金融行业密钥原理讲述与技术详解

假设我们有一段数据,是ATM取款的报文,包括一个人的磁卡号、密码、取款金额。现在需要将这些数据从一台ATM机器传到前置机处理,这些数据是比较机密的,如果被人窃取了,就可以用该卡号和密码把帐户中的钱取走,所以我们需要将这些数据进行加密。

加密的功能一共有两个,一个是帐号密码不能被看到,二是帐号密码不能被改动。

第一种情况帐号密码不能被看到,目前一般的做法是只对帐号和密码(也有只对密码加密的)进行加密,其他的内容不加密的。对帐号和密码加密有个术语,叫PinBlock,即PIN块,就是对帐号和密码进行DES加密处理后的一个密文数据块。即然使用了DES算法来加密帐号和密码,则必然有个Key来加密,那么我们就把这个Key称为PinKey,就是专门来加密用户帐户和密码的Key。至于怎样进行加密形成最后的密文PinBlock,有很多标准的,象IBM3624、ANSI、ISO、DIEBOLD等标准,其实它们大同小异,就是在对报文中的密码进行一个预处理,再用PinKey来DES加密,主要的差别就是怎样预处理而已,比如有的是密码后面补F,补够16位,就是类似这样的预处理。

第二种情况,帐号密码不能被改动。一旦报文被截获,不被改动显然做不到,但是我们可以通过验证的方式来判断是否被改动过。如果被改动过就不处理这个报文。我们可以先对报文第一个64bit加密,得到64bit的加密后数据data1,接着再拿加密后的data1与报文第二个64bit数据进行按位异或,得到同样长64bit的数据data2,我再用Key对data2加密,得到加密后的数据data3,再拿data3与报文第三个64bit数据进行按位异或,同样的处理依次类推。直到最后会得到一个64bit的数据,将这个数据放到报文的最后发到前置机,这样报文的长度只增加了64bit而已。这个算法就叫做MAC算法。用来参与MAC计算的Key就常被称为MacKey,也有叫工作密钥、过程密钥。

通过PinKey和MacKey对报文进行了两重处理,基本上报文就是安全的了。如果我们对DES算法比较了解,就会知道,如果想对加密后的密文解密,必须要知道Key才行,所以说Key一定要保密。怎样来保密Key呢?我们前面提到的无论是算MAC还是算PIN块,都是直接拿明文的Key来计算的,那么这个Key很容易被窃取的,所以,我们还要对PinKey和MacKey本身进行加密。怎样实现,同样是DES算法大显身手的地方。我再找个Key对PinKey和MacKey进行一次加密。这时用来对PinKey和MacKey进行加密的Key就被我们称为MasterKey,即主密钥,用来加密其他密钥的密钥。

不过,MasterKey依然是明文啊。再找个Key来加密MasterKey,那最终无论处理多少道,最后的那个Key肯定是明文,这样看来,安全的问题还没有解决啊。既然此路不通,那我们需要换个思维角度了,仔细想想怎样处理明文的MasterKey。黑客程序只能窃取我软件上的东西,如果我把MasterKey放到硬件里面怎么样,黑客是没能力跑到我硬件里面把MasterKey取出来的,当然,不排除道高一尺、魔高一丈的情况,但至少99.9%的黑客都没这能力的。那这样不就解决了我们遇到的问题了吗,只要把MasterKey放到硬件里面(一般是键盘的加密模块里面)就好了。

好,到这里,我们已经不怕有人把报文中的关键信息获取到了,总算是安全了。

在最近,老是有人提到“硬加密”,这个有什么用呢?以前我的软件处理是这样的,键盘每按一下,我就把那个数字在程序里面先存起来,等到4位或6位密码按完后,再把它们合在一起,再送给PinKey加密。那如果黑客程序直接把我的按键信息获取,那他根本不用破解报文中用PinKey加密后的密码,直接简单的就把我输入的密码得到了。怎么办?如果我把获取按键的程序固化进入加密硬件(一般在键盘中),按键的数字根本不通过上层的软件,直接一步进入硬件里面处理,等到按键按完了后,硬件直接把经过一道处理的按键信息给我上层软件,此时已经是密文了,就相当于把前面计算PinBlock的处理移到硬件里面去了,那黑客就没法获取我的按键了。这种处理现在就被称为硬加密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值