是否可以将硬件RNG中的熵添加到Windows CryptoAPI?
我有一个USB硬件随机数发生器(TrueRNG),它看起来像一个USB CDC串口,可以用它在
Linux中使用rng-tools软件包的rngd向池中添加熵.
有没有办法将此串行流提供给Windows熵池,以便当应用程序使用CryptoAPI(CryptGenRandom函数)时,它们将从TrueRNG获取随机数? 我查看了CryptoAPI,似乎无法找到任何允许我将熵添加到操作系统中的内容.
根据官方文档,CryptGenRandom可以使用带有数据的可选输入缓冲区作为辅助随机种子,但开发人员必须决定是否要使用它,默认情况下,每次调用CryptGenRandom时都无法配置.
但请注意,现在,开发人员可以/应该使用来自CNG(Cryptography API:Next Generation)的BCryptGenRandom,它是CryptoAPI的替代品.但BCryptGenRandom不支持任何输入缓冲区作为额外的熵,无论如何从Windows 8及更高版本…… 我想这是微软的安全设计决定.他们不想支持“不受信任”的熵源,因为这对系统至关重要. 这是一个有趣的文档Microsoft Windows 7 Kernel Mode Cryptographic Primitives Library (cng.sys) Security Policy Document,列出了如何构建Windows熵池(我缩短了很多项,因此它是可读的):
它还列出了cng.sys支持的3种方法EntropyRegisterSource,EntropyUnregisterSource和EntropyProvideData. 我想使用它们可以工作,但它们没有在MSDN上记录(自从这篇文档是在2013年编写后它可能已经改变了,但是在我的Windows 10盒子里,cng.sys有3种方法加上EntropyPoolTriggerReseedForIum 另外,您必须编写内核驱动程序(cng.sys是内核驱动程序),这与安全性含义一致:您需要成为管理员才能安装它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows 8应用程序上处理屏幕旋转
- Windows系统调用中API的3环部分(依据分析重写ReadProcessMe
- 新鲜的Windows 8中,从/到Java首选项的阅读和写入失败,
- windows-server-2008-r2 – 用户登录脚本何时运行?
- 如何解释正在运行的进程列表之外的Windows Server上的内存使
- windows-server-2003 – 如何检查Windows服务器是否是虚拟服
- 在Windows上安装PHP PDO(xampp)
- windows-server-2003 – Win2k3终端服务ErrorID 7024
- Windows Phone 7.1是否支持SSL套接字?
- .net – 跨CPU体系结构从Windows 10 Universal App引用C Dl