{"id":"mb-20260908-5fb3c2","kind":"deep","title":"全球每天几百亿次加密连接，开门第一步全靠猜","summary":"全球每天几百亿次加密连接，开门第一步全靠猜","body":"全球每天几百亿次加密连接，开门第一步全靠猜。\n猜中了，一趟搞定；\n猜错了，当场重来，白白多等 150 毫秒。\n为什么顶尖的互联网基础设施，要玩这种看似低级的赌博？\n因为一套叫 TLS 1.3 的网络协议。\n\n今天整个互联网的安全通信，底层全靠它。\n既然大家都要安全，坐下来先问一句你支持什么，再挑一把锁，不行吗？\n以前的 TLS 1.2 确实就是这么干的。\n客户端先问，服务器再答，接着协商密钥。\n规矩是规矩，代价是慢：一次握手要跑两趟网络往返。\n为了让网页打开更快，TLS 1.3 做了一个激进的改动：\n别问了，直接赌。\n客户端发出第一个数据包的时候，不等服务器开口，就押上自己猜的加密算法，顺便把半截密钥直接塞过去。\n如果服务器正好也用这套算法，当场就能算出密钥，握手一趟搞定。\n这就是所谓的预测性密钥交换。\n它把握手时间直接砍掉了一半。\n\n过去这些年，全世界客户端的起手式几乎全压在同一个算法上：X25519。\n这是主流的椭圆曲线算法，全球超过 95% 的服务器都认它。\n押它最稳。\n就算碰到少部分偏好其他算法的服务器，大不了服务器回传一个重试请求，再花一趟往返换个算法。\n大家本来相安无事。\n直到量子计算机的阴影压过来。\n\n量子计算机攻破密码，真要等几十年吗？\n一种攻击早就开始了：先拦截，后解密。\n对手甚至不需要今天就破解密文。\n光缆里的流量每天都在被人整包整包地截获、存储。\n现在解不开，存到硬盘里等。\n业内普遍把经典加密体系可能被量子算力攻破的节点，称为 Q-Day，不少专家估计在 2029 年前后。\n等到那天，量子计算机用肖尔算法一跑，今天存下的所有银行通信、机密邮件、商业机密，全部变成明文。\n\n要防这种威胁，通信必须换上抗量子算法，比如新一代的混合算法 X25519MLKEM768。\n一个荒谬的死结卡在了这里：\n客户端敢不敢在第一个数据包里，直接改押抗量子算法？\n不敢。\n抗量子算法生成的密钥分量体积很大。\n很多旧服务器根本不认识它，一些老旧的防火墙和中间设备看到这种大包甚至会直接丢弃。\n如果盲猜抗量子，全球大批网站当场就会连接崩溃。\n为了不把网络搞瘫痪，网络服务商只能把抗量子当成备选。\n第一包发出去，依然老老实实押经典的 X25519，只在旁边悄悄挂个标记：我也支持抗量子。\n这就带来了代价。\n如果源站服务器想要抗量子安全，它就必须主动拒绝第一包，退回重试。\n想要更安全，就必须被罚一趟网络往返，多耗 150 毫秒。\n越注重安全，网络就越慢。\n在过去，几乎百分之百的抗量子连接，都要被迫多跑这一趟重试。\n\n怎么破这个局？\n靠几百万个网站站长自己去改配置、学密码学？\n根本指望不上。\nCloudflare 拿出的方案，逻辑非常干脆：\n既然实时通信猜不准，为什么非要在用户访问的这一瞬间猜？\n把盲猜换成预先测绘。\n在用户还没访问之前，系统在后台对源站发起轻量级的握手探测。\n每次探测只带一种算法，摸清楚这个源站到底支持什么、最偏好什么。\n测绘完成，记录归档。\n等真实用户的流量到来时，反向代理不再盲猜 X25519。\n探测显示对方支持抗量子算法 X25519MLKEM768，第一包就直接精准压上抗量子密钥。\n\n这个改动叫自动密钥交换。\n效果有多直接？\n源站连接的重试率，直接从大约 52% 断崖式跌到 3.7%。\n在第 90 百分位的高延迟场景下，握手时间省出了整整 150 毫秒以上。\n更关键的是，抗量子连接无需重试、一趟搞定的比例，从过去的 0% 暴涨到了 99.2%。\n站长不用改一行代码，也不用研究后量子密码学。\n每天 450 亿次连接的底层通道，就这么无声无息地换上了抗量子护甲。\n\n网络协议的演进向来残酷。\n想要让几十亿台新旧设备真正安全，从来不能靠提高门槛，去要求每个人都成为专家。\n把那 150 毫秒的重试惩罚拿掉，\n猜拳的赌局结束了，\n抗量子的安全，才真正变成了不需要任何人操心的默认状态。","topic":"全球每天几百亿次加密连接，开门第一步全靠猜","frame_type":["预测性握手测绘（带外探测预消除重试往返）","机制"],"citations":[],"channel_note":"","identity_notice":"","source_type":"generated","status":"published","generated_at":"2026-09-08 17:14:10","legal_anchor_count":0,"transcript_citation_count":0}