按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
密文G S K X W K Y C U S O X Q Z K L S G Y C J E Q P J Z C
(看第五行,F开头,明文是b,要用G来加密;第十四行,O开头,明文是e,要用S来加密,如此类推……)
维热纳尔密码既克服了频率分析,又具有数目众多的密钥。发送者和接收者可使用字典里任一个单词,或单词组合,或虚构的词作为关键词。它提供了很好的安全保障,但它的复杂性,却令其等到十九世纪才流行起来。很多年以来,维吉尼亚密码都被认为是不可破解的。不过,也是在十九世纪,查尔斯·巴贝奇——一个性情古怪的天才将其破译了。让我们来看看解密的过程:
这个人也因为其在计算机科学领域方面所进行的先锋性工作而被世人所熟悉。巴贝奇(Babbage)通过寻找重复的字母段破解了这个密码系统。当然,维热纳尔密码的优势在于这种密码被假定为它将不同位置的字母进行不同的加密。比如同一段文字中的“THE”可能在前面表现为“UPK”,但在后面则被表现为“BNF”。同样,像“AKER”这样的字母也会被进行不同的加密。但是,第一个和第三个“THE”都会被编码为“UPK”。第一个“THE”中的“T”会用“B”来进行编码,而第三个“THE”中的“T”也同样是用“B”来编码。发生这种情况是因为第三个“THE”是排在第一个“THE”后面第二十一个字母,而三字密钥BIG会在重复七次之后又回到了最开始。在任何比密钥要长得多的加密信息中,都会不可避免地出现类似这样的重复。而一个解密者应该如何才能揭示加密文件的真正面目呢?比如,如果加密文字“UPK”出现了两次,中间隔着21个字母,那么他就可以推断出密钥的长度是21的整除数。或者换种说法,他可以推断出21是密钥的倍数。(约数或称除数是一个数字被除之后不会有余数。比如21的除数就是1、3、7和21。)如果获得了足够多类似的线索,解密者就可以知道密钥的确切长度。一旦他知道了密钥长度,他就可以对加密信息进行日常频率分析。注意,数学在解密工作中总是放在首位的:解密者首先会计算出密钥的长度,这步工作甚至是在他要考虑密钥的具体内容是什么之前所要做的。
巴贝奇的独具创意的技巧开创了一片密码术的新天地,并且将数学工具引入到了以前被认为专属于文字学的领域之中。即使一种编密码系统没有明确地使用数学,但其中隐藏的格式却通常需要以数学的方式进行整理。
之后又过了九年,在一八六三年,一位业余数学爱好者、时年五十八岁的普鲁士退役炮兵少校弗里德里希·卡西斯基(Friedrich Kasiski)出版了一本小册子,名字叫《密写和破译的艺术》(Die Geheimschriften und die Dechiffrierkunst)。简单描述一下它的原理:被加密方指定的这个数列,也就是密钥,在实践中不可能是无限长的;在通常情况下,它的长度不仅不会超过明文长度,甚至往往还相当短——在斯维提斯的例子中,密钥“Emily”的长度是五位,也就是说,每加密五个明文字母,就要循环使用“Emily”,对后面的明文字母继续加密。
“循环使用密钥进行加密”——整个多表替代的破绽和死穴,也正在这里。
首先,破译的第一步就是寻找密文中出现超过一次的字母。有两种情况可能导致这样的重复发生。最有可能的是明文中同样的字母序列使用密钥中同样的字母加了密;另外还有一种较小的可能性是明文中两个不同的字母序列通过密钥中不同部分加了密,碰巧都变成了密文中完全一样的序列。假如我们限制在长序列的范围内,那么第二种可能性可以很大程度地被排除,在这种情况下,我们多数考虑到四个字母或四个以上的重复序列。
破译的第二步是确定密钥的长度,先看看这一段:
关键词F O R E S T F O R E S T F O R E S T F O R E S T F O R
明文b e t t e r t o d o w e l l t h a n t o s a y w e l l
密文G S K X W K Y C U S O X Q Z K L S G Y C J E Q P J Z C
第一个YC出现后到第二个YC的结尾一共有12个字母(USOXQZKLSGYC),
那么密钥的长度应是12的约数——1,2,3,4,6,12之中的一个(其中,1可排除)。
如下面的密文:
ISWZPNQCKMYYYJKAYYEZFFSWEESSPGZXQAHF
ISWZPNQCKMTVYJOACVEHAESAZRLTPQIZMXOT
QSWMCVUDSIJGGDEUWAZRSFXWILKUEJQLDACB
GDLYJXMYLMDQKZMPLDILQEMWFSWDPAZEZQNW
DYWDZXFSAEEAZJDUELVPTMCEKWSEEFURZFSW
DPXACQAFKMXWAWVEZFSDBGDLAYUQXGDPEKWS
EEFURZFSWDPOUEZKZMYLQNPQQDEMJTQYGUVA
ZOGRWAWPVUEQAFJQJGGJZAHQAFKTJDKAD
MNWPJGGCWKPKAYEQZZPTVKZMQGWDVFAHLTLL
USSPXAZPGZJGGOSDWAZRKAEZQCWKZMMCWITL
TEZMEDAZCAYQAFJRLUQLKUQQAFJQYWHPJTFJ
FLKUQQAFJQYWHPJPZOZDZMWDUMWFSWAYWRZJ
KZMISGBTFOSEEJGGDGREDKMMFDMDPARQJAHF
UDKTZOZEZQYAITDXVFAHLTLLKZMMCWZZVDPS
YPJ
在里面重复序列有ISWZPNQCKM,BGDL,SEEFURZFSWDP,JGGC,LKUQQAFJQYWHPJ,VFAHLTLL等;
如果每个重复间隔都能被3整除,关键词应该有三个字母。
下一步,仍旧是频率分析,不过,因为关键词有三个字母,我们应分为三组进行。把第1,4,7,10,13……个字母分为一组,称之为L1,把第2,5,8,11,14……个字母又分为一组,称之为L2,余下的归另一组,称之为L3。那么每一组有169个字母。
现在先做一个标准频率分布表:
用169乘以各个字母的标准百分比,如字母A,169×8。2%=14。
那么由标准频率:
A:8。2 N:6。7
B:1。5 O:7。5
C:2。8 P:1。9
D:4。3 Q:0。1
E:12。7 R:6。0
F:2。2 S:6。3
G:2。0 T:9。1
H:6。1 U:2。8
I:7。0 V:1。0
J:0。2 W:2。4
K:0。8 X:0。2
L:4。0 Y:2。0
M:2。4 Z:0。1
得到标准个数:
A:14 N:11
B:3 O:13
C:5 P:3
D:7 Q:0
E:21 R:10
F:4 S:11
G:3 T:15
H:10 U:5
I:12 V:2
J:0 W:4
K:1 X:0
L:7 Y:3
M:4 Z:0
然后,统计L1的169个字母出现的次数,有:
A:22 N:1
B:1 O:1
C:0 P:5
D:10 Q:16
E:10 R:5
F:9 S:2
G:7 T:7
H:2 U:14
I:9 V:1
J:0 W:1
K:11 X:2
L:0 Y:5
M:14 Z:14
又做出L1的图表(histogram),与标准图表对比一下。标准频率和L1的频率都有峰值、平稳期和低谷。它们之间的区别在于相互错开了一些位置,比较两者应该可以寻找出最显着的特征。例如,看L1图表中A~F这一段,A的峰值过后是低谷,特别是C没有出现,然后是一段平稳期,这与标准频率中的O~T这一段相像;标准频率中,O的前面I~N这一段和L1中U~Z一段也大致吻合;又看看,L1中,J和L的缺失应该就是标准频率中X和Z的缺失,M~Q这一段应该就是标准频率中A~E这一段。这就暗示着L1的密码表是由M,N,O,P……开始的。把L1的图表向左平移十二个单位再与标准频率对比,整体来说差不多。由此可知,关键词的第一个字母是M。(注意,一些误差是在所难免的,如K替换Y,两图表比较起来好像不很符合,但整体来说是差不多的,我们就可忽略过去。)
继续下来,统计L2中169个字母出现的次数,可以确定关键词的第二个字母是L。
最后,用同样的方法可确定关键词的第三个字母是S。
至此,得到整个关键词是MLS。
再用维吉尼亚方阵将密文翻译过来,得到明文:
Whenever sang my songs
On the stage on my own
Whenever said my words
Wishing they would be heard
I saw you smiling at me
Was it real or just my fantasy
You’d always be there in the corner
Of this tiny little bar
My last night here for you
Same old songs just once more
My last night here with you
Maybe yes maybe no
I kind of liked it you’re your way
How you shyly placed your eyes on me
Oh did yo