2014-10-10 1 views
1

Я проследил через mod_ssl и код OpenSSL FIPS, как лучшее, что я могу, и я считаю, что параметр SSLRandomSeed конфигурации приведены в файле mod_ssl.conf просто ничего полезного, когда не делать Режим FIPS включен в mod_ssl.mod_ssl с режимом FIPS включен и SSLRandomSeed

Отслеживание кода в ssl_init_Module() показывает, что функция ssl_rand_seed() вызывается до режима FIPS. ssl_rand_seed() будет выполнять посев из заданного источника (ов) определенных SSLRandomSeed, но как только вы переключаетесь в режим FIPS, DRBG воссоздается с нуля без сохранения какой-либо информации.

Фактически, режим FIPS OpenSSL, похоже, выходит из источника/dev/urandom,/dev/random и/dev/srandom (в указанном порядке) в соответствии с макросом DEVRANDOM, определенным в базовом коде OpenSSL e_os.h при компиляции для стандартной цели Linux.

Есть ли у кого-нибудь опыт работы с этой комбинацией?

Могут ли они прокомментировать, как обеспечить выбранный источник энтропии времени выполнения, такой как обработанный файл? Должен ли я перекомпилировать OpenSSL и предоставлять новое определение DEVRANDOM каждый раз, когда я хочу изменить свой случайный источник?

ответ

0

Могут ли они прокомментировать, как обеспечить выбранный источник энтропии времени выполнения, такой как обработанный файл? Должен ли я перекомпилировать OpenSSL и предоставлять новое определение DEVRANDOM каждый раз, когда я хочу изменить свой случайный источник?

Думаю, здесь есть три вопроса. Во-первых, что используется для PRNG при работе в режиме FIPS; во-вторых, как вы засеиваете генератор; и в-третьих, как Apache/mod_ssl интегрируются с первыми двумя.

Во-первых, когда FIPS_mode_enable преуспевает, тогда генератор OpenSSL по умолчанию md_rand отключается. Используемый DRBG указан в SP800-90 (без генератора Dual-EC). По умолчанию это генератор AES/CTR. Вы правы в том, что предыдущее семя больше не используется. Это обсуждается в целом на странице wiki-страницы Random Numbers OpenSSL.

Во-вторых, генератор автоматически засекает сам, чтобы обеспечить его в хорошем рабочем состоянии. Вы все равно можете позвонить RAND_seed, чтобы добавить энтропию к генератору, потому что интерфейс RAND в значительной степени несовместим с базовым генератором. Это обсуждается в целом на странице wiki-страницы Random Numbers OpenSSL.

В-третьих, существует разрыв между Apache/mod_ssl и OpenSSL. По-видимому, Apache/mod_ssl не знает об этих деталях. Вам, вероятно, потребуется написать некоторый код, который понимает, как работать с OpenSSL и с интерфейсом RAND_*, в частности. Возможно, вы можете сделать это, предоставив собственный мод.