HTTPS协议
- HTTP协议传输过程中,数据都是未加密的明文,非常不安全
- 为了保证这些隐私数据能加密传输,SSL/TLS协议应运而生,用于对HTTP协议传输的数据进行加密
确保传输的过程中只有浏览器和服务端知道加密解密的密码
- 使用HTTPS协议在传输数据之前,需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方传输数据的时候使用的密码、
- TLS/SSL协议不仅仅是一套加密传输的协议,TLS/SSL中使用了非对称加密,对称加密已经HASH算法
对称加密和非对称加密
对称加密:加密和解密使用同一个密钥
非对称加密:一个公开发布的公钥用于加密,另一个由用户自己秘密保存的私钥用于解密。公钥机制灵活,但加密和解密速度却比对称密钥慢得多。
过程描述
(1)客户端发在通过TCP和服务器建立连接之后(443端口),发出一个请求证书的消息给服务器,在该请求里包含自己可实现的算法列表和其他需要的消息
(2)证书返回: 服务器端在收到消息后回应客户端并返回证书,在证书里包含了服务器信息、域名、申请证书的公司,公钥、数据加密算法等
(3) 证书验证: 客户端在收到证书后,判断证书签发机构是否正确,并使用该签发机构的公钥确认签名是否有效,客户端还会确保在证书中列出的域名就是它正在连接的域名。如果客户端确认证书有效,则生成对称加密密钥,并使用公钥将对称密钥加密。
(4) 密钥交换: 客户端将加密后的对称密钥发送给服务器,服务器在接收到对称密钥后使用私钥解密。
(5) 数据传输: 经过上述步骤, 客户端和服务器就完成了密钥对的交换,在之后的数据传输过程中,客户端和服务端就可以基于对称加密(加密和解密使用相同密钥的加密算法) 对数据加密后在网络上传输,保证了网络数据传输的安全性。
- 浏览器与网站互相发送加密的握手消息并验证,目的就是为了保证双方都获得了一致的密码,然后利用它来完成后续数据的加解密
- 其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完成性
- 由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密