使用非对称加密密钥对对称加密密钥进行传输。首先服务器使用非对称加密算法生成公私钥a、b,将公钥a传输给浏览器(客户端),客户端会使用对称加密算法生成一个密钥c,客户端使用a加密c生成d,然后将加密后的信息d传输给服务器,服务器使用私钥b对传输来的d进行解密,得到对称加密的公钥,双方就可以开始通信了。
但是此过程不是绝对安全的。因为传输的公钥b是明文,可以在传输的过程中被窃取,同时中间人攻击得到b之后可以冒充浏览器(客户端)与服务器进行通信,同时冒充服务器与客户端进行通信。也就是还需要对通信双方的身份进行验证。
通过CA证书进行通信双方身份的验证。
服务器首先花钱从CA证书认证机构购买一个数字证书,证书通常包含服务器的公钥证书文件。然后服务器将公钥证书发送给客户端,客户端通过数字签名验证收到的证书是否可信。如果可信,就随机生成一个对称加密密钥,然后使用收到的公钥对密钥进行加密,然后将加密信息发送到服务器,服务器通过私钥进行解密,得到对称加密密钥,接下来就可以进行通信。
摘要算法:
使用单项hash算法将明文摘要成一段固定长度(128位)的密文。可以防止数据遭到篡改,保证数据完整性。
数字签名:
使用非对称密钥加解密和数字摘要两项技术,服务器将原文摘要使用私钥进行加密,然后与原文一起传送给接收者,接收者使用公钥对摘要信息进行解密得到摘要信息,然后通过hash函数对原文进行数字摘要得到另外一段摘要信息,比较这两个摘要信息,就可以验证信息完整性。