Openssl RAND_bytes алгоритм - PullRequest
       6

Openssl RAND_bytes алгоритм

3 голосов
/ 25 апреля 2010

Какой алгоритм использует функция RAND_bytes в OpenSSL?

1 Ответ

4 голосов
/ 15 декабря 2010

OpenSSL может загружать и запускать различные механизмы случайных чисел, и не ограничивается одной реализацией. RAND_bytes реализован в crypto/rand/rand_lib.c, и он получает указатель функции на конкретную реализацию ГСЧ, вызывая функцию RAND_get_rand_method() в том же файле.

Таким образом, предполагая, что вы не загрузили новый движок ГСЧ, OpenSSL выберет одно из следующего:

  1. По умолчанию выбирается RAND_SSLeay(), реализованный в crypto/rand/md_rand.c, что в конечном итоге вызывает ssleay_rand_bytes(). Я не думаю, что у него действительно есть имя, и случайность в конечном итоге исходит из дайджеста сообщений (MD_Update).

  2. Если вы запускаете модуль 1.0 FIPS в режиме FIPS, вы получаете ГСЧ ANSI X9.31, который использует либо 3DES, либо AES в своей основе. (Обратите внимание, что ANSI X9.31 больше не разрешен в FIPS 140-2).

  3. Если вы используете модуль 2.0 FIPS в режиме FIPS, вы получаете детерминированный генератор случайных битов SP (DRBG) SP 800-90A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...