2010-01-18 2 views
2

Dans le code ci-dessous, à partir du wiki Crypto ++, 128 est le nombre que je devrais vraiment utiliser?Pour le prime Diffie Helman et le générateur, quelle longueur de clé dois-je utiliser?

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(); 
+0

La documentation est quelque peu opaque pour moi. Je ne peux pas dire si 128 est la taille en bits de la prime de DH, ou quelque chose d'autre. –

+0

Merci pour cette question et le code. Le code dans le Wiki est incomplet je pense, il manque le casting dynamique. (http://www.cryptopp.com/wiki/Diffie-Hellman) – Sebastian

Répondre

3

La factorisation d'entier et le logarithme discret sur Z/(pZ) sont à peu près également difficiles. Par conséquent, la taille du module de Diffie-Hellman devrait être à peu près la même que celle que vous auriez choisie pour un module RSA. Si vous êtes à l'aise avec une clé RSA 1024 bits, vous pouvez également être à l'aise avec une clé Diffie-Hellman 1024 bits.

Il n'est pas facile de savoir si les tailles de clé dans crypto ++ sont mesurées en bits ou en octets. Comme le fait remarquer Sebastian, dhA (rngA, 128) peut en effet générer une clé Diffie-Hellman de 128 bits, ce qui serait trop petit. En passant par le code, on dirait que c'est effectivement le cas.

La taille du générateur iGenerator n'affecte pas la sécurité de Diffie-Hellman. (Par exemple, iGenerator = 2 pourrait être parfaitement bien)

+2

Essayer ce code donne un nombre avec environ 40 chiffres qui correspond à un code de 128 bits. En changeant le paramètre à 1024, iPrime a environ 300 chiffres. – Sebastian

+0

@Sebastian, Merci, on dirait que tu as raison. – abc

Questions connexes