TLS握手流程

概述
TLS 全称为 Transport Layer Security(传输层安全),其前身是 SSL,全称为 Secure Sockets Layer(安全套接字层),它的作用是为上层的应用协议提供安全的通信,比如众所周知的 HTTP + TLS = HTTPS。

SSL 2.0 是该协议的第一个公开发布的版本,由于其存在的安全问题很快被升级到了 SSL 3.0,并且在 1999 年,IETF 小组将该协议标准化,因此 TLS 1.0 诞生了。

本文将介绍 TLS 1.0 到 TLS 1.3 的握手流程,你只需要一点点的 SSL\TLS 或 HTTPS 的前置知识与了解过简单的密码学上的概念,如对称加密、非对称加密、哈希算法等名词。

  1. Client 向 Server 请求建立连接。
  2. Server 将自己的证书发送给 Client。
  3. Client 验证证书,然后使用证书中的公钥加密接下来要用来通信的密钥,将加密结果发送给 Server。
  4. Server 收到后进行响应,且将用该密钥来对需要发送或接收的上层数据进行加解密。
  5. 自此 TLS 握手完成,接下来开始使用密钥进行通信。
    以下为简单的流程图:
    在这里插入图片描述
    我们使用的是 RSA 算法来进行密钥的交换。

RSA 应该是最多人了解的非对称加密算法,其在这里用于密钥协商(交换)和证书验证,这分别用到了它的两个特性:

公钥加密,对应私钥才能解密
私钥加密,对应公钥可以解密
证书机制用到了第二个机制。

证书实际上就是一段符合指定标准的文本,其大致上记录了:

证书所属的域名
域名所有者的公钥
有效日期
使用的加密算法
CA(证书颁发者)会对这些内容进行使用哈希函数导出一个值(简单来讲就是用 md5 类似的算法计算一下),该值将被 CA 的私钥进行加密(这样的操作也叫做"签名"),同时签名也将被记录到证书上。
而"证书验证"这个行为,当然指的就是使用证书颁发者公布的公钥,来对被加密的值进行解密,然后对证书使用同样的哈希函数进行计算,并使用计算出的值与解密出的值进行对比,如果相等则说明没有被篡改过,可以放心的使用证书上的公钥进行通信。

而在上文的握手过程中,由于通信密钥在发送给 Server 时被公钥所加密了,而用来解密的私钥自始自终都只被证书申请者持有,所以即使有人截取了所有通信的信息,都不能得到通信的密钥(当然这是在假定密钥永远不会泄露的情况下)。

这样,我们就建立了一个安全的"信道"。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值