QUIC不加密(draft-banks-quic-disable-encryption-00)

简介

关闭1RTT加密(disable_1rtt_encryption)传输参数可以用来协商关闭1-RTT数据包的加密,从而降低CPU负载、提高性能。此扩展仅可用于两端完全信任相连链路的环境;不可以用在开放网络中。

介绍

默认情况下QUIC协议通过TLS握手提供安全(认证和加密)连接。此握手允许端点通过证书认证,然后安全地产生共享秘钥来加密QUIC流量。握手完成后,数据加密会占用可观的CPU,具体根据方案确定。另外,有些方案中这个加密提供的保护是非必要或者不想要的。对这些方案来说,本文定义了QUIC协议的扩展,参与的端点相互协商移除握手后发送的1-RTT数据包加密。

应用场景

QUIC连接通常总是加密的,防止未认证的中间件读取和篡改QUIC数据包。大多数环境下这都是期望的行为,尤其经过开放网络。这里有移除加密有意义的两种场景:
 信任的环境或路径—有的方案或者环境不需要QUIC加密的额外安全措施,像内网或者隧道化连接。这些场景已经信任或者通过其他方式加密了。
 性能测试—当QUIC 包内容不重要,并且目的纯粹是测量网络、设备或者QUIC非加密实现的性能。

安全考虑

因为AEAD标签与加密一起移除了,包破坏就必须依赖于UDP校验和。

移除1-RTT包加密有一些明显的安全缺陷:
任何中间人都可以读取、修改和注入数据包

此扩展不是用于开放网络上的应用协议。面向公网的服务器禁止使能该扩展。不信任其网络的客户端禁止使能该扩展。
此扩展不修改握手期间的包保护,所以握手仍然可以安全认证。这防止了一端可能信任路径,但另一端不信任,中间人想要强制使用该扩展。

Lucas quic

https://github.com/lucas-clemente/quic-go/issues/2868,主要作者坚决反对合入该功能,理由是1)这是一篇个人草案,不符合QUIC的初衷,工作组不会采纳;2)公网的范围无法确定,云计算和多租户环境中没有安全域;3)没有看到加密成本高的无法忍受的案例。

安全分析

草案中使用UDP校验和防篡改,但UDP校验和主要是用来防止UDP传输出错,而不是用来防篡改的(算法是公开的,中间人可以修改后重新计算校验和),且在有其他手段加密的情况下(如应用自己加密),QUIC报文中会暴露过多的内容,比如streamid等,其他控制报文全明文(比如ACK、流控、迁移等),会被中间人监听到或者伪造报文攻击。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值