首页 › programming › 熔岩灯神课:如何制造不可预测

熔岩灯神课:如何制造不可预测——Tom Scott 那条数百万播放的安全工程课深度解读

概述

你每天都在调用“随机数”:生成一个令牌、抛一次加密硬币、发一张验证码图片。但绝大多数写代码的人从没想过一个问题——计算机是一台确定性的机器,给它同样的输入,它只会吐出同样的输出,那“不可预测”到底是从哪儿来的?英国科普人 Tom Scott 在 2017 年走进 Cloudflare 旧金山总部,拍下了那条后来被反复引用的短纪录片:《The Lava Lamps That Help Keep The Internet Secure》——一面挂在大厅里的熔岩灯墙,正在给互联网加密提供随机种子。这条视频是“安全工程”最生动的一堂入门课:它用一个你看得懂的物理奇观,讲清了一个你看不见的基础设施问题。本文带你完整重走这条视频的论证路线,并补上它没讲的另一半:伪随机的百年谱系、几起真实发生的“随机数惨案”,以及这面墙在今天工程语境下的真实成色。

数据说明:本文写作时环境无法联网实时核验,以下热度数据为据频道页面的历史公开信息(量级表述),精确数字请以视频页实时显示为准。

一、视频基本信息

项目 内容
标题 The Lava Lamps That Help Keep The Internet Secure(那些帮助守护互联网安全的熔岩灯)
频道 Tom Scott(@TomScottGo),数百万订阅量级(据频道页面)
发布时间 2017 年(据频道页面)
体量 约十分钟量级的实地短纪录片
热度 数百万级播放(据频道页面量级信息,未能实时核验);长期被安全课程与博客引用为“随机性入门第一视频”
拍摄地 Cloudflare 旧金山总部大厅

说明一点:这不是一条蹭热点的新片。选它,是因为它符合“神课”的标准——十分钟、一面墙、一个问题,十年不过时。每当社交平台再度刷起“世界上最酷的机器”类话题,这条视频就会被重新翻出来转一圈;而只要你在写代码,它讨论的问题就每天从你指间流过。

二、核心主张拆解:十分钟里讲了哪五件事

要点一:先立真问题——“随机”是确定性机器最难的东西

视频没有从熔岩灯开始,而是从每个程序员的日常开始:程序里随手写下的 random()。Tom 指出一个被无数教程一笔带过的事实——软件里的“随机数”绝大多数是伪随机(pseudo-random):它由一个确定性的算法产生,只要初始种子相同,产出的整条序列就一模一样。对你抽奖用的代码,这无所谓;但对密码学,这是致命的——攻击者同样知道算法,一旦猜到或复现了你的种子,你的“随机”密钥在他眼里就是一条可以重放的算术题。

于是真问题被精确地立起来:在一台造不出意外、也不该出意外的机器上,如何找到连造机器的人都猜不到的东西?这个提问方式是整条视频的第一处高明:先让你意识到自己每天都在“假装随机”,再带你去看有人怎么真的制造意外。

要点二:把物理混沌接进机房——那面熔岩灯墙

镜头随后切到 Cloudflare 旧金山总部的大厅:约一百盏熔岩灯(据视频画面与频道页介绍量级),蜡柱在灯管加热下不断隆起、断裂、合并,没有两秒钟是重样的。这个画面背后是流体力学里的经典现象——瑞利-贝纳尔对流(Rayleigh–Bénard convection):底部受热、顶部冷却的流体中,浮力与黏滞力互相拉扯,形成不断变形的对流胞。它是混沌系统的标准教材案例:方程是确定的,但对初始条件极端敏感,任何一丝温度扰动、一次空气流动、一个走进大厅的人投下的影子,都会让整面墙的下一秒彻底改写。

视频的点睛之笔在于指出:这面墙在物理上完全确定,在实践中完全不可预测。这两句话同时成立,正是它区别于“掷骰子”式花招的地方——你不需要玄学,只需要一个复杂到没人算得动的确定性系统。

要点三:从图像到种子——噪声如何变成密钥材料

第三步是全片的技术内核:Cloudflare 用一台相机定期拍摄这面墙,把得到的数字图像送进哈希函数,压缩成一串均匀的比特,作为随机种子喂给密码学安全的随机数生成器(CSPRNG),再由后者产出用于加密会话的密钥材料。一张照片里藏着的噪声远比肉眼看到的多:蜡柱形状、灯泡闪烁的相位、镜头传感器的电噪声、大厅光线的细微变化——哪怕画面看起来一模一样,比特层面也几乎不可能重合。

这里有一个值得展开的工程常识(视频点到为止):熔岩灯墙不是密钥本身,而是种子。种子喂给 CSPRNG 后,后者可以高速、稳定地产出海量“看似随机”的比特流。物理世界负责提供那宝贵的、一次性的“不可预测性”火种,数学负责把火种烧成日常使用的炉火。

要点四:这不是行为艺术——一条真实的工程谱系

视频顺带交代了这面墙的“血统”:上世纪九十年代,硅图公司(SGI)就做过一模一样的事,把摄像头对准熔岩灯为工作站生成随机数,还注册了专利(据公开专利记录,其名为 LavaRand,核心正是“用混沌系统的数字化图像给伪随机数生成器播种”);Cloudflare 在 2017 年把这套思路搬进了自己的大厅,并直接借用了这个名字。据频道相关报道,Cloudflare 伦敦办公室还有一台双摆装置——双摆是比熔岩灯更“恶名昭著”的混沌系统——干的是同一件事。

这段谱系交代很重要:它把视频从“科技公司猎奇”拉回“工程传统”的语境。用物理噪声喂计算机,是一代代工程师反复验证过的正经手艺。

要点五:收尾给分寸——墙是输入之一,不是安全边界

全片最容易被忽略、也最见诚意的是结尾的分寸感:这面墙的产出会与操作系统的熵池、处理器内置的硬件随机数指令等其他熵源混合使用,它是“输入之一”,而不是唯一防线。Tom 在片中也坦率承认,这面墙带有展示性质——但它是一堂挂在公司门口的、每天都真实参与生产的公开课。

三、知识与理论溯源:随机数这件事的真历史

“用算术造假随机”是老传统。冯·诺依曼在 1940 年代末提出的“平方取中法”是最早的伪随机算法之一——他也正是最早警告“任何用算术方法产生随机数的人都处在罪孽中(Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin)”的人。这句常被引用的话与本文主题严丝合缝:伪随机从诞生第一天起就被发明者本人打上了“将就”的标签。

“不可预测”是数学共识。1997 年松本真与西田拓史发表的梅森旋转算法(Mersenne Twister)至今仍是 Python、R 等语言默认的通用随机引擎,但它的输出序列在观察足够多的比特后可以被反推——这是教科书级的“通用随机”与“密码学安全随机”的分界线。密码学场景必须使用 CSPRNG(如基于 ChaCha20 的流式生成器),并由操作系统统一维护熵池:Linux 早在 1994 年就由 Theodore Ts'o 引入了 /dev/random 与 /dev/urandom 设备;2015 年 Python 通过 PEP 506 专门新增 secrets 模块,官方理由正是开发者长期误把通用 random 模块用于安全场景。

“熵从哪来”是基础设施问题。早期操作系统靠键盘中断间隔、磁盘寻道抖动等“世界的毛边”攒熵;2012 年起 Intel 在主流处理器中内置 RDRAND 一类硬件随机指令;2020 年 Linux 5.6 由 Jason Donenfeld 重写了随机子系统,系统完成初始化后 /dev/random 不再阻塞。工程界还留下过几座“反面纪念碑”:1995 年,伯克利的 Ian Goldberg 与 David Wagner 证明 Netscape 浏览器的 SSL 用当日时间加进程号做种子,随机数被当场破解;2008 年 Debian 一次代码清理误删了 OpenSSL 的熵源注入,导致全平台密钥只可能在 32768 个变体里猜(CVE-2008-0166);2012 年 Lenstra 等人的研究在全网数百万把 RSA 公钥中发现了成对的共享素数,论文标题《Ron was wrong, Whit is right》一语成谶。

“随机数写错=真金白银”也不断被验证。2010 年 fail0verflow 团队利用索尼 PS3 签名时复用固定随机数 k 的漏洞,直接反推出签名私钥;2022 年,以太坊虚address生成工具 Profanity 因随机数实现缺陷被攻破,据多方报道,数百万美元资产在数日内被洗走。熔岩灯墙的对面,站着的就是这些墓碑。

四、批判性审查:哪些是真的,哪些要打折

证据充分的部分。熔岩灯墙真实存在且持续运行,机制描述与 Cloudflare 官方工程博客(如 2017 年的 LavaRand 技术文章)一致;“物理图像作熵源”有 SGI 专利与多年生产实践背书;“伪随机不可用于密码学”是安全行业的铁律,反面案例名单足够长。

需要打折的部分。“互联网的安全靠熔岩灯”是标题修辞——Cloudflare 自己也把墙描述为多个熵源之一,即便这台相机坏掉,TLS 会话照样能从操作系统与硬件熵源取得种子。把它理解成“没有这面墙互联网就会裸奔”,是对视频的过度引申。同样要打折的还有“熵饥饿”叙事:视频拍摄于 2017 年,而 2020 年后的现代操作系统与硬件上,系统级熵已不再稀缺——熔岩灯在今天更多是一道保险和一堂展示,而非刚需。

存在争议的部分。安全社区对这面墙的评价长期分裂:一派认为它本质是“安全剧场”(security theater)——固定机位拍固定场景,理论边际熵有限,真正的安全性来自多源混合与密码学工程;另一派则认为“剧场”恰恰是它的价值——把一个看不见的基础设施变成每个访客都能看懂的展品,教育意义与象征意义都是真产出。平心而论,两派都对:从熵贡献看它是装饰,从工程文化看它是杰作。

五、认知提升与实用启示

第一,给代码立一条铁律:令牌、密钥、验证码,永远走系统级密码学随机源。Python 用 secrets 而不是 random,Go 用 crypto/rand 而不是 math/rand,浏览器端用 crypto.getRandomValues 而不是 Math.random。写完代码后做一次专项自查:全局搜索所有随机调用,逐个问一句“这个输出的可预测性,有没有人能押注?”——答案暧昧的那些,就是潜在事故。

第二,把“多源混合”当成通用设计哲学。熔岩灯墙教会安全工程的那一课,可以平移到几乎所有系统设计里:单一关键输入,无论看起来多可靠,都值得配一条独立来源,混过哈希或表决再使用。熵源混合、多活机房、多供应商依赖,背后是同一个直觉——让“全部失效”这件事在概率上变得荒谬。

第三,学一学这种“把基础设施做成展品”的表达。工程师普遍会写文档、画架构图,但极少有人会把自己的核心依赖变成一个路过的人都能提问的实体。下次你要向非技术同事解释一个“看不见但很重要”的组件时,先别急着做 PPT——想想能不能给它一面墙。

六、一张图看懂:不可预测性的旅程

flowchart TD
    A["物理混沌:熔岩灯墙"] --> B["相机定期采样"]
    B --> C["数字图像:海量噪声"]
    C --> D["哈希压缩"]
    D --> E["物理熵:随机种子"]
    F["系统熵池"] --> G["多熵源混合"]
    H["CPU硬件随机指令"] --> G
    I["双摆装置:伦敦办公室"] --> G
    E --> G
    G --> J["密码学安全随机数生成器"]
    J --> K["会话密钥材料"]
    K --> L["每一次连接的密钥都不同"]

延伸阅读

  1. Cloudflare 工程博客《LavaRand in Production: The Nitty Gritty Details Behind Cloudflare's Newest Entropy Source》(2017)——熔岩灯墙从图像到种子的完整技术细节,作者是把视频里一句话讲成一篇工程论文的人。
  2. Wikipedia「LavaRand」词条——从 SGI 1990 年代原版到 Cloudflare 2017 年复刻的完整谱系,适合作为本文第二条时间线。

参考来源

  1. The Lava Lamps That Help Keep The Internet Secure | Tom Scott — 本文解读的视频本体(据频道页面;亦可在 Tom Scott 频道 或 站内搜索 按标题检索)
  2. LavaRand — Wikipedia — SGI 原版方案与 Cloudflare 复刻的历史脉络
  3. Cloudflare Blog: LavaRand in Production — 熵源采集与混合机制的官方工程说明
  4. /dev/random — Wikipedia — Linux 熵池三十年演进(1994 年引入、2020 年重写)
  5. Douglas Engelbart 相关条目外的对照阅读不适用于本文,此条替换为 Mersenne Twister — Wikipedia — 通用伪随机与密码学安全的分界线

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入