1. 课程导入与随机数需求分析
随机数并不是“随便写出来的一串数字”,而是对某个随机变量进行独立重复观测后得到的结果序列。严格地说,一个理想的随机比特序列应满足两个条件:一是每个比特取 0 或 1 的概率各为 1/2;二是任意两个比特之间统计独立,任何已知前缀都不能提高对下一位的预测准确率。工程上我们通常用频率检验、游程检验、自相关、熵估计和 NIST SP 800-22 等统计测试套件来近似验证这些性质。理解这一点很重要,因为光子量子随机数发生器(QRNG)的全部设计工作,最终都要落到“如何让输出比特尽可能逼近这一理想模型”上。
按熵来源和可预测性,随机数大致分为三类。伪随机数由确定性算法和种子生成,速度快、可复现,但只要种子泄露或算法被逆向,整条序列即可被重放,因此它提供的是计算安全性而非信息论安全性。真随机数通常来自热噪声、时钟抖动、放射性衰变等物理过程,熵源真实存在,但部分物理过程仍可能被建模或部分预测。量子随机数则利用量子力学内禀随机性,例如单光子到达探测器的时刻、光子经分束器后反射或透射的路径选择、真空涨落的正交分量等。以单光子分束为例,一个光子进入 50:50 分束器后,被反射或透射的概率各为 1/2,且这一结果在量子力学框架下不存在任何隐变量可以预先决定,这正是 QRNG 不可替代性的根源。
这种不可替代性在多个领域直接体现为硬需求。在密码学中,密钥生成、会话令牌、挑战值 nonce、一次性密码本都要求不可预测性;若随机源可被预测,再强的加密算法也会被绕过。在科学仿真中,蒙特卡洛积分、分子动力学、金融风险建模依赖高质量随机数来保证统计无偏。在博彩与抽奖系统中,随机数直接决定公平性,可审计的量子熵源能提供比伪随机算法更强的公信力。因此,本课程的目标不是泛泛讨论随机数,而是以光子量子过程为熵源,完成一套可运行、可测量、可验证的光子 QRNG 原型系统。
要建立对整门课程的整体认识,可以先看下面这张系统关系图。它把“需求—熵源—采集—处理—输出—验证”串成一条完整链路,并标出每一环的关键对象与判断依据。
围绕这条链路,本课程的学习路径可以概括为四个阶段。第一阶段建立随机性度量与熵源基础,理解最小熵、香农熵和量子随机性的区别,并掌握单光子探测、符合计数等基本实验手段。第二阶段进入硬件实现,包括光源选择(如衰减激光或自发参量下转换)、分束与干涉结构、单光子探测器(SPAD 或 SNSPD)的偏置与死时间管理,以及时间数字转换器(TDC)的采集时序。第三阶段是后处理算法,重点掌握 Toeplitz 哈希提取器、冯·诺依曼校正和基于最小熵的压缩比计算,例如当原始序列最小熵率为 0.85 bit/bit 时,提取器输出长度应不超过原始长度的 85%。第四阶段是系统集成与验证,把采集、处理、输出封装成可重复运行的软件流程,并用 NIST 测试和熵估计给出量化结论。
为了让后续章节有统一的参数参照,这里给出一个教学示例配置,用于说明原型系统可能的工作点。以下数值属于合理假设的示例,并非实测结果:
| 参数 | 示例值 | 说明 |
|---|---|---|
| 光源 | 850 nm 衰减激光 | 平均光子数约 0.1 每脉冲 |
| 分束器 | 50:50 光纤耦合 | 两路输出接探测器 |
| 探测器 | SPAD,死时间 50 ns | 两路独立探测 |
| 采集 | TDC 时间戳,分辨率 10 ps | 记录到达时刻差 |
| 原始速率 | 约 1 Mbit/s | 示例目标 |
| 最小熵率 | 0.85 bit/bit | 示例估计值 |
| 提取后速率 | 约 0.8 Mbit/s | 按 0.85 压缩比估算 |
在实现层面,一个最小可运行流程通常包含以下关键动作。首先初始化探测器偏置电压和 TDC 触发阈值,确保暗计数率低于设定上限,例如每秒 100 次。然后以固定周期采集两路时间戳,计算到达时间差 Δt,并按阈值把 Δt 映射为 0 或 1。接着对原始比特做游程检验和自相关检查,若发现明显偏置,则先做冯·诺依曼校正,再送入 Toeplitz 提取器。最后把输出比特写入文件并运行 NIST 测试。下面是一段示意性的伪代码,用于说明采集与映射逻辑:
初始化 SPAD_A, SPAD_B, TDC
设置阈值 voltage_A = voltage_B = 击穿电压 + 3V
循环采集 N 次:
t_A = TDC.read(channel_A)
t_B = TDC.read(channel_B)
Δt = t_A - t_B
若 Δt > 0:bit = 1
否则:bit = 0
将 bit 追加到 raw_bits
对 raw_bits 做偏置估计 p = count(1)/N
若 |p - 0.5| > 0.01:执行冯·诺依曼校正
按最小熵率 0.85 计算提取长度 L = floor(0.85 * len(raw_bits))
用 Toeplitz 矩阵提取 L 位输出
保存 output.bin 并运行 NIST 测试
需要特别强调的是,QRNG 的“量子性”并不自动等于“输出完美”。实际系统中,探测器死时间、后脉冲、光源多光子成分、电磁串扰都会引入经典相关性,因此必须通过熵估计和后处理把可预测部分压缩掉。判断一个光子 QRNG 是否达标,不能只看它能否产生 0/1,而要看三件事:原始序列的最小熵率是否被合理估计,提取器是否可证明地消除了偏置和关联,输出是否通过统计测试并保持稳定速率。这也是本课程最终交付原型系统时要一并给出的测试报告内容。