Arc4random | OpenBSD 是否安全?

  • Linux:是第一个向用户空间暴露内核驱动的密码安全伪随机数生成器(CSPRNG)的操作系统,归功于 Theodore Ts’o,在 1995 年 9 月的 Linux 1.3.30 中添加,基于 MD5 混合随机信号。2014 年 7 月新增获取熵的新系统调用,2016 年 7 月将内核实现改为 ChaCha20 并在 Linux 4.8 中发布。
  • OpenBSD:1996 年 3 月基于 Ts’o 的工作在其代码库中添加了 /dev/random 和 /dev/urandom,1997 年 6 月在 OpenBSD 2.1 中发布。1996 年 8 月 David Mazieres 添加了 /dev/arnd 设备。1996 年 12 月在 OpenBSD 2.1 的 libc 中添加了 arc4random 函数,2013 年 10 月将其从 RC4 移至 ChaCha20,内核对应部分也在 2013 年 11 月更改,2014 年 5 月在 OpenBSD 5.5 中发布。2022 年 10 月 20 日发布的 OpenBSD 7.2 随机化了 arc4random(3)的重新加密间隔。
  • 其他:如今 userland 的 arc4random 在各种平台上可用,得益于 libbsd,NetBSD、FreeBSD、Linux 等都已迁移到基于 ChaCha20 的 CSPRNG,Tor 也因性能原因使用其部分代码。2022 年 Jason A. Donenfeld 在 Linux Plumbers Conference 2022 上提及 OpenBSD 的 PRNG 可能存在问题,因其 LFSR 使用非本原多项式。OpenBSD 曾因 DNS 中毒问题被 Amit Klein 攻击,其协调员曾表示对该问题不感兴趣,但后来团队态度有所转变。OpenBSD 的 PRNG 实现是用各种时间(键盘输入、中断延迟等)播种,不时与 CRC 混合到熵池中,用于为 ChaCha20 流密码重新播种,最终向用户提供熵。
阅读 25
0 条评论