1. 课程导入与量子随机数全景
在密码学、安全仿真、抽签抽样、蒙特卡洛计算等场景中,我们经常需要“真正不可预测”的随机数。传统伪随机数发生器(PRNG)由确定性算法和种子驱动,只要种子与算法被掌握,输出序列就可被完整复现;而量子随机数发生器(QRNG)把随机性来源建立在量子力学测量结果的内禀不确定性上,从物理层面提供不可预测性。本课程关注的不是“如何造一台QRNG”,而是拿到QRNG输出的比特流之后,如何判断它是否足够随机、是否健康、能否被放心使用。
一、量子随机性的物理来源与输出形态
QRNG的物理来源可以来自多种量子过程,常见的有:
- 光子到达时间/路径选择:单光子经过分束器后,被探测器A或B探测,探测事件对应0或1。理想情况下两路概率各约50%。
- 相位噪声测量:激光经过干涉仪,本振光与信号光相位差被零差/外差探测,相位噪声经ADC采样后提取随机比特。
- 自发辐射/放大自发辐射:利用量子噪声主导的强度起伏,经光电探测后量化。
- 原子/离子能级跃迁:测量二能级系统处于基态或激发态,得到量子测量结果。
无论物理机制如何,QRNG最终通常以三种形态对外提供随机性:
- 原始比特流:探测器或ADC直接输出的0/1序列,可能带有偏置、相关性、死时间、后脉冲等非理想因素。
- 原始随机数:对原始比特流做初步打包、去偏或简单后处理后的字节/字序列。
- 可用随机数:经过随机性提取(如哈希、异或、矩阵提取)和健康检测后,可交付给应用系统的最终随机数。
这三者不能混为一谈。原始比特流“看起来随机”不等于“统计上合格”;经过提取后的随机数也不能替代对原始源的持续健康监测。课程后续会反复区分这三个层次。
二、从原始比特流到可用随机数的全流程
一个典型的QRNG随机数交付链路可以概括为:物理源 → 探测/采样 → 原始比特流 → 健康检测 → 随机性提取 → 统计测试 → 可用随机数。其中健康检测与统计测试的目标边界不同:
- 健康检测(Health Testing):面向设备运行状态,实时或准实时地判断源是否“活着”、是否出现明显故障或退化,例如探测器无响应、偏置突然增大、熵源输出卡死。它强调快速告警,不追求完整的统计证明。
- 随机性测试(Randomness Testing):面向输出序列的统计性质,用NIST SP 800-22、Dieharder、TestU01等测试套件评估频率、游程、块内频数、近似熵、线性复杂度等指标,判断序列是否偏离理想随机模型。
两者是互补关系:健康检测保证“源没有坏”,随机性测试保证“输出没有明显统计缺陷”。只做其中一项都不足以支撑安全使用。
三、目标边界:随机性测试与健康检测各自解决什么问题
很多初学者会把“随机性测试”和“健康检测”当成同一件事,实际上它们的输入、输出、时间尺度和失败处理方式都不同。
| 维度 | 健康检测 | 随机性测试 |
|---|---|---|
| 检测对象 | QRNG设备/熵源运行状态 | 输出比特序列的统计性质 |
| 典型输入 | 原始比特流、探测器计数、偏置估计 | 足够长的比特序列(如1 Mbit~1 Gbit) |
| 时间尺度 | 毫秒~秒级,实时/准实时 | 秒~分钟级,离线或准离线 |
| 典型方法 | 频率监测、游程监测、熵估计、卡方快速检验 | NIST SP 800-22、Dieharder、TestU01 |
| 失败处理 | 告警、降级、停止输出 | 分析原因、调整提取、重新采样 |
需要特别强调的是:随机性测试通过,不等于QRNG一定安全。统计测试只能发现“明显偏离随机模型”的序列,无法证明序列不可预测。一个由确定性算法生成的伪随机序列,同样可以通过NIST测试。因此,QRNG的安全性最终依赖于物理源的量子不确定性,而测试与检测是保障工程实现没有引入额外缺陷的手段。
四、本课程的学习路径
围绕“从原始比特流到可用随机数”这条主线,课程将依次展开:量子随机性的物理基础与熵源模型、原始比特流的常见非理想特征、健康检测的指标与实现、随机性测试套件的使用与结果判读、随机性提取的原理与参数选择、以及面向实际QRNG设备的测试与排障方法。每一节都会尽量给出可操作的参数、示例数据和判断依据,帮助你把“随机性测试与健康检测”从概念变成可执行的工程能力。