HTTPS 加密

由上图可见 HTTPS 比 HTTP 多做了一层 TSL or SSL 的安全层。

TLS 由记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术。

对了,最开始先提出的是 SSL,自 1996 年后,SSL v3 改名叫 TLS 1.0,目前运用最广泛的是 TLS 1.2。

TLS 握手

  • 指定将使用的TLS版本(TLS 1.0、1.2、1.3等)
  • 确定将使用哪些加密套件。
  • 通过服务器的公钥和SSL证书颁发机构的数字签名来验证服务器的身份
  • 握手完成后,生成会话密钥以使用对称加密

TLS 中有两种主要的握手类型:一种基于 RSA,一种基于 Diffie-Hellman(DH)。这两种握手类型的主要区别在于主秘钥交换和认证上。而 RSA 是主流,就讲 RSA 握手。

流程图如下,图出自HTTPS篇之SSL握手过程详解

  • 客户端hello:客户端通过向服务器发送“问候”消息来发起握手。该消息将包括客户端支持的TLS版本,支持的加密套件以及称为“客户端随机”的随机字节字符串。
  • 服务器hello:为回复客户端hello消息,服务器发送一条消息,其中包含服务器的SSL证书,服务器选择的加密套件和“服务器随机数”,即服务器生成的另一个随机字节串。
  • 客户端发送公钥加密的预主密钥。
  • 服务器用自己的私钥解密加密的预主密钥。
  • 客户端finished:客户端发送“完成”消息,该消息已用会话密钥加密。
  • 服务器finished:服务器发送一条用会话密钥加密的“完成”消息。

握手完成,后续通过主密钥加解密。

密码套件

密码套件(cipher suite)是一组选定的加密基元和其他参数,它可以精确定义如何实现安全。套件大致由以下这些属性定义。

  • 身份验证方法
  • 密钥交换方法
  • 加密算法
  • 加密密钥大小
  • 密码模式(可应用时)
  • MAC算法(可应用时)
  • PRF(只有TLS1.2一定使用,其他版本取决于各自协议)
  • 用于Finished消息的散列函数(TLS1.2)
  • verify_data结构的长度(TLS1.2)

对称加密有AES 和 CHACHA20, 分组模式以前有 CBC、CTR,但 TLS1.3 中只剩下 GCM。非对称加密 RSA、ECDHE,哈希摘要算法(Sha256, Sha384,md5)

参考

HTTPS篇之SSL握手过程详解

posted @ 2020-04-21 10:06  Ever-Lose  阅读(267)  评论(0编辑  收藏  举报