OpenSSL использовал фиксированные значения для генерации ключей Диффи-Хеллмана
Согласно этой части документации: https://wiki.openssl.org/index.php/Diffie_Hellman
Использование API низкого уровня для Диффи-Хеллмана (необходимо выполнить групповое соглашение о ключах).
Для простоты мне нужно предоставить фиксированные значения для Диффи-Хеллмана p
а также g
значения на данный момент я использую функцию DH_generate_parameters_ex
но любое решение, использующее эти опции, может добавить коммуникационные издержки, и есть фиксированные значения для p
а также g
для Диффи Хеллмана, предлагающего хорошую безопасность.
Таким образом, используя соглашение о подходе к конфигурации, как я могу установить фиксированные значения, особенно те, которые указаны в этом RFC, чтобы открыть низкоуровневый метод генерации значений на лету?
PS Я использую OpenSSL версии 1.0.2g.
1 ответ
(Внешние) простые числа для групп RFC3526 и RFC2409 встроены для этой страницы руководства (также должны быть в вашей системе под этими именами, если 1.1.0+) - они фактически находятся в коде до версии 1.0.0, но без BN_
префикс (хотя в bn.h
заголовок) и ранее без документов. (В 1.1.0+ старые имена дополнительно #define'd, если установлена совместимость.)
AFAICS вы должны добавить генератор самостоятельно, что-то вроде:
DH *dh = DH_new(); BIGNUM *two = BN_new();
if( !dh || !two ) /* error */;
BN_set_word(two,2);
// corrected AGAIN!
DH_set0_pqg (dh, BN_dup(BN_get_rfc3526_prime_2048(NULL)), NULL, two);
// added: below 1.1.0 many API structs were not opaque, just
dh->p = BN_dup(/*not BN_*/ get_rfc3526_prime_2048(NULL));
dh->g = two;
// leave q as unspecified
Примечание. Параметры modp для RFC5114 доступны предварительно в DH*
форма но только в 1.1.0+.