TLS传输协议

article/2025/10/16 22:15:20

TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。

该协议由两层组成:TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。

传输层安全性协议(英语:Transport Layer Security,缩写TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

概论:

TLS协议采用主从式架构模型,用于在两个应用程序间透过网络创建起安全的连接,防止在交换数据时受到窃听及篡改

TLS协议的优势是与高层的应用层协议(如HTTP、FTP、Telnet等)无耦合。应用层协议能透明地运行在TLS协议之上,由TLS协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过TLS协议时都会被加密,从而保证通信的私密性。

TLS协议是可选的,必须配置客户端和服务器才能使用。主要有两种方式实现这一目标:一个是使用统一的TLS协议通信端口(例如:用于HTTPS的端口443);另一个是客户端请求服务器连接到TLS时使用特定的协议机制(例如:邮件、新闻协议和STARTTLS)。一旦客户端和服务器都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据。通过握手,客户端和服务器协商各种参数用于创建安全连接。

 

(1).client_hello
    客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下:
    • 支持的最高TSL协议版本version,从低到高依次 SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,当前基本不再使用低于 TLSv1 的版本;
    • 客户端支持的加密套件 cipher suites 列表, 每个加密套件对应前面 TLS 原理中的四个功能的组合:认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要 Mac(完整性校验);
    • 支持的压缩算法 compression methods 列表,用于后续的信息压缩传输;
    • 随机数 random_C,用于后续的密钥的生成;
    • 扩展字段 extensions,支持协议与算法的相关参数以及其它辅助信息等,常见的 SNI 就属于扩展字段,后续单独讨论该字段作用。
(2).server_hello+server_certificate+sever_hello_done
    • server_hello, 服务端返回协商的信息结果,包括选择使用的协议版本 version,选择的加密套件 cipher suite,选择的压缩算法 compression method、随机数 random_S 等,其中随机数用于后续的密钥协商;
    • server_certificates, 服务器端配置对应的证书链,用于身份验证与密钥交换;
    • server_hello_done,通知客户端 server_hello 信息发送结束;

(3).证书校验
    客户端验证证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下:
    • [证书链]的可信性 trusted certificate path,方法如前文所述;
    • 证书是否吊销 revocation,有两类方式离线 CRL 与在线 OCSP,不同的客户端行为会不同;
    • 有效期 expiry date,证书是否在有效时间范围;
    • 域名 domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析;
(4).client_key_exchange+change_cipher_spec+encrypted_handshake_message
    (a) client_key_exchange,合法性验证通过之后,客户端计算产生随机数字 Pre-master,并用证书公钥加密,发送给服务器;
    (b) 此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数 random_C 和 random_S 与自己计算产生的 Pre-master,计算得到协商密钥;
    enc_key=Fuc(random_C, random_S, Pre-Master)
    (c) change_cipher_spec,客户端通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信;
    (d) encrypted_handshake_message,结合之前所有通信参数的 hash 值与其它相关信息生成一段数据,采用协商密钥 session secret 与算法进行加密,然后发送给服务器用于数据与握手验证;
(5).change_cipher_spec+encrypted_handshake_message
    (a) 服务器用私钥解密加密的 Pre-master 数据,基于之前交换的两个明文随机数 random_C 和 random_S,计算得到协商密钥:enc_key=Fuc(random_C, random_S, Pre-Master);
    (b) 计算之前所有接收信息的 hash 值,然后解密客户端发送的 encrypted_handshake_message,验证数据和密钥正确性;
    (c) change_cipher_spec, 验证通过之后,服务器同样发送 change_cipher_spec 以告知客户端后续的通信都采用协商的密钥与算法进行加密通信;
    (d) encrypted_handshake_message, 服务器也结合所有当前的通信参数信息生成一段数据并采用协商密钥 session secret 与算法加密并发送到客户端;

(6).握手结束
    客户端计算所有接收信息的 hash 值,并采用协商密钥解密 encrypted_handshake_message,验证服务器发送的数据和密钥,验证通过则握手完成;
(7).加密通信
    开始使用协商密钥与算法进行加密通信。
注意:
    (a) 服务器也可以要求验证客户端,即双向认证,可以在过程2要发送 client_certificate_request 信息,客户端在过程4中先发送 client_certificate与certificate_verify_message 信息,证书的验证方式基本相同,certificate_verify_message 是采用client的私钥加密的一段基于已经协商的通信信息得到数据,服务器可以采用对应的公钥解密并验证;
    (b) 根据使用的密钥交换算法的不同,如 ECC 等,协商细节略有不同,总体相似;
    (c) sever key exchange 的作用是 server certificate 没有携带足够的信息时,发送给客户端以计算 pre-master,如基于 DH 的证书,公钥不被证书中包含,需要单独发送;
    (d) change cipher spec 实际可用于通知对端改版当前使用的加密通信方式,当前没有深入解析;
    (e) alter message 用于指明在握手或通信过程中的状态改变或错误信息,一般告警信息触发条件是连接关闭,收到不合法的信息,信息解密失败,用户取消操作等,收到告警信息之后,通信会被断开或者由接收方决定是否断开连接。

 


http://chatgpt.dhexx.cn/article/mqEBEt8b.shtml

相关文章

LVGL misc tlsf算法(lv_tlsf.c)

更多源码分析请访问:LVGL 源码分析大全 目录 1、概述2、算法特点3、同类型算法举例1、概述 LVGL采用的内存分配器是使用的tlsf算法。因为这个算法只是一个实时系统常用的算法,可以看作是一个工具,对LVGL本身并没有逻辑上的关联,所以这里只介绍一下算法的基本知识,就不过…

TLS/SSL 协议详解(17) Certificate verify

发送这个类型的握手需要2个前提条件 (1):服务器端请求了客户端证书 (2):客户端发送了非0长的证书 此时,客户端想要证明自己拥有该证书,必然需要私钥签名一段数据发给服务器验证。 …

HTTPS之TLS证书

文章目录 一. TLS概述1. TLS概述2. HTTPS 协议栈与 HTTP 的唯一区别3. TLS协议版本 二. TLS证书格式1. 概述2. 示例:知乎网站证书解析(mac系统)3. 通过openssl获取证书的含义 三. 证书链(Certificate Chain)1. 背景2. 概述3. 背景问题的解释 …

SSL和TLS简单概述

SSL和TLS简单概述 本文不会只有几个比较重要的概念,科普性质的文章,方便自己记忆,极大概率存在缺陷 如果想了解这方面的内容,请参阅官方文档。 SSL和TLS TLS是更安全版本的ssl,先出的的ssh,一个基于加密机制的应用,之后为了方便给其他应用层使用然后引入了ssl,最…

动态内存管理——tlsf

定义 TLSF(全称Two-Level Segregated Fit) 源码 https://github.com/mattconte/tlsf 代码 结构体 typedef struct block_header_t {/* 指向上一个物理块。*/struct block_header_t * prev_phys_block;/* 此块的大小,不包括块头。*/size_t size;/* 下一个和上一…

SSL与TLS协议详解

写在最前面的话:这篇文章是我借鉴了Eric Rescorla的《SSL and TLS》一书之后对该书的前半部分内容整合而做。如您需要开发围绕SSL、TLS的程序建议参阅原著或者RFC相关文档。 一、关于SSL、TLS与HTTPS的三两事 什么是SSL、TLS: 众所周知,真…

TLS协议/SSL协议

历史背景 SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后写入&#xf…

TLS加密体系

谈到这个词,可能大家的第一印象就是加密,而对TLS了解甚少。那么在介绍 TLS 加密体系之前先来讲一讲加密。 一提到加密,可能很多人脑海中会浮现出电视剧里特务的场景,他们拿出一台电报机,“滴滴滴滴”按下情报报文&…

TLS概述

握手过程 可分为5步(使用Diffie – Hellman算法): 第一步,浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。 第二步,服务器确认双方使用的…

SSL与DTLS简介

目录 SSL简介 DTLS-基于UDP的TLS 记录层 传输层映射 早期我们在访问web时使用HTTP协议,该协议在传输数据时使用明文传输,会带来了以下风险: 信息窃听风险,第三方可以获取通信内容; 信息篡改风险,第三方…

TLS/SSL 协议

TLS/SSL 协议的工作原理 TLS/SSL 协议的工作原理 • 身份验证 • 保密性 • 完整 TLS/SSL 发展 TLS 协议 • Record 记录协议 • 对称加密 • Handshake 握手协议 • 验证通讯双方的身份 • 交换加解密的安全套件 • 协商加密参 TLS 安全密码套件解 对称加密的工作原理&am…

SSL/TLS详解

SSL/TLS详解 1. 前言 ​ 我们都知道Https就是加密协议中采用了SSL/TLS协议,这是面试常客,如果被问到了,你懂的越多,答得越深,你的面评相应来说也就会越高,对于SSL/TLS,我们不仅仅要知道其为数…

TLS协议简单介绍

TLS简介 介绍 TLS(Transport Layer Security)即安全传输层协议,在两个通信应用程序之间提供保密性和数据完整性。最典型的应用就是HTTPS。HTTPS,即HTTP over TLS,就是安全的HTTP,运行在HTTP层之下&#x…

esp-idf的内存管理——tlsf之上的封装

目录 1 为什么要封装2 先看结构2.1 multi heapnote1note2 2.2 heap caps2.3 层次关系 3 再看接口3.1 内存的申请3.2 内存的释放3.2 堆完整性检测3.3 其它 参考 1 为什么要封装 封装通常会降低效率,但能够带来诸如通用性提升等好处,idf在tlsf的基础上增加…

SSL/TLS 证书管理

SSL 证书发现 随着组织的 IT 基础架构的扩展,他们为每台计算机获取证书以保护其资源和域。此外,开发人员通常会创建许多自签名证书,以便在产品的开发阶段保护内部网络。组织通常最终会拥有数千个证书。自动发现证书提供了对证书基础结构的完…

TLS协议。

IPSec通过安全关联实现IP分组安全关联两端之间的安全传输过程,TLS通过建立安全连接实现数据在两个应用进程之间的安全传输过程。TLS建立安全连接时,实现安全连接两端应用进程之间的双向身份鉴别过程,保证经过安全连接传输的数据的保密性和完整…

SSL/TLS协议

SSL/TLS协议 文章目录 SSL/TLS协议1 协议历史2 协议的目标3 SSL体系结构4 两个主要的协议5 SSL的两个重要概念6 会话状态参数7 连接状态参数8 SSL Record Protocol9 SSL记录协议中的操作10 SSL握手协议使用的消息11 SSL握手协议的流程 1 协议历史 1994年Netscape开发了SSL(Sec…

tls协议

tls 前言一、TLS 协议的组成二、ECDHE1.连接过程 三、TLS1.31.过程 前言 tls是ssl协议的标准化,处于应用层(5层架构)和会话层(OSI),有着rsa方式和ecdhe两种, 一、TLS 协议的组成 握手协议:负责在客户端和服务器之间协商决定密码算…

TLS协议详解!

TLS简介 SSL 即安全套接字层,它在 OSI 七层网络模型中处于第五层,SSL 在 1999 年被 IETF(互联网工程组)更名为 TLS ,即传输安全层,直到现在,TLS 一共出现过三个版本,1.1、1.2 和 1.3 ,目前最广…

esp-idf的内存管理——tlsf算法

目录 1 最初还不是tlsf2 为什么要引入tlsf3 tlsf算法概览4 idf中使用的tlsf算法的设计与实现4.1 先看结构4.1.1 管理内存块的结构4.1.2 管理tlsf堆的结构 4.2 优化内存块的元数据开销4.3 一二级位图索引的计算4.4 tlsf堆的创建与销毁4.4.1 tlsf堆的创建4.4.2 tlsf堆的销毁 4.5 …