传输层安全协议TLS——密码学概述

文章目录

  • 一、TLS1.3基础理论知识
  • 二、TLS机密性
  • 三、TLS1.3 密钥配送
  • 四、TLS1.3 消息完整性
  • 五、TLS1.3 身份验证与中间人攻击

一、TLS1.3基础理论知识

TLS 1.3 是一种用于保障网络通信安全的协议,它是 TLS(Transport Layer Security)协议的最新版本。TLS 1.3 通过提供更强大的安全性、更快的握手过程和更好的性能来改进先前的版本。以下是 TLS 1.3 的一些关键知识点:

  1. 握手协议的简化: TLS 1.3 的握手过程相较于 TLS 1.2 更为简化,减少了往返次数,提高了握手速度。在 TLS 1.3 中,只需要一轮往返(1-RTT)即可建立安全连接。

  2. 支持零往返握手(0-RTT): TLS 1.3 引入了 0-RTT 握手模式,允许客户端在第一次连接时发送数据,从而加速连接建立。但要注意,0-RTT 模式存在一些安全性的考虑,需要谨慎使用。

  3. 强制使用 Perfect Forward Secrecy(PFS): TLS 1.3 强制使用 PFS,确保每个会话都具有独一无二的密钥材料,即使长期密钥泄漏,也不会影响过去的通信安全。

  4. 删除不安全的密码套件: TLS 1.3 移除了一些不安全的密码套件,例如弱的散列算法和对称加密算法。只支持安全性更高的算法,如 AEAD(Authenticated Encryption with Associated Data)。

  5. 支持0-RTT重放保护: 为了防止 0-RTT 数据的重放攻击,TLS 1.3 引入了 PSK(Pre-Shared Key)绑定,确保 0-RTT 数据只能在特定的连接上被接受一次。

  6. 更强大的密钥交换算法: TLS 1.3 引入了更现代的密钥交换算法,如基于椭圆曲线的 Diffie-Hellman(ECDHE)和有限域的 Diffie-Hellman(DHE)。

  7. 强制使用数字签名: TLS 1.3 强制使用数字签名算法,包括支持的哈希函数和公钥密码算法,以提高通信的完整性和可验证性。

  8. 支持更多的密码套件: TLS 1.3 提供了更多密码套件的选择,以适应不同的安全性和性能需求。

  9. 提高隐私保护: 通过删除不必要的握手消息,减少了泄漏客户端和服务器信息的风险,提高了通信的隐私保护。

总体而言,TLS 1.3 引入了许多安全性和性能上的改进,使得加密通信更为快速和可靠。在实际应用中,推荐尽早迁移到 TLS 1.3,以提高通信的安全性。

二、TLS机密性

TLS 1.3 在机密性方面引入了多项改进,主要体现在加密算法、握手过程、以及密钥交换等方面:

  1. 前向保密性(Forward Secrecy): TLS 1.3 强制使用前向保密性,确保每个会话都有独一无二的密钥材料。即使长期密钥泄漏,也不会对过去的通信产生影响。这是通过使用 Ephemeral Diffie-Hellman(ECDHE)或有限域的 Diffie-Hellman(DHE)密钥交换算法实现的。

  2. 更强大的对称加密算法: TLS 1.3 引入了 Authenticated Encryption with Associated Data(AEAD)模式,支持更安全的对称加密算法,如 AES-GCM 和 ChaCha20-Poly1305。这些算法提供了认证和加密,并且在 TLS 1.3 中成为默认的加密算法。

  3. 删除不安全的密码套件: TLS 1.3 移除了一些不安全的密码套件,包括弱的散列算法和对称加密算法,以提高整体的机密性。

  4. 零往返握手(0-RTT)的保护: 0-RTT 握手模式允许客户端在第一次连接时发送数据,以加速连接建立。为了保护免受重放攻击,TLS 1.3 引入了 PSK(Pre-Shared Key)绑定,确保 0-RTT 数据只能在特定的连接上被接受一次。

  5. 数字签名的强制使用: TLS 1.3 强制使用数字签名算法,包括支持的哈希函数和公钥密码算法,以提高通信的完整性和可验证性。

  6. 密钥交换的优化: TLS 1.3 改进了密钥交换的方式,使用更现代的 Diffie-Hellman 算法,提高了密钥交换的安全性。

  7. 隐私保护的提升: TLS 1.3 删除了一些不必要的握手消息,减少了可能泄漏客户端和服务器信息的风险,提高了通信的隐私保护。

综合来看,TLS 1.3 在多个方面提高了机密性,强制使用更安全的加密算法和协议设计,以适应不断演进的安全威胁和攻击手法。

三、TLS1.3 密钥配送

TLS 1.3 使用了一种先进的密钥协商机制,主要通过 Diffie-Hellman 密钥交换算法和预共享密钥来实现密钥配送。以下是 TLS 1.3 密钥配送的主要机制:

  1. Ephemeral Diffie-Hellman(ECDHE): 对于普通的服务器认证和密钥交换,TLS 1.3 使用 Ephemeral Diffie-Hellman 密钥交换算法。这意味着客户端和服务器在每个握手过程中都会生成一次性的 Diffie-Hellman 公私钥对,用于交换密钥材料。这样的设计提供了前向保密性,即使长期密钥泄漏,之前的通信也仍然是安全的。

  2. 有限域的 Diffie-Hellman(DHE): 当使用 ECDHE 不太适用或不可用时,TLS 1.3 还支持有限域的 Diffie-Hellman(DHE)密钥交换。与 ECDHE 类似,DHE 也提供了前向保密性,但由于使用了更大的数学问题,可能会导致一些性能开销。

  3. 预共享密钥(PSK): TLS 1.3 引入了预共享密钥的概念,允许客户端和服务器在握手之前共享一些密钥材料。这种情况下,握手可以使用这些预共享密钥(PSK)进行快速的重连接,以及在 0-RTT 模式中允许客户端在第一次连接时发送数据。

  4. 安全性参数的交换: 在握手的过程中,客户端和服务器还会交换其他安全性参数,包括所选的加密算法、哈希函数、数字签名算法等。这确保双方在握手完成后都具备相同的加密套件和协议参数。

整体而言,TLS 1.3 使用先进的密钥协商机制,通过 ECDHE 和 DHE 提供前向保密性,通过 PSK 允许更快的连接建立。这样的设计有助于提高密钥配送的安全性和性能。

四、TLS1.3 消息完整性

TLS 1.3 通过使用加密算法和消息认证码(MAC)来保障通信的消息完整性。以下是 TLS 1.3 中保障消息完整性的主要机制:

  1. 加密算法: TLS 1.3 强制使用 Authenticated Encryption with Associated Data(AEAD)模式的加密算法,例如 AES-GCM 和 ChaCha20-Poly1305。这些加密算法不仅提供加密功能,还通过认证数据(Associated Data,AD)确保消息的完整性。如果消息在传输过程中被篡改,解密时会导致认证失败,从而保护消息的完整性。

  2. HMAC(Hash-based Message Authentication Code): 在握手过程中,TLS 1.3 使用 HMAC 算法生成 Finished 消息的认证码,确保握手完成消息的完整性。HMAC 使用所选的哈希函数(通常是 SHA-256 或 SHA-384)和密钥对消息进行认证。

  3. 数字签名: 在握手过程中,服务器证书通常会包含服务器的公钥和数字签名。客户端通过验证数字签名来确保服务器证书的完整性。类似地,服务器可以要求客户端提供数字签名以验证客户端身份。

  4. 安全参数的交换: 在握手过程中,客户端和服务器会交换一系列安全参数,包括所选的加密算法、哈希函数和数字签名算法等。这确保双方使用相同的参数来保障通信的完整性。

总体而言,TLS 1.3 使用现代的加密算法和认证机制来保障通信的消息完整性。通过使用 AEAD 加密算法,TLS 1.3 不仅提供了机密性,还同时保护了消息的完整性,从而增强了通信的安全性。

五、TLS1.3 身份验证与中间人攻击

TLS 1.3 使用公开密钥基础设施(PKI)和数字证书来进行身份验证,以防范中间人攻击。以下是 TLS 1.3 中身份验证和防范中间人攻击的主要机制:

  1. 数字证书: 在 TLS 1.3 中,服务器通常会提供数字证书,其中包含了服务器的公钥和相关信息。客户端使用这个证书验证服务器的身份。数字证书由可信的证书颁发机构(CA)签发,客户端会检查证书的有效性和是否与目标服务器的域名匹配。

  2. 证书链验证: 服务器证书通常包含一个证书链,包括服务器证书和中间 CA 证书。客户端会验证证书链的每个部分,确保其有效性,直至根证书。这确保了整个证书链的信任。

  3. 在线证书状态协议(OCSP): 客户端可以使用 OCSP 来检查服务器证书的实时状态。OCSP 允许客户端查询 CA 以获取证书的撤销状态。这有助于防范使用已撤销证书的中间人攻击。

  4. 预共享密钥(PSK): 当使用 PSK 时,客户端和服务器之间共享一些密钥材料。这个密钥材料可以用于验证双方的身份,防范中间人攻击。PSK 的使用还可以提供更快的连接建立。

  5. TLS 1.3 的 0-RTT 模式: 0-RTT 模式允许客户端在第一次连接时发送数据,以提高连接速度。但为了防范重放攻击,0-RTT 模式引入了 PSK 绑定,确保 0-RTT 数据只能在特定的连接上被接受一次。

通过这些机制,TLS 1.3 提供了强大的身份验证和防范中间人攻击的能力。使用数字证书、证书链验证和在线证书状态协议等技术,TLS 1.3 构建了一个可信任的通信环境,确保客户端和服务器的身份是合法的,从而减缓中间人攻击的风险。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个美观且功能丰富的 .NET 控制台应用程序开源库

推荐一个美观且功能丰富的 .NET 控制台应用程序开源库,从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库,用于创建美观、功能丰富的控制台(命令行)应用程序。它提供了一组易于使用的 API,…

VScode 配置用户片段

文件->首选项->配置用户片段->新建全局用户片段 后续就可以通过vv3来直接生成下面的代码 {// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the l…

阿里云崩了,总结我们从云上搬到线下经历了什么

我们做钢铁行业云的时候,也曾购买过某讯的云服务器。当时某讯做活动,头3年比较便宜,大概买了40台左右云服务器。 但是,3年期间使用云服务器的经历,体验并不好:1.我们云服务器的密码都是随机生成的&#xff…

Shell 使用日期或计数器 命名 文件

date获取系统时间,"%Y_%m_%d_%H_%M_%S"指定格式,$time 输出时间, ~/Desktop/ $newFile指定位置下的文件夹 #!/bin/bashtime$(date "%Y_%m_%d_%H_%M_%S") newFile$time".log" echo $time > ~/Desktop/$newF…

多视图聚类的论文阅读

当聚类的方式使用的是某一类预定义好的相似性度量时, 会出现如下情况: 数据聚类方面取得了成功,但它们通常依赖于预定义的相似性度量,而这些度量受原始方法的影响:当输入维数相对较高时,往往是无效的。 1. Deep Mult…

C++ 编写动态二维double型数据类Matrix

【问题描述】 编写一个程序,定义一个安全、动态二维double型的数组类Matrix。 实现Matrix table(row,col)定义row行col列的二维数组, row和col为正整数;实现table(i,j)访问table的第i行第j列的元素,行号和列号从0开始;实现Matri…

解决Requests中使用httpbin服务器问题:自定义URL的实现与验证

问题背景 在使用Python的Requests模块进行单元测试时,可能会遇到无法使用本地运行的httpbin服务器进行测试的问题。这是因为测试脚本允许通过环境变量HTTPBIN_URL指定用于测试的本地httpbin实例,但在某些测试用例中,URL是硬编码为httpbin.or…

Linux 系统目录结构

Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 以下是对这些目录的解释: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放…

linux(centos7)常用命令 开启关闭防火墙

查看防火墙状态 centos7 systemctl status firewalld.service 运行上述命令后,如果看到有绿色字样标注的“active(running)”,说明防火墙是开启状态。 开启防火墙 centos7 systemctl start firewalld.service 关闭防火墙 c…

Java 实现统计文件字符

要求 编写程序,统计英文文本文件中的字符数目和单词数目。程序运行时,输入要统计的文件的名称,程序处理后输出字符数目和单词数目。 代码 import java.util.*; import java.io.IOException; import java.nio.file.*; public class Main3{p…

PbootCMS 应用快速迁移至浪潮信息 KeyarchOS 云服务器

本文我们以 PbootCMS 应用为例,详细介绍如何使用 X2Keyarch 迁移工具将其从 CentOS 系统迁移到浪潮信息 KeyarchOS 系统。 背景介绍 众所周知,CentOS 是最流行的红帽克隆版,因为免费,所以它的安装量甚至比红帽本身要大得多。本来…

Docker:深入探讨Kong开源API 网关的力量

1、简述 在当今数字化的时代,应用程序和服务之间的通信变得愈发复杂。为了简化和增强这种通信,开发者们经常使用API(Application Programming Interface)。API网关是管理、监控和安全维护API通信的关键工具之一。而在众多API网关中,Kong凭借其开源的特性、可扩展性和强大…

在Rust编程中使用泛型

1.摘要 Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。 2.在函数定义中使用泛型 当使用泛型定义函数时,本来在函…

Aerial for Mac: 沉浸在高清鸟瞰的世界,让你的屏幕焕发新生

你是否已经厌倦了那些平淡无奇的屏保程序?是否希望你的Mac屏幕能更生动、更有趣?如果你对此抱有强烈的期待,那么Aerial for Mac绝对会是你期待已久的解决方案。 Aerial for Mac是一款独具特色的高清屏保程序,它以鸟瞰的视角带你领…

【Android】带下划线的TextView

序言 我们有时候需要一个类似这样的显示,上面是文字,下面是一条线 这样的显示效果是TextView实现不了的,需要我们自己进行修改一下。 实现 创建一个UnderlineTextView,继承系统的TextView class UnderlineTextView(mContext…

[nlp] grad norm先降后升再降

grad norm先降后升再降正常嘛 在深度学习中,梯度的范数通常被用来衡量模型参数的更新程度,也就是模型的学习进度。在训练初期,由于模型参数的初始值比较随机,梯度的范数可能会比较大,这是正常现象。随着模型的训练&…

安装 eslint 配置指南 及 遇到的一些问题记录

前端eslint配置指南 背景 当前前端项目风格混乱,每个人有自己的开发习惯,有自己的格式化习惯,不便于项目的风格统一,不利于代码维护有的项目eslint没有用起来,没有起到规范代码的作用,导致出现一些基础代码…

RT-DETR优化策略:轻量级Backbone改进 | 高效模型 (Efficient MOdel, EMO),现代倒残差移动模块设计|ICCV2023

🚀🚀🚀本文改进:面向移动端的轻量化网络模型——EMO,它能够以相对较低的参数和 FLOPs 超越了基于 CNN/Transformer 的 SOTA 模型,支持四个版本EMO_1M, EMO_2M, EMO_5M, EMO_6M,参数量如下,相对于自带的rtdetr-l、rtdetr-x有很大提升 layersparametersgradientsEMO_1…

MySQL-事务

什么是事务 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的特性 (ACID) 原子性(Atomicity):事务是不…

C_11微机原理

一、单项选择题(本大题共 15 小题,每小题 3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。) .EXE 文件产生在()之后。 A.汇编 B. 编辑 C.用软件转换 D.连接 2,十进制-61的8位二进…