TLS协议基本原理与Wireshark分析
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最新整理)
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言扣1或者关注我我后台会主动发给你!
第一阶段:安全基础
网络安全行业与法规
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分析
01背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务进行…...
当遇到 502 错误(Bad Gateway)怎么办
很多安装雷池社区版的时候,配置完成,访问的时候可能会遇到当前问题,如何解决呢? 客户端,浏览器排查 1.刷新页面和清除缓存 首先尝试刷新页面,因为有时候 502 错误可能是由于网络临时波动导致服务器无法连…...
学习记录:js算法(七十五): 加油站
文章目录 加油站思路一思路二思路三思路四思路五 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发…...
强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断
强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断 目录 强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 EEMD-MPE-KPCA-LSTM(集合经验模态分解-多尺…...
yarn的安装与使用以及与npm的区别(安装过程中可能会遇到的问题)
一、yarn的安装 使用npm就可以进行安装 但是需要注意的一点是yarn的使用和node版本是有关系的必须是16.0以上的版本。 输入以下代码就可以实现yarn的安装 npm install -g yarn 再通过版本号的检查来确定,yarn是否安装成功 yarn -v二、遇到的问题 1、问题描述…...
大数据行业预测
大数据行业预测 编译 李升伟 和所有预测一样,我们必须谨慎对待这些预测,因为其中一些预测可能成不了事实。当然,真正改变游戏规则的创新往往出乎意料,甚至让最警惕的预言家也措手不及。所以,如果在来年发生了一些惊天…...
可能是NextJs(使用ssr、api route)打包成桌面端(nextron、electron、tauri)的最佳解决方式
可能是NextJs(使用ssr、api route)打包成桌面端(nextron、electron、tauri)的最佳解决方式 前言 在我使用nextron(nextelectron)写了一个项目后打包发现nextron等一系列桌面端框架在生产环境是不支持next的ssr也就是api route功能的这就导致我非常难受&…...
二百七十、Kettle——ClickHouse中增量导入清洗数据错误表
一、目的 比如原始数据100条,清洗后,90条正确数据在DWD层清洗表,10条错误数据在DWD层清洗数据错误表,所以清洗数据错误表任务一定要放在清洗表任务之后。 更关键的是,Hive中原本的SQL语句,放在ClickHouse…...
CentOS6升级OpenSSH9.2和OpenSSL3
文章目录 1.说明2.下载地址3.升级OpenSSL4.安装telnet 服务4.1.安装 telnet 服务4.2 关闭防火墙4.2.使用 telnet 连接 5.升级OpenSSH5.1.安装相关命令依赖5.2.备份原 ssh 配置5.3.卸载原有的 OpenSSH5.4.安装 OpenSSH5.5.修改 ssh 配置文件5.6关闭 selinux5.7.重启 OpenSSH 1.说…...
2024 年 MathorCup 数学应用挑战赛——大数据竞赛-赛道 A:台风的分类与预测
2024年MathorCup大数据挑战赛-赛道A初赛--思路https://download.csdn.net/download/qq_52590045/89922904↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓…...
kotlin实现viewpager
说明:kotlin tablayout viewpager adapter实现滑动界面 效果图 step1: package com.example.flushfragmentdemoimport androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment import androidx.viewpager2.adapter.…...
RabbitMQ最新版本4.0.2在Windows下的安装及使用
RabbitMQ 是一个开源的消息代理和队列服务器,提供可靠的消息传递和队列服务。它支持多种消息协议,包括 AMQP、STOMP、MQTT 等。本文将详细介绍如何在 Windows 系统上安装和使用最新版本的 RabbitMQ 4.0.2。 前言 RabbitMQ 是用 Erlang 语言开发的 AMQP&…...
东方博宜1180 - 数字出现次数
问题描述 有 50 个数( 0∼19),求这 50个数中相同数字出现的最多次数为几次? 输入 50 个数字。 输出 1 个数字(即相同数字出现的最多次数)。 样例 输入 1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 16 9 …...
LeetCode: 3274. 检查棋盘方格颜色是否相同
一、题目 给你两个字符串 coordinate1 和 coordinate2,代表 8 x 8 国际象棋棋盘上的两个方格的坐标。 以下是棋盘的参考图。 如果这两个方格颜色相同,返回 true,否则返回 false。 坐标总是表示有效的棋盘方格。坐标的格式总是先…...
datax编译并测试
mvn -U clean package assembly:assembly -Dmaven.test.skiptrue 参看:DataX导数的坑_datax插件初始化错误, 该问题通常是由于datax安装错误引起,请联系您的运维解决-CSDN博客 两边表结构先创建好: (base) [rootlnpg bin]# pwd /db/DataX-datax_v20230…...
2-133 基于matlab的粒子群算法PSO优化BP神经网络
基于matlab的粒子群算法PSO优化BP神经网络,BP神经网络算法采用梯度下降算法,以输出误差平方最小为目标,采用误差反向传播,训练网络节点权值和偏置值,得到训练模型。BP神经网络的结构(层数、每层节点个数)较复杂时&…...
复盘秋招22场面试(四)形势重新评估与后续措施
连续好多天睡不着觉,经常晚上起来好几次,到现在还是没offer。之前有个校友在抖音留言说我能收到这么多面试说明简历没问题,这么多一面挂,说明我技术面有问题。确实有一些是kpi面,但是我复盘之后我发现也没有那么多kpi面…...
揭开C++ STL的神秘面纱之string:提升编程效率的秘密武器
目录 🚀0.前言 🚈1.string 构造函数 🚝1.1string构造函数 🚝1.2string拷贝构造函数 🚈2.string类的使用 🚝2.1.查询元素个数或空间 返回字符串中有效字符的个数:size lenth 返回字符串目…...
用人工智能,应该怎么掏钱?
人工智能(AI)服务的发展正快速改变企业和开发者的工作方式,不仅提供了强大的数据分析和预测能力,还涵盖了从自然语言处理到图像识别的广泛功能。然而,理解AI服务的支付模式对成本控制和合理资源分配至关重要࿰…...
【Axure高保真原型】移动案例
今天和大家分享多个常用的移动案例的原型模板,包括轮盘滑动控制元件移动、页面按钮控制元件移动、鼠标单击控制元件移动、元件跟随鼠标移动、鼠标拖动控制元件移动、键盘方向键控制元件移动,具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原…...
Bytebase 3.0.0 - AI 助手全面升级
🚀 新功能 SQL 编辑器里的 AI 助手:支持将自然语言转换成 SQL 语句,解释 SQL 代码,还能帮助发现潜在问题。 支持 SQL Server DML 语句一键回滚。支持 MariaDB 的在线大表变更。新的 SQL 审核规则: 要求为 MySQL 设置 …...
php基础:数据类型、常量、字符串
语法补充: 每句必须以;结尾 echo:能输出一个以上的字符串,英文逗号隔开 print:只能输出一个字符串并返回1 1.数据类型 php可以自动识别数据类型。 php有5种数据类型:String(字符串…...
Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制
Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制 在当今互联网快速发展的时代,内容创作成为了网站运营、社交媒体管理和个人博客维护不可或缺的一部分。然而,高质量内容的创作往往耗时耗力,特别是对于需要频…...
el-table在某些条件下禁止选中
el-table在某些条件下禁止选中 废话不多说直接上代码 HTML部分 <el-table v-loading"loading" :data"wmsShipmentOrderList" ref"multipleTable" select"handleSelect" selection-change"handleSelectionChange">&…...
深入探讨 HTTP 请求方法:GET、POST、PUT、DELETE 的实用指南
文章目录 引言GET 方法POST 方法PUT 方法DELETE 方法小结适用场景与特点总结最佳实践 在 API 设计中的重要性 引言 HTTP 协议的背景:介绍 HTTP(超文本传输协议)作为互联网的基础协议,自 1991 年发布以来,成为客户端和…...
深度学习:元学习(Meta-Learning)详解
元学习(Meta-Learning)详解 元学习,也称为“学会学习”,是机器学习中的一个重要子领域,旨在开发能够快速适应新任务或环境的模型,即使这些任务的可用数据非常有限。元学习的核心思想是通过经验学习如何学习…...
uniapp展示本地pdf + 自定义标题
概要 本文主要讲述uniapp打包的Android项目如何展示本地的PDF文件,并设置标题 需求分析 1、因为是打包的Android项目展示本地的PDF文件,首先需要拿到这个本地的PDF文件路径 2、如何在uniapp的vue页面中展示PDF,因为没有直接展示PDF文件的…...
国标GB28181设备管理软件EasyGBS国标GB28181-2016平台更换SQLite数据库的步骤
在当今数字化、智能化的时代,视频监控系统已成为各行各业不可或缺的一部分。国标GB28181设备管理软件EasyGBS,作为一款功能强大的国标视频云服务平台,凭借其广泛的应用场景和卓越的性能,在智慧城市、智慧园区、智慧交通、智慧医疗…...
C++基础与实用技巧第三节:内存管理与性能优化
第二章:C基础与实用技巧 第三节:内存管理与性能优化 1. 动态内存的管理策略与技巧 动态内存管理是C编程的核心部分之一,合理管理内存可以极大提高程序的性能和稳定性。在C中,动态内存的分配和释放通常使用new和delete运算符&am…...
【移动应用开发】界面设计(二)实现水果列表页面
续上一篇博客 【移动应用开发】界面设计(一)实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖,并打开viewBinding (1)在app/build.gradle中添加…...
免费开源网站系统/今日新闻国家大事
经过上节DNS缓存服务器的搭建之后这里我们来详细说一下DNS服务器的详细配置经过一个简单的DNS缓存服务的搭建之后,我们大概知道DNS的几个知识点:(1)DNS服务器的架设需要上层DNS的授权才可以成为合法的DNS服务器;&#…...
wordpress好还是/网络推广外包公司
http://blog.csdn.net/u011997156/article/details/44806523转载于:https://www.cnblogs.com/BlogRegisterboby/p/6653974.html...
php能做手机网站吗/百度一下首页官网
我们怎么让一个 Python 程序里边实现多任务呢?实现多任务可以有多种方式,这里我们先了解使用线程的方式实现多任务。线程是实现多任务的一种的手段。其实用的是 threading 模块,threading 模块里有一个类叫 Thread。Python 的 thread 模块是比…...
什么大的网站是帝国cms做的/搜索引擎营销案例分析题
语法:wait 解析:wait语句是一种不可综合的电平触发事件控制语句,有如下两种形式: 用法1: wait(条件表达式) 语句/语句块; 【举例】 wait(evt_flag 1b1) begin uvm_hdl_release("test_top.dut.block1.a&quo…...
域名历史记录查询网站/商业推广
一、直方图均衡化目的 直方图过于集中,偏向左边太暗,偏向右边太亮,偏向中间太模糊;因此如要想让图像对比度更高,更容易看清楚一些细节,则需要直方图均衡化处理 二、直方图均衡化重要公式 其中 S 为 r 的映…...
最低价网站建设/百度商务合作联系
http://www.crazyant.net/1193.html最近在搭一套Hive测试环境,使用mysql存储hive的元数据,然而当执行一个带有中文注释的建表文件时,出现了中文乱码的问题。实验过程中发现把整个数据库编码改成latin1或者Utf8都不行,只有把整个数…...