SSL/TLS握手

文章目录

    • SSL/TLS
      • TLS历史发展
      • 层次结构
      • SSL/TLS握手协议
      • TLS1.2 Vs TLS1.3

安全通信协议是一类用于保护计算机网络上数据传输安全的协议。这些协议通过加密、身份验证和数据完整性机制来防止数据被窃听、篡改或伪造。以下是一些主要的安全通信协议:SSL/TLS, IPsec, SSH, HTTPS, PGP/GPG, DTLS, S/MIME

以下我们着重介绍SSL/TLS和HTTPS

SSL/TLS

SSL:Secure Socket Layer(安全套接层) 是用于两个通信应用程序之间提供安全连接的协议,目前SSL证书均已停用

TLS:Transport Layer Security (传输层安全协议),是SSL的升级版本,用于修复SSL安全漏洞,虽然TLS被广泛使用,但依然沿用SSL称呼

TLS历史发展

在这里插入图片描述

SSL1.0(1995年) 存在严重漏洞,未被公开发布

SSL2.0(1995) 首次公开发布版本,存在漏洞,如不完全的握手和容易遭受攻击

SSL3.0(1996) 易受POODLE攻击,已被认为不安全协议

TLS1.0(1999) 受BEAST攻击,逐渐被弃用

TLS1.1(2006) 增强了CBC模式保护,防止了某些攻击, 但目前逐渐被更新版本取代

TLS1.2(2008) 引入了更多加密算法支持,改进了密钥导出和签名计算方式,更加灵活安全,目前依然广泛使用,被认为是安全的

TLS1.3(2018) 大幅简化了握手过程,减少了延迟,引入了前向保密性(Forward Secrecy)作为默认特性,是目前的最新版本,广泛推行和应用

层次结构

SSL/TLS协议由多个子协议构成,每个子协议负责不同的功能

  • 握手协议(Handshake Protocol)
    • 负责建立和管理安全连接,包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
  • 记录协议(Record Protocol)
    • 负责数据分片、压缩、加密和传输,确保数据的机密性和完整性。
  • 警报协议(Alert Protocol)
    • 对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型的错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告。
  • 变化密码规范协议(Change Cipher Spec Protocol)
    • 用于通知对方使用新的加密算法和密钥,一条消息表明握手协议已经完成。

SSL/TLS握手协议

SSL/TLS协议能够提供的安全目标主要包括如下几个:

  • 认证性——借助数字证书认证服务器端和客户端身份,防止身份伪造
  • 机密性——借助加密防止第三方窃听
  • 完整性——借助消息认证码(MAC)保障数据完整性,防止消息篡改
  • 重放保护——通过使用隐式序列号防止重放攻击

为了实现这些安全目标,SSL/TLS协议被设计为一个两阶段协议,分为握手阶段和应用阶段

在这里插入图片描述

  1. 客户端 Hello(ClientHello)[人话版:Client:我能理解的cipher suit有RSA/3DES等,我们使用什么cipher suit进行通信]
    • 客户端发送 ClientHello 消息,其中包含:
      • 支持的协议版本(如 TLS 1.2)
      • 支持的加密套件列表
      • 支持的压缩方法
      • 随机数
      • 其他扩展(如服务器名称指示 SNI)
  2. 服务器 Hello(ServerHello)[人话版:Server: 我们就用RSA/3DES进行通信吧]
    • 服务器响应 ServerHello 消息,其中包含:
      • 协议版本(如 TLS 1.2)
      • 选择的加密套件
      • 选择的压缩方法
      • 随机数
      • 其他扩展
  3. 服务器证书(Server Certificate)[人话版:Server: 这是我的身份证明,你看看]
    • 服务器发送其数字证书,包含公钥,客户端用来验证服务器的身份。
  4. 服务器密钥交换(Server Key Exchange 可选)[人话版:Server: 如果证书信息不足的话,我们使用这些信息来进行密钥交换吧]
    • 如果使用临时密钥交换算法(如 ECDHE 或 DHE),服务器发送密钥交换消息。
  5. 服务器证书请求(Server Certificate Request, 可选)[人话版:Server: 对了,也给我下你的身份证明吧]
    • 如果需要客户端身份验证,服务器请求客户端证书。
  6. 服务器握手结束(Server Hello Done)[人话版:Server: 问候到此结束]
    • 服务器发送 ServerHelloDone 消息,表示握手消息结束。
  7. 客户端证书(Client Certificate, 可选)[人话版:client: 给你我的证书]
    • 如果服务器请求,客户端发送其数字证书。
  8. 客户端密钥交换(Client Key Exchange)[人话版:client: 这是经过你的公钥加密后的预备主密码]
    • 客户端生成预主密钥,用服务器的公钥加密后发送给服务器, 预主密钥用于生成最终的会话密钥。
    • 服务端收到预主密钥后,会使用其私钥解密,客户端和服务器使用预主密钥和随机数生成主密钥,再派生出会话密钥。
  9. 证书验证(Certificate Verify, 可选)[人话版:client: 我就是持有客户端证书本人]
    • 如果客户端发送了证书,客户端发送此消息以证明其身份。
  10. 客户端更改密码规范(Client ChangeCipherSpec)[人话版:Client: 好的,我现在切换为我们协商好的密码进行后续通信]
    • 客户端发送 ChangeCipherSpec 消息,表示后续通信将使用协商好的加密算法和会话密钥。
  11. 客户端完成(Client Finished)[人话版:client: 握手协议到此结束]
    • 客户端发送 Finished 消息,包含握手过程的摘要,使用会话密钥加密。
  12. 服务器更改密码规范(Server ChangeCipherSpec)[人话版:server: 好的,我也要切换密码了]
    • 服务器发送 ChangeCipherSpec 消息,表示后续通信将使用协商好的加密算法和会话密钥。
  13. 服务器完成(Server Finished)[人话版:server: 好的,握手协议到此结束]
    • 服务器发送 Finished 消息,包含握手过程的摘要,使用会话密钥加密。

在这里插入图片描述

TLS1.3对握手过程进行了简化,减少了消息数量,整个握手过程如下

  1. 客户端 Hello(ClientHello)
    • 客户端发送 ClientHello 消息,其中包含:
      • 支持的协议版本(如 TLS 1.3)
      • 支持的加密套件列表
      • 支持的密钥共享方法(如 ECDHE)
      • 支持的签名算法
      • 支持的哈希算法
      • 随机数
      • 其他扩展(如服务器名称指示 SNI)
  2. 服务器 Hello(ServerHello)
    • 服务器响应 ServerHello 消息,其中包含:
      • 协议版本(如 TLS 1.3)
      • 选择的加密套件
      • 选择的密钥共享方法
      • 随机数
      • 其他扩展
  3. 服务器证书(Server Certificate)
    • 服务器发送其数字证书,包含公钥,客户端用来验证服务器的身份。
  4. 服务器证书验证(Certificate Verify)
    • 服务器发送证书验证消息,使用服务器的私钥对握手消息签名,证明其身份。
  5. 服务器握手完成(Server Finished)
    • 服务器发送 Finished 消息,包含握手过程的摘要,使用会话密钥加密。
  6. 客户端证书(Client Certificate, 可选)
    • 如果服务器请求,客户端发送其数字证书。
  7. 客户端证书验证(Certificate Verify)
    • 客户端发送证书验证消息,使用客户端的私钥对握手消息签名,证明其身份。
  8. 客户端握手完成(Client Finished)
    • 客户端发送 Finished 消息,包含握手过程的摘要,使用会话密钥加密。

TLS1.2 Vs TLS1.3

由上述握手过程可以看出,TLS1.3的握手过程比TLS1.2的握手过程简洁了不少,握手过程是两者的关键区别

  • Difference 1:往返时间(RTT)

    往返时间 (RTT) 是指信号从发送端到接收端再返回所需的时间。 在 TLS 等协议中,RTT 至关重要,因为它直接影响用户浏览器和网站服务器建立安全连接的速度。

    在 TLS 1.2 中,当浏览器连接到安全网站时,握手过程需要在客户端(浏览器)和服务器之间往返两次,然后才能开始安全地交换数据。

    TLS 1.2 中的两步握手会带来延迟,尤其是在客户端和服务器之间距离较远的情况下,延迟会更明显

    TLS 1.3号称 0-RTT, 通过合并客户端和服务端的 “Hello”信息,将客户端与服务端之间的往返次数从两次减少到了一次。

  • Difference 2:密码套件(Cipher suit)

    TLS 1.2 支持多种密码套件,提供各种加密、身份验证和散列算法组合。 但是,选择的丰富性增加了选择安全性较低的密码套件的风险,可能会使通信暴露于漏洞之中

    TLS 1.3 将支持的密码套件缩减到五个,全部基于关联数据验证加密(AEAD)原理。 这种简化旨在提高安全性和效率。

    LS 1.3 中受限但安全的密码套件选项降低了协商的复杂性,减少了无意中使用弱加密算法的可能性。

  • Difference 3:完美的前向保密(PFS)

    完美前向保密(PFS)是一种加密功能,旨在防止在长期密钥泄露的情况下暴露过去的通信。

    TLS 1.3 默认启用完美前向保密(PFS)。 这意味着,即使有人设法窃取了您安全通信所用的密钥,他们也无法解密过去的信息。 这就像定期更换门锁一样。

    目前,在 TLS 1.2 中,使用这种额外的安全功能是可选的。 因此,如果您没有特别选择,如果有人掌握了您的秘钥,他们就有可能解密并读取您以前的信息。

    从本质上讲,TLS 1.3 可确保您过去的数据传输无论如何都不会被锁定,与 TLS 1.2 相比提供了更高的安全级别。

  • Difference 4:密钥交换机制

    TLS 1.2 使用多种密钥交换方法,包括RSA(Rivest-Shamir-Adleman)和 Diffie-Hellman 方法。 RSA 包括服务器向客户端发送加密的预主密文,而 Diffie-Hellman 允许客户端和服务器通过开放信道建立共享密文。 不过,TLS 1.2 通常默认使用 RSA 进行密钥交换。

    现在,在 TLS 1.3 中,默认密钥交换机制发生了明显的变化。 该协议要求使用 Diffie-Hellman 密钥交换,特别是椭圆曲线变体 (ECDHE)。 这种方法可确保更高效、更安全地协商加密密钥。

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

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

相关文章

idea配置本地maven

软件名地址链接说明MavenMaven – Download Apache Maven依赖管理 下载bin.zip 环境变量 测试安装 修改配置文件 本地依赖存储位置 新建文件夹 修改配置 国内镜像源 <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>ali…

大电流一体成型电感CSEB1350系列,助力实现DC-DC转换器小尺寸、高效率

DC-DC转换器 , 转换器 , 科达嘉 DC-DC转换器作为一种电压转换装置&#xff0c;在电子产品、电源系统、工业控制、新能源等领域广泛应用。。。 DC-DC转换器作为一种电压转换装置&#xff0c;在电子产品、电源系统、工业控制、新能源等领域广泛应用。随着各行业用户对DC-DC转换器…

pytorch神经网络训练(VGG-16)

VGG-16 导包 import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport matplotlib.pyplot as plt 数据预处理和增强 transform transforms.Compose(…

Flutter-实现头像叠加动画效果

实现头像叠加动画效果 在这篇文章中&#xff0c;我们将介绍如何使用 Flutter 实现一个带有透明度渐变效果和过渡动画的头像叠加列表。通过这种效果&#xff0c;可以在图片切换时实现平滑的动画&#xff0c;使 UI 更加生动和吸引人。 需求 我们的目标是实现一个头像叠加列表&…

基于顺序存储的环形队列算法库构建

学习贺利坚老师基于数组的环形队列 数据结构之自建算法库——顺序环形队列_下空队列q中依次入队列数据元素abc-CSDN博客文章浏览阅读5.2k次&#xff0c;点赞6次&#xff0c;收藏6次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列中第9课时环形队列的存储及基本操…

基于ESP8266串口WIFI模块ESP-01S在Station模式(即接收无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能

基于ESP8266串口WIFI模块ESP-01S在Station模式(即接收无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能 ESP8266_01S引脚功能图ESP8266_01S原理图ESP8266_01S尺寸图检验工作1、USB-TTL串口工具(推荐使用搭载CP2102芯片的安信可USB-T1串口)与ESP8266_01S…

会声会影2024永久破解和谐版下载 包含激活码序列号

亲爱的创作伙伴们&#xff0c;今天我要分享一个让我的影视编辑生活大放异彩的神器——会声会影2024破解版本&#xff01;&#x1f389;&#x1f31f; &#x1f308;**功能全面升级**&#xff1a;作为一款专业的视频编辑软件&#xff0c;会声会影2024破解版本不仅继承了之前版本…

KEITHLEY吉时利24611kW 脈沖模式 SourceMeter 手侧

KEITHLEY吉时利24611kW 脈沖模式 SourceMeter 手侧

【vue3|第13期】深入了解Vue3生命周期:管理组件的诞生、成长与消亡

日期&#xff1a;2024年6月22日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【大数据 复习】第8章 Hadoop架构再探讨

一、概念 1.Hadoop1.0的核心组件&#xff08;仅指MapReduce和HDFS&#xff0c;不包括Hadoop生态系统内的Pig、Hive、HBase等其他组件&#xff09;&#xff0c;主要存在以下不足&#xff1a; &#xff08;1&#xff09;抽象层次低&#xff0c;需人工编码 &#xff08;2&#xf…

【Linux】基础IO_4

文章目录 六、基础I/O4. 动静态库 未完待续 六、基础I/O 4. 动静态库 既然我们能够成功创建静态库了&#xff0c;接下来我们将这个代码打包成动态库&#xff1a; shared: 表示生成共享库格式 fPIC&#xff1a;产生位置无关码(position independent code) 动态库库名规则&…

Swift 中的动态数组

Swift 的 Array 类型是一种强大而灵活的集合类型&#xff0c;可以根据需要自动扩展或缩减其容量。 动态数组的基本概念 Swift 中的数组是基于动态数组&#xff08;dynamic array&#xff09;的概念实现的。动态数组能够根据需要自动调整其容量&#xff0c;以容纳新增的元素&a…

第一题(伏羲六十四卦)

题目&#xff1a; 首先伏羲64卦解密 再用base64解密即可

基于SpringBoot+Vue教材订购系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

Android 14 权限等级剖析

Android 14 权限等级剖析 Android 14 引入了新的权限等级&#xff0c;为应用程序访问敏感信息和功能提供了更细粒度的控制。了解这些新的权限等级及其应用场景对于开发人员至关重要。 1. 概述 Android 一直以来都使用权限机制来控制应用程序对系统资源和用户数据的访问。随着…

Vue81-独享路由守卫

一、 独享路由守卫的定义 当只有某个特定的路由需要做校验的时候&#xff0c;可以在改路由组件规则的地方单独配置独属于改组件的路由守卫。 二、示例 1、需求 系统只在进入新闻路由页面的时候做校验。 2、代码实现 注意&#xff1a; 独享路由守卫&#xff0c;只有前置路由守…

Unity Apple Vision Pro 开发(三):visionOS 应用形态

文章目录 &#x1f4d5;教程说明&#x1f4d5;常用名词解释&#x1f4d5;visionOS 空间类型⭐Shared Space 共享空间⭐Full Space/Immersive Space 独占空间 &#x1f4d5;visionOS 渲染框架&#x1f4d5;Unity 开发 visionOS 应用的不同模式⭐**窗口模式**⭐VR 模式⭐MR 模式 …

基于matlab的高斯滤波与图像去噪

1 高斯滤波原理 1.1 原理 高斯滤波是一种线性平滑滤波技术&#xff0c;主要用于消除图像中的高斯噪声。它的工作原理可以理解为对整幅图像进行加权平均的过程&#xff0c;即每个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。 高斯滤波实质上是一种信号的滤…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-25使用块的网络VGG

25使用块的网络VGG import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义VGG块 # num_convs: 卷积层的数量 # in_channels: 输入通道的数量 # out_channels: 输出通道的数量 def vgg_block(num_convs, in_channels, out_channel…

VS Code Arduino编程

①Arduino Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件&#xff08;各种型号的Arduino板&#xff09;和软件&#xff08;Arduino IDE)。 ②VS Code&#xff08;全称 Visual Studio Code&#xff09; 是由微软开发的一款开源、轻量级的跨平台现代代码编辑器…