密码技术与现实社会
(一)密码学家的工具箱
1、对称密码
对称密码是一种用相同的**进行加密和解密的技术,用于确保消息的机密性。在对称密码的算法方面,DES和三重DES曾被广泛使用,但今后将逐步过渡到AES。尽管对称密码能够确保消息的机密性,但需要解决将解***配送给接收者的**配送问题。
2、公钥密码
公钥密码是一种用不同的**进行加密和解密的技术,和对称密码一样用于确保消息的机密性。使用最广泛的一种公钥密码算法是RSA,除此之外还有ElGamal和Rabin等算法,以及与其相关的 Diffie-Hellman**交换技术。和对称密码相比,公钥密码的速度非常慢,因此一般都会和对称密码一起组成混合密码系统来使用。公钥密码能够解决对称密码中的**交换问题,但存在通过中间人攻击被伪装的风险,因此需要对带有数字签名的公钥进行认证。
3、单向散列函数
单向散列函数是一种将长消息转换为短散列值的技术,用于确保消息的完整性。在单向散列函数的算法方面,128比特的MD5和160比特的SHA-1曾被广泛使用,但今后将逐步使用能够产生长度更长的散列值的算法。单向散列函数可以单独使用,也可以作为消息认证码、数字签名以及伪随机数生成器等技术的组成元素来使用。
4、消息认证码
消息认证码是一种能够识别通信对象发送的消息是否被篡改的认证技术,用于验证消息的完整性,以及对消息进行认证。消息认证码的算法中,最常用的是利用单向散列函数的HMAC。HMAC的构成不依赖于某一种具体的单向散列函数算法。消息认证码能够对通信对象进行认证,但无法对第三方进行认证。此外,它也无法防止否认。
5、数字签名
数字签名是一种能够对第三方进行消息认证,并能够防止通信对象做出否认的认证技术数字签名的算法包括RSA、ElGamal和 DSA。公钥基础设施(PKI)中使用的证书,就是对公钥加上认证机构的数字签名所构成的。要验证公钥的数字签名,需要通过某种途径获取认证机构自身的合法公钥。
6、伪随机数生成器
伪随机数生成器是一种能够生成具备不可预测性的比特序列的技术,由密码和单向散列函数等技术构成。伪随机数生成器用于生成**和初始化向量等。
(二)密码技术的框架化
框架的特点就是能够对其中作为组成元素的技术进行替换。一种元素技术即便再完美,总有一天也会显现出弱点。当出现这样的情况时,只要形成了整体框架,就可以对其中存在弱点的技术进行替换,就像更换损坏的机器零件一样。
例如,消息认证码算法HMAC的设计就允许对单向散列函数的算法进行替换。当发现目前使用的单向散列函数存在弱点时,我们可以用其他的单向散列函数算法重新构建HMAC。
此外,在PGP中,对称密码、公钥密码、单向散列函数等都是可以替换的。在SSL/TLS中,客户端和服务器可以通过握手协议进行通信,并当场决定所使用的密码套件。
Feistel网络也具有和框架相似的性质。在Fiestel网络的整体设计中,无论轮函数具体进行怎样的计算,都可以保证解密的正确性。
使用框架能够提高密码技术系统的重用性,也能够提高系统的强度。这可以说是人类应对未来技术变革的智慧。即便目前所使用的密码算法被**,也没有必要将现有的系统全部废弃,只要框架本身的设计合理,就可以通过替换更安全的密码算法来解决问题。
通过将单独的密码技术像零件一样组合起来,并根据需要进行替换,能够实现更长期的、更高的安全性。
(三)密码技术与压缩技术
在密码学家的工具箱中,所有的技术都有一个共同点,那就是它们都可以看成是一种“压缩技术”。无论是对称密码还是公钥密码,密码的作用都是确保机密性。由于确保较长的明文整体的机密性很困难,因此我们用密码将明文转换成密文。这样一来,我们就不必保护明文本身了。相对地,我们则需要保护加密时所使用的**。
通过保护较短的**来保护较长的明文,这样的做法可以称为机密性的压缩。
单向散列函数是用于确认完整性的。我们不必检查较长的明文的完整性,只要检查散列值就能够确认完整性了。通过检查较短的散列值来确认较长的明文的完整性,这样的做法可以称为完整性的压缩。
消息认证码和数字签名都是用于认证的技术,但我们并不是直接对较长的消息本身进行认证,而是通过将较长的消息与**结合起来,生成较短的比特序列(认证符号),再通过认证符号进行认证。在消息认证码中,MAC值就是认证符号;而在数字签名中,签名就是认证符号。通过较短的认证符号来对较长的消息进行认证,这样的做法可以称为认证的压缩。
在伪随机数生成器中,所生成数列的不可预测性是非常重要的。要大量生成具备不可预测性的随机数列非常困难,于是我们通过将种子输入伪随机数生成器,生成具备不可预测性的伪随机数列。也就是说,为了对伪随机数列赋予不可预测性,我们使用了随机数种子,这可以称为不可预测性的压缩。反过来说,伪随机数生成器是将种子所具备的不可预测性进行了扩张。
(四)总结
1、理论是完美的,现实是残酷的。所有的加密在现实中都有可能被盗用和**,即使对于生物识别认证,对身体特征元素进行认证,这也需要在某些时候将生物信息转换为比特序列。而实际的认证则是通过转换后的比特序列来完成的。而对于这些比特序列而言就存在被窃取和盗用的可能性。
2、防御必须天衣无缝,攻击只需突破一点。要攻击一个系统,只要找到一种有效的攻击方法,而且只需利用防御方一瞬间的破绽就可以完成了。通过这一事实,大家应该可以想象出相对于防御方,攻击方具有何等巨大的优势。
在拥有坚固的密码和认证机制的系统中,即便1000个用户里有999个人的安全意识很高,只要剩下的1个人没有做好安全管理,那个人就会成为攻击者入侵系统的垫脚石。攻击者只要突破系统中最薄弱的一点就可以了。