TLS/SSL(传输层安全协议)

文章目录

    • 一、核心概念
    • 二、为什么需要 TLS/SSL?
    • 三、工作原理与详细流程
      • 握手步骤详解:
        • 1.ClientHello & ServerHello:
        • 2.服务器认证 (Certificate, ServerKeyExchange):
        • 3.客户端响应 (ClientKeyExchange, Finished):
        • 4.服务器确认 (Finished):
        • 5.安全通信 (Application Data):
    • 四、核心密码学技术
    • 五、关键特性:前向保密 (PFS)
    • 六、最佳实践与版本演进
    • 总结


TLS:(Transport Layer Security,传输层安全协议)
SSL:(Secure Socket Layer,安全套接字层)

一、核心概念

TLS 及其前身 SSL 是密码学协议,用于在两个通信应用程序之间通过网络(如互联网)提供端到端的安全通信。其主要目标是:

  1. 保密性 (Confidentiality):通过加密防止数据被窃听。
  2. 完整性 (Integrity):通过消息认证码 (MAC) 检测数据是否被篡改。
  3. 认证性 (Authentication):通过非对称加密公钥基础设施(PKI) 验证通信方的身份。
  • 位置:位于应用层协议(如 HTTP, FTP, SMTP)和传输层协议(TCP)之间,是 HTTPS 中的 ‘S’

注意:SSL 已被淘汰(存在如 POODLE 等漏洞)。现在普遍使用的是 TLS(如 TLS 1.2, TLS 1.3),但术语 “SSL” 仍被广泛沿用(如 “SSL 证书”)。

二、为什么需要 TLS/SSL?

没有 TLS,网络通信(HTTP、SMTP、FTP 等)以明文形式传输。攻击者可以轻松:

  • 窃听:获取敏感信息(密码、信用卡号)。
  • 篡改:修改通信内容。
  • 冒充:伪装成合法服务器(中间人攻击)。

TLS 在应用层和传输层(TCP)之间建立了一个安全的加密隧道,解决了所有这些问题。

可操作明文数据
仅见密文
无法破解
有TLS通信 安全
加密传输
防止窃听/篡改
服务器
客户端
无TLS通信 不安全
明文传输
可被窃听/篡改
服务器
客户端
攻击者

三、工作原理与详细流程

TLS 连接的核心是握手协议,其目的是在不安全的通道上安全地协商出用于后续加密通信的会话密钥。下图详细说明了基于 ECDHE 的现代 TLS 1.2 握手流程,该流程提供了前向保密 (PFS)

ClientServer1. 协商阶段 (Client/Server Hello)Client Hello- TLS 版本- 密码套件列表- 随机数_C- (SNI)Server Hello- 选定版本 & 密码套件- 随机数_S2. 服务器认证与密钥交换Certificate(服务器证书链)Server Key Exchange(ECDHE 参数:服务器临时公钥)Server Hello Done3. 客户端认证与密钥交换验证服务器证书Client Key Exchange(客户端临时公钥)Change Cipher Spec(准备加密)Finished(加密的验证消息)4. 服务器完成握手计算主密钥Change Cipher Spec(准备加密)Finished(加密的验证消息)5. 安全应用数据传输Application Data(加密的 HTTP 等)Application Data(加密的 HTTP 等)ClientServer

握手步骤详解:

1.ClientHello & ServerHello:
  • 协商参数:客户端发送支持的 TLS 版本、密码套件列表和一个随机数。服务器选择双方都支持的最高版本和最安全的套件,并返回自己的随机数。

  • 密码套件:格式为 TLS_密钥交换算法_认证算法_批量加密算法_散列算法(例:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)。

2.服务器认证 (Certificate, ServerKeyExchange):
  • 服务器发送其数字证书。该证书由受信任的**证书颁发机构 (CA) **签发,绑定了服务器的公钥与其身份(域名)。

  • 客户端验证证书的有效性、过期时间以及签名链,确认正在与合法的服务器通信。

  • 服务器发送其 ECDHE 临时公钥。这意味着密钥交换材料是临时的,提供了前向保密。

3.客户端响应 (ClientKeyExchange, Finished):
  • 客户端生成一个临时密钥对,并将其公钥发送给服务器。

  • 此时,双方都拥有:自己的临时私钥 + 对方的临时公钥 + ClientRandom + ServerRandom。他们使用 ECDH 算法独立计算出相同的预主密钥 (PMS)

  • PMS 通过一个伪随机函数 (PRF) 与两个随机数一起生成主密钥 (MS)

  • 客户端发送 ChangeCipherSpec 消息通知服务器后续消息将加密,并发送一个 Finished 消息,其中包含所有之前握手消息的加密摘要,以供服务器验证完整性。

4.服务器确认 (Finished):
  • 服务器同样发送 ChangeCipherSpec 和加密的 Finished 消息。

  • 客户端验证其 Finished 消息。

5.安全通信 (Application Data):
  • 握手完成,安全通道建立。主密钥被用于派生对称加密所需的会话密钥(如用于 AES 加密的密钥和用于 HMAC 的密钥)。

  • 应用层数据(如 HTTP)被分割、压缩(可选)、添加 MAC、加密,然后传输。

四、核心密码学技术

技术在 TLS 中的作用例子
非对称加密握手阶段:用于身份认证和安全地交换对称密钥。速度慢。RSA, ECDSA
对称加密应用数据阶段:使用共享的会话密钥高效加密大量数据。速度快。AES, ChaCha20
密钥交换在不安全的通道上建立共享秘密(预主密钥)。ECDHE (推荐), DHE
消息认证码 (MAC)保证数据的完整性,防止篡改。HMAC
数字证书基于 PKI,将公钥与所有者身份绑定,用于身份认证。X.509 证书

五、关键特性:前向保密 (PFS)

定义:即使攻击者记录了今天的加密通信,并在未来成功破解了服务器的长期私钥,他也无法解密之前记录的通信。

如何实现:通过使用 ECDHEDHE 等临时密钥交换算法。每次会话的预主密钥都是独立生成的,与服务器的长期私钥无关。长期私钥仅用于签名临时参数(身份认证),而不用于加密密钥交换材料。

六、最佳实践与版本演进

  • 禁用旧版本:明确禁用 SSLv2, SSLv3, TLS 1.0, TLS 1.1。

  • 优先使用 TLS 1.3:TLS 1.3 简化了握手(更快)、移除不安全的算法、并强制使用前向保密。

  • cipher Suite 优先级:优先配置支持 PFS 和强加密算法的套件(如 ECDHE 和 AES-GCM)。

  • 证书管理:使用来自可信 CA 的有效证书,或正确部署和信任自签名证书。

总结

TLS/SSL 是一个复杂而精妙的协议体系,它巧妙地融合了非对称加密(用于安全初始化)、对称加密(用于高效通信)、数字证书(用于建立信任)和密钥交换算法(用于实现前向保密)。
它是现代互联网安全的基石,确保了从网页浏览到移动支付等几乎所有在线活动的安全。

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

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

相关文章

什么是 AWS 和 GCE ?

AWS 和 GCE 是两种不同厂商提供的云计算服务,主要区别在于提供商和产品定位。AWS全称:Amazon Web Services提供商:亚马逊 (Amazon)简介:全球最大的云计算平台之一,提供完整的云服务,包括: 计算&…

水电站电动机绝缘安全 “不掉线”!在线监测方案筑牢发电保障

对水电站而言,消防水泵、深井水泵等辅助电动机是安全运行的 “关键配角”—— 它们常年处于备用状态,又受潮湿环境影响,绝缘值降低易引发烧毁故障,而传统定期检测难以及时捕捉绝缘劣化趋势,一旦启动时出问题&#xff0…

【Datawhale之Happy-LLM】3种常见的decoder-only模型——Github最火大模型原理与实践教程task07

Task07:第三章 预训练语言模型PLM (这是笔者自己的学习记录,仅供参考,原始学习链接,愿 LLM 越来越好❤) 本篇介绍3种很典的decoder-only的PLM(GPT、LlaMA、GLM)。目前火&#x1f52…

【卷积神经网络】卷积神经网络的三大核心优势:稀疏交互、参数共享与等变表示

1. 引言 卷积神经网络(CNN)之所以在计算机视觉、语音识别等领域取得突破性进展,并非偶然。相比传统的全连接神经网络,CNN通过三个重要的思想来帮助改进机器学习系统:稀疏交互(sparse interactions)、参数共享(parameter sharing)、等变表示(equivariant representations)。…

网络共享协议

网络共享协议是用于在计算机网络中实现资源共享和数据传输的规则或标准。常见的共享协议包括文件共享、打印机共享、互联网连接共享等。SMB(Server Message Block 服务器消息块)SMB是一种网络共享协议,主要用于局域网中实现不同设备之间的文件…

MD5加密算法详解与实现

MD5加密算法详解与实现 什么是MD5加密? MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的哈希值,通常用32位的十六进制数表示。MD5由Ronald Rivest在…

(nice!!!)(LeetCode 每日一题) 3025. 人员站位的方案数 I (排序)

题目:3025. 人员站位的方案数 I 思路:排序,时间复杂度0(n^2)。 将数组points里的元素先按横坐标x升序排序,纵坐标y降序排序。第一层for循环枚举左上角的点,第二层for循环枚举右下角的点。细节看注释。 C版本&#xff…

可可图片编辑 HarmonyOS(4)图片裁剪

可可图片编辑 HarmonyOS(4)图片裁剪-canvas 前言 可可图片编辑 实现了图片的裁剪功能,效果如图所示。这里的核心技术是使用了canvas。 Canvas 入门 Canvas提供画布组件,用于自定义绘制图形,开发者使用CanvasRenderi…

怎么用PS制作1寸证件照(已解决)

方法/步骤一、按住键盘上的“Ctrl”“O”打开你要制作的照片二、点击裁剪工具 (调整为宽:2.5cm,高:3.5cm,分辨率:300像素),设置之后直接框选出需要剪切保留的位置(使人物居正中), 然后按上面的“√”,以便确认剪裁三、…

Qt libcurl的下载、配置及简单测试 (windows环境)

Qt libcurl的下载、配置及简单测试引言一、libcurl下载二、在Qt Creator中配置三、简单测试引言 curl(Client URL)是一个开源的命令行工具和库,用于传输数据支持多种协议(如HTTP、HTTPS、FTP、SFTP等)。其核心库libcur…

【Python语法基础学习笔记】竞赛常用标准库

前言此系列笔记是拨珠自己的学习笔记,自用为主,学习建议移步其他大佬的专门教程。math库Python 的 math 库是标准库之一,提供了大量数学运算相关的函数,适用于基础数学计算、科学计算等场景。下面详细介绍其使用方法及常用功能&am…

我的项目我做主:Focalboard+cpolar让团队协作摆脱平台依赖

文章目录前言1. 使用Docker本地部署Focalboard1.1 在Windows中安装 Docker1.2 使用Docker部署Focalboard2. 安装Cpolar内网穿透工具3. 实现公网访问Focalboard4. 固定Focalboard公网地址前言 “项目管理软件又涨价了!“小团队负责人小林发愁——刚习惯操作逻辑&…

【3D 入门-4】trimesh 极速上手之 3D Mesh 数据结构解析(Vertices / Faces)

【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻【3D入门-指标篇下】 3D重建评估指标对比-附实现代码【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply Mesh 数据结构解析 1. Vertices(顶点) original_vertices mesh_ful…

无需服务器,免费、快捷的一键部署前端 vue React代码--PinMe

作为前端的开发,有时候想部署一个项目真的是很“受气”,要不就是找运维,或者后端,看别人的时间,或者走流程。 现在,有这么一个神器PinMe, 以前部署项目:自己买服务器?域名、 SSL、N…

【LeetCode_26】删除有序数组中的重复项

刷爆LeetCode系列LeetCode26题:github地址前言题目描述题目与思路分析代码实现算法代码优化LeetCode26题: github地址 有梦想的电信狗 前言 本文介绍用C实现leetCode第26题题目链接:https://leetcode-cn.com/problems/remove-duplicates-…

CMake构建学习笔记23-SQLite库的构建

1. 构建思路 在前文中构建了大量的库包程序(参看CMake构建学习笔记-目录)之后,可以总结一下在Windows下使用脚本构建程序的办法: 使用CMake构建。这是目前最通用最流行的构建方式,大部分C/C程序都在逐渐向这个方向转…

Watt Toolkit下载安装并加速GitHub

一、下载 官方地址:(Steam++官网) - Watt Toolkit Gitee下载地址:https://gitee.com/rmbgame/SteamTools/releases/tag/3.0.0-rc.16

DevOps运维与开发一体化及Kubernetes运维核心详解

前言: 在云原生时代,技术的融合与流程的重构已成为驱动业务创新的核心引擎。Kubernetes作为容器编排的事实标准,其稳定的运维能力是业务应用的基石;而DevOps所倡导的开发与运维一体化文化,则是实现快速交付和价值流动的…

HQX SELinux 权限问题分析与解决

Google自Android 5.0起强制实施的SELinux安全子系统,通过最小权限原则显著提升了系统安全性,但这也导致开发过程中频繁出现权限拒绝问题。值得注意的是,即便设备已获取root权限,SELinux的强制访问控制机制仍会限制部分敏感操作。 …

SpringBoot集成Kafka实战应用

目录 使用Kafka-Client实现消息收发 引入依赖 发送端: 消费端: SpringBoot集成 引入maven依赖 消费端 在上一篇我们深度解析了Kafka的运行操作原理以及集群消息消费机制等,请点击下方链接获取 Kafka消息队列深度解析与实战指南 本篇我…