第3章 现代对称密码

3.1 乘积密码

在第2章,了解到因为语言的特征,只用代替或置换规则构造的密码是不安全的。因此,可以考虑连续使用两个或两个以上基本密码的方式来增强密码的强度。乘积密码就是以某种方式连续执行两个或多个密码以使得到的最后结果从密码编码的角度比其任何一个组成密码都强,能够挫败基于统计分析的密码破译。在现代密码之前,转轮密码机是最普遍的乘积密码,在第二次世界大战中得到广泛应用。

两个加密方法按它们加密的顺序连接进行合成时,要求第一个方法的密文空间与第二个方法的明文空间一致。两个加密方法的合成(乘积加密)通常会形成一个新的加密方法,问题是两类方法的合成是否一定比单个方法更具有抗密码分析的能力?直觉是这样,但这不一定都对,因为第二个方法可以部分或全部抵消第一个方法的作用。

举例如下:设以“BASEDOW'S DISEASE IS CURABLE”为密钥字构造密钥短语密码,代替表为:

            abcdefghijklmnopqrstuvwxyz
            BASEDOWICURLFGHJKMNPQTVXYZ

重复两次代替后,代替表为:

            abcdefghijklmnopqrstuvwxyz
            ABNDEHVCSQMLOWIURFGJKPTXYZ

发现有8个字母,包括高频字母e和a都没有动。

那么什么样的方法合成是有效的呢?

某些密码体制M具有这样的性质,取自M的两个加密步的合成仍属于M,也就是说这一密码体制形成群。比如Z26上的所有移位代替加密方法形成群P26,宽度为24的所有置换加密形成的群P24。如果两个加密方法集合的每一个都构成群,且可交换,则它们的乘积加密也构成一个群。一个单字母代替和一个换位的复合是不可交换的,一个正常多字母代替(宽度为k)和宽度为k的换位的合成也不满足交换性。如果合成的方法不仅不满足交换性,而且其中任何两个方法相互独立,则这一合成是有效的。比如换位,执行一次“扩散”,多字母代替,执行一次“混淆”。如果乘积加密不是一个群,它就可以被重复而且其组合复杂度会进一步增加。

两次代替可以构造一个更难以分析的代替,两次置换可以构造一个更难以分析的置换,代替之后再进行一次置换,可以构造一个强度更高的新密码,这是古典密码通往现代密码的桥梁。