TLS协议
目录
什么是TLS协议?
TLS的基本流程?
两种密钥交换算法?
基于ECDHE密钥交换算法的TLS握手过程?
基于RSA密钥交换算法的TLS握手过程?
基于RSA的握手和基于ECDHE的握手有什么区别?
什么是前向保密?
什么是TLS协议?
TLS是(Transport Layer security)的缩写,中文叫传输层安全协议,是一种加密协议,用于保护网络通信的安全。
TLS的基本流程?
1)客户端向服务器索要并验证服务器的公钥
2)双方协商生产会话密钥
3)双方采用会话密钥进行通信
两种密钥交换算法?
RSA和ECDHE,基于不同的密钥交换算法的TLS握手过程有些区别。另外,TLS1.3及其以上版本已经不在支持RSA密钥交换算法。
基于ECDHE密钥交换算法的TLS握手过程?
1)第一次握手是客户端发送Client Hello消息。(包含TLS版本,支持的密码套件,以及一个随机数)
2)第二次握手是服务端发送Server Hello消息。(服务器确认的TLS版本号,以及一个随机数,并选择了一个合适的密码套件)。另外服务端为了证明自己的身份,还会发送一个证书给客户端。除此之外,还会发送给客户端一个Server Key Exchange(将选择的椭圆曲线,以及基点G和服务端的椭圆曲线公钥发送给客户端),以及还有一个是Server Hello done告诉客户端我发送完毕了。
3)第三次握手是客户端发送Client Key Exchange消息,将客户端的椭圆曲线公钥发送给服务端。并生成一个随机数作为自己的私钥。发送change cipher spec消息,告诉服务端之后客户端要用加密通信。接着客户端会将之前发送的消息的摘要进行加密发送给服务端。
4)第四次握手是服务端向客户端发送Change Cipher Spec,接着会将之前发送的信息进行加密发送给客户端。如果双方的加解密都没有问题,则握手完成,之后就可以进行加密通信。
基于RSA密钥交换算法的TLS握手过程?
1)第一次握手是客户端向服务端发送Client Hello消息。(包含TLS版本,支持的密码套件和客户端生成的随机数)
2)第二次握手是服务端向客户端发送Server Hello消息(包含确认的TLS版本,选择的密码套件和服务端生成的随机数)并发送证书(包含服务端的公钥)
3)第三次握手:客户端验证证书的可信性后,客户端会生成一个新的随机数(pre-master),用服务器的RSA公钥加密该随机数,通过Client Key exchange消息发送给服务端。至此客户端和服务端共享了三个随机数,客户端随机数(Client Random),服务端随机数(Server Random)以及刚刚生成的随机数(pre-master)。将三个随机数进行计算生成会话密钥。生成会话密钥后,和发送Change Cipher Spec,告诉服务端开始使用加密的方式发送消息。然后客户端再发送一个加密消息供服务端解密验证。
4)第四次握手:服务端收到客户端的加密随机数(pre-master)后,用私钥进行解密。计算出会话密钥,解密服务端的加密消息。之后对客户端发送change cipher spec,以及再发送一个加密消息供客户端解密验证。
基于RSA的握手和基于ECDHE的握手有什么区别?
1)ECDHE安全。RSA密钥协商算法不支持前向保密(服务端的公私钥是不变的,一旦服务端私钥泄漏,之前的通信内容全部会被破解),而ECDHE密钥协商算法支持前向保密。
2)ECDHE抢跑。使用了RSA密钥协商算法,TLS完成四次握手后才能进行应用数据传输。而ECDHE算法,客户端可以不用等服务端的最后一次TLS握手,就可以提前发出加密的HTTP数据,节省了一个消息的往返时间。
3)在第二次握手中,ECDHE多了一个Server Key Exchange。
什么是前向保密?
前向保密是密码学中通讯协议的安全属性,指的是长期使用的主密钥泄漏不会导致过去的会话密钥泄漏。
相关文章:
TLS协议
目录 什么是TLS协议? TLS的基本流程? 两种密钥交换算法? 基于ECDHE密钥交换算法的TLS握手过程? 基于RSA密钥交换算法的TLS握手过程? 基于RSA的握手和基于ECDHE的握手有什么区别? 什么是前向保密&…...
Academic Inquiry|国外文献查找
一个失去了男子气概的人总有很多忧虑,这样就可以分散注意力,而不必为那件特别的羞耻而苦恼不堪。 ——《狂野之夜》〔美〕乔伊斯卡罗尔欧茨著 樊维娜译 许多研究者在进行研究的时候,都会查找对应主体的国内外引用文献,而大多得出的…...
opencv图片灰度二值化
INCLUDEPATH D:\work\opencv_3.4.2_Qt\include LIBS D:\work\opencv_3.4.2_Qt\x86\bin\libopencv_*.dll #include <iostream> #include<opencv2/opencv.hpp> //引入头文件using namespace cv; //命名空间 using namespace std;//opencv这个机器视…...
短肥网络的 RTT 敏感性
周二下班路上发了一则朋友圈: 长肥管道的特征和问题谈得够多了,但这里谈的是短肥管道,因为下面趋势,短肥管道才是未来大势: 云计算致使数据中心网络快速发展,而数据中心网络时延短,带宽大。CD…...
Nonebot实战之编写插件1
前言 应粉丝群内粉丝要求,我也决定写一个Nonebot插件编写教程,从0开始教学。有些不对的地方也欢迎大家指正,修改。 开始 准备 合适的代码编辑器一定的python基础懂得提问的方式 代码编辑器 代码编辑器有很多种选择,比如 vsc…...
Linux-C++开发项目:基于主从Reactor模式的高性能并发服务器
目录 1.项目介绍2.1项目部署2.2安装版本较高的编译器 2.项目开发过程2.1网络库模块开发2.1.1简单日志宏的实现2.1.2Buffer模块实现2.1.3Socket模块实现2.1.4Channel模块实现2.1.5Poller模块实现2.1.6TimerWheel模块实现2.1.7EventLoop模块实现2.1.8整合测试12.1.9LoopThread模块…...
【Linux的开胃小菜】Linux系统安装后初始化配置操作
我们刚接手一台刚安装好服务器系统之后,可以对系统进行一些基础优化: 常规设定: centos: 1.关闭 iptables 2.关闭 selinux 3.设定 ChronyUbuntu: 4. /etc/security/limits.conf 5. /etc/sysctl.conf1.首先使用国内阿里云的yum源(…...
Java批量下载书籍图片并保存为PDF的方法
背景 因为经常出差火车上没网、不方便电子书阅读器批注,需要从某网站上批量下载多本书籍的图片并自动打包成PDF文件。 分析 1、尝试获得图片地址,发现F12被禁 解决方法:使用Chrome浏览器,点击右上角三个点呼出菜单,…...
flutter 创建lib
在根目录下创建 packages 文件夹创建lib (flutter create --templatepackage xxx)需要在pubspec.yaml中的根目录下添加 publish_to: ‘none’ # 如果你想发布到pub.dev,请删除这一行配置 lib_rock_utils:path: packages/lib_rock_utils...
深度剖析堆栈指针
为什么打印root的值与&root->value的值是一样的呢 测试结果: *号一个变量到底取出来的是什么? 以前我写过一句话,就是说,如果看到一个*变量,那就是直逼这个变量所保存的内存地址,然后取出里面保存的…...
C++笔记之静态成员函数的使用场景
C笔记之静态成员函数的使用场景 C静态成员函数的核心特点是不与特定类实例相关,可通过类名直接调用,用于执行与类相关的操作而无需创建类对象。其主要用途是在类级别上共享功能,管理全局状态或提供工具函数。 code review! 文章目录 C笔记之…...
Nginx的优化和防盗链
一、Nginx的优化 1、隐藏版本号 curl -I http://192.168.79.28 #查看信息(版本号等)方法一:修改配置文件 vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type ap…...
第二十次CCF计算机软件能力认证
数学专场 第一题:称检测点查询 解题思路:计算欧几里得距离 #include<iostream> #include<vector> #include<algorithm>using namespace std;typedef pair<int , int> PII; int n , x , y; vector<PII>v;int main() {ci…...
一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等
Java发送邮件:使用JavaMail API发送电子邮件 作者:Stevedash 发表于:2023年8月13日 15点48分 来源:Java 发送邮件 | 菜鸟教程 (runoob.com) 电子邮件在现代通信中扮演着至关重要的角色,而在Java编程中,…...
kubernetes的日志
1、日志在哪里 kubelet组件,systemd方式部署,journalctl -u kubelet 查看 其他组件,pod方式部署,kubectl logs 查看 容器运行时将日志写入 /var/log/pods 系统日志,/var/log/message 2、查看服务日志 #首先检查服…...
设计HTML5文本
网页文本内容丰富、形式多样,通过不同的版式显示在页面中,为用户提供最直接、最丰富的信息。HTML5新增了很多文本标签,它们都有特殊的语义,正确使用这些标签,可以让网页文本更严谨、更符合语义。 1、通用文本 1.1、标…...
msvcr120.dll丢失怎样修复?总结三个dll修复方法
当我遇到msvcr120.dll丢失的问题时,我感到有些困惑和焦虑。因为这个问题会导致我无法运行依赖这个文件的应用程序。msvcr120.dll是运行时库文件的一部分,为应用程序提供了必要的运行时支持。它的丢失会导致应用程序无法正常运行,这让我意识到…...
选择题方法论——颉斌斌
文章目录 一、仔细阅读文章结构Ⅰ 时间对比Ⅱ 抛砖引玉Ⅲ 开门见山Ⅳ 一分为二Ⅴ 两者关系Ⅵ 研究性文章 1 如何精准定位1.1 定位明显的题1.2 定位不明显的题1.3 定位找不到出题句的题 2 对比选项两点2.1 接收信息2.2 对比信息 3 选择题答案特点4 评估选项5 选择题的固有缺陷5.…...
23.8.8 杭电暑期多校7部分题解
1008 - H.HEX-A-GONE Trails 题目大意 有两个玩家和一棵树,初始状态玩家一和玩家二分别在两个点 x , y x,\space y x, y,每次操作可以走一个与当前点有连边并且双方都没走到过的点,问最后是谁赢 解题思路 因为不能走走过的点,…...
《24海南大学835软件工程考研经验贴》
1.经验之谈 首先,我是一个二战的考生,一战给我带来的经验有几点。第一,数学、专业课这两门越早复习越好,越拖到后面你就会发现来不及了,这学不完,那学不完的。第二、我认为是比较关键的一点,一定…...
如何用trackerslist终极优化BT下载:92个追踪器全解析与实战指南
如何用trackerslist终极优化BT下载:92个追踪器全解析与实战指南 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 你是否曾经面对BT下载时连接数寥寥无几、下载速…...
【紧急预警】AGI基础设施准备窗口仅剩18个月:SITS2026圆桌发布《企业AGI就绪度自评矩阵》(含6大维度22项硬指标)
第一章:SITS2026圆桌:AGI何时到来 2026奇点智能技术大会(https://ml-summit.org) 圆桌共识与分歧焦点 在SITS2026主会场举行的“AGI何时到来”圆桌论坛中,来自DeepMind、Anthropic、中科院自动化所及OpenAI前核心架构师的六位专家展开激烈交…...
SITS2026重磅预警:2026年起,未集成AI告警生成能力的CI/CD流水线将无法通过ISO/IEC 27001 DevSecOps认证——附合规迁移路线图
第一章:SITS2026演讲:AI代码告警生成 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026主会场,来自CodeGuard AI实验室的研究团队首次公开演示了新一代AI驱动的实时代码告警生成系统——AlertGen v3。该系统不再依赖传统静态分析规…...
Maven工程中protobuf-maven-plugin的配置详解与实战
1. 为什么选择protobuf-maven-plugin 在Java项目中使用Protocol Buffers(简称protobuf)作为数据交换格式已经成为微服务架构中的常见做法。相比JSON和XML,protobuf具有更小的数据体积和更快的编解码速度,特别适合高并发场景。但在…...
PCILeech完整指南:从零开始掌握DMA内存攻击技术
PCILeech完整指南:从零开始掌握DMA内存攻击技术 【免费下载链接】pcileech Direct Memory Access (DMA) Attack Software 项目地址: https://gitcode.com/gh_mirrors/pc/pcileech PCILeech是一款基于Direct Memory Access(DMA,直接内存…...
真的绝了!这套私域运营思路和方法让我效率提升10倍
你有没有发现,很多人做私域,每天花4.5小时在重复劳动上——回消息2小时、写朋友圈1小时、手动拉群0.5小时、跟进客户1小时。一年下来1642.5个小时,折合68天。结果呢?好友从3000删到800,月成交从50单跌到8单,…...
别再死记硬背空洞卷积了!用PyTorch手写ASPP模块,带你搞懂多尺度信息融合的来龙去脉
从零解剖ASPP模块:用PyTorch实现揭示多尺度语义分割的精髓 第一次看到DeepLab论文里的ASPP模块时,我盯着那些不同dilation rate的空洞卷积分支发愣——为什么是6、12、18这三个神奇数字?为什么不能直接用更大的膨胀率捕捉更广的上下文&#x…...
从概念到应用:一文读懂概率密度函数与累积分布函数的联系与区别
1. 随机变量:理解概率分布的基础 概率密度函数(PDF)和累积分布函数(CDF)是统计学中描述随机变量分布的两个核心工具。要真正理解它们,我们得从随机变量这个基础概念说起。随机变量就像是一个数学魔术师&am…...
探索Happy Island Designer:重塑岛屿规划体验的智能工具
探索Happy Island Designer:重塑岛屿规划体验的智能工具 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossin…...
Rockchip RK3588新板级DTS创建实战:从参考设计到硬件适配
1. RK3588开发板DTS适配的核心逻辑 刚拿到一块基于RK3588的新硬件时,很多开发者会直接复制官方DTS文件开始修改。这种操作看似高效,实则埋下了维护隐患。我经历过三次硬件迭代后,总结出更合理的做法:像搭积木一样构建DTS。Rockchi…...
