QUIC协议包头保护(四)

news2024/11/16 6:03:05

一:为什么要有包头保护

        学过HTTP和HTTPS都知道,随着网络的普及,人们对于信息的保护,个人的隐私越发的重视。信息加密对于未来协议的发展肯定是越来越趋于严格。QUIC作为新生代的协议,必然要站着前辈的肩膀上发展,对于报文中信息的保护肯定比前辈更加的严格,载荷加密不谈,QUIC甚至在包头上都进行了加密。

        其实翻开QUIC的发展历程,并不是QUIC诞生之初就对包头进行了加密,早期的QUIC包头是明文,其实包头就是协议的一些必要字段,并不承载用户的信息,直到QUIC的第一个发行版本RFC9000出世,将包头保护作为协议的一个特性,那为什么要对QUIC的包头进行加密呢。

 1,最大限度降低被网络中间件解析

        在我们的网络中,会有解析协议的中间件,比如运营商部署的DPI设备,或者企业自己部署的协议解析设备。除开运营商的国家行为,私设的DPI设备我们要尽力保护每一个保护的信息,包头保护虽然在算法上是公开的,但是如果要去解析必然要耗费大量的算力,这在一定程度上起到了保护隐私的作用。

2,最大限度降低被中间件拦截的概率

        网络中可能部署有软件或者硬件,用于拦截或者解密HTTPS,最常见的就是去解析SNI字段并进行识别,来拦截一些特定的流量。包头的保护可以一定程度上降低被拦截的概率,即使有设备去做解析也要付出大量的算力代价。

3,避免网络中间件僵化而带来的不确定性

        网络中间件为了识别某些网络协议的流量,需要部分或者全部实施这些网络协议,比如要识别TLS,最简单的就是使用某个版本TLS开源库解析数据包,根据包头的某些固定字段判断是否TLS包。随着时间的推移,网络协议在更新,但是网络中间件由于各种原因可能无法更新,之前那些检测网络协议的策略相当于固化在中间件上了,无法识别新的网络协议,可能会导致新网络协议的包被错误的处理甚至丢弃,阻碍新协议的推进,这个就是中间件僵化。
        典型的一个例子是在2017年2月,Chrome和Firefox都开始为其客户提供TLS 1.3。结果发现很多用户TLS 1.3失败了,TLS 1.2工作正常。最后定位到的原因是TLS 1.3协议中的ChangeCipherSpec,session_id和压缩字段就都被删除,而这几个字段可能被网络中间件认为是TLS一些基本特征,如果删除它们就会导致连接失败。2017年11月在新加坡举行的IETF会议上,TLS 1.3提出了一个新的改变来解决这个问题,即重新引入了被删除的协议中的很多部分,比如,session_id,ChangeCipherSpec和一个空的压缩字段,这就使得TLS1.3看起来像TLS1.2一样。

        解决僵化最好的方法是加密,尽可能对报文所有字段加密,使得网络中间件无法或者需要很大代价理解或者识别协议,这样可以减少甚至是避免网络中间件实施干扰,同时也增加了通信的安全性。QUIC的payload都是加密的,如果想GQUIC那样,包头都是明文,那么就会存在网络中间件协议僵化问题,所以QUIC设计了包头保护。

二:QUIC包头加密的字段分析

        QUIC包头保护并不是对所有的字段进行解密,因为一开始就把所有的信息进行加密,对端进行解密都不知道从何下手,所以还是需要暴露一些必要的字段方便对方进行解密。

        我们先来看看RFC9001中对于initial包的包头保护字段的描述

QUIC包头的字段如下:

  • header form:指示是长包头还是短包头,header form加密了,就不能确定是哪个类型,故该字段不进行加密保护。
  • Fixed Bit:这个bit默认1,保护没有意义。
  • Long Packet Type:包括以下4种,Packet Type如下 
  • Version:包头有些字段是版本无关的,比如header form、源和目的CID长度及其长度、长包头的version,其他字段不同版本可能会不相同。所以包头的解析依赖Version字段
  • CID,CID是变长的,包头保护依赖sample,sample的位置不是固定的
  • Token,Initial Packet这个字段是空。Retry包或者NEW_TOKNE帧有这个字段,本身是经过加密的

三:包头加解密算法

一张图总结一下QUIC的Initail packet包头保护加密的过程

待完善。。。。

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

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

相关文章

基于Python实现的复制、移动、离线化你的 Markdown 文档,清理 Markdown 引用路径中的垃圾文件

Markdown 工具箱 完整代码下载地址: Markdown 工具箱 🚩 简介 Markdown 工具箱,是我为 Markdown 笔记管理做的一个工具集。目前有以下几个功能: 复制 批量将 md 笔记(连带它的相对路径引用的图片、附件)…

c#中使用stringbuilder的Append方法写sql语句

c#中使用stringbuilder的Append方法写sql语句 c#中使用stringbuilder的Append方法写sql语句_c#strsql.append_安静点DGC的博客-CSDN博客https://blog.csdn.net/qq_26925297/article/details/81586884 特此记录 anlog 2023年8月8日

PMP考试中有哪些疑点、难点?

目前PMP考试的内容只有最后5个月是按照旧考纲,后面的考试基本上都是按照新考纲进行。因此,备考的朋友们需要学习很多新的知识点和敏捷学习方法。所以现在是给今年想要备考的朋友们提供学习建议的时候了。 01、新版考纲将主要关注以下三个新领域&#xf…

一、XSS加解密编码解码工具

一、XSS加解密编码解码工具 解释:使用大佬开发的工具,地址:https://github.com/Leon406/ToolsFx/blob/dev/README-zh.md 在线下载地址: https://leon.lanzoui.com/b0d9av2kb(提取码:52pj)(建议下载jdk8-w…

每天一道算法题——动态规划

找到工作就不更新了~ 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: …

博客系统自动化测试

1、博客列表页面测试 测试内容 测试代码: TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class BlogListTest extends Autotest{public static ChromeDriver driver createDriver();// 准备工作TestBeforeAllstatic void ready() {driver.get(&q…

适用于 Mac 电脑的 10 款最佳数据恢复工具集

无论是个人照片还是重要的商业文档,对于那些依赖计算机获取重要文件的人来说,数据丢失都是一场噩梦。 值得庆幸的是,Mac用户可以使用各种数据恢复工具,可以帮助您恢复丢失或意外删除的文件。 在本文中,我们将采用适用于…

RAM(recognize anything)—— 论文详解

一、概述 1、是什么 RAM 论文全称 Recognize Anything: A Strong Image Tagging Model。区别于图像领域常见的分类、检测、分割,他是标记任务——即多标签分类任务(一张图片命中一个类别),区分于分类(一张图片命中一个…

Unity Meta Quest 一体机开发:前期准备和环境配置(2023 版,Oculus Integration v57)

​ 文章目录 📕教程说明📕思维导图概括📕开发者模式📕可下载的软件⭐Oculus 电脑客户端⭐SideQuest⭐Meta Quest Developer Hub⭐Unity Hub 📕安装 Unity 时需要添加的模块📕设置 Unity 的 Build Settings…

构建高性能应用的利器:Nginx反向代理及配置详解

一、Nginx概念解读 对于新事物的理解,最好的方式就是从概念入手,本文作为《Nginx专题》系列文章的第一篇,先从Nginx的名称开始来分解这个神秘的引擎。 Nginx,是engine X的缩写,发音也是engine x,2004年由…

安装dai li

https://xn–6nq44r2uh9rhj7f.com/#/knowledge 先gomai订阅, 在打开使用文档

【大数据】Kafka 实战教程(二)

Kafka 实战教程(二) 1.下载2.安装3.配置4.运行4.1 启动 Zookeeper4.2 启动 Kafka 5.第一个消息5.1 创建一个 Topic5.2 创建一个消息消费者5.3 创建一个消息生产者 1.下载 你可以在 Kafka 官网:http://kafka.apache.org/downloads&#xff0c…

绝对不可错过的6个搜索引擎网站,超级值得收藏

https://www.gobaidugle.com/ 一个全能的搜索引擎网站,支持设置多种搜索模式,可以根据需求选择双搜、三搜、单搜等方式。 如果是双搜的话你可以看到多种搜索结果,能够一键搜索到自己需要的内容,非常简单快捷。 2、懒盘搜索 htt…

物联网AI MicroPython传感器学习 之 GC7219点阵屏驱动模块

学物联网,来万物简单IoT物联网!! 一、产品简介 LED-8 * 32点阵屏显示板由 4 块单色 8x8 共阴红色点阵单元组成,通过 SPI 菊花链模式将多块显示屏连接后可以组成更大的分辨率显示屏幕,任意组合分辨率。可用于简单仪表显…

义乌再次位列第一档!2022年跨境电商综试区评估结果揭晓!

义乌跨境电商综试区捷报频传,在商务部公布的“2022年跨境电子商务综合试验区评估”结果中,中国(义乌)跨境电子商务综合试验区(以下简称:“跨境综试区”)评估结果为成效明显,综合排名…

Qt扫盲-QImage 理论总结

QImage 理论总结 一、概述二、读写图像文件三、图像信息四、像素操作1. 32位2. 8位 五、图像格式六、图像转换 一、概述 QImage类提供了一个独立于硬件的图像表示,允许直接访问像素数据,并且可以用作绘画设备。Qt提供了四个类来处理图像数据&#xff1a…

volatile-可见性案例详解

6.3 volatile特性 6.3.1 保证可见性 保证不同线程对某个变量完成操作后结果及时可见,即该共享变量一旦改变所有线程立即可见 不加volatile,没有可见性,程序无法停止 加了volatile,保证可见性,程序可以停止 public…

爱创科技携手洽洽食品,探索渠道数字化最优解!

坚果的下半场,是从吃到喝。 消费升级大潮下,健康养生理念逐渐深入人心。以“天然健康”为核心的食品新消费潮流正加速形成,一个个打着“美味与营养”黄金设定的品类风口正被不断创建,其中人气有增无减的当属植物基饮品。据相关报告…

数据结构详细笔记——树

文章目录 树的定义和基本术语结点、树的属性描述有序树与无序树树与森林 树的常考性质树的存储结构双亲表示法(顺序存储)孩子表示法(顺序链式存储)孩子兄弟表示法(链式存储) 树和森林的遍历树的遍历森林的遍…

JVM、JRE、JDK

JVM JVM(Java Virtual Machine)是Java虚拟机的缩写,他是Java编程语言运行时环境,负责执行Java字节码。另外作为JVM虚拟机,它在各种操作系统上提供统一的平台,这帮助Java应用程序可以独立于操作系统底层运行…