TLS协议基本原理与Wireshark分析_wireshark分析tls协议

01****背 景
随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务进行广泛通信,这种高度互联的状态也使得车辆系统更容易受到各种潜在的威胁和攻击。
通信安全问题在车联网中尤为突出,可能面临诸如数据窃取、信息篡改、恶意注入以及拒绝服务等多种威胁。黑客可能试图获取车辆传感器和控制单元的敏感信息,篡改车辆间的通信数据,甚至远程控制车辆执行危险操作。这些潜在的威胁对驾驶安全、车辆保障以及交通管理都构成了巨大的挑战。
为了有效应对这些安全威胁,通信安全加密成为车联网中的关键环节。在这一背景下,传输层安全协议(TLS)作为一种通用的安全通信协议,为车辆通信提供了可靠的安全保护。通过强化数据的保密性、完整性和身份验证,TLS在车联网中发挥着至关重要的作用,有效应对通信安全所面临的复杂挑战。
02 TLS 基本原理
2.1 基本介绍
传输层安全协议(TLS)是一种加密通信协议,用于确保在网络上的数据传输过程中的安全性和隐私保护。TLS的前身是安全套接层协议(SSL),后来在标准化过程中发展成为TLS。TLS协议的主要目标是通过加密和认证机制,保护网络通信的机密性、完整性和身份验证,以抵御可能的网络攻击和窃听。
TLS协议主要通过以下方式实现安全通信:
**加密(Encryption):**使用加密算法对传输的数据进行加密,确保在传输过程中数据不被未授权的第三方读取或修改。
**认证(Authentication):**通过数字证书等机制验证通信双方的身份,确保通信的对端是合法的,并防止中间人攻击。
**完整性保护(Integrity Protection):**使用消息摘要算法(如哈希函数)来验证数据在传输过程中是否被篡改,以保障数据的完整性。
TLS协议广泛应用于互联网通信中,尤其在Web浏览器与服务器之间的安全通信中扮演关键角色。当用户访问使用“https://”协议的网站时,TLS协议就会启动,确保用户与网站之间的数据传输是安全可信的。TLS协议的不断升级和改进也反映了对网络安全不断演进的需求。
2.2 TLS握手过程
2.2.1 TLS 1.2 握手过程
TLS(Transport Layer Security)握手过程是确保安全通信的关键步骤,它涉及到协商加密算法、验证通信双方的身份,并生成用于加密通信的会话密钥,通常包含以下几个流程:
**客户端发出请求(ClientHello)。**在此流程中,客户端会提供如下信息:
-
客户端生成一个随机数,称为ClientRandom,这个随机数的目的是在握手过程中引入熵(entropy),增加通信的随机性,提高安全性;
-
客户端会列举支持的加密算法、摘要算法以及密钥交换算法等。这是为了告知服务器它可以使用哪些算法来保护通信;
-
客户端会提供其他通信参数,例如支持的压缩算法等。这些参数提供了有关客户端支持的通信设置的信息。
使用Wireshark打开包含TLS ClientHello数据的流量包时,通常可以看到如下内容:
ClientHello:
Random: [随机数]
CipherSuites: [支持的加密算法列表]
CompressionMethods: [支持的压缩算法列表]
Extensions: [其他扩展,例如SNI(Server Name Indication)] 
图1 ClientHello示意图
ClientHello的目标是为服务器提供足够的信息,以便服务器能够做出响应,并在握手过程中建立一个安全的通信通道。服务器将使用这些信息来选择合适的加密算法、生成自己的随机数、以及执行其他必要的步骤来协商出一个安全的连接。
**服务器回应(SeverHello)。**在此流程中,服务器会回复以下信息:
-
服务器会生成一个随机数,称为ServerRandom。类似于ClientRandom,它增加了握手过程的熵,提高了通信的随机性和安全性;
-
服务器从客户端提供的加密算法列表中选择一个算法,用于后续的通信加密;
-
服务器确认客户端提供的其他通信参数,例如TLS版本、压缩算法等;
-
如果服务器支持会话缓存和复用,还会生成一个Session ID发送给客户端。客户端可以在未来的握手中使用该Session ID来恢复先前的会话状态,以加速握手过程。
使用Wireshark打开包含TLS ServerHello数据的流量包时,通常可以看到如下内容:
ServerHello:
Random: [随机数]
CipherSuite: [选择的加密算法]
CompressionMethod: [选择的压缩算法]
Session ID: [会话标识,如果支持会话复用]
Extensions: [其他扩展,例如支持的应用层协议(ALPN)]

图2 ServerHello示意图
**客户端回应。**在此流程中,客户端会回复以下信息:
客户端和服务器使用已经在之前握手步骤中交换的随机数生成一个预主密钥,称为Pre-Master Secret,并使用服务器的公钥进行加密,发送给服务器。
**服务器再次回应。**在此流程中,服务器会回复以下信息:
服务器收到客户端传输的加密信息后,使用其私钥解密并获得 Pre-Master Secret。
服务器和客户端使用已经交换的随机数和 Pre-Master Secret 生成一个 Master Secret(主密钥)。
随后,客户端发送ChangeCipherSpec消息给服务器,通知服务器从此时开始使用新生成的密钥加密通信内容,服务器同样给出回应,至此,整个握手阶段全部结束。

图3 ChangeCipherSpec示意图
2.2.2 TLS双向认证
单向认证和双向认证是TLS常用的两种身份验证机制,它们的主要区别在于验证的参与方和方式。
单向认证是指单向认证仅验证一方的身份,通常是客户端验证服务器的身份,确保客户端连接到合法的服务器。流程与上述握手过程相同。单向认证适用于大多数互联网服务,服务提供商或服务的拥有者验证其身份,而客户端无需提供身份验证。
双向认证是指通信过程中需要验证两方的身份。客户端请求连接服务器,服务器提供数字证书,客户端验证服务器的身份;同时,客户端也会发出CertificateRequest请求,要求客户端也提供数字证书,服务器发送Certificate验证至客户端的身份,至此,双向认证完成。双向认证通常用于对通信安全性要求较高的场景,例如在线支付、云服务、金融应用等,确保通信的双方都是合法的。

图4 Certificate示意图
2.3 TLS 1.3
2.3.1 握手过程
TLS 1.3在握手过程上进行了一些改进,提高安全性和性能。在上述的TLS 1.2握手过程中,通常需要进行ClintHello、ServerHello、两次密钥交换,共两个来回的完整握手过程,而在TLS 1.3中将Hello和密钥交换过程进行了合并,有效减少了握手次数。

图5 TLS 1.3中ServerHello直接进行了密钥交换
2.3.2 其他改进
1)删除不安全算法支持:
TLS 1.3弃用了一些不安全或弱密码算法,进一步提高了安全性。例如,去除了对MD5、SHA-1、RC4等算法的支持。
2)使用HKDF进行密钥派生:
TLS 1.3使用基于HMAC的密钥派生函数(HKDF)来派生密钥材料,增强了密钥派生的安全性。
3)提供前向保密:
TLS 1.3使用Diffie-Hellman密钥交换算法的TLS 1.3握手过程中,提供了前向保密性,保证即使服务器的长期私钥泄漏,以前的通信也不会受到影响。
4)支持0-RTT恢复:
TLS 1.3引入了支持0-RTT(零轮往返时间)的特性,允许客户端在第一次连接时发送数据,从而进一步提高性能。
03 结 语
通过以上对TLS的介绍,希望大家能够对TLS原理有更清晰的认识,能够使用wireshark对TLS流量包进行简单的分析。如今TLS在车联网中扮演着关键的角色,通过加密、身份验证和完整性保护等机制,为车辆之间和车辆与基础设施之间的通信提供了可靠的安全保障。这对确保车辆网络的稳定性、用户隐私和远程控制的安全性都至关重要。
网络安全学习路线 (2024最新整理)

如图片过大被平台压缩导致看不清的话,可以点击下方蓝色字 即可免费领取↓↓↓
《网络安全学习路线》
第一阶段:安全基础
网络安全行业与法规
Linux操作系统
计算机网络
HTML PHP Mysql Python基础到实战掌握
第二阶段:信息收集
IP信息收集
域名信息收集
服务器信息收集
Web网站信息收集
Google hacking
Fofa网络安全测绘
第三阶段:Web安全
SQL注入漏洞
XSS
CSRF漏洞
文件上传漏洞
文件包含漏洞
SSRF漏洞
XXE漏洞
远程代码执行漏洞
密码暴力破解与防御
中间件解析漏洞
反序列化漏洞
第四阶段:渗透工具
MSF
Cobalt strike
Burp suite
Nessus Appscea AWVS
Goby XRay
Sqlmap
Nmap
Kali
第五阶段:实战挖洞
漏洞挖掘技巧
Src
Cnvd
众测项目
热门CVE漏洞复现
靶场实战
学习资料的推荐
学习框架已经整理完毕,现在就差资料资源了,我这里整理了所有知识点对应的资料资源文档,大家不想一个一个去找的话,可以参考一下这些资料!
1.视频教程

2.SRC技术文档&PDF书籍

3.大厂面试题


特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。
相关文章:
TLS协议基本原理与Wireshark分析_wireshark分析tls协议
01****背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务…...
【359】基于springboot的智慧草莓基地管理系统
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本智慧草莓基地管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...
【智能算法应用】遗传算法求解车间布局优化问题
摘要 本文研究了基于遗传算法(Genetic Algorithm, GA)的车间布局优化方法。遗传算法是一种基于自然选择和遗传机制的优化算法,通过编码布局方案、交叉和变异操作生成新的布局个体,选择最优的车间布局方案。实验结果表明ÿ…...
java 中List 的使用
List集合是Collection接口的子接口,其下有两个实现类分别为ArrayList和 LinkedList List是一个接口,不能用new创建对象,需要用 ArrayList类 和 LinkedList类 来创建 特点 有序:存储元素的顺序和取出元素的顺序一致可以重复&…...
CSS学习之Grid网格布局基本概念、容器属性
网格布局 网格布局(Grid)是将网页划分成一个个网格单元,可任意组合不同的网格,轻松实现各种布局效果,也是目前CSS中最强大布局方案,比Flex更强大。 基本概念 容器和项目 当一个 HTML 元素将 display 属性…...
前后端交互接口(二)
前后端交互接口(二) 前言 在上一集我们约定了我们前后端交互接口的三条规则。这一集我们就先来看一看我们的一些proto文件。 浅看proto文件 在看文件之前,还是简单谈谈Protobuf Protobuf通过一个.proto文件定义数据结构,这个…...
HarmonyOs DevEco Studio小技巧28--部分鸿蒙生命周期详解
目录 前言 页面和自定义组件生命周期 页面生命周期 onPageShow --- 表示页面已经显示 onPageHide --- 表示页面已经隐藏 onBackPress --- 表示用户点击了返回键 组件生命周期 aboutToAppear --- 表示组件即将出现 onDidBuild --- 表示组件已经构建完成 aboutToDisap…...
STM32(hal库)的msp初始化HAL_TIM_Base_MspInit有什么用?为什么单独设置这个,而不是在timer_init()函数里直接初始化?
在STM32 HAL库中,HAL_TIM_Base_MspInit 函数是一个与定时器(TIM)相关的底层初始化函数,其名称中的 "Msp" 代表 MCU Service Package(微控制器服务包),这是HAL库的一部分,用…...
三品PLM系统如何规范企业图纸文档资料电子化管理
三品PLM系统如何规范企业图纸文档资料电子化管理 图纸文档是企业设计、生产、管理的重要信息载体,是产品设计与生产维护的关键。传统纸质归档已无法满足现代需求,电子化管理成为提升效率和文档一致性的重要手段。然而,许多企业在实施电子化管…...
鸿蒙开发:arkts 如何读取json数据
为了支持ArkTS语言的开发,华为提供了完善的工具链,包括代码编辑器、编译器、调试器、测试工具等。开发者可以使用这些工具进行ArkTS应用的开发、调试和测试。同时,华为还提供了DevEco Studio这一一站式的开发平台,为运行在Harmony…...
Java学习篇之JVM 调优
Java学习篇之JVM 调优 一、JVM 是什么?二、JVM 官方参数建议三、JVM调优的场景四、如何监控JVM五、JVM调优的流程步骤1. 明确优化目标2. 监控和分析3. 确定调优参数4. 实施调优策略5. 持续观察和调整6. 定期评估和优化 一、JVM 是什么? JVM,…...
LangChain上使用huggingface的embedding模型(如jina-embeddings-v3)
一、背景知识 embedding将文本映射到稠密的向量空间中,方便存储和查询。 huggingface的embedding榜单 这里结合自己的应用场景,选择1b以下的embedding模型,综合考量下选择arkohut/jina-embeddings-v3 模型链接 下载 使用模型卡片提供的命令…...
对象优化及右值引用优化(一)
对象优化及右值引用优化 对象的函数调用时机 class Test { public:Test(int val 0) :val_(val) {cout << "Test::Test" << endl;}~Test(){cout << "Test::~Test" << endl;}Test(const Test& test){cout << "Tes…...
江西省技能培训平台(逆向破解登录国密SM2)
江西省技能培训平台(逆向破解登录) 登录破解(国密sm2加密方式) 请求接口 https://api.cloud.wozhipei.com/auth/user/v1/login 使用身份证和密码登录发现有password加密,好开始逆向js 全局搜索发现使用国密SM2进行加密 模拟算法 js 使用js进行模拟算法 <…...
用万用表测量三极管:【判断是NPN\PNP+3极性】
三极管种类分2种,一种NPN型三极管,另外一种为PNP三极管。三极管由2个PN结组成。因此,我们可以将三极管看作由2个二极管组成。通过下图可以知道,三极管的公共端为B极(基极)。 1:测量方法 用万用…...
StableDiffusion系列教程 | 什么是SD?SD能做什么?有哪些应用场景?
随着人工智能技术的飞速发展,人工智能应用已经渗透到我们生活方方面面。在众多AI技术中,Stable Diffusion(简称SD)作为一种先进的图像生成技术,正逐渐成为创意产业的新宠。在本系列的首篇文章中,我们将一起…...
AutoCAD的Dwg版本代号、R版本参数值以及二次开发时VS、.NET版本关系
Dwg的AC版本代号 出处:https://www.autodesk.com.cn/support/technical/article/caas/sfdcarticles/sfdcarticles/CHS/drawing-version-codes-for-autocad.html 以下是AutoCAD图形的不同版本代号: MC0.0 - DWG Release 1.1 AC1.2 - DWG R1.2 AC1.4 - DW…...
解密可观测行业中的语义规范 — 代码世界中的“语言艺术”
可观测行业中的语义规范 语义规范可以说在我们生活中无处不在,它为某种语言或文化中的单词和短语提供了一致的意义,以促进更清晰的交流。 而在计算机世界中,语义规范也同样甚至更加关键,因为屏幕上的文本缺乏更丰富的对话环境—…...
esp32 ap httpsever 控制led
功能:浏览器/open 开 led /close 关led 如不关,则亮灯10秒自动关闭 已买220v 转5V电源,5V固态继电器,开始组装无线开关。 代替家里华为的hlink灯泡,此灯必须要连入网络才能控制开和关,经常时灵时不…...
告别复杂判断!Python中实现函数重载的终极技巧
引言 说到函数重载,学过 Java 的同学应该不陌生,最常用的地方应该就是打印 log 了,对于不同的参数,调用的是不同的重载函数。那么 Python 如何实现函数重载呢? 重载概念 函数重载是指在同一作用域内,允许…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
