. . . .
这种掩耳盗铃的做法,下场显而易见,想必没人这么傻。
我们来考虑一个报文中到底什么信息是需要加密的,目前一般的做法是只对和密码(也有只
对密码加密的)进行加密,其他的容不加密的,明文就明文,没什么大不了的。对和密码加
密有个术语,我们可能都听说过,叫 PinBlock,即 PIN 块,就是对和密码进行 DES 加密处
理后的一个密文数据块。即然使用了 DES 算法来加密和密码,则必然有个 Key 来加密,那么
我们就把这个 Key 称为 PinKey,就是专门来加密用户和密码的 Key。至于怎样进行加密形成
最后的密文 PinBlock,有很多标准的,象 IBM3624、ANSI、ISO、DIEBOLD 等标准,其实它
们小异,就是在对报文中的密码进行一个预处理,再用 PinKey 来 DES 加密,主要的差别就
是怎样预处理而已,比如有的是密码后面补 F,补够 16 位,就是类似这样的预处理。
到这里我们应该理解 PinKey 和 PinBlock 了。通过 PinKey 和 MacKey 对报文进行了两重处理,
基本上报文就是安全的了。如果我们对 DES 算法比较了解,就会知道,如果想对加密后的密
文解密,必须要知道 Key 才行,所以说 Key 一定要。怎样来 Key 呢?我们前面提到的无论是
算 MAC 还是算 PIN 块,都是直接拿明文的 Key 来计算的,那么这个 Key 很容易被窃取的,比
如有人在机器上装了个黑客程序,只要检测到你在用 Key 加密数据,就把明文的 Key 获取了。
这个听起来好像挺玄乎的,不过是有这个可能性的,尤其是网上银行这些东东最容易中招了。
这样看来,我们还要对 PinKey 和 MacKey 本身进行加密,不要让人知道了。怎样实现,同样
是 DES 算法大显身手的地方。我再找个 Key 对 PinKey 和 MacKey 进行一次加密,这样你就看
不到 PinKey 和 MacKey 的明文了,好,解决问题了。这时用来对 PinKey 和 MacKey 进行加密
的 Key 就被我们称为 MasterKey,即主密钥,用来加密其他密钥的密钥。不过,需要等一下,
那 MasterKey 怎么办,它是明文啊。再找个 Key 来加密 MasterKey,那最终无论处理多少道,
最后的那个 Key 肯定是明文,这样看来,安全的问题还没有解决啊。
既然此路不通,那我们需要换个思维角度了,仔细想想怎样处理明文的MasterKey。黑客程
序只能窃取我软件上的东西,如果我把 MasterKey 放到硬件里面怎么样,黑客是没能力跑到
我硬件里面把 MasterKey 取出来的,当然,不排除道高一尺、魔高一丈的情况,但至少99.
4 / 19