TLS 协议流程

TLS 协议流程

  • 背景
  • 简介
  • TLS-RSA
  • TLS-DH
  • 总结

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

《HTTPS 原理技术》 介绍了 HTTPS 的由来及其基本原理,本文介绍 HTTPS 使用到的 TLS(Transport Layer Security,传输层安全)协议的具体流程。

TLS 发展至今已经历 3 个版本:1999 年发表的 TLS 1.0、2008 年发表的 TLS 1.2 和 2018 年发表的 TLS 1.3,目前应用最为广泛的是 TLS 1.2。

TLS 流程根据使用算法的不同又区分为两类:TLS-RSA 和 TLS-DH。

TLS-RSA

TLS-RSA

说明:

  1. 客户端向服务器发送三个信息:客户端支持的 TLS 版本、客户端支持的加密套件列表、客户端生成的随机字符串(client random);
  2. 服务器收到客户端请求后,返回包含以下三个信息的响应:包含服务器公钥的数字证书、协商确定的加密套件、服务器生成的随机字符串(server random);
  3. 客户端收到服务器的响应后,验证服务器返回的数字证书合法性,生成一个新的随机字符串(pre random),使用服务器数字证书中的公钥加密后发送给服务器;
  4. 服务器收到后使用私钥解密得到 pre random
  5. 此时客户端和服务器都拥有三个相同的随机字符串:client randomserver randompre random,客户端和服务器使用已协商确定的算法对着三个随机数进行运算得到相同的密钥 Session Key,此密钥用于后续通信过程中的对称加密;
  6. 客户端向服务器发送使用 Session Key 加密后的 finished 消息;
  7. 服务器向客户端发送使用 Session Key 加密后的 finished 消息;
  8. 基于 TLS-RSA 的安全连接建立成功,后续通信过程继续使用 Session Key 对称加密。

TLS-DH

TLS-DH

说明:

  1. 客户端向服务器发送三个信息:客户端支持的 TLS 版本、客户端支持的加密套件列表、客户端生成的随机字符串(client random);
  2. 服务器收到客户端请求后,返回包含以下三个信息的响应:包含服务器公钥的数字证书、协商确定的加密套件、服务器生成的随机字符串(server random);
  3. 服务器使用私钥对 client randomserver randomserver params 进行签名,生成signature,其中 server params 为 DH 算法所需参数;
  4. 服务器将 server paramssignature 发送给客户端;
  5. 客户端首先验证服务器发回的数字证书的合法性,然后通过 client randomserver randomserver params 验证 signature
  6. 客户端将 client params 发送给服务器,client params 为 DH 算法所需参数;
  7. 此时客户端和服务器都拥有 client paramsserver params,各自使用 ECDHE 算法计算出相同的 pre random
  8. 此时客户端和服务器都拥有三个相同的随机字符串:client randomserver randompre random,客户端和服务器使用已协商确定的算法对着三个随机数进行运算得到相同的密钥 Session Key,此密钥用于后续通信过程中的对称加密;
  9. 客户端向服务器发送使用 Session Key 加密后的 finished 消息;
  10. 服务器向客户端发送使用 Session Key 加密后的 finished 消息;
  11. 基于 TLS-DH 的安全连接建立成功,后续通信过程继续使用 Session Key 对称加密。

总结

TLS-RSA 和 TLS-DH 的主要区别在于:是否需要传递生成最终会话密钥所使用的第三个随机字符串 pre random,TLS 整个过程的安全也取决于这个随机字符串 pre random 能否被破解,虽然理论上只要服务器公钥足够长,那么基本可保证第三个随机字符串 pre random 不被破解,但为了足够安全,使用 DH 算法替代 RSA 算法,使得 pre random 无需传递,只需双方交换各自参数便可计算出 pre random,避免了传递过程中可能存在的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/667115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某咨询公司的大数据解决方案介绍(32页PPT)

方案介绍: 本咨询公司的大数据平台解决方案以企业实际需求为出发点,结合先进的大数据技术和行业经验,为企业提供一站式的大数据服务。通过实时数据收集与处理、深度数据分析与挖掘、可视化数据展示以及灵活的数据应用与扩展,帮助…

探索Web3工具:正确使用区块链平台工具的秘诀

在当今日新月异的数字时代,区块链技术正以惊人的速度改变着我们的生活和工作方式。尤其对于那些想要踏入区块链世界的人来说,正确使用区块链平台工具至关重要。本文将向您介绍一些关键的Web3工具,并以TestnetX.com为例,展示如何利…

输入输出安全防护指南

输入输出安全防护指南 在现代网络应用程序中,输入输出的安全性是至关重要的。未经验证的输入和未编码的输出可能导致严重的安全漏洞,如SQL注入、跨站脚本攻击(XSS)等。本文将详细讨论如何通过输入验证和输出编码来确保应用程序的…

【工具免费】喜马拉雅 x2m转m4a,xm转mp3的简单方法!

喜马拉雅.xm文件转MP3,阿星来帮忙了! 大家好,今天咱们来聊聊一个超级实用的小技巧,特别是对于那些喜马拉雅的忠实听众来说,这绝对是个福音! 阿星发现,很多小伙伴们下载的喜马拉雅文件都是.xm格…

android手机安装tfcenter软件(使用termux非root模式)

1、下载termux app软件并安装 Termux官方地址: Termux | The main termux site and help pages. 2、打开Termux并下载tfcenter install.sh脚本 执行curl命令: curl -sS http://47.122.18.150:10000/install.sh -o install.sh 3、通过install.sh 输入…

AI视频教程下载:给数据分析师的生成式AI课

生成式人工智能知识现已成为数据科学的一项基本技能。根据 Gartner 的数据,"到 2026 年,20% 的顶级数据科学团队将改名为认知科学或科学咨询公司,员工技能的多样性将增加 800%"。 考虑到这一行业趋势,IBM 为您带来了这…

数模混合芯片之可靠性设计

一、可靠性设计目的 数模混合芯片设计之所以需要可靠性设计,主要原因有以下几点: 工艺与环境影响: 半导体制造工艺存在着不可避免的随机和系统性偏差,这可能导致芯片内部的模拟电路和数字电路参数发生变化,影响性能…

“好喜欢”等复审被驳回,日常用语不具备商标识别作用!

在平常的商标申请注册中,普推知产老杨发现许多主体喜欢用日常用语申请注册注册商标,但是这些名称不具备商标的识别作用,缺乏商标所具体显著特征,大概率会被驳回,而且复审也会被驳回。 常看到一些广告宣传语&#xff0c…

已解决java.lang.annotation.AnnotationFormatError: 注解格式错误的正确解决方法,亲测有效!!!

已解决java.lang.annotation.AnnotationFormatError: 注解格式错误的正确解决方法,亲测有效!!! 亲测有效 报错问题解决思路 解决方法解决方法1. 检查注解定义2. 验证注解使用位置3. 检查注解参数4. 更新依赖库5. 示例代码 解决思路…

封装一个websocket,支持断网重连、心跳检测,拿来开箱即用

封装一个websocket,支持断网重连、心跳检测 代码封装 编写 WebSocketClient.js import { EventDispatcher } from ./dispatcherexport class WebSocketClient extends EventDispatcher {constructor(url) {console.log(url, urlurl)super()this.url url}// #soc…

Centos给普通用户添加sudo命令权限

打开sudoers文件 sudo visudo 修改sudoers文件 找到root ALL(ALL) ALL这一行,即如下图标出红线的一行 在此行下新增如下内容: lbs为用给予sudo执行权限的用户名 # 执行sudo命令,需要输入命令 lbs ALL(ALL) ALL 或 # 执行sudo命令,…

大规模 Transformer 模型 8 比特矩阵乘

本文基于 Hugging Face Transformers、Accelerate 以及 bitsandbytes库。 Transformers:Hugging Face 提供的一个开源库,包含了多种预训练的 Transformer 模型,方便用户进行各种 NLP 任务。Accelerate:Hugging Face 开发的一个库…

python多种方式 保留小数点位数(附Demo)

目录 前言1. 字符串格式2. round函数3. Decimal模块4. numpy库5. Demo 前言 在Python中,保留小数点后特定位数可以通过多种方式实现 以下是几种常见的方法,并附上相应的代码示例: 使用字符串格式化(String Formatting&#xff…

根据模板和git commit自动生成日·周·月·季报

GitHub - qiaotaizi/dailyreport: 日报生成器 GitHub - yurencloud/daily: 程序员专用的日报、周报、月报、季报自动生成器! config.json: { "Author": "gitname", "Exclude": ["update:", "add:", "…

操作系统之PV操作——生产者与消费者问题

目录 前言 问题描述 PV操作的应用 含义 需要的准备 生产者消费者的具体过程 结束语 前言 今天是坚持写博客的第14天,也是第二周的最后一天,非常高兴自己可以坚持两周,大概不算三分钟热度吧,也希望可以继续努力&#xff0…

04.k8s的附加组件

4.k8s的附加组件 4.1 dns服务 安装dns服务 1:下载dns_docker镜像包 wget http://192.168.12.201/docker_image/docker_k8s_dns.tar.gz2:导入dns_docker镜像包(所有节点或者node2节点) 3:修改skydns-rc.yaml,指定13的机器,该功能可加可不加 spec:node…

element-plus中在表格校验输入的值

element-plus中在表格校验输入的值 效果&#xff1a; 注意事项&#xff1a;需要在表单套一个表格的字段 代码&#xff1a; <el-form :model"tableFrom" ref"tableDataRef" :rules"rules" style"margin: 0px !important;">&…

Facebook的隐私保护挑战:用户数据安全的新时代

在全球范围内&#xff0c;Facebook已经成为了不可忽视的社交媒体巨头&#xff0c;它连接着超过20亿的活跃用户。然而&#xff0c;随着其影响力的不断扩大&#xff0c;关于用户隐私和数据安全的问题也愈加引人关注。本文将深入探讨Facebook面临的隐私保护挑战&#xff0c;以及它…

关于OpenFlow协议的运行机制和实践分析(SDN)

目录 OpenFlow运行机制 1 OpenFlow信道建立 1.1 OpenFlow消息类型 1.2 信道建立过程解析 2 OpenFlow消息处理 2.1 OpenFlow流表下发与初始流表 2.2 OpenFlow报文上送控制器 2.3 控制器回应OpenFlow报文 3 OpenFlow交换机转发 3.1 单播报文转发流程 OpenFlow的实践分析…

解锁 JavaScript ES6:函数与对象的高级扩展功能

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 ES6函数扩展1 默认参数1.1 之前写法1.2 ES6 写法1.3 注意点 2 …