我正在考虑将 OpenID 用于即将开展的一个项目。在阅读了有关 Janrain 的 OpenID 的 PHP 实现的一些教程并查看了源代码后,我将其上传到了我的服务器并测试了我的 Google ID 中包含的示例脚本,我收到了一些关于 CryptUtil.php 中的 Auth_OpenID_RAND_SOURCE 未设置的错误适当地。我通过 Google 找到了一个答案,将其定义为 null 而不是默认的 /dev/urandom。我的问题是,这显然不安全,对吧?/dev/urandom 是 linux 中的随机数生成器吗?在我的 Windows 机器上使用 /dev/urandom 来搞乱实现有什么好的替代方法?
问问题
966 次
1 回答
1
好吧,CryptUtil.php 说该类
*尝试使用加密安全(不可预测) * 随机来源(如果有)。如果没有高熵 * 随机源可用,它会失败。作为最后的手段, * 对于非关键系统,定义 *Auth_OpenID_RAND_SOURCE
作为null
, 和 * 代码将依赖于伪随机数生成器。
因此,如果您将此常量定义为 NULL,并且它无法找到任何其他熵源,这将意味着您根本没有熵源 - 基本上,不会有加密。以下是维基百科对 /dev/urandom 的评价:
/dev/random 的对应物是 /dev/urandom(“解锁”/非阻塞随机源 [4]),它重用内部池以产生更多伪随机位。这意味着调用不会阻塞,但输出包含的熵可能比从 /dev/random 中相应读取的少。目的是用作加密安全的伪随机数生成器。这可以用于不太安全的应用程序。
至于 Win32 上的熵源,您的 PHP 用户空间似乎没有很多好的选择。
于 2010-11-10T10:27:04.157 回答