前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ATM金融行业密钥原理讲述与技术详解

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

作者头像
提莫队长
发布2019-02-21 13:44:19
1.1K0
发布2019-02-21 13:44:19
举报
文章被收录于专栏:刘晓杰刘晓杰

假设我们有一段数据,是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的处理移到硬件里面去了,那黑客就没法获取我的按键了。这种处理现在就被称为硬加密。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年02月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档