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+.

Другие вопросы по тегам