服了酷到让人望而生畏密码学能解释得如此简单图解密码技术( 三 )


小测验1 破译恺撒密码
假设你收到了以下用恺撒密码加密过的密文,但你不知道密钥(平移的字母数),请破译这段密文 。PELCGBTENCUL
简单替换密码一、什么是简单替换密码
恺撒密码是通过将明文中所使用的字母表平移来生成密文的 。但是,如果我们将字母表中的26 个字母,分别与这26 个字母本身建立一对一的对应关系,那么无论哪一种对应关系就都可以作为密码来使用 。这种将明文中所使用的字母表替换为另一套字母表的密码称为简单替换密码( simple substitution cipher) 。恺撒密码也可以说是简单替换密码的一种 。
例如,图4 就是一个简单替换密码的对应表(替换表) 。

服了酷到让人望而生畏密码学能解释得如此简单图解密码技术

文章插图
图4 简单替换密码的替换表(例)
二、简单替换密码的加密
简单替换密码的加密过程是依次将明文中的每一个字母按照替换表替换成另一个字母 。
例如,我们可以用图4 中的替换表,对刚才恺撒密码例子中的明文yoshiko 进行加密 。参照图4 , 依次对每个字母进行替换 。
y → K
o → B
s → L
h → T
i → J
k → S
o → B
就可以得到密文KBLTJSB 。
三、简单替换密码的解密
只要使用加密时所使用的替换表进行反向替换,就可以对简单替换密码进行解密了 。
由于在简单替换密码的解密中 , 需要用到加密时所使用的替换表 , 因此发送者和接收者必须事先同时拥有该替换表 , 而这份替换表也就相当于简单替换密码的密钥 。
四、简单替换密码的密钥空间
yoshiko 用恺撒密码(密钥为3)加密后的密文是BRVKLNR,而用简单替换密码(密钥为图4)加密后的密文则是KBLTJSB 。无论是BRVKLNR 还是KBLTJSB 都是无法看懂的字符串,在这一点上它们是相似的 。单从密文上来看,我们无法判断出恺撒密码和简单替换密码到底哪一种更难破解 。
恺撒密码可以通过暴力破解来破译,但简单替换密码很难通过暴力破解来破译。这是因为简单替换密码中可以使用的密钥数量,比恺撒密码要多得多 。
为了确认这一点,我们来计算一下简单替换密码中可以使用的密钥总数 。一种密码能够使用的“所有密钥的集合”称为 密钥空间( keyspace),所有可用密钥的总数就是密钥空间的大小 。密钥空间越大,暴力破解就越困难 。
简单替换密码中 , 明文字母表中的a 可以对应A, B, C, ..., Z 这26 个字母中的任意一个(26种),b 可以对应除了a 所对应的字母以外的剩余25 个字母中的任意一个(25 种) 。以此类推,我们可以计算出简单替换密码的密钥总数为:
26×25×24×23× … ×1 = 403291461126605635584000000
这个数字相当于4 兆的约100 兆倍,密钥的数量如此巨大,用暴力破解进行穷举就会非常困难 。因为即便每秒能够遍历10 亿个密钥,要遍历完所有的密钥也需要花费超过120 亿年的时间 。
1 兆等于 1 万亿,即 10的12次方 , 这里所计算的简单替换密码的密钥总数约为 4×10的26次方,或者约为 2的88次方 。
如果密码破译者的运气足够好 , 也许在第一次尝试时就能够找到正确的密钥,但反过来说,如果运气特别差 , 也许尝试到最后一次才能找到正确的密钥 。因此平均来说,要找到正确的密钥也需要花费约60 亿年的时间 。
五、用频率分析来破译密码
虽然用暴力破解很难破译简单替换密码,但使用被称为频率分析的密码破译方法,就能够破译简单替换密码。