1. 课程导入与量子随机数全景

在密码学、安全仿真、抽签抽样、蒙特卡洛计算等场景中,我们经常需要“真正不可预测”的随机数。传统伪随机数发生器(PRNG)由确定性算法和种子驱动,只要种子与算法被掌握,输出序列就可被完整复现;而量子随机数发生器(QRNG)把随机性来源建立在量子力学测量结果的内禀不确定性上,从物理层面提供不可预测性。本课程关注的不是“如何造一台QRNG”,而是拿到QRNG输出的比特流之后,如何判断它是否足够随机、是否健康、能否被放心使用。

一、量子随机性的物理来源与输出形态

QRNG的物理来源可以来自多种量子过程,常见的有:

  • 光子到达时间/路径选择:单光子经过分束器后,被探测器A或B探测,探测事件对应0或1。理想情况下两路概率各约50%。
  • 相位噪声测量:激光经过干涉仪,本振光与信号光相位差被零差/外差探测,相位噪声经ADC采样后提取随机比特。
  • 自发辐射/放大自发辐射:利用量子噪声主导的强度起伏,经光电探测后量化。
  • 原子/离子能级跃迁:测量二能级系统处于基态或激发态,得到量子测量结果。

无论物理机制如何,QRNG最终通常以三种形态对外提供随机性:

  1. 原始比特流:探测器或ADC直接输出的0/1序列,可能带有偏置、相关性、死时间、后脉冲等非理想因素。
  2. 原始随机数:对原始比特流做初步打包、去偏或简单后处理后的字节/字序列。
  3. 可用随机数:经过随机性提取(如哈希、异或、矩阵提取)和健康检测后,可交付给应用系统的最终随机数。

这三者不能混为一谈。原始比特流“看起来随机”不等于“统计上合格”;经过提取后的随机数也不能替代对原始源的持续健康监测。课程后续会反复区分这三个层次。

二、从原始比特流到可用随机数的全流程

一个典型的QRNG随机数交付链路可以概括为:物理源 → 探测/采样 → 原始比特流 → 健康检测 → 随机性提取 → 统计测试 → 可用随机数。其中健康检测与统计测试的目标边界不同:

  • 健康检测(Health Testing):面向设备运行状态,实时或准实时地判断源是否“活着”、是否出现明显故障或退化,例如探测器无响应、偏置突然增大、熵源输出卡死。它强调快速告警,不追求完整的统计证明。
  • 随机性测试(Randomness Testing):面向输出序列的统计性质,用NIST SP 800-22、Dieharder、TestU01等测试套件评估频率、游程、块内频数、近似熵、线性复杂度等指标,判断序列是否偏离理想随机模型。

两者是互补关系:健康检测保证“源没有坏”,随机性测试保证“输出没有明显统计缺陷”。只做其中一项都不足以支撑安全使用。

QRNG 从物理源到可用随机数的全流程 量子物理源 光子/相位/噪声 探测与采样 SPAD / ADC 原始比特流 0/1 序列 健康检测 实时告警 通过 → 继续 异常 → 告警/停用 随机性提取 哈希/异或/矩阵 随机性测试 NIST / Dieharder 可用随机数 交付应用系统 测试未通过 → 调整提取参数或更换源 健康检测关注“源是否正常”,随机性测试关注“输出是否统计合格”,两者互补,缺一不可

三、目标边界:随机性测试与健康检测各自解决什么问题

很多初学者会把“随机性测试”和“健康检测”当成同一件事,实际上它们的输入、输出、时间尺度和失败处理方式都不同。

维度 健康检测 随机性测试
检测对象 QRNG设备/熵源运行状态 输出比特序列的统计性质
典型输入 原始比特流、探测器计数、偏置估计 足够长的比特序列(如1 Mbit~1 Gbit)
时间尺度 毫秒~秒级,实时/准实时 秒~分钟级,离线或准离线
典型方法 频率监测、游程监测、熵估计、卡方快速检验 NIST SP 800-22、Dieharder、TestU01
失败处理 告警、降级、停止输出 分析原因、调整提取、重新采样

需要特别强调的是:随机性测试通过,不等于QRNG一定安全。统计测试只能发现“明显偏离随机模型”的序列,无法证明序列不可预测。一个由确定性算法生成的伪随机序列,同样可以通过NIST测试。因此,QRNG的安全性最终依赖于物理源的量子不确定性,而测试与检测是保障工程实现没有引入额外缺陷的手段。

四、本课程的学习路径

围绕“从原始比特流到可用随机数”这条主线,课程将依次展开:量子随机性的物理基础与熵源模型、原始比特流的常见非理想特征、健康检测的指标与实现、随机性测试套件的使用与结果判读、随机性提取的原理与参数选择、以及面向实际QRNG设备的测试与排障方法。每一节都会尽量给出可操作的参数、示例数据和判断依据,帮助你把“随机性测试与健康检测”从概念变成可执行的工程能力。

学习建议:在后续章节中,遇到具体测试项时,先明确它的零假设是什么、统计量如何构造、显著性水平如何选取,再去看p值。不要只记“通过/不通过”,要理解“在什么条件下、以多大概率、拒绝什么假设”。
常见误区:把QRNG输出的原始比特流直接当作可用随机数使用;或者只做一次NIST测试就认为设备长期可靠。正确做法是:原始流必须经过健康检测与随机性提取,且健康检测要持续运行,随机性测试要按周期复测。