QUIC协议如何实现0RTT加密传输(插件)

首先解释一下什么是0RTT。所谓的0RTT就是,通信双方发起通信连接时,第一个数据包便可以携带有效的业务数据。而我们知道,这个使用传统的TCP是完全不可能的,除

本篇文章给大家谈谈QUIC协议如何实现0RTT加密传输(插件),以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

此外,对于HTTPS 等应用,由于需要额外的TLS 握手,0RTT 更是不可能。

如果Certificate太大或太长,则需要3个以上的RTT才能完成握手.

S(即服务器

服务器)和C

C(即客户端

客户端)而不是A

A(即爱丽丝

爱丽丝)和B

B(即鲍勃

我跳过DH

DH算法进行密钥协商。

步骤0:配置服务器SS密钥对,在SS中生成一个素数pp和一个整数gg(gg是pp的原根,不懂的可以跳过),并随机生成一个数字KpriKpri。计算: Kpub=gKprimod pKpub=gKpri mod p 将{p,g,Kpub}{p,g,Kpub} 三元组键入配置包中。步骤1:CC首次发起连接。 CC 只是将Client Hello 发送给SS。步骤2:SS第一次使用config响应CCSS,封装成数据包回复CC,其中显然包含{p,g,Kpub}{p,g,Kpub}元组。步骤3:CC发送加密数据。 CC收到{p,g,Kpub}{p,g,Kpub}后,随机生成一个数Kc_pri。 Kc_pri 进行如下计算: 计算公钥: Kc_pub=gKc_primod pKc_pub=gKc_pri mod p 计算对称密钥:K1=KKc_pripubmod pK1=KpubKc_pri mod p 准备业务数据Payload1,设置加密函数为Enc(key,data)Enc( key,data),并将以下元组D1D1 发送到SS: D1={Kc_pub,Enc(K1,payload1 )}D1={Kc_pub,Enc(K1,payload1)} 请注意,在该阶段开始时,有效负载为加密的。步骤4:SS发送加密数据。 SS收到D1D1后,进行如下计算: 计算对称密钥:K1=KKpric_pubmod pK1=Kc_pubKpri mod p。可以证明CC侧的K1K1和K1K1相等: K1=KKpric_pubmod p=(gKc_primod p)Kprimod p=gKc_priKprimod pK1=Kc_pubKpri mod p=(gKc_pri mod p)Kprimod p=gKc_priKpri mod pK1=.=gKpriKc_primod p=gKc_priKprimod p=K1K1=.=gKpriKc_pri mod p=gKc_priKprimod p=K1 因此K1K1 可以将密文Enc(K1,payload1)Enc(K1,payload1) 解密为获取明文负载。也许你会认为K

QUIC协议如何实现0RTT加密传输(插件)

1

K1可以作为后续通信的对称密钥,但事实并非如此。对于所谓的前向安全,此时S

S将继续生成第二个对称密钥K

2

K2

SS在发送自己的payload2之前,随机生成一个数字Kn_priKn_pri,并进行如下计算: 计算新的通信公钥: Kn_pub=gKn_primod pKn_pub=gKn_pri mod p 计算新的通信对称密钥: K2=KKn_pric_pubmod pK2=Kc_pubKn_pri mod phas 得到后新的通信对称密钥K2K2,可以将以下元组发送给CC: D2={Kn_pub,Enc(K2,payload2)}D2={Kn_pub,Enc(K2,payload2)} 在这个元组D2D2 中除了加密数据之外SS的Enc(K2,payload2)Enc(K2,payload2),还包括SS新生成的公钥。步骤5:CC接收来自SS的D2D2。 CC收到SS发来的D2D2后,解出Kn_pubKn_pub,并执行以下操作: 计算新的通信密钥: K2=KKc_prin_pubmod pK2=Kn_pubKc_pri mod p(可以证明K2=K2K2=K2) Payload2可以被解密正确使用K2K2。在后续的通信中,SS和CC可以使用K2K2作为通信对称密钥。值得注意的是,这个K2K2是在1个RTT内新生成的。虽然协商这个K2K2需要1个RTT,但业务数据在这个RTT中仍然可以加密通信,但是使用了K1K1。也就是说,使用由CC存储器中的SS侧配置协商的“不安全”密钥。该密钥仅对数据加密一次。步骤6:断开CC 和SS。通信一段时间后,SS和CC断开连接。第七步:CC直接发送加密数据。过了一段时间或者一段时间后,CC想要再次与SS通信。注意,此时CC已经有了SS的配置元组{p,g,Kpub}{p,g,Kpub},也许CC缓存在内存中,也许写入磁盘,不管怎样,只要CC有{ p,g,Kpub}{p,g,Kpub},可以直接从第3步开始,即直接通过{p,g,Kpub}{p,g,Kpub}计算出一个对称密钥自己生成的随机数私钥,然后直接发送payload。嗯,这就是所谓的0RTT。步骤8:SS发送加密数据。 SS收到来自CC的加密数据后,重复步骤4重新计算新的“安全对称密钥”,该密钥可以用作直到断开连接为止的对称密钥。整个流程如下图所示:

好了,介绍结束了。

因此,QUIC的0RTT加密数据传输并不是无条件的。不过请注意,QUIC的0RTT与Session复用的一般思路完全不同:

SS不保存任何关于CC的信息;连接发起的0.50.5 RTT使用的密钥是临时的,下一个0.50.5 RTT使用的密钥将重新计算。在整个过程中,我们可以体会到DH算法的一些特点。从步骤2和步骤3可以看出,这个算法是真正的按需协商,即只有真正需要密钥时才会进行实际操作,大大减少或基本消除了离线处理的需要。攻击的机会,此外,DH算法非常简单易用。

据说QUIC作为一个试验场,很多想法都会转移到更标准化的标准上,比如BBR到TCP(不过我很看好TCP,BBR继续在QUIC上发展不是更好吗?) ?)。 0RTT同样的思路也将被吸收到正在进行中的TLS1.3版本中,令人非常期待。

这一切都归功于谷歌,一家伟大的公司。从看到HTTP的缺点到SPDY,再到HTTP2.0,再到看到TCP的缺点,QUIC直接衍生自SPDY/HTTP2.0。在QUIC本身的演进过程中,也选择了TCP。善者随之,不善者改之。这就是我们现在接触到的QUIC协议,它将HTTP2.0和TCP集成到了大成的QUIC协议中。

不管怎样,我个人还是比较看好QUIC的。

用户评论

QUIC协议如何实现0RTT加密传输(插件)
命该如此

我也一直在寻找关于 QUIC 的信息,这个标题引起了我的注意! 之前对浏览器加载速度的研究就发现 QUIC 有潜力提升体验,但没想到能直接做到 0 RTT 加密。 想了解更多具体的实现细节,期待后续文章 delve 更深一些…

    有20位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
歆久

这太酷了! 我一直觉得互联网传输效率可以再提高,QUIC 协议看起来很前卫啊。0RTT 加密意味着用户体验会更流畅,简直是重大的突破,这方面的大厂好像都开始支持了吧?

    有15位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
红玫瑰。

我比较关注的是安全性问题,高速传输很重要,但加密是否足够安全才是核心吧? 0 RTT 加密是不是存在一些漏洞?希望文章能讲讲这一点,毕竟现在网络环境越来越复杂了…

    有12位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
初阳

这个 QUIC 协议听起来很有意思,从名字看好像和 HTTP 有些关系。虽然没太懂它具体怎么做做到0RTT 加密传输,但总感觉是新技术的产物吧?希望这篇博文能详细解释一下机制。

    有8位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
回忆未来

这标题写的真吸引人! 我一直在学网络安全,对 QUIC 协议这个概念一直很感兴趣。0 RTT 加密确实是一个很大的优势,提升了网络性能和安全性。文章能不能分享下有哪些应用场景?

    有10位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
◆残留德花瓣

就说吧,0 RTT 加密传输这种技术其实早就存在啦!只不过以前没有那么流行而已。现在 QUIC 协议这么火,大家才注意到它啊。 虽然听起来很厉害,但我个人觉得效果还不太明显。

    有14位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
雨后彩虹

我也一直用 Chrome,它好像就支持了 QUIC 协议吧?但感觉网速并没有明显的提升,不知道这0RTT 加密传输有什么实际意义呢?

    有11位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
泡泡龙

QUIC 协议和 TCP/IP 的区别是什么啊?0 RTT 加密的实现机制跟传统的 HTTP 有没有很大差异?希望能详细讲解一下 QUIC 的优缺点!

    有14位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
单身i

这个标题是不是有点太唬人了一些? 0RTT 加密传输听着就很有技术感,但现实中能做到完全安全的加密吗? 希望文章别写得太深奥,通俗易懂一点就好。

    有9位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
你tm的滚

最近在研究网络安全方面的知识,QUIC 协议也是我正在关注的方向。希望这篇文章能够详细讲解它是如何实现0RTT 加密传输的原理和步骤!

    有16位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
枫无痕

0 RTT 加密传输这个概念听起来很酷炫,但我对这个 QUIC 协议本身不太了解。希望能有基础解释,比如它是做什么用的,以及有哪些实际应用场景?

    有16位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
入骨相思

我对这种 0RTT 的技术非常感兴趣!感觉在未来会有更广泛的应用。希望这篇文章能够深入讲解它带来的影响和挑战,以及未来的发展趋势。

    有17位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
旧爱剩女

我用很多网站都能流畅访问,但没有明显感受到 QUIC 协议带来的变化。或许 0 RTT 加密传输需要一些特殊的网络环境才能发挥作用吧?

    有13位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
£烟消云散

这个标题让我觉得很期待!我一直想了解 0 RTT 加密传输技术的原理和实现过程。文章是不是会分享一些代码示例或者实操经验啊?

    有15位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
最怕挣扎

虽然我没太懂 QUIC 协议,但感觉它听起来挺厉害的。0RTT 加密传输这个概念我理解,也就是不用等待额外的时间就能进行加密通讯吧? 而且安全性是关键! 这篇文章是不是会比较深入地谈谈安全方面的保障措施呢?

    有20位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
愁杀

我对网络安全和性能优化一直很感兴趣,所以这个标题一下子就吸引了我。我希望这篇文章能够讲解 QUIC 协议是如何通过0RTT 加密传输实现更高效的网络通信,以及它对比传统技术的优缺点!

    有13位网友表示赞同!

QUIC协议如何实现0RTT加密传输(插件)
我家的爱豆是怪比i

我关注一个用 QUIC 的应用案例,希望能够看到一些具体的使用场景和效果体验,比如游戏加速、视频流媒体等,看看 0RTT 加密传输能带来的实际差异。

    有10位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/117984.html

(0)
小su's avatar小su
上一篇 2024年9月1日 上午9:45
下一篇 2024年9月1日 上午9:57

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注