http与https
1.HTTP
(HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范(传输的是明文数据)
2.HTTPS = HTTP + SSL/TLS
流程图如下所示:
SSL
的实现这些功能主要依赖于三种手段:
- 对称加密:采用协商的密钥对数据加密
- 非对称加密:实现身份认证和密钥协商
- 摘要算法:验证信息的完整性
- 数字签名:身份验证
混合加密
在HTTPS
通信过程中,采用的是对称加密+非对称加密,也就是混合加密
1.服务端给客户端发送公钥
2.客户端生成“对称密钥”并用公钥加密
3.客户端发送加密后的“对称密钥,服务端用私钥解密,得到解密的“对称密钥”
摘要算法
网络传输过程中,数据有可能被篡改,并且黑客可以伪造身份发布公钥,如果你获取到假的公钥,那么混合加密也并无多大用处,你的数据扔被黑客解决(得到“对称密钥”)
因此,在上述加密的基础上仍需加上完整性,实现这一功能则是摘要算法、
它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”
摘要算法保证了“数字摘要”和原文是完全等价的。
所以,我们只要在原文后附上它的摘要,就能够保证数据的完整性
数字签名
数字签名能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名
原理其实很简单,就是用私钥加密,公钥解密
签名和公钥一样完全公开,任何人都可以获取。但这个签名只有用私钥对应的公钥才能解开,拿到摘要后,再比对原文验证完整性,就可以像签署文件一样证明消息确实是你发的