Openssl 启用FIPS模式和SSLRandomSeed的mod_ssl

Openssl 启用FIPS模式和SSLRandomSeed的mod_ssl,openssl,fips,mod-ssl,Openssl,Fips,Mod Ssl,我已经尽我所能跟踪了mod_ssl和OpenSSLFIPS代码,我相信mod_ssl.conf文件中给出的SSLRandomSeed配置参数在mod_ssl中启用FIPS模式时根本没有任何用处 跟踪ssl\u init\u Module()中的代码显示在设置FIPS模式之前调用了函数ssl\u rand\u seed()ssl\u rand\u seed()将从给定的SSLRandomSeed定义源执行种子设定,但一旦切换到FIPS模式,DRBG将从头开始重新创建,而不保留任何信息 事实上,在为

我已经尽我所能跟踪了mod_sslOpenSSLFIPS代码,我相信
mod_ssl.conf
文件中给出的
SSLRandomSeed
配置参数在mod_ssl中启用FIPS模式时根本没有任何用处

跟踪
ssl\u init\u Module()
中的代码显示在设置FIPS模式之前调用了函数
ssl\u rand\u seed()
ssl\u rand\u seed()
将从给定的SSLRandomSeed定义源执行种子设定,但一旦切换到FIPS模式,DRBG将从头开始重新创建,而不保留任何信息

事实上,在为标准Linux目标编译时,根据OpenSSL基本代码e_os.h中定义的DEVRANDOM宏,OpenSSL的FIPS模式似乎完全可以从/dev/urandom、/dev/random和/dev/srandom(按该顺序)获得源代码

有人有过这种组合的经验吗?

他们能否就如何提供运行时选择的熵源(如已处理的文件)发表评论?每次我想更改随机性源时,是否必须重新编译OpenSSL并提供新的DEVRANDOM定义

他们能否就如何提供运行时选择的熵源(如已处理的文件)发表评论?每次我想更改随机性源时,是否必须重新编译OpenSSL并提供新的DEVRANDOM定义

我认为这里有三个问题。首先,在FIPS模式下运行时,PRNG使用了什么;第二,如何为发电机播种;第三,Apache/mod_ssl如何与前两者集成

首先,当
FIPS\u mode\u enable
成功时,将关闭
md\u rand
的默认OpenSSL生成器。使用的DRBG在(SAN双EC生成器)中指定。默认情况下,这是AES/CTR生成器。您是正确的,前面的种子不再使用。这将在OpenSSL wiki页面上进行一般性讨论

其次,发电机自动播种,以确保其处于良好的工作状态。您仍然可以调用
RAND_seed
向生成器添加熵,因为RAND接口对底层生成器几乎是不可知的。这将在OpenSSL wiki页面上进行一般性讨论

第三,Apache/mod_ssl和OpenSSL之间存在断开连接。显然,Apache/mod_ssl不知道这些细节。您可能需要编写一些胶水代码,了解如何使用OpenSSL,尤其是
RAND.*
接口。也许你可以通过提供一个定制的mod来做到这一点