全球五分之一的网站加密,靠的是一面熔岩灯墙

介绍 Cloudflare 用熔岩灯墙生成加密随机数的 LavaRand 系统:计算机无法产生真随机,密钥的不可预测性最终要从物理世界的混沌现象中获取。

你每次点开一个 https 的网站,浏览器和服务器之间会在几十毫秒内完成一次加密握手。

这个过程你看不见,但它每天发生几百次。

握手的核心是生成一个密钥。密钥的本质是一个随机数。这个随机数要是被人猜出来,你所有的加密就是纸糊的。

但这里有一个很要命的问题。

计算机不会生成随机数。

严格说,计算机生成的叫伪随机数。同一个输入跑一万遍,输出一模一样。计算机最擅长的就是确定性,这个优点放在加密里恰恰是致命缺陷。

所以真正的随机数得从真实世界里捞。CPU 温度的微小抖动、硬盘转速的飘移、你敲键盘的时间间隔,这些物理噪声,才是不可预测性的来源。

但光靠这些,工程师还是不放心。

做加密的人有个习惯,跟做投资的人一样,不把鸡蛋放一个篮子里。万一某个随机源被人摸透了,得有别的源兜底。所以他们想尽办法往随机数池子里多扔几种噪声。

扔到最后,有人扔进去一面熔岩灯墙。

旧金山,Cloudflare 总部大厅。一面墙上摆着上百盏熔岩灯,红橙黄绿的蜡块在灯管里慢慢翻涌,看着特别像六十年代嬉皮士的客厅。

这面墙不是装饰品。

Cloudflare 在墙对面架了一台摄像头,24 小时拍。蜡块在灯里翻涌是个混沌系统,对初始条件极度敏感,两盏一模一样的灯,运动轨迹永远不会重复。蜡块的运动不可预测,拍出来的画面自然也不可预测。这堆像素数值被当作种子,喂进加密随机数生成器,产出的随机数流,拿去保护全世界的连接。

Cloudflare 是干什么的?简单说,你访问的网站里,差不多每五个就有一个是它挡在前面,负责加速、防护、加密。你今天打开过的网站里很可能就有它。

说实话一开始我也以为这面灯墙纯属行为艺术,后来翻 Cloudflare 官方博客才明白,里面的逻辑严谨得很。

但最让我意外的是,这个主意是个快三十年的老古董。

1996 年,硅谷图形公司 SGI 就干过这事。六盏熔岩灯,一台摄像头,拍照片,用 SHA-1 哈希一下,当随机数种子。发明人里有个叫 Landon Curt Noll 的数学家,本行是找大素数。他们还正经申请了专利。

为什么偏偏是 1996 年?

因为前一年出了一件大事。

1995 年,两个加州大学的研究生破解了 Netscape 浏览器的随机数生成器。他们发现 Netscape 生成密钥用的「随机数」,就靠时间戳和进程 ID,这两样东西完全可以被推算出来。消息一出,整个互联网的加密信任抖了一下。

九十年代的互联网还很小,SSL 刚起步。那是大家第一次意识到,「你的随机数到底随不随机」这个问题不是课本里的思想实验,是实打实的安全漏洞。

SGI 那帮人第二年就琢磨出了熔岩灯方案。逻辑很简单。你说软件的随机不够随机?那我去物理世界里找。混沌系统产生的噪声,你算不出来。

专利后来过期了。2017 年 Cloudflare 把这个想法捡起来,放大到上百盏灯,做成一个叫 LavaRand 的系统。有个英国 YouTuber 叫 Tom Scott,当年专门飞了一趟旧金山拍了一期视频讲这面墙,视频里他说当时大约 10% 的网络流量经过 Cloudflare。现在这个数字已经涨到差不多两成。

有趣的是,这个事在 Cloudflare 内部成了一个标志。

熔岩灯只是旧金山办公室的。后来里斯本办公室弄了一台造波机,奥斯汀办公室挂了一组悬浮彩虹,伦敦办公室摆了一堆混沌摆。每个新办公室都想搞一个比熔岩灯更离谱的熵源,感觉这已经成了公司内部的传统艺能。

不同的物理现象,同一个逻辑。混沌、不可预测、拿来当种子。

你要是退一步看这个故事,会看到一个特别有意思的反差。

加密算法本身是人类数学智慧的巅峰产物。椭圆曲线、大数分解、格密码,全是最聪明的脑袋花几十年打磨出来的东西。但这些算法的安全性全部依赖于一个前提。

你得有一个真正随机的数。

而真正的随机,数学给不了。

得去物理世界里找。

最先进的技术,最后信的是最原始的不确定性。

这就是我特别喜欢这个故事的原因。它有一种跨越六十年的荒诞感。

1963 年,一个叫 Edward Craven Walker 的英国人发明了熔岩灯。这人本职是会计师,副业是拍水下裸体电影。据报道,他的灵感来自酒吧里看到的一个自制蛋计时器。他做这东西的全部目的,就是给嬉皮士的客厅添个氛围。

六十年后,人类最顶尖的互联网基础设施,靠一屋子这种灯来守护自己的安全。

下次你在浏览器地址栏看到那把小锁的时候,可以多看它一眼。

那把锁背后的密钥里,有一小部分不确定性,可能来自旧金山一盏灯管里正在慢慢翻涌的蜡。

这事想想还挺浪漫的。

署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
位旅人路过 次翻阅 初次见面