随机:乱敲键盘能敲出什么 书架

第 09 章 / 共 12 章

第九章 · 真随机从哪里来

上一章结论很直白:计算机自己造不出真随机,只会放磁带。那真随机从哪里来?答案分两层:经典世界里的「噪声」,和量子世界里的「本性」。这一章也把第二章卖的那个关子结了:世界到底掷不掷骰子?

经典噪声:把「测不准」榨成随机数

硬件世界充满了原则上可测、实际上测不准的微小波动。把它们放大、数字化,就是真随机数的原料:

这类随机源的本质还是第二章那句话:它是「无知」,不是「本性」——混沌放大的测量极限。理论上,拉普拉斯妖盯着你的 CPU,这些数全是可预测的。但对任何现实的攻击者,这已经够用。不过「理论上可预测」让密码学家如鲠在喉——他们想要的是物理定律担保的不可预测。

量子:世界真的掷骰子

第二章的问题在这里终审。量子力学给出的答案是:有些事件的结果,在发生之前不存在。不是我们算不出来,是宇宙中根本没有「算出来」所需的信息。

最干净的例子:让一个光子射向半透半反镜,50% 透过、50% 反射,两条路上各放一个探测器。哪个探测器响?哥本哈根诠释说:测量之前,光子处在「两条路都走」的叠加态;测量那一刻,结果才「坍缩」成一个。单次结果不可预测——不是因为镜子复杂,而是按量子力学的数学结构,单次结果没有隐藏的剧本。

「没有隐藏剧本」不是哲学口号,1964 年贝尔把它变成了可检验的不等式:如果世界底层藏着「局域的隐藏变量」(预先写好的答案),实验统计必须满足某个上限;如果量子力学对,可以突破它。从 1982 年阿斯佩实验到 2015 年三个「无漏洞」贝尔实验,结果一致:上限被突破,隐藏剧本不存在。爱因斯坦不信的那句「上帝不掷骰子」,实验站队了玻尔——而且玻尔赢得很彻底:骰子不但掷,还掷得没有任何地方写着底稿。

大白话:经典的随机是「你看不到答案」,量子的随机是「没有答案可看」。贝尔实验把两者的区别变成了实验室里能测的数。商用量子随机数发生器(QRNG)卖的就是这个:物理定律签名的不可预测性。

从噪声到比特:还得过两道加工

物理噪声到手不等于能用,还要两道工序:

  1. 去偏。真实噪声源总是偏的(0 比 1 多一点、电压阈值有漂移)。冯·诺依曼给过一个优雅的去偏法:把比特两两分组,01 记作 0,10 记作 1,00 和 11 丢弃——不管原始偏差多大,出来的序列严格五五开。
  2. 搅拌。把多个来源的噪声用密码学哈希充分混合,让任何单一路的缺陷都被稀释。Linux 熵池干的就是这个。

怎么验货:只能证伪,不能证实

买回来的随机数发生器是真随机吗?这里第一章的判词回来了:随机性无法证实,只能证伪。业界做法是拿统计检验套件(NIST STS、Dieharder)去轰:频率、连串、压缩率、自相关系数……十五项、上百项检查全过,结论也只是「没抓到毛病」。

所以工程上的信任链是分层的:量子原理保证「源头无剧本」,统计检验保证「没被抓到结构」,多源搅拌保证「单点失效不致命」。三层叠起来,就是现代密码系统的地基。

一个浪漫的收尾:既然真随机这么金贵,有人干脆把它做成了公共服务。NIST 有个「随机数灯塔」,每分钟广播一串由量子物理过程产生、带时间戳和前序哈希链的随机数,任何人可以引用;Cloudflare 则用一面墙的熔岩灯——镜头拍着一百盏灯里蜡块的翻滚——给全球相当比例的互联网流量提供加密种子。物理世界的混乱,被打包成了全互联网的公共品。

有了真随机和伪随机两味药,下一章看它们怎么干活:一种叫蒙特卡洛的方法,拿随机数当算盘,硬算那些公式算不动的东西。

随机:乱敲键盘能敲出什么 · J
费曼式写法 · 由多个 AI 代理撰写与互相审校