预计阅读本页时间:-
9.2 密码学原理
加密在安全领域扮演着非常重要的角色。很多人对于报纸上的字谜(newspaper cryptograms)都不陌生,这种加密算法不过是一个字谜游戏,其中明文中的每个字母被替换为另一个字母。这种加密算法与现代加密算法有着非常紧密的关联(就像热狗与高级烹饪术之间的关系一样)。在本节中我们将鸟瞰计算机时代的密码学,其中的某些内容可能会对读者理解后续章节有所帮助,任何对安全这个话题感兴趣的读者都应该对本章中讲述的基本问题有所了解。但是,对密码学的详细阐述超越了本书的范围。不过,许多优秀的书籍都详细讨论了这一话题,有兴趣的读者可以拿来参考(如Kaufman等人,2002;Pfleeger,2006)。接下来,我们为不太熟悉密码学的读者做一个快速简介。
加密的目的是将明文——也就是原始信息或文件,通过某种手段变为密文,通过这种手段,只有经过授权的人才知道如何将密文恢复为明文。对无关的人来说,密文是一段无法理解的编码。虽然这一领域对初学者来说听上去比较新奇,但是加密和解密算法(函数)往往是公开的。要想确保加密算法不被泄露是徒劳的,否则就会使一些想要保密数据的人对系统的安全性产生错误理解。在专业上,这种策略叫做模糊安全(security by obscurity),而且只有安全领域的爱好者们才使用该策略。奇怪的是,在这些爱好者中也包括了许多跨国公司,但是他们应该是了解更多专业知识的。
在算法中使用的加密参数叫做密钥(key)。如果P代表明文,KE 代表加密密钥,C代表密文,E代表加密算法(即,函数),那么C=E(P,KE )。这就是加密的定义。其含义是把明文P和加密密钥KE 作为参数,通过加密算法E就可以把明文变为密文。荷兰密码学家Kerckhoffs于19世纪提出了Kerckhoffs原则。该原则认为,加密算法本身应该完全公开,而加密的安全性由独立于加密算法之外的密钥决定。现在所有严谨的密码学家都遵循这一原则。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
同样地,当D表示解密算法,KD 表示解密密钥时,P=D(C,KD )。也就是说,要想把密文还原成明文,可以用密文C和解密密钥KD 作为参数,通过解密算法D进行运算。这两种互逆运算间的关系如图9-2所示。

9.2.1 私钥加密技术
为了描述得更清楚些,我们假设在某一个加密算法里每一个字母都由另一个不同的字母替代,如所有的A被Q替代,所有的B被W替代,所有的C被E替代,以下依次类推:
明文: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
密文:Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
这种密钥系统叫做单字母替换,26个字母与整个字母表相匹配。在这个实例中的加密密钥为:QWERTYUIOPASDFGHJKLZXCVBNM。利用这样的密钥,我们可以把明文ATTACK转换为QZZQEA。同时,利用解密密钥可以告诉我们如何把密文恢复为明文。在这个实例中的解密密钥为:KXVMCNOPHQRSZYIJADLEGWBUFT。我们可以看到密文中的A是明文中的K,密文中的B是明文中的X,其他字母依次类推。
从表面上看,这是一个安全的密钥机制,因为密码破译者虽然知道普通密钥机制(字母与字母间的替换),但他并不知道26!≈4×1026 中哪一个是可能的密钥。但是,给定一小段密文,这个密码还是能够被轻易破译掉。破译的基础在于利用了自然语言的统计特性。在英语中,如e是最常用的字母,接下来是t,o,a,n,i等。最常用的双字母组合有th,in,er,re等。利用这类信息,破译该密码是较为容易的。
许多类似的密钥系统都有这样一个特点,那就是给定了加密密钥就能够较为容易地找到解密密钥,反之亦然。这样的系统采用了私钥加密技术或对称密钥加密技术。虽然单字母替换方式没有使用价值,但是如果密钥有足够的长度,对称密钥机制还是相对比较安全的。对严格的安全系统来说,最少需要使用256位密钥,因为它的破译空间为2256 ≈1.2×1077 。短密钥只能够抵挡业余爱好者,对政府部门来说却是不安全的。