Какую длину ключа следует использовать для простого числа и генератора Диффи-Хелмана? - PullRequest
2 голосов
/ 18 января 2010

В приведенном ниже коде, из вики Crypto ++, 128 - это число, которое я действительно должен использовать?

CryptoPP::AutoSeededRandomPool arngA;
CryptoPP::RandomNumberGenerator& rngA = *dynamic_cast<CryptoPP::RandomNumberGenerator *>(&arngA); 
CryptoPP::DH dhA(rngA, 128);
CryptoPP::Integer iPrime = dhA.GetGroupParameters().GetModulus();
CryptoPP::Integer iGenerator = dhA.GetGroupParameters().GetSubgroupGenerator();

1 Ответ

3 голосов
/ 19 января 2010

Факторизация целых чисел и дискретный логарифм по Z / (pZ) примерно одинаково трудны. Поэтому размер модуля для Диффи-Хеллмана должен быть примерно таким же, как вы бы выбрали для модуля RSA. Если вам удобен 1024-битный ключ RSA, то вам также может пригодиться 1024-битный ключ Диффи-Хеллмана.

Нелегко определить, измеряются ли размеры ключей в crypto ++ в битах или байтах. Как указывает Себастьян, dhA (rngA, 128) действительно может генерировать 128-битный ключ Диффи-Хеллмана, который был бы слишком маленьким. Проходя через код, похоже, что это действительно так.

Размер генератора iGenerator не влияет на безопасность Диффи-Хеллмана. (Т.е. iGenerator = 2 мог бы быть прекрасно)

...