2

我正在考虑将 OpenID 用于即将开展的一个项目。在阅读了有关 Janrain 的 OpenID 的 PHP 实现的一些教程并查看了源代码后,我将其上传到了我的服务器并测试了我的 Google ID 中包含的示例脚本,我收到了一些关于 CryptUtil.php 中的 Auth_OpenID_RAND_SOURCE 未设置的错误适当地。我通过 Google 找到了一个答案,将其定义为 null 而不是默认的 /dev/urandom。我的问题是,这显然不安全,对吧?/dev/urandom 是 linux 中的随机数生成器吗?在我的 Windows 机器上使用 /dev/urandom 来搞乱实现有什么好的替代方法?

4

1 回答 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 回答