启用 FIPS 模式和 SSLRandomSeed 的 mod_ssl
Posted
技术标签:
【中文标题】启用 FIPS 模式和 SSLRandomSeed 的 mod_ssl【英文标题】:mod_ssl with FIPS mode enabled and SSLRandomSeed 【发布时间】:2014-12-06 02:52:41 【问题描述】:我已尽我所能跟踪 mod_ssl 和 OpenSSL FIPS 代码,并且我相信 mod_ssl.conf
文件中给出的 SSLRandomSeed
配置参数很简单在 mod_ssl 中启用 FIPS 模式时不会做任何有用的事情。
跟踪ssl_init_Module()
中的代码似乎表明函数ssl_rand_seed()
在设置FIPS 模式之前被调用。 ssl_rand_seed()
将从给定的 SSLRandomSeed 定义的源执行播种,但一旦您切换到 FIPS 模式,DRBG 将从头开始重新创建,而不保留任何信息。
事实上,根据 OpenSSL 基本代码 e_os 中定义的 DEVRANDOM 宏,OpenSSL 的 FIPS 模式似乎不遗余力地从 /dev/urandom、/dev/random 和 /dev/srandom(按此顺序)获取源.h 为标准 Linux 目标编译时。
有人有这种组合的经验吗?
他们能否评论如何提供运行时选定的熵源,例如已处理的文件?每次我想更改随机源时,是否必须重新编译 OpenSSL 并提供新的 DEVRANDOM 定义?
【问题讨论】:
【参考方案1】:他们能否评论如何提供运行时选定的熵源,例如已处理的文件?每次我想更改随机源时,是否必须重新编译 OpenSSL 并提供新的 DEVRANDOM 定义?
我认为这里有三个问题。首先,在 FIPS 模式下运行时 PRNG 使用什么;第二,如何为生成器播种;第三,Apache/mod_ssl如何与前两者整合。
首先,当FIPS_mode_enable
成功时,则默认的md_rand
的OpenSSL生成器被关闭。使用的 DRBG 在SP800-90 中指定(没有双 EC 生成器)。默认情况下,这是 AES/CTR 生成器。您是正确的,因为不再使用以前的种子。这在Random Numbers OpenSSL wiki 页面上进行了一般性讨论。
其次,生成器会自动播种以确保其处于良好的工作状态。您仍然可以调用RAND_seed
向生成器添加熵,因为 RAND 接口与底层生成器几乎无关。这在Random Numbers OpenSSL wiki 页面上进行了一般性讨论。
第三,Apache/mod_ssl 和 OpenSSL 之间存在脱节。显然,Apache/mod_ssl 不知道这些细节。您可能需要编写一些胶水代码来了解如何使用 OpenSSL,尤其是 RAND_*
接口。也许您可以通过提供自定义 mod 来做到这一点。
【讨论】:
以上是关于启用 FIPS 模式和 SSLRandomSeed 的 mod_ssl的主要内容,如果未能解决你的问题,请参考以下文章
无线网无法连接,之前又设置为此网络启用联邦信息处理标准FIPS兼容,是Win10的,怎么处理,关闭联邦兼容模式
在windows7无线网络属性高级设置中有个选项:为此网络启用联邦信息处理标准(FIPS)兼容究竟是
请高手解答在windows7中的为此网络启用联邦信息处理标准(FIPS)兼容究竟是啥意思