一、产生的原因
由于HTTP有以下安全问题
- 使用明文进行通信,内容可能会被窃听
- 不验证通行方的身份,通行方的身份可能遭遇伪装
- 无法证明报文的完整性,报文有可能遭到篡改
二、特征
https协议并不是新的协议,而是让HTTP先和SSL通信,再由SSL和TCP通信。
通过使用SSL,https具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)的安全机制。
1. 加密方式
首先介绍常见的两种加密方式
(1)对称密钥加密
对称密钥加密,加密和解密使用同一密钥
- 优点:运算速度快
- 缺点:无法安全地将密钥传输给通信方
(2)非对称密钥加密
加密和解密使用不同的密钥
公开密钥所有人都可以获得,通过发送方获得接受方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密
非对称密钥除了用来加密,还可以进行签名,因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名
通信接收方使用公开密钥进行解密,就能判断这个签名是否正确
- 优点:可以更安全的将公开密钥传输给通信发送方
- 缺点:运算速度较慢
https 通过混合加密机制,使用非对称密钥加密用于传输来保证安全性,之后使用对称密钥加密进行通信来保证效率
2. 认证
通过使用证书来对通信方进行认证
数字证书认证机构是客户端与服务器双方都可信赖的第三方机构
进行https协议时, 服务器会把证书发送给客户端。客户端取得其中的公钥之后,先使用数字签名进行验证,如果验证通过,就可以通信了
3. 完整性保护
SSL 提供报文摘要功能来进行完整性保护
HTTP也提供了MD5报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算MD5的值,通信接收方式无法意识到发生了篡改
HTTPs的报文摘要功能之所以安全,是因为结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难计算报文摘要,因为无法轻易获取明文
三、HTTPs的缺点
- 因为需要进行加密解密等过程,因此速度会更慢
- 证书授权需要一定的费用