我正在为高安全性应用程序(以及潜在的数据中心)设计和构建一个量子随机数生成器。作为其中的一部分,我想将我的设备生成的随机数输入/dev/random/
,这样最终用户就不需要修改他们的应用程序来使用新的 RN 源。他们只需将其插入并改善“/dev/random/”中的熵。
显然,我必须编写一个设备驱动程序来处理通过 USB 或 PCI-E 从我的设备获取随机数据(尚未决定我将使用哪个接口)。但是,我不知道如何将这些随机数据添加到/dev/random/
任何想法可用的熵池中?
另一种选择(我认为)是/dev/random/
用我的设备驱动程序替换并确保它具有所有必要的行为,但这似乎不是一个好主意......
这很难实现,因为您还必须复制所有当前和未来的界面,否则您会破坏很多东西。也许看看源代码以获得它的印象(在源代码注释中记录了长度的输出和输入接口)。
这取决于。例如,有“随机生成器”只是伪装成 USB 键盘并通过该通道发送随机数据(或密码、加密密钥、一次性键盘……),因此不需要专用的设备驱动程序,而只是搭载到现有的驱动程序。
一般来说,系统熵可能会受到用户空间的影响,请参阅
systemd-random-seed.service
或hasged和其他此类工具使用的RNDADDENTROPY
ioctl 。然而,通过所有这些方法,内核仍然控制着
/dev/[u]random
设备返回的数据。你无法预测。如果您希望它真正使用您自己生成的随机数据,则必须直接从您的设备中读取它,而无需通过内核随机设备。