482 / 691CSPRNG

CSPRNG

密码学安全伪随机数生成器

CSPRNG 从秘密状态生成输出,使已知值无法用于实际预测其他值。安全性还取决于初始熵、状态恢复以及接口的正确使用。

CSPRNG 是面向密码学用途的确定性生成器。伪随机不等于薄弱:关键是在所述假设下抵抗攻击者的能力。算法、熵源和使用输出的代码必须分别评估。

RFC 4086 区分密码学强序列与普通模拟生成器。知道部分输出不应使剩余输出可被猜出。统计测试本身不能证明这一性质;可预测的 seed 甚至会破坏看起来复杂的输出。 [RFC 4086 — Cryptographically strong sequences]

NIST SP 800-90A Rev. 1 规定了 Hash_DRBG、HMAC_DRBG 和 CTR_DRBG。CSPRNG 标签并不认证每种实现。必须明确机制、参数和熵的获取方式,而不只是散列函数的名称。 [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]

Backtracking resistance 在当前状态泄露后保护先前输出。Prediction resistance 针对未来输出;NIST SP 800-90A 将其与有效注入新鲜熵联系起来。任何一项都不自动意味着另一项,也不意味着再调用一次即可恢复安全。 [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]

OpenSSL 3.5 规定 RAND_bytes() 和 RAND_priv_bytes() 成功返回 1,其他失败返回 0,不支持的方法返回 -1。熵源失败时可能拒绝生成。应用必须检查结果,而不能使用未经确认的缓冲区。 [OpenSSL 3.5 — RAND_bytes return values and errors]

libsodium randombytes_buf_deterministic() 对相同 seed 生成相同序列,例如用于测试。恢复虚拟机快照可能重复状态和输出。测试的可重复性不保证各副本中的秘密相互独立。 [libsodium — Random data and deterministic testing]

libsodium randombytes_uniform() 在上界以下均匀选择,避免简单取余造成的偏差。优质输入字节本身并不保证正确映射到目标范围。密钥还必须遵守相应算法的规则。 [libsodium — Random data and deterministic testing]

RFC 8439 要求同一密钥下不能重复 nonce;看起来随机并不证明唯一性。RFC 6979 则描述确定性生成签名值 k。因此,CSPRNG 并非协议规则的通用替代品。 [RFC 8439 — Nonce uniqueness] [RFC 6979 — Deterministic signing]

记录库版本、机制、初始化、错误以及恢复或克隆状态后的行为。OpenSSL 和 libsodium 文档描述的是各自的特定函数,而非任意钱包的安全性。优质生成也不能阻止备份日后泄露。 [OpenSSL 3.5 — RAND_bytes return values and errors] [libsodium — Random data and deterministic testing]

要获得更完整的理解,请将本词条与以下词条结合阅读: Cryptographic Entropy, Random Number Generator, Deterministic RNG, Seed Generation. 反向关联还来自: Dice Roll Entropy, Cryptographic Entropy, Random Number Generator, Deterministic RNG.

DOC · 001RFC 4086 — Cryptographically strong sequences规范 ↗DOC · 002NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance规范 ↗DOC · 003OpenSSL 3.5 — RAND_bytes return values and errors文档 ↗DOC · 004libsodium — Random data and deterministic testing文档 ↗DOC · 005RFC 8439 — Nonce uniqueness规范 ↗DOC · 006RFC 6979 — Deterministic signing规范 ↗
来源优先 · 非投资建议