重新认识HTTPS

158 阅读2分钟

定义

在http之下增加的一个安全层,用于保障HTTP的加密传输。

和http的区别

image.png

本质

在客服端和服务器之间用非对称加密协商出一套对称密钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输

TLS

用于两个应用程序之间提供保密性和数据完整性。

它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面

TLS协议提供的服务主要有

1、认证用户和服务器,确保数据发送到正确的客户机和服务器;
2、加密数据以防止数据中途被窃取;
3、维护数据的完整性,确保数据在传输过程中不被改变。

Https连接

  • 客服端请求建立TLS连接
  • 服务器发回证书
  • 客服端验证服务器证书
  • 客服端信任服务器后,和服务器协商对称密钥(使用非对称加密的方法)
  • 使用对称密钥开始通信

image.png

PreMaster Secret是在客户端使用RSA或者Diffie-Hellman等加密算法生成的。它将用来跟服务端和客户端在Hello阶段产生的随机数结合在一起生成 Master Secret。

在客户端使用服务端的公钥对PreMaster Secret进行加密之后传送给服务端,服务端将使用私钥进行解密得到PreMaster secret。也就是说服务端和客户端都有一份相同的PreMaster secret和随机数。

客服端和服务器在得到PreMaster Secret之后,会用客服端的随机数+服务器的随机数+PreMaster Secret 生成一个 Master Secret,再通过Master Secret生成 客户端加密密钥,服务端加密密码,客户端MAC secret,服务端MAC secret

秘钥名称秘钥作用
client_write_MAC_key客户端发送数据使用的摘要MAC算法
server_write_MAC_key服务端发送数据使用摘要MAC算法
client_write_key客户端数据加密,服务端解密
server_write_key服务端加密,客户端解密