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.大厂面试题    

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE----多线程(四)----阻塞队列的介绍和初步实现

文章目录 1.阻塞队列1.1作用一:解耦合1.2作用二:削峰填谷1.3系统里面的阻塞队列的使用1.4实现普通队列1.5在普通队列的基础上面实现阻塞队列1.6设计优化1.7实现初步的生产者消费者模型 1.阻塞队列 阻塞队列的最大意义:就是实现“生产者消费者…

Pyramidal Flow使用指南:快手、北大、北邮,开源可免费商用视频生成模型,快速上手教程

什么是 Pyramidal Flow? Pyramidal Flow 是由快手科技、北京大学和北京邮电大学联合推出的开源视频生成模型,它是完全开源的,发布在 MIT 许可证下,允许商业使用、修改和再分发。该模型能够通过文本描述生成最高10秒、分辨率为128…

铜业机器人剥片 - SNK施努卡

SNK施努卡有色行业电解车间铜业机器人剥片 铜业机器人剥片技术是针对传统人工剥片效率低下、工作环境恶劣及生产质量不稳定的痛点而发展起来的自动化解决方案。 面临人工剥片的诸多挑战,包括低效率、工作环境差、人员流动大以及产品质量控制不精确等问题。 人工剥片…

Idea基于JRbel实现项目热部署修改Java、Xml文件无需重启项目

Idea基于JRbel实现项目热部署修改Java、Xml文件无需重启项目 1.JRbel服务安装2.JRbel插件安装3.JRbel配置 1.JRbel服务安装 直接装插件的话,需要用到一个服务地址,服务下载链接:(现在没时间搞,会尽快加上)…

合合信息亮相PRCV大会,探讨生成式AI时代的内容安全与系统构建加速

一、前言 在人工智能技术的飞速发展下,生成式AI已经成为推动社会进步的重要力量。然而,随着技术的不断进步,内容安全问题也日益凸显。如何确保在享受AI带来的便利的同时,保障信息的真实性和安全性,已经成为整个行业待解…

Jmeter自动化实战

前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 创建录制模板 录制模板参考 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制粘贴的的全面导致接…

Flutter TextField和Button组件开发登录页面案例

In this section, we’ll go through building a basic login screen using the Button and TextField widgets. We’ll follow a step-bystep approach, allowing you to code along and understand each part of the process. Let’s get started! 在本节中,我们…

NVIDIA发布Nemotron-70B-Instruct,超越GPT-4o和Claude 3.5的AI模型

一、Nemotron-70B-Instruct 是什么 Nemotron-70B-Instruct 是由 NVIDIA 基于 Meta 的 Llama 3.1-70B 模型开发的先进大语言模型(LLM)。该模型采用了新颖的神经架构搜索(Neural Architecture Search,NAS)方法和知识蒸馏…

【华为HCIP实战课程二十】OSPF特殊区域NSSA配置详解,网络工程师

一、NSSA(Not So Stubby Area)区域 在NSSA区域内可以拥有ASBR,并且重分发进入OSPF的路由是以7类LSA形式存在,该类型的LSA只能存在于NSSA区域内不接收5类LSA,ABR过滤外部进入该区域的4 5类LSA,可以引入外部…

题解 力扣 LeetCode 739 每日温度 C++

题目传送门: 739. 每日温度 - 力扣(LeetCode)https://leetcode.cn/problems/daily-temperatures/description/ 思路: 就是单调栈的思路,具体见代码 不知道单调栈的,可以看我的这篇文章: 数…

web3对象如何连接以太网络节点

实例化web3对象 当我们实例化web3对象,我们一般开始用本地址,如下 import Web3 from web3 var web3 new Web3(Web3.givenProvider || ws://localhost:5173)我们要和以太网进行交互,所以我们要将’ws://localhost:5173’的本地地址换成以太…

【Linux学习】(6)编译器gcc/g++

前言 本节重点:掌握gcc/g编译器的使用,并了解其过程,原理 一、Linux编译器-gcc/g使用 1. gcc/g的基本使用 在前面我们学习了vim,知道如何在Linux中编写代码。但又是如何编译代码的?——在Linux中我们编译代码使用的是…

UDP(用户数据报协议)端口监控

随着网络的扩展,确保高效的设备通信对于优化网络功能变得越来越重要。在这个过程中,端口发挥着重要作用,它是实现外部设备集成的物理连接器。通过实现数据的无缝传输和交互,端口为网络基础设施的顺畅运行提供了保障。端口使数据通…

Linux中安装配置SQLite3,并实现C语言与SQLite3的交互。

前言 SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。本次实验介绍在Linux上实现C语言和SQLite3的交互,利用C语言编写相关语句,连接数据库、操作数…

【数据结构初阶】二叉树---堆

二叉树-堆的实现 一、树的概念(什么是树)二、二叉树的概念及结构2.1 二叉树的概念2.2 二叉树的性质2.3 二叉树存储结构 三、二叉树的顺序结构3.1 堆的概念及结构3.2 堆的向下调整算法3.3堆的创建 四、堆的代码实现4.1 堆的初始化4.2 堆的销毁4.3 堆的插入…

如何从iconfont中获取字体图标并应用到微信小程序中去?

下面我们一一个微信小程序的登录界面的制作为例来说明,如何从iconfont中获取字体图标是如何应用到微信小程序中去的。首先我们看效果。 这里所有的图标,都是从iconfont中以字体的形式来加载的,也就是说,我们自始至终没有使用一张…

jenkins 自动化部署Springboot 项目

一、安装docker 1.更新yum命令 yum -y update2.查看机器有残留的docker服务,有就卸载干净 查看docker 服务 rpm -qa |grep docker卸载docker sudo yum remove docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/contai…

linux下的进程等待(wait、waitpid)

目录 引言 进程等待的必要性 见见猪跑:是什么 怎么办 多个子进程时 阻塞等待 非阻塞轮询 参数一: 参数二 进程等待的原理 进程退出相关的宏 第三个参数option(设置等待的方式) 引言 在Linux操作系统中,进程…

Jmeter实际应用

环境准备 JDK1.8Jmeter 5.6.3 下载地址Jmeter 插件 下载地址 放到lib/ext下 常用命令 # 启动 sh jmeter# 集群模式下启动节点,不启动用不了集群 sh jmeter-server#生成ssl需要的证书, 这里会要求输入个密码,是要在jmeter中用的 keytool -import -ali…

Claude Financial Data Analyst:基于Claude的金融数据分析工具!免费开源!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…