2014-10-10 39 views
1

我已经通过mod_ssl的跟踪和OpenSSL的 FIPS代码,尽我所能,我相信,在mod_ssl.conf文件中给出的SSLRandomSeed配置参数根本没有做任何有用的当FIPS模式在mod_ssl中启用。了mod_ssl与FIPS模式中启动SSLRandomSeed

跟踪ssl_init_Module()中的代码似乎表明函数ssl_rand_seed()在FIPS模式设置之前调用。 ssl_rand_seed()将从给定的SSLRandomSeed定义的源执行播种,但是一旦切换到FIPS模式,DRBG将从头开始重新创建而不保留任何信息。

事实上,根据OpenSSL基本代码中定义的DEVRANDOM宏,OpenSSL的FIPS模式似乎不符合从/ dev/urandom,/ dev/random和/ dev/srandom(按此顺序)编译为标准Linux目标时的e_os.h。

有没有人有这种组合的经验?

他们可以评论如何提供运行时选择的熵源如加工文件吗?每次我想更改我的随机源时,是否必须重新编译OpenSSL并提供新的DEVRANDOM定义?

回答

0

他们可以评论如何提供运行时选择的熵源如加工文件吗?每次我想更改我的随机源时,是否必须重新编译OpenSSL并提供新的DEVRANDOM定义?

我认为这里有三个问题。首先,在FIPS模式下运行时用于PRNG的是什么;其次,你怎么种子的发电机;第三,Apache/mod_ssl如何与前两者集成。

首先,当FIPS_mode_enable成功时,默认的OpenSSL生成器md_rand被切换出来。所使用的DRBG在SP800-90(无双EC发生器)中指定。默认情况下,这是AES/CTR发生器。你是对的,因为之前的种子不再被使用。在OpenSSL wiki页面的Random Numbers上对此进行了一般性讨论。

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

第三,Apache/mod_ssl和OpenSSL之间存在断开。显然,Apache/mod_ssl不知道这些细节。您可能需要编写一些粘合代码,以了解如何使用OpenSSL和特定的接口。也许你可以通过提供一个自定义mod来做到这一点。