“先看仅有少量已知明文的情况,明文w e t t e r第一个字母w被加密成e,它的加密过程是:首先经过插线板进行了一次替换(记作函数p1()),然后经过三个转子(记作r()),又经过反射器返回并再次经过一次插线板(p2()),写成w->(p1)->r()->(p2)->e。”
“我们知道两次经过插线板仅仅是最简单的两两字母替换,可以用如下的方法进行推测插线板的设置:假设w与a连接w-a,则w->(p1)=a,然后a通过三个转子加密。由于转子的内部连接结构是已知的,就可合理选择一个转子状态,假设a通过转子后输出l,即a->r()=l, 这样得l->(p2)=e,就可推断出在插线板l和e连接l-e。”
宋鸿飞刷刷刷在黑板上推演,俞大维聚精会神地看着,头脑在飞速运转。
“这样,通过这个已知明文按照同样的方式继续推断,可以发现插线板的其他设置,k-q、x-b、t-g、w-j,到这里就发现有问题了,我们首先已假设w-a,w不可能同时连接两个字母a和j,这就能证明w-a的设定是错误的。然后,继续推断w-b、w-c、w-d,如此迭代,推断完26种可能,嗯当然没有连接也是一种可能。。”
“如果所有可能都是错的,就意味着转子的设置是错误的,就需要拨动一下转子,再次尝试另一个设置,并重复上面的推断过程。”
俞大维惊叹道:“真是一个绝妙的方法!这样一来,就只需尝试26次插线板连接!转子的设置总共有十万种可能,虽然还是很大的工作量,但也是可以完成的了!”
宋鸿飞道:“是的,破解过程原理就是如此!不过这样需要很长的时间,还有更聪明的方法。其一,当我们发现得出了一个错误的结果比如w-a和w-j,这就意味着与之相关的推测得到的连接都是错误的,往下就无需再检查这些连接了,这样能排除大量待检组合。”
俞大维点点头,道:“对,这样用时就大大减少了!”
宋鸿飞又笑笑道:“但是这样也还都是手工进行重复工作,我们应该把它交给机器!”
宋鸿飞接着在黑板画出原理图,进行推演:“我们可以设计出一种这样的机器:把上面做的推测如w-a通过电路的方式实现,电路会自动进行推测,当进行到w-j,这意味着推测错误。电路可快捷地找到w-a中所有的推测可能,也就是所有错误结果。然后,再依次推测另一组转子设置。十万级别的数量,对于电路来说不算什么问题。”
“就是一个不断排除错误选项的过程,最后剩下的就是没有引发错误的设置方式,只需要采用人工检查的方式,看看得到的结果是否正确。”
俞大维道:“把最繁杂重复的大量工作交给机器,效率就大大提高了!”
宋鸿飞又道:“如果得到了更多的类似这种已知明文,密码专家们称之为‘crib’(小抄)。当能构成一条字母环时,对于机器来说还有更绝妙的方法。”
俞大维大感兴趣,道:“小抄?这名字倒是够贴切的。”
宋鸿飞推演道:“还是用w e t t e r来举例,如果推测出下面这样构成环的小抄:
明文 w e t t e r
密文 e r k g w
在这个对印关系中,明文w第一次被加密成e,转子转动一位后e被加密成r,转子转动五位之后r又被加密成w。记作:w->(r1)->e->( r2)->r->( r6)->w ,
观察w -> e这个步骤,它经过插线板和转子的过程就是w->p1()->r()->(p2)->e。w首先被插线板替换成了另外一个字母,记为t1,接着t1进入三个转子又被替换成了t2,最后t2又再次经过插线板被替换成了e,整个过程记作:w->(p)->t1->r()->t2->(p)->e。
在w-e-r-w这个字母环中,可以等效于w、e、r三个字母经过三台密码机首尾串联,及以上一台机器得到的输出作为下一台机器的输入进行加密得到的结果,分别记为:w-e、e-r、r-w。
则整个过程为:
w->(p)->t1->r(1)->t2->(p) ->e
->e->(p)->t3->r(2)->t4->(p) ->r
->r->(p)->t5->r(6)->t6->(p) ->w
因为插线板的设置在整个加密过程中是不变的,t2经过第一台机器插线板得出e,接着e又经过第二台插线板得出t3,可见t2=t3,同理t4=t5,t1=t6,这个插线板的过程就可以相互抵消掉了。这样,这个过程就简化为:
w->(p)->t1->r(1)->t2
->r(2)->t4
->r(6)->t6->(p)->w
那么现在只要输入t1,然后试着让v1先后通过三台恩格玛机的转子r(1)、r(2)、r(6)得到一个输出结果t6,并检查是否t1=t6。如果不相等,那么说明当前转子设置是错误的。如果相等,则说明密码机的设置可能是正确的,再通过人工对明文和密文进行检查就可。”
“插线板的输出t1无非就是26种可能性而已,甚至可以通过制造多组这样的几台串联机器,同时输入26个字母进行测试。”宋鸿飞缓缓地道。
俞大维简直要听傻眼了。
他仿若醍醐灌顶,露出恍然大悟般的表情,张大了嘴:“这,这,这简直太神奇了!使用多台机器并行计算,以上一台的输出作为下一台的输入,中间复杂的过程就能两两抵消!也就是能绕过了一千亿中插线板结果的干扰,所要检查的就是十万种转子设置,数量立即就下降到了一个可以接受的范围!”
俞大维已佩服得五体投地。
他忽然看向宋鸿飞道:“有时候,我真想把你的脑袋拿去研究研究,看看你究竟是怎么想得出这么天才的方法!”
宋鸿飞虽然听得心里非常爽,但还是在默默地暗念:“惭愧,惭愧,这几种破解方法分别起源于二战前后波兰和英国的众多密码专家和数学家,我不过是拿了现成的。当然,这其中也有后世在g军校的时候经过我优化改进的计算机程序算法。。。”
宋鸿飞郑重地道:“其实这不是我想出来的,这是使用计算机得来的结果。”
俞大维听得一怔,依然久久沉陷在震惊和思考中。
良久,他也一脸郑重地道:“我也很庆幸!还好,你是我们华夏人,不是我们的敌人!”
俞大维又道:“难以置信,计算机的威力竟然如此惊人!像以过程的输出作为输入然后两两抵消,人的思维过程是难以想到这点的。”
宋鸿飞道:“是,就像一个简单的递归算法,人很难理解,但是计算机处理起来轻而易举。”
俞大维又是一怔,忽然笑了笑:“你这家伙,这些天明里暗里地跟我敲边鼓。是不是打着个算盘想兵工署继续加大对计算机研制的投入?”
宋鸿飞也笑道:“俞长官目光如炬。”
俞大维又笑道:“所以我说庆幸!现在资金、技术、人才无一不捉襟见肘,军委会之前对这么大的投入还颇有微词。好在有你这么一位计算机专家,我们的研究才能紧跟国际一流水平!这下要是那帮高层能认识到计算机有如此的威力,事情就好办多了!”
俞大维又想起了什么,道:“我看过你的博士论文,关于二进制和开关电路的逻辑符号分析。我也在想,如果以此理论加以深入研究,并在电子工程和计算机技术上得到应用和发展,我们就很希望引领国际先进科技的潮流。”
宋鸿飞心潮澎湃:“毫无疑问,电子工程和计算机的发展方向将是二进制、电子式!我相信,计算机将会改变这个世界!”
“兵工之父”俞大维是何等高瞻远瞩的时代人物,他同样已意识到一个国家占领科技制高点的战略意义。
俞大维沉思着,道:“我将会力陈军委会高层,以此契机,加大对电子科技和计算机研究的投入,尤其着力培养更多的科技人才。”
宋鸿飞心头一热,他知道这些年来这位兵工之父可谓是殚精竭虑、沥尽心血,面对内外交困步履维艰的局面,他对华夏的现代化工业、兵工业、国防科技和科研人才培养作出了彪炳史册的卓著功勋。
宋鸿飞看向俞大维的,亦是激动不已:“俞长官高瞻远瞩,才是我民族之大幸啊。”
两人同样激动异常,都有惺惺相惜之感。
良久,俞大维才道:“得了,我们就不要在这互相吹捧了。”
两人互看一眼,都哈哈大笑起来。
理想或者说信念在心中荡漾的感觉,是如此美好,如此令人着迷。
俞大维忽然又看了看宋鸿飞,开口道:“以我对你的了解,我在想,你大费周章地破解德军密码,是不是还有什么目的?”
宋鸿飞道:“佩服,看来什么心思都瞒不过你。”
“看来果是如此!”俞大维笑道,“你想以此和德国人做交易?”
宋鸿飞毫不掩饰,道:“不错,就是要和德国人做交易!”
俞大维沉思良久,道:“你尽快做一份报告!我给你找几位军委会密电组的专家来协助。切记,有些机密得牢牢掌握在自己手里,底牌不能轻易透露了。”
“明白!”宋鸿飞道,“先来个投石问路!”
俞大维哈哈大笑,他实在心情大好:“无利不起早,你们宋家可真是会做生意啊!啊,我开个玩笑!你别介意,不要这么看着我!”