2010-01-18 3 views
2

아래의 코드에서 Crypto ++ wiki는 128을 사용해야합니까?Diffie Helman 프라임 및 제너레이터의 경우 어떤 키 길이를 사용해야합니까?

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

설명서가 다소 불투명합니다. 나는 128이 DH 프라임의 비트 단위 크기인지 또는 다른 것이 있는지를 알 수 없다. –

+0

이 질문과 코드에 감사드립니다. 위키의 코드가 불완전하다고 생각합니다. 동적 캐스팅을 그리워합니다. (http://www.cryptopp.com/wiki/Diffie-Hellman) – Sebastian

답변

3

Z/(pZ)에 대한 정수 분해 및 이산 대수는 대략 똑같이 어렵습니다. 따라서 Diffie-Hellman의 모듈러스 크기는 RSA 모듈러스와 비슷한 크기 여야합니다. 1024 비트 RSA 키가 마음에 드신다면 1024 비트 Diffie-Hellman 키를 사용해보십시오.

crypto ++의 키 크기가 비트 또는 바이트로 측정되는지 여부를 쉽게 알 수 없습니다. Sebastian은 dhA (rngA, 128)가 실제로 128 비트 Diffie-Hellman 키를 생성 할 수 있다고 지적 했으므로 너무 작습니다. 이 코드는 실제로 보이는 것입니다.

발전기 iGenerator의 크기는 Diffie-Hellman의 보안에 영향을주지 않습니다. (즉, iGenerator = 2는 완벽하게 괜찮을 수 있습니다.)

+2

이 코드를 시도하면 약 40 자리 숫자가 표시되며 이는 128 비트 코드에 해당합니다. 매개 변수를 1024로 변경하면 iPrime은 약 300 자리수를 갖습니다. – Sebastian

+0

@Sebastian, 고마워, 네 말이 맞아. – abc

관련 문제