前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TLS握手的简单介绍

TLS握手的简单介绍

原创
作者头像
用户1454152
修改2020-06-17 10:13:30
1.3K0
修改2020-06-17 10:13:30
举报
文章被收录于专栏:前端面试题前端面试题

首先会进行TCP的握手,即一次往返。然后开始TLS的握手。

四个阶段:

  1. client hello
  2. server hello
  3. client finish
  4. server finish

主要做了两件事:确定协议版本和加密套件、生成加密密钥。TLS的握手主要由3个阶段来完成这两件事。

第一件事比较简单,只需要client告诉server自己支持的协议的版本和支持的加密套件,然后server选择并通知client。就可以啦。这两个操作分别在握手的第一第二阶段完成。

第二件事就没那么简单来。协议规定,生成一个加密密钥需要三个随机数,其中前两个随机数分别在第一阶段和第二阶段,由client和server分别生成并告诉对方。第三个随机数的交换要稍微复杂一点。

  • 首先client在第二阶段得到来server的证书,证书中包含来server的公钥。
  • 然后client会使用这个公钥对第三个随机数进行加密,然后将随机数的密文传给server。
  • 最后,server将密文解密,得到了第三个随机数。

这样,client和server两端就都有了这三个随机数,然后它们使用相同的算法生成一个密钥,用这个密钥来对数据进行对称加密,在将密文在网络中传输。

为什么第三个随机数要这么麻烦呢?

首先,client和server都会发送和接收数据,所以两边都要进行加密和解密。加密算法主要就两类:对称和非对称。非对称的性能差,所以就选择性能好的对称算法。而对称算法的密钥需要两端都知道才可以,因此使用非对称加密将密钥从一边发送给另一边。又为了保证随机性,就用三个随机数来生成密钥。

下面具体说一下这四个阶段都做了什么。

第一步,client需要告诉server自己支持的版本号和加密套件,还要生成随机数2,用于计算加密密钥。client把这三个信息告诉来server。

第二步,server在拿到这些信息后,它会选择一个版本号和一个加密套件。然后跟第一步一样,生成随机数2,也是用于计算加密密钥。在加上自己的证书,将这四项数据发回给client。

第三步,client首先验证证书的有效性,若有效从中取出server的公钥。生成随机数3,使用公钥对其进行加密,并发送给server密文,并告诉server之后的消息开始加密了。还会将前面的握手信息的摘要进行加密后传给server,server收到后将其解密,用于验证协商的密钥的一致性。

第四步,

client hello

client告诉server:

  1. 协议版本号
  2. 随机数1
  3. 支持的加密套件

server hello

server根据收到的信息

  1. 确认版本号
  2. 随机数2
  3. 选择加密套件
  4. server证书

client回应

首先验证证书,如果验证通过:

  1. 从证书内取出server公钥
  2. 随机数3,使用公钥加密
  3. client握手结束

server回应

  1. server握手结束

完成握手

两边都有了三个随机数,使用相同的加密算法,生成一个对称密钥。此后两边的应用数据都通过这个密钥进行加密。

对称加密于非对称加密

非对称加密算法最常用的是RSA算法,使用公钥和私钥进行加密和解密。缺点是速度慢,优点是安全性高。

对称加密算法,加密和解密使用同一个密钥。优点是速度快。

代码语言:txt
复制
function 牛顿开根号(a) {
  // n_ = (n+a/n)/2;
  var n = 1, count = 1;
  var n_ = (n + a / n) / 2;
  while (Math.abs(n - n_) > 1e-4) {
    n = n_;
    n_ = (n + a / n) / 2;
    count++;
  }
  console.log(n_, count)
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • client hello
  • server hello
  • client回应
  • server回应
  • 完成握手
  • 对称加密于非对称加密
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档