1918年11月11日,第一次世界大战结束了。被《凡尔赛条约》压的喘不过气的日耳曼民族经过这次战斗的洗礼,深知情报保密工作对一场战争的重要性。1919年,德国发明家亚瑟·谢尔比乌斯和他的朋友理查德·里特发明了英格玛机(ENIGMA)。在这样的条件下,1925年,德国军队全面装备英格玛机,也正是在这样的背景下,人类历史上最烧脑的一场密码战,打响了。
1939年9月1日,第二次世界大战开始了。
在英格玛机的帮助下,德意志战车横扫欧洲,英国的情报部门更是发出长叹:“英格玛机是无懈可击的!”
在开始讲解这场烧脑大战之前,我们先来看一下密码加密的原理。
当你想要加密一段文字时,你要从每一个字母入手,比如:
加密前:a b c d e f g h i j k l m n o p q r s t u v w x y z
加密后:C O M P U T E R S V W X Y Z A B D F G H I J K L N Q
我们要对下面这个句子进行加密:
I may be lonely but I'm not stupid.
按照上面的替换规则,我们可以得到这样一段句子:
S YCN OU XAZEXN OIH XY ZAH GHIBSP.
这样就算加密完成了。理论上,英文26个字母的排列组合有4.03X10^26这么多,这是什么概念呢?全世界60亿人每人每秒测试一种组合,也需要20亿年才能测试出来。所以在一段时间内,这种加密方式被认为是无解的。
但是如果在这里结束的话,恐怕就没有什么英格玛机的戏份了。但是人类的智慧是无穷的,还真的有人破解了这种密码,他们的武器是语言学和统计学。
以英语为例,字母e,a,t出现的概率远远大于j,k,q,x等,下面我会贴一张统计图来说明。
这张图片来自维基百科,清晰的展示了英文26个字母在文本中出现的概率
在刚才的密码表中,我们用U替换了e,如果我们能够截取足够多的数据,就会发现U,C,H出现的概率远远大于其他字母,然后只需要慢慢地替换尝试,这种密码表很快就被破解了。
OK,密码师们并不服气,他们很快就发明了多密码替换表。
加密前: a b c d e f g h i j k l m n o p q r s t u v w x y z
一次加密后:C O M P U T E R S V W X Y Z A B D F G H I J K L N Q
二次加密后:A I R E L N P F G H J K M O Q S T U V W X Y Z B C D
明文中第一个字母用第一行密码,第二个用第二行,第三个又回到第一行,以此类推。
我们再次加密上面那句话试一下:
I may be lonely but I'm not stupid.
加密后:
X MCC OL XQZLXC OXH GY OAW GWISSE
发现什么了吗?对,but的u被替换成了X,但是在后面立刻又被替换成了I。这说明多密码替换表不但可以掩盖明文,同时还能掩盖明文中字母出现的概率。
密码师们也不是吃素的,既然能有两行密码表,为什么不能有三行,四行?不,为了一劳永逸,我们用二十五行吧!
在这里我们不得不提一下这位“丧心病狂”的密码师的名字:布莱兹·德·维热纳尔(Blaise de Vigenère),维热纳尔发明了二十五行的加密表,也就是现在的维热纳尔方阵:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
维热纳尔:哈哈,没想到吧!
这张密码表的使用方法很简单,电报双方互相约定一个单词,比如ANYTIME,然后明文就被这七行密码所替换,变成了一段完全无法破解的密文。
等等,真的完全无法破解吗?既然英文中字母可以根据统计学来猜测,那单词难道不可以吗?
未完待续
PS:不出意外会在二十四小时后更新中篇,讲解维热纳尔方阵的破解以及英格玛机的原理。
网友评论