主题:【原创】被征服的谜――ENIGMA的故事(二):ENIGMA横空出世(上) -- 1001n
二、ENIGMA横空出世(上)
让密码学家很恼火的数学家就这样一个个击破了传统的加密方法。如上文所说,甚至连一个聪明的普鲁士少校都能找出多表替换法的缺陷。这个事实给了我们两个启示:第一,没有哪种“绝对安全”的密码是不会被攻破的,这只是个时间问题;第二,破译密码看来只要够聪明就成,单枪匹马也可以挑战密码的权威――不是么?那些加密方式也无非是一个个单枪匹马的人具体研究出来的啊。。
在古典密码时代,以上两个启示真是启发了许多人。以至于很多人认为,其实再聪明的人,他设计的密码也会被另外的人攻破――他们的观点其实还是有道理的,只是他们没想到的是,这个“能攻破的人”不再是单数,而是复数;不仅一个人不再可能靠自己的能力攻破,甚至倾全国之人力物力也未必能很快奏效。
他们没想到,因为他们没见过非人工编码的加密方式。而这个非人工,说的就是机器。
从第一艘蒸汽船“真的”开始在河流里航行开始,人们就渐渐发现,以人的力气,根本无法与机器对抗。随着机器的不断进步,人们又渐渐发现,不要说人的力气,就连人的灵巧准确,也根本无法与机器对抗。再后来发展到工人集体大规模捣毁机器的时候,人们唯一还能自豪的就是,我们有智慧,而机器没有。
而密码编码解码这个东西,自然更是人类智慧的结晶,机器怎么能做的到?
事实说明了一切。
――机器不仅能做到,而且一出手就改变了密码学整个的面貌!
―――――――――――――――――――――――――――――――――――――――
第一个接受花环的Arthur Scherbius同志就这样当仁不让地站在了时代的最前端。
1878年,一个普通的年份――普法战争刚刚结束七年,俄土战争刚结束半年,离第一次世界大战还有三十六年。往远了说,在这一年里,中国和日本前后脚诞生了两个娃娃,日后都成了陆军上将,还都跟孙中山有过点关系。他们是谁呢?
答案揭晓了:一个叫陈炯明,一个叫松井石根;一个帮过孙中山后来又要杀孙中山,创立了中国致公党,最后客死香港;一个支持并响应孙中山的革命,后来直接指挥侵华战争,最后在南京巢鸭监狱被绞死,灵位进了靖国神社。
而在这一年的10月20日,在遥远的欧洲,在德国Frankfurt-am-Main的一个小商人家,也有一个娃娃诞生了。没错,这就是Arthur Scherbius同志,一个看上去和其他同龄孩子没有任何区别的普通小孩,也是一样长大了,读书了。
非要区别的话,就是后来他在慕尼黑技术学院(Technical College in Munich)读的是电力专业,并在1904年,以一篇《Proposal for the Construction of an Indirect Water Turbine Governor(关于间接水涡轮调节器构造的建议)》的论文获得了汉诺威技术学院(Technical College in Hanover)的工程学博士学位。
这时候,他还没满26岁。
Arthur Scherbius同志在一战之前及一战中间究竟做了什么,我确实还不是很清楚。清楚的是,在一战即将结束的1918年2月23日,他为自己设计的一种密码机器申请了专利。同年,他和他的朋友一起开了一家公司,开始出售这种机器。
ENIGMA。
之所以取名为Enigma,我猜当时Arthur Scherbius同志对这机器肯定也是很自豪,甚至是自负的。实话说,他的这项发明的确使加密产生了巨大的飞跃,他的自豪甚至自负是绝对有道理的。因为ENIGMA,人类终于迈入了非手工编码的时代。而且,ENIGMA的起点之高,完全不是蹒跚学步的水平,而是个一出生就已经具有了强大战斗力的勇士!
ENIGMA的构造之精巧,思路之诡异,的确让每个稍微仔细思考过它原理的人大为叹服。限于篇幅,这里就不过分详细介绍了,只是尽可能用文字描述一下,也是对自己纯文字表达能力的一个挑战吧:)
1、想象两副键盘,第一副键盘用来输入,我们称为1,第二副键盘每个键位都可以发光,用来显示,称为2;
2、在键盘1上输入A,记为1A;如果第二副键盘上显示某个字母,比如F,我们就记为2F;
3、把1和2直接连接好,设置为每个字母一一对应后,则1A-2A;
4、在1和2之间增加一个纵向的转盘3(你可以把它想象成一个立着的硬币),转盘3边缘上刻着从A到Z的26个字母;这样,1和2之间不再直接对应,而靠穿过3的“轴”连接;
5、转盘3可以旋转,而描述3当前的位置的时候,就用某个处于一定位置――比如正上方的字母――来表示,例如,现在位置是3F;
6、设想某个时刻,综合考虑1的输入、转轮2的位置和3的显示,则123的组合情况可以是这样的:1A-3H-2C;
7、输入和显示完毕一次之后,3自动开始转动一格,由3F变成3G,也就是转动一个字母的位置;
8、于是1-3和3-2的映射关系都发生变化,再次输入A,可能就是这样的:1A-3G-2D;
9、再次输入A,3再次自动转动一格,可能变成这样:1A-3H-2E;
10、再次输入A,3依然自转一格,可能变成这样:1A-3I-2F。
以上就是一个最最简化的ENIGMA的原理,不知道各位看明白没有,有一点点费脑子。。当然,主要是我描写的不好造成的。。。
从以上的描述可以看出,ENIGMA实际上有点类似上文讲过的多表替代法,也是不断改变明文和密文的字母映射关系。从这个例子可以看出,由于有了转轮3的存在,每转动一格就相当于给明文加密一次,并且每次的密钥不同,而密钥的数量就是全部字母的个数――26个。
如果ENIGMA仅仅是这样,那他实在也没有什么了不起,不过是个可以转动的机器多表替代器罢了。但是Arthur Scherbius同志的天才这才刚刚开始展现――且让我们继续描述ENIGMA:
Arthur Scherbius同志认为,一个转轮显然是不够的,于是他将转轮的数量加到3个,也都是每打一个字母就自转一格的,我们分别记为3、4、5。那么,密钥的数量就变成了26的立方,17576。
Arthur Scherbius同志认为,3、4、5不应该固定,而是可以互相换位的。比如,345,354,435,534,543,453,一共6种方式。于是,密钥数量再次膨胀为17576*6=105456。
Arthur Scherbius同志认为,这样还是不够的,但是每次增加一个轮子,只能增加26倍的密钥数量;同时,他对这个发明还不是很满意,于是天才就在多表替换的基础上突然爆发了:
Arthur Scherbius同志引进了反射板的概念。这个反射板,我们不妨把它理解为一面镜子。他把反射板插在了轮子序列的最后,让键盘2和键盘1同一端。这样,在引进反射板之前,加密路径是例如下面这样的:
1A-3F-4D-5K-2Y
引入反射板(用|表示)后,路径就变成了如下的半回路(这个拐弯可真难画啊):
1A-3F-4D-5K-|
2Y-3F-4D-5K-|
看起来没什么,不是么?不过是把原来的走向给反射回去了,路径长了一倍而已,1A出来的结果还是2Y嘛。。,也并没有新的加密出现,因为轮子没转啊……
我开始就是这么想的,结果发现,天才就是跟我的水准不一样。Arthur Scherbius同志的这个创造,带来了一个震撼性的结果:反射板的出现,使加密的操作和解密的操作是完全一样的!
我个人觉得,无论怎么评价这个反射板的作用都不为过。历史上还从来没有出现过这样匪夷所思的邪招,靠同样的操作,就可以完成加密和解密!换言之,完全无须特别制造编码机和解码机,因为它们本身就是同一个东西!
本帖一共被 16 帖 引用 (帖内工具实现)
- 【原创】密码传奇(一):1、西线屠刀背后的五字幽灵
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(上)
- 【原创】被征服的谜――ENIGMA的故事(四)(篇外):最年轻的数学家
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(中上)
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(下下)
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(下上)
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(中中)
- 1001n的《密码传奇》系列网址
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(中下)
- 【原创】被征服的谜――ENIGMA的故事(四):波兰人的绝地反击(下中)
- 【原创】被征服的谜――ENIGMA的故事(篇外之二):密码的ABC
- 【原创】被征服的谜――ENIGMA的故事(篇外之四B):多表替代的六人行
- 【原创】被征服的谜――ENIGMA的故事(篇外之三):老密码,老故事
- 【原创】被征服的谜――ENIGMA的故事(篇外之四A):多表替代的六人行
- 1001n的密码故事文集
- 【目录】2。信息科学
但有个问题想请教,像英语,德语这样的语言可以被替换,因为字母是有限的。比如英语是26个字母,德语是多少不清楚,俄语是30多个字母。像汉语这样的文字怎么替换呢?因为汉字常用字有3000多,那健盘要多大啊?