简单代换密码
虽然具有大量密钥是密码安全的必要条件,但是我们还要强调,有大量的密钥并不能保证密码系统一定是坚固的。简单代换密码(或称单字母表密码)就是一个很普通的例子,我们下面来详细地讨论它。讨论这种密码,不仅能说明依赖大量密钥作为系统强度指标的危险性,而且还能解释所用语言(此例中是英语)的统计特性是可能被攻击者充分利用的信息。
要制作一个简单代换密码,我们可以在一个严格按字母顺序排列的字母表下面,写下一个按随机顺序排列的字母表,例如:
该密码的加密密钥与解密密钥是相同的,就是粗体字母的次序。加密规则是“将每个字母替换为位于它下面的字母”,解密规则是相反的程序。例如,按照此图所示的密钥,对应于GET的密文是ZTP,而对应于IYZ的明文信息为BIG。顺便注意一下,凯撒密码是简单代换密码的一个特例,即位于下面的粗体字母排列只是将字母表移了一下位。
简单代换密码的密钥个数,等于字母表中26个字母可按不同顺序排列的方法数,它被称为26的阶乘,记为26!,也就是26×25×24×……×3×2×1,等于
403,291,461,126,605,635,584,000,000。
这无疑是一个很大的数,几乎没有人会用穷举搜索法去寻找密钥。然而如此巨大的密钥数量本身也带来了问题,而且在应用简单代换密码时会出现很多有关密钥管理的问题。第一个明显的问题是,不同于凯撒密码,简单代换密码的密钥很长,很难记祝因此在没有计算机的时代,这种类型的系统都是手工操作的,密钥常被写在一张纸上。如果这张纸被人看见或偷去,就会危及这个系统的安全。如果这张纸丢失,则所有加了密的信息就在下面这种意义上“丢失”了:真正的接收方不得不破译这个算法以找回信息。
为了规避这种风险,使用者试图找到能够产生容易记忆的密钥的方法。一种常见的方法是想出一个密钥短语,去掉所有重复的字母,让它作为密钥的“开头”,然后按字母表顺序加上尚未出现过的字母,使之扩展成完整的密钥。例如,如果我们设密钥短语为“We hope you enjoy this book”(我们希望你喜欢这),去掉重复字母后即变为“wehopyunjtisbk”,那么该密钥便是
W E H O P Y U N J T I S B K A C D F G L M Q R V X Z
显然,当限制密钥只能从密钥短语导出时,密钥的数目会大大缩减,因为在26!种可能的简单代换密钥中,相当大的比例是不可能由一个英语短语用上述方法导出的。然而,这数目对于穷举搜索法而言还是太大而无法施行,不过此时的密钥已经容易记住了。
简单代换密码的第二个明显的问题是:很可能存在许多不同的密钥将同一信息加密成同一密文的情况。例如,假定信息为“MEET ME TONIGHT”(今晚来见我)。我们使用第一个例子中的密钥来对其加密,则密文为FTTP FT PREYZSP。但是任何一个将E变成T、G变成Z、H变成S、I变成Y、M变成F、N变成E、O变成R以及T变成P的密钥,都能导出同样的密文。此类密钥的个数多达
18!=6,402,373,705,728,000。
这显然意味着,至少对于这类密钥来说,我们不应该假定攻击者需要确定出全部密钥才能从窃听到的密文中得到我们的信息。
在讨论攻击者如何利用英语这种语言的统计特性破解一些密码(也包括简单代换密码)之前,我们通过精心选择的4个简短的例子来说明简单代换密码的一些独特性质。在下面的例子中,我们假设给定的密文已被他人窃听,而且此人知道该信息是用英语写的,还知道加密者使用的是简单代换密码。
例1:G WR W RWL
因为在英语中只有两个单词是由一个字母构成的,所以可以合理地假定要么G代表A、W代表I,要么相反。此时很容易去掉G代表A的可能性。我们可以很快得出结论:该信息前面的几个字母为I AM A MA,最后一个字母只有有限的几种可能性。如果我们恰好知道这条信息是一个完整的英语句子,那几乎可以肯定它就是I AM A MAN。这一简单的推理没有利用任何密码分析技巧,认识到这一点很重要。它或多或少地“屈从”于英语的语言结构。还要注意到,尽管这一推理尚未确定出密钥,但却将密钥数目从26!减少到了22#如果这只是一个更长的信息的开头部分,我们或者需要另外的论证来确定密钥的其余部分,或者需要进行工作量虽已缩减、但计算上仍然难以实行的密钥搜索。我们还需指出,为了避免这类攻击,传输信息时通常都以5个字母为一组发送,这样就隐藏了词的长度和(或)词的结尾等信息。
例2:HKC
关于这个密文我们能说些什么呢?可说的不多。由于没有别的情报可参考,这条信息可能是任何由3个不同字母组成的某个有意义的字序。我们几乎可以肯定地删去几个密钥,譬如那些同时把Z加密为H、Q加密为K、K加密为C的密钥。然而余下的可能的密钥数还是太多了,我们可以大胆地说,单靠窃听到的这条密文不能告诉我们任何东西。的确,如果我们想发一条只有3个字母的信息,那么简单代换密码就足够了,破解密文的密钥穷举搜索法将会产生所有(不同字母组成的)可能是密文的三字母词。
例3:HATTPT
对于这个例子,我们可以毫无疑问地限制T所代表的明文字母的数目。我们还可以放心地推断出T或P中的一个必代表元音字母。此外,如果我们有理由相信拦截到的信息是一个完整的单词,那么我们就能够写出所有可能的词汇。CHEESE、MISSES以及CANNON就是其中的几个例子。
例4:HATTPT(已知这条信息是一个国家的名称)
我们相信这个例子中的信息必定是GREECE。例3与例4的区别在于,我们得到了关于例4的额外情报,使得攻击者的任务从不可能转化为轻而易举。这自然是“战时”情报部门的职责之一。通常正是他们的情报成为密码分析人员破译敌人密码的决定性因素。