(0)介绍
在网络中,认证、加密、验证这3种技术手段是保证通信双方安全交互的基础。下面我们先介绍一下对称密钥机制、公钥机制(也称非对称密钥机制)和哈希算法,它们是实现认证、加密和验证的理论基础。
对称密钥机制指的是通信双方使用相同的算法和密钥去加密和解密数据,在加密和解密过程中用到的密钥是双方都知道的,即双方的“共享密钥”。而公钥机制使用了两个 不同的密钥:一个可对外界公开,称为“公钥”;一个只有所有者知道,称为“私钥”。用公钥加密的信息是能用对应的私钥解密,反之,用私钥加密的信息也只能用相应的公钥解密,即用其中任一个密钥加密的信息只能用另一个密钥解密。
目前,常用的基于对称密钥机制的算法有AES算法等,基于公钥机制的算法有RSA、DH算法等。其中,RSA可实现数据的加密和解密、真实性验证和数据完整性验证;而DH算法是一种密钥交换算法,由通信双方通过一系列的数据交换,最终计算出密钥。
另外,哈希计算是实现数据完整性验证的一个重要环节。哈希计算可以将任意长度的字符串处理得到固定长度的字符串,并且该计算是单向计算,无法逆推。最重要的是,原字符串任意字符的变化都会导致不同的计算结果。哈希计算后得到的信息通常被称为原字符串的摘要信息。通过对比摘要信息,就可以判断数据是否被修改。常见的哈希算法有SHAi系列等。
回顾完对称密钥机制、公钥机制和哈希计算后,下面介绍一下认证、加密和验证的基本原理。
(1)认证
认证是指通信双方验证对方身份信息的过程,这也是网络安全领域中广泛使用的安全保证措施。
常用的身份认证方式有账号/密码认证,证书认证等,其中证书认证方式使用得非常普遍。证书认证是一种安全可信的载体,也被称为数字证书,相当于网络世界中的“身份证”。证书将持有者的身份信息和公钥相关联,保证公钥确实属于证书持有者,这样的话,通过验证证书就可以确认持有者的身份。常见的证书结构如图所示:
证书认证的原理基于PKI体系架构,证书由权威的、公正的、可信任的CA颁发,通信双方使用证书验证身份时,除了通信双方各自的证书外,还会用到CA自身的证书。
如下图所示,以A验证B为例。
- A首先需要获取为B颁发证书的CA的证书,使用CA证书中的公钥解密B证书中的签名,得到摘要信息
- A使用B证书中的哈希算法对B证书进行哈希计算,也得到一个摘要信息
- A将两个摘要信息进行对比,如果两者一致,就说明B的证书确认是由CA颁发的(能用CA的公钥解密说明该CA确实持有私钥),且没有被篡改过,此时该证书没有问题,B的身份得到认证。
(2)加密
加密是一种将数据按照某种算法从明文转换成密文的过程,用于保证数据的机密性。解密是加密的逆过程。在对称密钥机制中,通信双方使用相同的密钥加密和解密数据,加解密过程如下图所示:
在公钥机制中,通信双方使用不同的密钥加解密数据,加解密过程如下图所示:
与对称密钥机制相比,公钥机制加密数据的计算过程非常复杂,开销大且速度较慢,所以不适用与大量数据的加密。在实际使用中,通信双方通常会使用基于公钥机制的算法(如DH算法)协商密钥,以保证交换密钥材料的安全性。
待双方计算出密钥后,最终使用基于对称密钥机制的算法(如AES算法)来加密实际的数据,对称密钥机制和公钥机制各自分工、配置使用,兼顾了效率和安全性。
(3)验证
验证是指通信双方确认数据在传输过程中是否遭到篡改,即验证数据完整性的过程。完整性验证是通过使用私钥加密、公钥解密的方式来实现的。具体来说,发送方先使用哈希算法对原始数据进行处理,得到摘要信息(也被称为数字指纹),然后使用自己的私钥将摘要信息进行加密,形成数字签名,最后将数据和数字签名一并发出。
接收方收到数据和数字签名后,使用相同的哈希算法对数据进行哈希计算,得到摘要信息;然后使用发送的公钥对签名进行解密,得到另一个摘要信息。接收方对比两个摘要信息,如果一致,就说明数据确实来自发送方,且没有被篡改,这样就实现了数据的完整性验证。
数字签名的加解密过程如下图所示:
甲和乙事先获得对方的公钥,然后按以下步骤完成数字签名的加解密:
- 甲使用乙的公钥对明文进行加密,生成密文信息。
- 甲使用哈希算法对明文进行哈希计算,生成数字指纹。
- 甲使用自己的私钥对数字指纹进行加密,生成数字签名。
- 甲将密文信息和数字签名一起发给乙。
- 乙使用甲的公钥对数字签名进行解密,得到数字指纹。
- 乙接收到甲的加密信息后,使用自己的私钥对密文进行解密,得到最初的明文。
- 乙使用哈希算法对明文进行哈希计算,生成数字指纹。
- 乙将生成的数字指纹与得到的数字指纹进行比较,如果一致,乙接收明文;如果不一致,乙丢弃明文。