首页 > 其他分享 >HTTPS ECDHE 握手解析(计算机网络)

HTTPS ECDHE 握手解析(计算机网络)

时间:2024-04-01 21:33:40浏览次数:13  
标签:TLS 椭圆 握手 曲线 计算机网络 HTTPS ECDHE 服务端 客户端

使用了 ECDHE,在 TLS 第四次握手前,客户端就已经发送了加密的 HTTP 数据,而对于 RSA 握手过程,必须要完成 TLS 四次握手,才能传输应用数据。

所以,ECDHE 相比 RSA 握手过程省去了一个消息往返的时间,有点「抢跑」的意思,它被称为是「TLS False Start」,跟「TCP Fast Open」有点像,都是在还没连接完全建立前,就发送了应用数据来提高传输效率。

TLS 第一次握手

客户端首先会发一个「Client Hello」消息,消息里面有客户端使用的 TLS 版本号、支持的密码套件列表,以及生成的随机数(Client Random

TLS 第二次握手

服务端收到客户端的「打招呼」,会返回「Server Hello」消息,消息面有服务器确认的 TLS 版本号,也给出了一个随机数(Server Random,然后从客户端的密码套件列表选择了一个合适的密码套件。

接着,服务端为了证明自己的身份,发送「Certificate」消息,会把证书也发给客户端。

下面这一步就和 RSA 握手过程有很大的区别了,因为服务端选择了 ECDHE 密钥协商算法,所以会在发送完证书后,会发送「Server Key Exchange」消息,RSA则没有发送该消息。

这个过程服务器做了三件事:

  • 选择了一种椭圆曲线,选好了椭圆曲线相当于椭圆曲线基点 G 也定好了,这些都会公开给客户端;
  • 生成随机数作为服务端椭圆曲线的私钥,保留到本地;
  • 根据基点 G 和私钥计算出服务端的椭圆曲线公钥,这个会公开给客户端。

为了保证这个椭圆曲线的公钥不被第三方篡改,服务端会用 RSA 签名算法给服务端的椭圆曲线公钥做个签名。

随后,就是「Server Hello Done」消息,服务端跟客户端表明:“打招呼完毕”。

至此,TLS 两次握手就已经完成了,目前客户端和服务端通过明文共享了这几个信息:Client Random、Server Random 、使用的椭圆曲线、椭圆曲线基点 G、服务端椭圆曲线的公钥,这几个信息是后续生成会话密钥的材料。

TLS 第三次握手

客户端收到了服务端的证书后,会校验证书是否合法,如果证书合法,那么服务端到身份就是没问题的。校验证书的过程会走证书链逐级验证,确认证书的真实性,再用证书的公钥验证签名,这样就能确认服务端的身份了,确认无误后,就可以继续往下走。

客户端会生成一个随机数作为客户端椭圆曲线的私钥,然后再根据服务端前面给的信息,生成客户端的椭圆曲线公钥,然后用「Client Key Exchange」消息发给服务端。

至此,双方都有对方的椭圆曲线公钥、自己的椭圆曲线私钥、椭圆曲线基点 G。于是,双方都就计算出点(x,y),其中 x 坐标值双方都是一样的。

最终的会话密钥,就是用「客户端随机数 + 服务端随机数 + x(ECDHE 算法算出的共享密钥) 」三个材料生成的

之所以这么麻烦,是因为 TLS 设计者不信任客户端或服务器「伪随机数」的可靠性,为了保证真正的完全随机,把三个不可靠的随机数混合起来,那么「随机」的程度就非常高了,以增加安全性。

算好会话密钥后,客户端会发一个「Change Cipher Spec」消息,告诉服务端后续改用对称算法加密通信。

接着,客户端会发「Encrypted Handshake Message」消息,把之前发送的数据做一个摘要,再用对称密钥加密一下,让服务端做个验证,验证下本次生成的对称密钥是否可以正常使用。

TLS 第四次握手

最后,服务端也会有一个同样的操作,发「Change Cipher Spec」和「Encrypted Handshake Message」消息,如果双方都验证加密和解密没问题,那么握手正式完成。于是,就可以正常收发加密的 HTTP 请求和响应了。

RSA 和 ECDHE 握手过程的区别:

  • RSA 密钥协商算法「不支持」前向保密,ECDHE 密钥协商算法「支持」前向保密;
  • 使用了 RSA 密钥协商算法,TLS 完成四次握手后,才能进行应用数据传输,而对于 ECDHE 算法,客户端可以不用等服务端的最后一次 TLS 握手,就可以提前发出加密的 HTTP 数据,节省了一个消息的往返时间;
  • 使用 ECDHE, 在 TLS 第 2 次握手中,会出现服务器端发出的「Server Key Exchange」消息,而 RSA 握手过程没有该消息;

标签:TLS,椭圆,握手,曲线,计算机网络,HTTPS,ECDHE,服务端,客户端
From: https://blog.csdn.net/qq_61504864/article/details/137240006

相关文章

  • 计算机网络 实验指导 实验八
    三层交换机的访问控制1.实验拓扑图:名称接口IP地址网关SwitchAF0/1192.168.1.1/24F0/2172.1.1.1/24Switch BF0/1192.168.1.2/24F0/2172.2.2.1/24PC1172.1.1.2/24172.1.1.1PC2172.1.1.3/24172.1.1.1PC3172.2.2.2/24172.2.2.1PC4172.2.2.3/24172.2.2.12.实验目的(1)ACL(标准......
  • HttpServlet详解
    Servlet与HttpServlet详解一、Servlet概述Servlet(ServerApplet)是JavaServletAPI中定义的一个接口,用于扩展Web服务器的功能。Servlet是一个运行在Web服务器或应用服务器上的Java程序,它可以动态地生成Web页面或其他类型的响应。二、HttpServlet类HttpServlet类是JavaServlet......
  • https安全性 带给im 消息加密的启发
    大家好,我是蓝胖子,在之前#MYSQL是如何保证binlog和redolog同时提交的?这篇文章里,我们可以从mysql的设计中学会如何让两个服务的调用逻辑达到最终一致性,这也是分布式事务实现方式之一。今天来看看我们能够从httpsd设计中得到哪些启发可以用于业务系统开发中。https原理分析首先......
  • 如何部署HTTPS站点
    互联网协议HTTP与HTTPS的主要区别是什么?HTTPS相对于HTTP来说,使用了加密机制(TLS或SSL),即便数据在传输过程中被恶意截获,但依然无法获取到具体的数据内容,保证了安全性。HTTPS采用(CA)证书认证,用户在访问某个网站时,会进行证书的合法性,防止用户访问到假冒的网站,从而保护用户安全。......
  • HTTPS工作原理
    工作大致过程1、客户端发起HTTPS请求浏览器里面输入一个HTTPS网址,然后连接到服务端的443端口上。注意这个过程中客户端会发送一个密文族给服务端,密文族是浏览器所支持的加密算法的清单。 2、服务端配置采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组......
  • 详解SSL证书系列(8)了解HTTPS及和HTTP的区别
    上一篇我们介绍了HTTP协议的三大缺点,那么怎么避免和解决HTTP的缺点呢,是时候请出我们的HTTPS了,那HTTPS和HTTP有什么区别呢? HTTP加上加密处理和认证以及完整性保护后即是HTTPS如果在HTTP协议通信过程中使用未经加密的明文,比如在Web页面中输入信用卡号,如果这条通信线路遭到窃听,......
  • http内置库(1)-HTTPStatus
    http内置库文档:https://docs.python.org/zh-cn/3.10/library/http.htmlhttp是一个包,它收集了多个用于处理超文本传输协议的模块:http.client是一个底层的HTTP协议客户端;对于高层级的URL访问请使用urllib.requesthttp.server包含基于socketserver的基本HTTP服......
  • kali中解决docker报错:Error response from daemon: Get “https://registry-1.docker.
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、问题二、解决方法1.添加DNS2.写入DNS3.重启网络服务三、测试docker是否能正常拉取镜像前言Kali在使用docker下载镜像报错,如下部分报错所示。故对docker报错进行处理方案的记录。E......
  • Fiddler系列课程笔记(三): HTTPS及安卓&iOS设备APP抓包
    Fiddler系列课程笔记(三):HTTPS及安卓&iOS设备APP抓包1.HTTPS抓包1.1什么是HTTPS?HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),HTTPS协议是由HTTP加上TLS/SSL协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技......
  • 【计算机网络】高级IO模型
    高级IO模型一、理解IO二、认识五种高级IO模型1.阻塞IO2.非阻塞IO3.信号驱动IO4.IO多路转接5.异步IO三、高级IO重要概念1.阻塞和非阻塞2.同步通信和异步通信四、非阻塞IOfcntl一、理解IO当我们调用系统接口write、read的时候,本质是把数据从......