OpenSSL использовал фиксированные значения для генерации ключей Диффи-Хеллмана - PullRequest
0 голосов
/ 05 февраля 2019

Согласно этой части документации: https://wiki.openssl.org/index.php/Diffie_Hellman#Using_the_Low_Level_APIs

Использование API низкого уровня для Диффи-Хеллмана (необходимо выполнить групповое соглашение о ключах).

Для простоты мне нужно предоставить фиксированные значения для значений Диффи-Хеллмана p и g, на данный момент я использую функцию DH_generate_parameters_ex, но любое решение, использующее эти опции, может добавить накладные расходы на связь, и есть фиксированные значениядля p и g для Diffie Hellman, обеспечивающей хорошую безопасность.

Итак, используя соглашение о подходе к конфигурации, как я могу установить фиксированные значения, особенно те, которые указаны в этом RFC , для opensslНизкоуровневый интерфейс создания на лету?

PS Я использую OpenSSL версии 1.0.2g.

1 Ответ

0 голосов
/ 05 февраля 2019

Встроенные (внешние) простые числа для групп 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

Примечание RFC5114 modpпараметры доступны предварительно в форме DH*, но только в версии 1.1.0+.

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