2010-04-24 5 views

답변

4

OpenSSL을로드하고 다른 난수 엔진을 실행하고 하나의 구현에 한정되지 않고 있습니다. RAND_bytescrypto/rand/rand_lib.c에서 구현하고, 같은 파일에서 함수 RAND_get_rand_method()를 호출하여 콘크리트 RNG 구현에 함수 포인터를 얻을 수있다.

그래서 새 RNG 엔진을로드하지 않은 가정은 OpenSSL은 다음 중 하나를 선택합니다 : 기본적으로

  1. 그것은, crypto/rand/md_rand.c에서 구현 RAND_SSLeay()를 선택하고, 궁극적으로 ssleay_rand_bytes()를 호출한다. 나는 그것이 실제로 이름을 가지고 있다고 생각하지 않으며, 무작위성은 궁극적으로 메시지 다이제스트 (MD_Update)에서 나온다.

  2. FIPS 모드에서 1.0 FIPS 모듈을 실행하는 경우 3DES 또는 AES를 핵심으로 사용하는 ANSI X9.31 RNG가 표시됩니다. (ANSI X9.31은 더 이상 FIPS 140-2에서 허용되지 않습니다.) 당신은 FIPS 모드에서 2.0 FIPS 모듈을 실행하는 경우

  3. , 당신은 SP 800-90A 결정적 랜덤 비트 생성기 (DRBG)을 얻는다.

+0

"...은 ANSI X9.31 RNG는. 무작위성은 궁극적으로 3DES에서 비롯됩니다." - FIPS Object Module 2.0을 사용하는 OpenSSL 1.0.x에서는 이제 AES가 사용됩니다. AES128/AES/192/AES256 (또는 기본적으로 사용되는 것)을 추적하는 데 문제가 있습니다. – jww

+0

예, 변경되었음을 알려 주셔서 감사합니다. OpenSSL은 이제 SP800-90을 구현합니다. 다른 주요 강점을 정의하므로 실제로 AES 128, 256 또는 512를 사용할 수 있습니다.이 대답에 대한 정보를 편집해야합니다 ... http://csrc.nist.gov/publications/nistpubs/800-90A/ SP800-90A.pdf – indiv

+0

OK, 이것은 {intersting | embarrasing}입니다 (손으로 확인하지 않은 것이 좋지 않음). OpenSSL FIPS 2.0 사용자 안내서 "기본 DRBG"(64 페이지)에 따르면 "기본 DRBG"라는 특수한 DRBG 인스턴스는 DRBG를 RAND 인터페이스에 매핑하는 데 사용됩니다. " 그러나 SP800-90의 4 개 발전기 중 어느 것이 사용되는지, 기본 알고리즘의 보안 수준은 명확하지 않습니다. – jww