主题:【原创】被征服的谜――ENIGMA的故事(篇外之二):密码的ABC -- 1001n
【原创】被征服的谜――ENIGMA的故事(篇外之二):密码的ABC
前些天连篇累牍地介绍了ENIGMA和初步破译ENIGMA的故事,写的繁杂不说,还弄得我脑子里整天就是E、N、I、G、M、A六个字母来回转,感觉颇是E-Ni―G-Ma……后来发现,写篇外随笔,才真正达到了快乐写作的境界。。。这样,在具体写英国人的举动以前,我就花插着再来稍微介绍一下密码学最简单的知识。
再次强调,我们这个系列里所说的密码,都是非常老土的古典密码。在今天,不说军事和外交,即便如商业上使用的加密手段,都已经达到了密码界前辈所无法想像的高度。比起现在稀松平常的DES、RSA等等加密手段,当年最牛最红的种种加密措施简直就是一些小花招,实在没有太多的技术含量。
既然这样,为什么还要介绍它们呢?我个人想法是:
第一,密码学的发展,本身就确实是个有意思的话题。
第二,研究密码,学习密码,实际上也是个思维锻炼。
第三,密码的成败攸关大事,而男人不是最关心大事么?
最后,密码学和密码的故事里,先天具备很多我这样的人喜欢的特征:军事,阴谋,历史,科学,名人,逻辑……呵呵,等等吧。
闲话不再多扯,现在我们就来看看密码的一些基础知识。
------------------------------------------------------------
首先,不管是什么密码,必然符合以下五个特征,也就是严格意义上的所谓“密码五要素”:
明文集合μ;
密文集合π;
密钥集合K,其中任一具体密钥记为k;
加密变换集合E,加密算法e;
解密变换集合D,解密算法d。
以上的μ、π、K/k、E/e、D/d,就是密码五要素。不难看出,如果以ENIGMA为例,那么
μ就是要发走的文本,比如命令、汇报、指示等等;
π就是加密后发出的密电;
K就是密码本上所有的密钥集合;k就是具体某封电文的密钥;
E就是ENIGMA的机制,比如,三个转轮啊,一个反射板啊,一个连接板啊,等等;e则是ENIGMA具体的加密方法,比如,加密一个字母后转轮向某方向旋转一格,再加密一次则第二个转轮跟着旋转一格,等等;
在ENIGMA的机制中,D和E类似,d跟e类似。
回想一下前文中对ENIGMA构造的介绍,我们可以看出,由于反射板的存在,加密和解密,也就是E和D以及e和d,都正好一样。而大多数加密机制中的E和D,e和d都是不一样的。也正因为这样,ENIGMA的确是个异数,另类得要命。。。
关于这五个要素之间的关系,罗嗦一大堆文字也许还不如照抄一两个公式。好在要素不多,公式也不长,稍微思索一下也是可以明白的[注:圆括号里内容为下标字母,我是用纯文本写的,无法显示,就用圆括号括起来]:
e(k):μ→π
d(k):π→μ
又因为e(k)与d(k)互为逆变换,设明文中某句为M,则恒有
d(k){e(k)[M]}=M
其实这上面这个表达式说的无非就是,用密钥加密明文后,用同样的密钥和相应的解密方法,肯定可以解出原文――就是这么回事。
如果用ENIGMA来做个说明,也可以帮助理解:
解密(当天密钥+临时密钥){加密(当天密钥+临时密钥)[统帅部命令]}=统帅部命令
千变万化的密码,其实机制就是这么简单。所以,一个密码系统是否强大,是否安全,的确要取决于设计者的智慧。具体来说,就是他如何设计加密机制和手段,也就是E和e。至于K和k,属于当然要保密的范畴,但是比较起来,远不如E和e来的重要。
一个很生动的证明就是,在没有彻底解破ENIGMA的E和e以前,波兰人即便有了今天的密钥和某份确定的当前密钥,也就是有了k,仍然无法解破今后的密文。这其中的关键,就是E和e的设计决定了k只针对当前密文有效,从而大大增强了保密性。
设计E和e,在密码学上叫做编码。相应地,这门学问也就叫做密码编码学。按照有矛必有盾的逻辑,设计D和d,也就是密码分析学的内容了。
对于设计E和e的人来说,他要做的就是挖空心思把E和e设计的尽量复杂,使经过K和k加密之后形成的密文集合π尽可能地不显现出某种规律性,以防止破解。
顺便说一句,发展到今天,E和e已经基本定型,甚至可以公开E和e,反正你也算不出来――比如说,你要能把一个上百万位的自然数拆成两个质数的乘积,算你厉害,我这密码你就破掉了――只不过,我知道你算不出来,因为你的计算机再牛,算起这个也太慢了;等你算出来了,你想知道的内容早不是秘密了。。。
对于这种公开和所有人叫板的加密方式,我个人兴趣反而不大了。光比计算机能力,比金钱投入,程序编好以后,哪怕是个傻瓜,动动键盘鼠标就能等到破解的结果,有什么意思?回想波兰人破解ENIGMA的过程,里面夹带了多少风格鲜明的“人”的思维方式啊……也正是这样,那些刚刚可以被人类智力破解,但本身又的确让人茫然的密码体系,才是我最感兴趣的部分。不是么?人和人斗智才最有意思,至于计算机和计算机斗智嘛,不提了不提了。。。
而对于千方百计试图破解E和e,进而得到k(试图得到全部密钥集合K恐怕工作量是太大了,并且很可能其实没这个必要)的人来说,他的方法一般来讲只有三类:
密文攻击;
已知明文攻击;
选择性明文攻击。
密文攻击是指手里只有密文,其它一概没有的情况下,破译者试图仅仅通过密文来推断出密钥,进而破译密文的方法。这是难度最大的,类似于盲人骑瞎马的处境。ENIGMA刚开始采用的时候,各国面对德国密文感到莫名其妙无可奈何的原因,就是他们唯一的办法只能是密文攻击。而对于一个稍微像样一点的密码体系,密文攻击注定是所耗巨大收获甚微的。
已知明文攻击是指破译者手里同时拥有某份明文和它被加密后的密文后,进行的对照性反向推导的方法。说起来,这个办法比密文攻击要强的多,但是也有局限性,比如说,你从哪儿去找明文呢?就因为这个“找”字,不知道产生了多少情报史上的惊险故事――偷(去使馆;建立监听线路……);偷不着就抢(发动专门的战斗……);抢不着就捡(搜索飞机舰船车辆的残骸和尸体……);捡都捡不着就只好买(还记得那个德奸么?呵呵)了。无论是偷、抢、捡、买,反正一句话,你要是要不到的,谁也不会白白给你。顺便说一句,后文将要提到的英国破译ENIGMA的方法,很大程度上就是已知明文攻击。具体方法么,卖个关子,以后再提。。
选择性明文攻击是指破译者选择好明文以后,又进一步获得这明文的密文。跟已知明文攻击那种“打哪儿指哪儿”最大的区别是,选择性明文攻击是“指哪儿打哪儿”。具体来说就是,自己发个电文,让对方发现,并在对方交流时截获密文,与自己发的明文相对照。前文提过的,美军在不能确定日军即将攻击的AF是指哪里,估计可能是中途岛的时候,就使用了选择性明文攻击的方法:先发个电报,说中途岛淡水管路故障,之后竖起耳朵,等日本人对自己的猜测打个分――随后截获的日军电报给出了满分:AF缺乏淡水。于是,倾巢而出打算再次来个突袭的日军,面对的却是严阵以待的美军。从发明文字以来,AF两个字母大概还从来没有这么昂贵过:日军被击沉4艘航空母舰、1艘重型巡洋舰,被击落322架飞机,还搭上了3507条人命……日军从此在太平洋上一蹶不振,从前咄咄逼人的全面攻势变成了抱残守缺的全面防御――中途岛海战也从此名垂史册,成为第二次世界大战太平洋战场上重要的转折点。。。
从以上叙述不难看出,其实检验密码设计最好的标准就是抗破解的程度。以上三种破解方式中,如果连第一种密文攻击都应付不了,这样的密码肯定要被淘汰,实话说,算不算严格意义上的密码都很可置疑。如果能经受的住第二种已知明文攻击,那么这个密码的设计应该算是不错了。如果进一步还能抵御第三种选择性明文攻击,这个密码设计的就真有点儿牛X了。
反过来讲,对于一个破译者来说,密文攻击是最费力的办法;已知明文攻击就简单了很多;选择性明文攻击则是三种办法中效率最高的,也是破译者梦寐以求的。
但是密码不是游戏,那是攸关国家存亡的大事,事情哪有理论上想的那么美妙。
在实际应用中,破译者常常只能拥有密文,毕竟这个一般接收起来不难(凡事都有例外,随着定向微波通信技术、光纤通信等等技术的发展,截获电文本身就充满了难度,我军大面积更换光纤通信网也是出于这个原因),他们所能选择的只有第一种办法,也就是密文攻击。虽然最笨也最可能没效果,但是毕竟还是在进行工作,老板没理由不发薪水给我,何况万一要是破掉了呢;
使用第二种方法,也就是已知明文攻击,除非你非常非常肯定密文中的某段字母肯定就是指某些意思,否则结果依然是驴和马接不上吻;
使用第三种方法,也就是选择性明文攻击,它的要求就更加苛刻:
你不仅要确保对手能收到你的诱饵电文,还得确保对方能看懂;
不仅确保对方能看懂,还不能让对方因为这么几下就看懂了而对诱饵电文内容真实性产生怀疑;
不仅要对方不产生怀疑,还得确定对方一定会利用你传达给他的信息互相交流;
不仅要确定对方一定会利用你的信息进行交流,还得确保能截获他们之间的交流信息;
不仅要确保能截获对方的交流信息,还得知道对方成千上万的通信交流中,哪一条才是提到你的诱饵电文的;
不仅要知道哪一条提到了诱饵电文,还得知道这条电文中,他们采用了还是引用了你的内容,也就是说,你的原话有没有被对方歪曲;
这还没完,你还必须知道这些信息出现在他们电文中的什么位置,是从第37个字开始啊,还是从第852个字开始……
就象《手机》里费墨费老先生那句的确经典的四川话说的:麻~~烦。。。
以上就是密码学的一些泛泛而论的ABC。所谓万变不离其宗,从古到今,这个ABC始终提纲撷领地指引着密码编码和密码分析的方向。如果大家有兴趣的话,稍后我将再略为详细地回顾一下密码的前生,也就是密码历史上比较有意思的一些故事,和具有代表性的几种密码的介绍。至于ENIGMA,会写的,咱现在就是暂时换换脑子,也请大家放心,呵呵。
【原创】被征服的谜――ENIGMA的故事(一):密码的前世
http://www.cchere.net/article/371599
【原创】被征服的谜――ENIGMA的故事(二):ENIGMA横空出世(上)
http://www.cchere.net/article/372331
【原创】被征服的谜――ENIGMA的故事(二):ENIGMA横空出世(下)
http://www.cchere.net/article/372349
【原创】被征服的谜――ENIGMA的故事(三):丘吉尔托起的灿烂星座
http://www.cchere.net/article/374308
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(上)
http://www.cchere.net/article/375877
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(中上)
http://www.cchere.net/article/377011
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(中中)
http://www.cchere.net/article/378141
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(中下)
http://www.cchere.net/article/379376
【原创】被征服的谜――ENIGMA的故事(四)(篇外):最年轻的数学家
http://www.cchere.net/article/383181
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(下上)
http://www.cchere.net/article/384482
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(下中)
http://www.cchere.net/article/386464
【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(下下)
http://www.cchere.net/article/388743
本帖一共被 7 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
【原创】被征服的谜――ENIGMA的故事(篇外之二):密码的ABC
我写过一个理论上不能破译的加密 闲杂人等 字165 2005-05-23 09:22:08
☹️来晚了,先花后看 landlord 字0 2005-05-17 06:11:36
DES 的加密解密也是一样的,如果我没记错 皮马 字0 2005-05-16 21:54:36
还好没一棒子打死所有可能,感谢老兄补充:) 1001n 字209 2005-05-16 22:00:18
看的头都大了,是不是现在ATM,电子邮电密码什么的 一直在看 字24 2005-05-16 21:46:27
呵呵,说来话长 1 1001n 字1334 2005-05-16 22:23:53
128位好像没破,是DES破了,MD5有了漏洞 皮马 字521 2005-05-16 22:40:42