Linux 打算合併 /dev/random 與 /dev/urandom 遇到的問題

标签: Computer Linux Murmuring OS Security | 发表时间:2022-04-03 12:33 | 作者:Gea-Suan Lin
出处:https://blog.gslin.org

Hacker News 上看到「 Problems emerge for a unified /dev/*random (lwn.net)」的,原文是「 Problems emerge for a unified /dev/*random」(付費內容,但是可以透過 Hacker News 上的連結直接看)。

標題提到的兩個 device 的性質會需要一些背景知識,可以參考維基百科上面「 /dev/random」這篇的說明,兩個都是 CSPRNG,主要的分別在於 /dev/urandom 通常不會 block:

The /dev/urandom device typically was never a blocking device, even if the pseudorandom number generator seed was not fully initialized with entropy since boot.

/dev/random 不保證不會 block,有可能會因為 entropy 不夠而卡住:

/dev/random typically blocked if there was less entropy available than requested; more recently (see below, different OS's differ) it usually blocks at startup until sufficient entropy has been gathered, then unblocks permanently.

然後順便講一下,因為這是 crypto 相關的設計修改,加上是 kernel level 的界面,安全性以及相容性都會是很在意的點,而 Hacker News 上的討論裡面很多是不太在意這些的,你會看到很多「很有趣」的想法在上面討論 XDDD

回到原來的文章,Jason A. Donenfeld (Linux kernel 裡 RNG maintainer 之一,不過近期比較知名的事情還是 WireGuard 的發明人) 最近不斷的在改善 Linux kernel 裡面這塊架構,這次打算直接拿 /dev/random 換掉 /dev/urandom:「 Uniting the Linux random-number devices」。

不過換完後 Google 的 Guenter Roeck 就在抱怨在 QEMU 環境裡面炸掉了:

This patch (or a later version of it) made it into mainline and causes a large number of qemu boot test failures for various architectures (arm, m68k, microblaze, sparc32, xtensa are the ones I observed). Common denominator is that boot hangs at "Saving random seed:". A sample bisect log is attached. Reverting this patch fixes the problem.

他透過 git bisect 找到發生問題的 commit,另外從卡住的訊息也可以大概猜到在虛擬機下 entropy 不太夠。

另外從他們三個 (加上 Linus) 在 mailing list 上面討論的訊息可以看到不少交流:「 Re: [PATCH v1] random: block in /dev/urandom」,包括嘗試「餵」entropy 進 /dev/urandom 的 code...

後續看起來還會有一些嘗試,但短期內看起來應該還是會先分開...

相关 [linux dev random] 推荐:

Linux 打算合併 /dev/random 與 /dev/urandom 遇到的問題

- - Gea-Suan Lin's BLOG
在 Hacker News 上看到「 Problems emerge for a unified /dev/*random (lwn.net)」的,原文是「 Problems emerge for a unified /dev/*random」(付費內容,但是可以透過 Hacker News 上的連結直接看).

linux下的/dev/shm/

- - DBA Blog
       /dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里. 因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果. 在linux下,它默认最大为内存的一半大小.    首先在/dev/stm建个tmp文件夹,然后与实际/tmp绑定.

Dev C++ 5.0.0.3釋出

- Mao.. - 程式設計 遇上 小提琴
還記得先前的吐嘈Dev C++用於教學嗎. 做為教學用的IDE,確實是小巧簡單上手的,Dev C++修掉那身臭蟲的話對於學生學習會遇到的問題也會較少,舉個例子,光是啟用除錯器,原本的Dev C++有bug,一定得到專案去設定而且還有奇怪的bug,弄半天才能進行debugging,可以參考我以前寫的.

Chrome Dev 升级到 16.0.912.0

- MessyCS - 谷奥——探寻谷歌的奥秘
Chrome Dev 分支 for Mac/Windows/Linux 和 Chrome Frame 升级到了 16.0.912.0,主要更新:. Javascript V8 引擎升级到 3.6.6.3. Native Client 和 Pepper 插件模块将允许游戏和其他程序在全屏模式下使用第一人称来控制并锁定光标.

Chrome Dev 13.0.772.0 去掉地址栏演示

- Riku - Chrome迷

Chrome Dev 分支进入 V15 时代

- gnawux - 谷奥——探寻谷歌的奥秘
Chrome Dev for Windows/Linux/Mac和Chrome Frame一起升级到了15.0.849.1版本,主要更新:. Javascript引擎升级到V8 3.5.2.0. FTP开始支持IS/2格式的目录列表分析器. 修复Hylafax目录列表分析器. 用原生的菜单代替了书签文件夹菜单.

Chrome Dev 分支更新到 14.0.835.29

- Eldy - Chrome迷
Chrome Dev 分支今天面向 Windows、Mac 以及 Linux 平台更新到了14.0.835.29,本次更新主要是修复了一些小问题,并且改进了在 Mac OS X Lion 下的稳定性,完整更新内容可以参考这里. 另外 Chromebooks (Acer AC700, Samsung Series 5, 以及 Cr-48) 中的 Chrome Dev 分支今天也迎来了更新,最新版本为 14.0.835.25,官方没有公布更新内容,反而说了一个已知问题:.

Chrome 15 Dev 发布,Chrome 14 进入Beta分支

- pisces - Chrome迷
Chrome Dev 分支今天迎来了 15.0.849.0(Mac版为15.0.849.1),主要更新内容如下:. V8引擎更新到 3.5.2.0;. FTP:为OS/2格式新增目录列表分析器;. FTP:修正Hylafax目录列表分析器的问题;. 修复了一些已知的稳定性问题;. 将书签文件夹菜单被替换成了本地菜单;.

Chrome Dev 分支升级到 16.0.889.0,加入多帐户登录

- 安得米 - 谷奥——探寻谷歌的奥秘
Chrome Dev分支for Windows/Mac OS X和Chrome Frame一起升级到16.0.889.0,Linux因为一些已知bug问题暂时没有一起联手升级. Javascript V8引擎升级到3.6.4.0. FTP修复会对CWD命令发送451的问题. Windows和Mac开始支持多帐户登录.

扬名的机会来了:Chronic Dev-Team正在招聘新人

- Darth Noctis - cnBeta.COM
作为一名果粉,看着曾经神奇小子Geohot,少年老成的Comex,身材魁梧的MuscleNerd,以及永远是一头飘逸长发的Saurik在越狱界 的超高人气,会不会让你产生这样一种想法:我也要去找iOS漏洞,然后成为为数以百万计的iOS用户开发出越狱工具的英雄.