2)第六十八章弥补漏洞_二战之钢铁奏鸣曲
字体:      护眼 关灯
上一章 目录 下一章
  格则破坏了密码分布可能性的均匀性。上一个位面的德军在使用恩尼格玛机时,犯下的错误很多都和上面那个懒惰的旅行箱使用者犯下的错误类似。

  具体的错误包括:每次发送密码时为了纠错发两遍啦(这个后来改了)、密码使用键盘上随手敲出的连续字母啦,如此等等。更严重的问题是古板的德国人每次发送电文的格式都非常之标准,往往都是按照固定的顺序交代时间、地点、天气、人物、事件……这还不算,很多电文到临结尾了还不忘发挥千里送人头的精神,加上一句画蛇添足的“Heil!”。

  针对这个问题,海伦娜的解决方案是引入伪随机数机制,具体做法是先取一个真正的随机数作为的“种子”(比如当前的毫秒数),然后将这个“种子”自乘,截取乘积的中间的一部分作为下一个“种子”,然后不断重复这一过程,这样就得到了大量的伪随机数。

  每次通过“恩尼格玛”发送信息时,这些伪随机数不仅用来规定密钥,而且用来规定行文格式。具体做法是将时间、地点、天气、人物、事件这些要素全部模块化,然后通过一组伪随机数来规定这些模块排列的先后顺序。必要时还可以将一部分乱码作为模块插入这些有用的要素模块中间,甚至单词之间,由于人脑可以很容易分辨出有用信息和乱码,所以这样做并不会对接收方的阅读产生太大影响。事实上,后世为了防止机器发帖所用的验证码也是这个原理,比如将一个成语的顺序打乱,再给它周围加上一些噪点,让你来识别。验证码的本质就是依靠人脑对不规则事物的归纳能力来打败计算机的运算能力。

  依靠伪随机数来设置密码和行文顺序最大的好处就是杜绝了人类在长期重复劳动中形成的路径依赖以及行为惰性。将密码和行文顺序的随机性完全交给冷酷无情的数学模型来执行。不过伪随机数和真随机数毕竟有差别,生成的伪随机数达到一定数量后,必然会出现重复(只要已经使用过的种子复现,循环就开始了)。所以每隔一段时间后必须更换原始种子或者更换伪随机数的生成算法。

  如果说以上问题都是人为的失误的话,下面这个问题就是“恩尼格玛”密码机自身的缺陷了,那就是一个字母永远无法被加密成它自身。比如说“A”可以被加密为从“B”到“Z”的任何一个字母,但就是无法被加密成“A”,出现这种情况的原因恰恰是“恩尼格玛”密码机的三大核心元件之一的反射器。因为反射器可以让电流从另一条任意路径返回,但就是不能使得电流从原路返回。

  解决这个问题的方法之一是再加一个专门转子,这个转子的两面各拥有78个触点,这些触点中只有任意三个触点和它正对面的触点有导线联通,转子两编的触点分别和一个电极接触,而这两个电极分别有连接按键开关和指示灯。没当按下按键时,该转子也被拨转,在大部分时候,该转子都是没有作用的,但只要有导线和对面触点连接的触点旋转到电极位置,电流回路就会被连通,和开关相对应的指示灯亮起,该字母就被加密为其自身了。而任何一个字母被加密为自身的概率正好是1/26。

  经过海伦娜的以上改进,“恩尼格玛”密码系统的安全性更升了不止一个数量级,但在二战条件下是不是不能被破解,海伦娜还真不敢打包票。毕竟“恩尼格玛”加密系统还是有一些固有缺陷是无法解决的。

  请收藏:https://m.biqu4.cc

(温馨提示:请关闭畅读或阅读模式,否则内容无法正常显示)

上一章 目录 下一章