1
【原创】密码传奇(一):8、如果去掉这个干扰,不就可以比对了么
12 1001n 2005-06-24 12:24:21
回想前面对ADFGX/ADFGVX的加密过程,我们知道:每个明文字母,首先都要被约定好的方表进行加密,办法是取该明文字母对应的坐标,来替换掉明文字母本身。
也就是说,用标记该明文字母的一个纵坐标,和一个横坐标,写在一起作为加密后的密文。
这样一来,一个字母就变成了密文中的两个字母。换言之,明文长度和密文长度应该是1:2。当然,之后还要进行移位变换,但是移位变换是不会改变密文长度的。
也就是说,每2个密文字母,对应1个明文字母。考虑到ADFGVX里引入了数字的概念,那么这个明文字母,当然既有可能是字母,也有可能是数字了。
话说回来,这跟Painvin看到的那第三份长度为108的密文有什么关系?
别急。前两份电文长度是106,而第三份电文长度是108;这三份电文内容高度近似,仅仅是长度有微小的不同……
Painvin眼睛一亮:这108减去106,差值为2;也就是说,密文字母的数量差2个。
――而2个密文字母,不就是1个明文字母么?
Painvin很快想到,这三份电文从一个GCI电台发出,收报单位分别为DAX、DAK、DTD电台……会不会,这三份电文的长度不同,只是因为收报方的名称不同,而导致明文多出一个字母来呢?
如果真是这样的话,三份电文内容又如此近似,――莫非它们正文说的是同一件事?
如果真是这样,第三份电文多出的两个字母,肯定会对分析造成干扰;而如果想办法把这个干扰给除掉,不就可以同时比对三份电文了么?
思路明确了,办法也就出来了。第一份和第二份电文不是写成两行,然后对齐,上下对照着分析么?
第三份电文也这么弄,跟着写成第三行,也是上下对照着分析。
――唯一的区别是,Painvin在把这第三份电文和上面两份电文对齐的时候,把它向前提了两个字母的位置!
老办法,还是模拟操作一下,方便大家的理解(此处电文均为虚拟,前两份长度为14,第三份长度为16,差值为2):
第一份 ADFADDGGGXADFV
第二份 ADFAVDGGGXADFV
第三份 XDADFAGDGGGVADFV
第一份和第二份已经分好段,第三份还没分段时的样子:
第一份 ADFAD DGGGX ADFV
第二份 ADFAV DGGGA ADFV
第三份 XDADFAGDGGGVADFV
第三份也按上面的办法分,就会看不出所以然来:
第一份 ADFAD DGGGX ADFV
第二份 ADFAV DGGGA ADFV
第三份 XDADF AGDGG GVAD FV
所以,把第三份提前两个字母,重新分段,整理后可得:
第一份 ADFAD DGGGX ADFV
第二份 ADFAV DGGGA ADFV
第三份 XD ADFAG DGGGV ADFV
一下就清晰了,不是么?呵呵。。。
以上这个例子,只是假定第三份电文的明文,第一个字母就是多出的那个字母的情况。实际上,这可未必;收报单位那么多,谁知道是从第几个字母开始多出一个字母的呢?
没办法,Painvin只有一个个去试验。不过,因为收报单位肯定在电文的最开头,那么,之后的密文应该就是可以互相对照的;所以,最快的办法就是从密文的末尾开始捋起,一样地去找对照着的密文组,进而给密文分段。
不过上面这句话,可不能理解为完全从密文的最后一个字母开始,从右向左倒推着给密文分段――那样尽管有可能得出正确的分段,却也很可能导致这么个现象:开始的分段是正确的,而从某一个巧合的位置起,之后就全部分错了。真要那样可就惨了,这密文压根儿就别想破了……
简单地说,Painvin是要从比较靠后的位置开始分段,不过,赖以区分密文段的操作,也就是对相同密文组的比较,依然是从左向右的顺序进行的。
由于三份电文毕竟高度相似,而且实际上大部分内容都是可以对照的,于是很快,第三份密文也被成功地分了段;这样,就可以开始进行分析了。
非常非常可惜的是,资料上,这三份电文的具体内容完全是语焉不详。说心里话,我真是很郁闷,因为我也想重复一下他的破解,体验一下破译真实电报的快感啊……
不过,虽然没有资料,但是我们现在也多多少少可以了解他的破解过程――考虑到1001n在之前的相对详细的介绍,我们完全可以明白Painvin是怎么一步步逼近他的目标的;他的办法,正是前篇所提到的那19个步骤。
我们现在能够知道比较确切的结果,Painvin得到的ADFGVX的移位表密钥,是这样的:
6 16 7 5 17 2 14 10 15 9 13 1 21 12 4 8 19 3 11 20 18
一共21个数字,代表了移位表上的21列。
之后,Painvin的工作就是初步复原这张移位表。再之后,分析移位表相邻纵列上的字母配对的频率情况,给出正确的移位表序列;之后,把这张表上的字母从左到右,一个个抄录下来,并且两两分组,一个个根据频率分析的原则往假想中的方表上套……
按照这个指导思想进行下去,――他终于在第二天下午七时前,也就是6月2日19时前,完全还原了德军6月1日使用的ADFGVX的移位表和方表!
这是继Painvin于4月3日还原了德军4月1日的ADFGX的移位表和方表之后,获得的第二次重大的胜利!
上次胜利,Painvin用了不到
48个小时;而这次胜利,轻车熟路的Painvin甚至只用不到
26个小时!
这个方表是个6*6的方表,考虑到它在之后起到了如此重大的作用,也考虑到我为这个题目写了这么多这么多的字,我把它做成了一张自己看上去还觉得赏心悦目的图,算是给自己留个纪念吧:)

兄弟们咋看咱不知道,反正花了三个多小时做这张图,我还是满愉快的
――方表被解开了,这个ADFGVX密码,不也就应声而破了么!
按照这个方表的指代,Painvin很快得出了GCI电台发给DAX电台的明文(我把我能看懂的地方也给标注上了):
密文 14 ID XX Gen Kdo ersucht vorders Linie sofort drahten XX Gen Kdo 7
明文 14 步兵师 司令部 司令部 7
而全文经过格式整理,就是:
第14步兵师:
司令部要求电告前线(情况)。
第7(军)司令部。
而第三份电文,也就是DTD电台收到的那份密文,它的明文又是什么意思呢?整理一下,其实就是下面这个样子:
第216步兵师:
司令部要求电告前线(情况)。
第7(军)司令部。
回想一下,怎么能不承认Painvin的睿智呢?对比这两份电文,我们能够看出:在两份明文中,两个步兵师的番号,一个是14,一个是216――的的确确,就是差了一个数字字符!
这差出的一个明文字符,的确正好就形成了密文字符总数差出两个的情况……
现在看来,这一切很顺理成章啊,不是么?密文那么象,当然是同一份明文的可能性大;密文字母差两个,当然说明明文字母/数字差一个;这样的破解好像不是很厉害啊,难道真的很牛么?
――当然牛!
我们现在的拆解,那几乎是把ADFGX/ADFGVX密码加密原理掰开揉碎了,一点点分析出来的;而我们对密文的分析和对这个分析的评说,是在已知分析手段的前提下获得的。
而当年,Painvin在战火纷飞的环境下,在根本不知道该怎么破解的前提下,一点点靠自己的脑袋想出这些招数,想得如此之深刻,如此之遥远,――他不是天才,又是什么?
回想我们前文中给出的那些让人疯狂的电文,比如那个CHI-104吧:
ADXDDXGFFDDAXAGDGDGXDGXDFGAGAAXGGXG?DDFADGAAFFFDDDFFDGDGFDXXXADXFDAXGGAGFGFGXXAGXXAAGGAAAADAFFADFFGAAFFA
没有任何人会给你任何提示,而Painvin,就生生地能从里面拽出明文来。兄弟们怎么看我不知道,至少我个人,彻头彻尾地服了他!
------------------------------------------------------------------------------
而这对改善协约国军队的态势,又帮了什么忙呢?
FlyGerenal兄提到的炮弹故事,又跟这个有什么关系呢?
Painvin啊Painvin,你到底书写了什么样的密码传奇?
――被1001n给叨叨烦了的黑猫警长终于忍无可忍,抽出手枪来。伴随着清脆的枪声――Pia Pia Pia Pia――,四个汉字应声跳出:
请 看 下 集
闲看蚂蚁上树 选转。不爱吱声 荐,
3
完蛋,没法修改了——那就把这张图贴在这里吧 1001n 2005-08-29 05:30:23
刚看到老兄的问题,赶紧重新找地方上传了图片。。可是,说“已经过了修改期限”,还真是头一次知道。没法子,只好贴在这里了。。

德军被破解的方表
在这里也得向大伙说声抱歉了。。由于talkcc.com上传空间的图片目前无法正常显示,可能会有不少图都是红叉。。限于精力,现在1001n主要忙于第三章的写作,失效的图片问题暂时无法顾及,也请大伙海涵!
johny老兄的其它问题,请查看短信:)
再次感谢大家的支持!

最后于2005-08-29 06:08:16改,共1次;