HTTP 由于是明文传输,所以安全上存在以下三个风险:
- 窃听风险,比如通信链路上可以获取通信内容。
- 篡改风险,比如通信内容被篡改。
- 冒充风险,比如冒充网站。
HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS
协议,可以很好的解决了上述的风险。
- 信息加密:防止窃听、信息被整个替换。采用混合加密方式。
- 校验机制:防止篡改、但不能防止信息被整个替换。采用摘要算法方式
- 身份证书:防止冒充。采用数字证书方式。
一、摘要算法——数字指纹
主要过程:
- 发送方对内容计算出一个「指纹」,然后同内容一起传输给对方。
- 接受方对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较。
- 如果「指纹」相同,说明内容没有被篡改,否则就可以判断出内容被篡改了。
二、非对称加密——数字签名
- 对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。
- 非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。
HTTPS非对称加密的用途主要在于通过「私钥加密,公钥解密」的方式,来确认消息的身份、也防止消息被整个替换,不过私钥加密内容不是内容本身,而是对内容的哈希值(数字指纹)加密。
三、数字证书——服务器公钥+CA数字签名
CA (数字证书认证机构)使用自己的私钥给服务器公钥加密。
四、对称加密——通信期间
- 在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
- 在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。
五、参考
小林coding