tls协议

news/2024/12/5 9:09:37/

tls

  • 前言
  • 一、TLS 协议的组成
  • 二、ECDHE
    • 1.连接过程
  • 三、TLS1.3
    • 1.过程

前言

tls是ssl协议的标准化,处于应用层(5层架构)和会话层(OSI),有着rsa方式和ecdhe两种,


一、TLS 协议的组成

请添加图片描述
握手协议:负责在客户端和服务器之间协商决定密码算法和共享密钥,包括基于证书的认证操作;
密码规格变更协议:负责向通信对象传达变更密码方式的信号,在TLS 1.3版本中不再需要该协议;
警告协议:负责在发生错误时将错误传达给对方;
记录协议:将TLS 上面承载的应用数据传达给通信对象的协议。

二、ECDHE

DH有着static DH 算法和DHE 算法。static DH 算法里服务端的密匙一般是固定不变的,有可能被用时间暴力破解出来,所以不具有前向安全性。而DHE采用ephemera临时生成私钥,保证了前向安全。ECDHE就是基于DHE算法,利用椭圆性质,更少的计算量

1.连接过程

在这里插入图片描述
第一次握手

  1. 客户端发送Client Hello

第二次握手

  1. 服务端发送 Server Hello
  2. 服务端发送Certificate,并选择ECDHE算法发送特有的第3点
  3. 服务端发送Server Key Exchange,这里面包含椭圆曲线,这代表了椭圆的曲线基点G,给客户端;以及随机数作为椭圆曲线的私匙,不公布;根据基点 G 和私钥计算出服务端的椭圆曲线公钥,这个会公布给客户端。
  4. 服务端发送Server Hello Done 代表结束

密码套件 如「 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384」代表含义

密钥协商算法使用 ECDHE;
签名算法使用 RSA;
握手后的通信使用 AES 对称算法,密钥长度 256 位,分组模式是 GCM;
摘要算法使用 SHA384;

第三次握手

  1. 客户端检验证书
  2. 客户端生成一个随机数作为椭圆的私钥,然后再根据服务端前面给的信息,生成客户端的椭圆曲线公钥,然后用「Client Key Exchange」消息发给服务端。
  3. 客户端利用Client Random + Server Random + Pre-Master(ECDHE计算出来) 计算出 Master-Secret,然受发送Change Cipher Spec,改用算法
  4. 客户端发送Encrypted Handshake Message,对前面的信息做个摘要,验证对称钥匙是否可用

ECDHE计算过程与模幂运算类似,采用素数域下的椭圆曲线的标量乘法来实现。
(1):Client,计算Pclient = Client Random* G(基点)。将PClient发送至服务器。
(2): Server,计算PServer= Server Random * G(基点)。将PServer发送至客户端。
(3):客户端计算SClient = Client Random* PServer;服务器计算SServer = Server Random *Pclient
(4):算法保证了SClient = SServer = S,提取其中的S的Pre-Master

第四次握手

  1. 服务端发送Change Cipher Spec
  2. 服务端发送Encrypted Handshake Message

客户端可以在第三次握手后抢跑发送数据

三、TLS1.3

取消了RSA,采用DHE,不需要客户端先拿到服务器的公钥证书,不使用服务器公钥来加密要发送的预备共享密钥,只需要1-RTT甚至0-RTT,会话恢复也达到了0-RTT。 一个有趣的网站图解tls1.3

1.过程

   Client                                                           Server
Key  ^ ClientHello
Exch | + key_share*| + signature_algorithms*| + psk_key_exchange_modes*v + pre_shared_key*         -------->ServerHello  ^ Key+ key_share*  | Exch+ pre_shared_key*  v{EncryptedExtensions}  ^  Server{CertificateRequest*}  v  Params{Certificate*}  ^{CertificateVerify*}  | Auth{Finished}  v<--------  [Application Data*]^ {Certificate*}Auth | {CertificateVerify*}v {Finished}               -------->[Application Data]       <------->          [Application Data]
//  + 代表extention项       
//  * 代表可选
// {} 用hashshake_key加密
// [] 用application_key加密

在这里插入图片描述
Client 提前将所有这些椭圆参数计算成公钥发给server

借鉴tls1.2
tls1.3


http://www.ppmy.cn/news/243342.html

相关文章

62.合理使用预训练网络-1

62.1 什么是微调(fine-tune) 微调(fine-tune),顾名思义指稍微调整参数即可得到优秀的性能,是迁移学习的一种实现方式。 微调和从头训练(train from scratch)的本质区别在于模型参数的初始化,train from scratch通常指对网络各类参数进行随机初始化(当然随机初始化也存…

sms开发文档

sms系统设计参考毕业设计-----------学生选课管理系统的设计 一、使用axios 来实现网页中ajax请求 首先说到axios&#xff0c;是一个类库&#xff0c;他的底层基于ajax库&#xff0c;通常用于ajax请求 ajax又是什么 ajax是一种创建快速动态网页的技术&#xff0c; 传统的页…

幽默笑话-傻冒-猿粪啊

傻冒 一农夫在数高楼&#xff0c;一骗子过来&#xff1a;数几层了&#xff1f;罚款&#xff0c;每层&#xff15;元。 农夫&#xff1a;&#xff11;&#xff15;层。交了钱&#xff0c;旁观者说&#xff1a;傻冒。 农夫&#xff1a;他才傻呢&#xff0c;其实我数了18层。 猿粪…

程序员之间的幽默段子,句句都是经典

IT人表示屁股上还得纹一个</body> , 要不中间来个hello world!真正的程序员喜欢兼卖爆米花&#xff0c;他们利用CPU散发出的热量做爆米花&#xff0c;可以根据米花 爆裂的速度听出正在运行什么程序。 十年生死两茫茫&#xff0c;写程序&#xff0c;到天亮。 千行代码&…

幽默小笑话合集

假货的笑话 顾客&#xff1a;“你们卖的酒怎么没有酒味啊&#xff1f;” 服务员接过一闻&#xff1a;“啊&#xff0c;真对不起&#xff0c;忘记给您掺酒了。” ___ 并不是夸张 情景&#xff1a;一乘客在公汽上买票。 对话&#xff1a; 售票员&#xff1a;哪儿上的&#xff…

幽默笑话收集

1.某日&#xff0c;我在医院看病&#xff0c;忽然一位年轻妈妈怀里抱着一个可爱的小正太进了医院&#xff0c; 正太天真说&#xff1a;妈妈&#xff0c;我们来干嘛&#xff1f; 妈妈&#xff1a;打针啊~ 正太&#xff1a;干嘛要打针&#xff0c;针做错什么事了嘛&#xff1f; 针…

幽默笑话-笑话-还有菜吗等

&#xff11;、还有菜吗&#xff1f; 化学课上&#xff0c;老师讲解溶剂与溶质的关系&#xff1a; “一定的溶剂只能溶解一定的溶质。 比如说&#xff0c;你吃了一碗饭&#xff0c;又吃了一碗&#xff0c;第三碗吃下去已经饱了&#xff0c;你还能吃下去吗&#xff1f;” 有个学…

java土豪笑话_调侃土豪的段子 土豪笑话段子大全

调侃土豪的段子 土豪的十大特点&#xff1a;1、手机不贴膜&#xff1b; 2、吃泡面不喝汤&#xff1b; 3、喝酸奶不舔盖&#xff1b; 4、口香糖三粒一块嚼&#xff1b; 5、吃薯片不舔手指头&#xff1b; 6、去超市结账买塑料袋&#xff1b; 7、喝咖啡吃西餐不自拍&#xff1b; 8…