WEBKT

高安全场景下,当硬件TRNG不可用时,我们有哪些实用的伪随机数生成折中方案?

42 0 0 0

在金融交易、医疗设备或关键基础设施等对安全性要求极高的场景中,伪随机数(PRNG)的熵源质量直接关系到系统的整体安全。然而,许多嵌入式设备或特定硬件平台因成本、功耗或设计限制,无法集成真随机数发生器(TRNG)。这时,除了纯软件PRNG,我们确实有一些值得考虑的折中方案。

方案一:混合外部廉价随机器源

正如用户所提到的,可以集成外部的低成本随机器源,例如白噪声IC。这类芯片通常通过放大热噪声或半导体固有噪声来产生模拟信号,再经ADC转换为数字随机位。

  • 实现要点
    • 信号调理:噪声信号通常微弱,需要精密的模拟前端电路进行放大和滤波,以提高信噪比。
    • 后处理:直接输出的比特流可能存在相关性,必须经过严格的数字后处理(如使用SHA-256、AES-CTR等加密哈希函数)来“提纯”熵,消除偏差和模式。
    • 熵评估:这是关键。必须定期(如每次启动时)使用统计测试套件(如NIST STS、Dieharder)评估熵源的输出质量,确保其符合安全标准。
  • 适用场景:适用于对成本敏感但有一定空间和功耗预算的设备。例如,某些工业控制器或需要满足FIPS 140-2/3认证的模块。
  • 挑战:模拟电路设计复杂,容易受环境干扰(温度、电源噪声),且长期可靠性需要验证。

方案二:采用确定性加密算法构建CSPRNG

如果外部随机器源也无法集成,可以基于一个初始的、足够长的种子(Seed),利用确定性加密算法构建密码学安全的伪随机数生成器(CSPRNG)。

  • 核心思路:将一个强加密算法(如AES、ChaCha20)的输出作为随机数流。算法的确定性保证了输出的可复现性(仅在种子相同时),而其密码学特性保证了输出的不可预测性。
  • 关键实践
    • 种子质量:这是方案的“阿喀琉斯之踵”。种子必须来自不可预测的熵源。在资源受限设备上,可以收集运行时环境熵,例如:高精度定时器(微秒级中断)、设备唯一ID、传感器噪声(如陀螺仪、麦克风的微小波动)、网络包到达时间等。将这些数据混合并通过哈希函数生成种子。
    • 算法选择:优先选择经过广泛审查和标准化的算法,如NIST SP 800-90A中定义的CTR_DRBGHMAC_DRBG,或使用ChaCha20作为流密码。
    • 状态管理:必须妥善保护内部状态(如计数器、密钥),防止侧信道攻击。
  • 适用场景:适用于资源极度受限、且无法增加任何外部随机器源的场景。例如,某些超低功耗物联网传感器节点。
  • 优势与风险:实现相对简单,无需模拟电路。但安全性完全依赖于初始种子的熵。如果种子熵不足,整个系统的随机性将被破坏。

方案三:基于物理不可克隆函数(PUF)

PUF是一种利用芯片制造过程中产生的微观物理差异来产生唯一、不可克隆响应的技术。虽然PUF本身不直接生成随机数,但可以作为熵源

  • 工作原理:为芯片提供一个挑战(Challenge),PUF电路会输出一个唯一的响应(Response)。由于制造工艺的随机性,该响应是随机的且不可预测的。
  • 与PRNG结合:将PUF的响应作为种子或直接熵源,输入到后端的确定性算法中,生成随机数流。
  • 挑战:PUF的响应可能存在“噪声”和“不稳定性”,需要复杂的纠错和稳定化电路。此外,PUF的长期可靠性和安全性仍在持续研究中。

实践建议与总结

  1. 分层防御:不要依赖单一方案。可以采用“外部噪声IC + 确定性算法”或“PUF + 确定性算法”的混合架构,提高整体安全性。
  2. 持续熵监测:无论采用何种方案,都必须在运行时持续监测熵池的熵值。当熵值低于安全阈值时,应暂停或降级服务,并告警。
  3. 标准化与认证:在金融、医疗等强监管领域,方案设计必须参考NIST SP 800-90系列、FIPS 140-3等标准,并考虑通过相关安全认证。
  4. 避免的陷阱
    • 不要使用time(NULL)rand()等非加密级PRNG作为熵源。
    • 不要忽略种子生成阶段的熵收集。
    • 不要假设外部噪声IC的输出是完美的,必须进行后处理和测试。

在无法获得硬件TRNG的情况下,通过精心设计的熵源混合方案基于密码学算法的确定性生成,我们依然可以在资源受限的环境中构建出满足高安全要求的伪随机数生成系统。方案的选择最终取决于具体的应用场景、安全等级、成本预算和硬件能力。

架构师老张 伪随机数生成安全架构熵源

评论点评