은 OpenSSL의 RAND_bytes
기능 사용합니까 어떤 알고리즘?은 OpenSSL RAND_bytes 알고리즘
답변
OpenSSL을로드하고 다른 난수 엔진을 실행하고 하나의 구현에 한정되지 않고 있습니다. RAND_bytes
는 crypto/rand/rand_lib.c
에서 구현하고, 같은 파일에서 함수 RAND_get_rand_method()
를 호출하여 콘크리트 RNG 구현에 함수 포인터를 얻을 수있다.
그것은,
crypto/rand/md_rand.c
에서 구현RAND_SSLeay()
를 선택하고, 궁극적으로ssleay_rand_bytes()
를 호출한다. 나는 그것이 실제로 이름을 가지고 있다고 생각하지 않으며, 무작위성은 궁극적으로 메시지 다이제스트 (MD_Update)에서 나온다.FIPS 모드에서 1.0 FIPS 모듈을 실행하는 경우 3DES 또는 AES를 핵심으로 사용하는 ANSI X9.31 RNG가 표시됩니다. (ANSI X9.31은 더 이상 FIPS 140-2에서 허용되지 않습니다.) 당신은 FIPS 모드에서 2.0 FIPS 모듈을 실행하는 경우
, 당신은 SP 800-90A 결정적 랜덤 비트 생성기 (DRBG)을 얻는다.
"...은 ANSI X9.31 RNG는. 무작위성은 궁극적으로 3DES에서 비롯됩니다." - FIPS Object Module 2.0을 사용하는 OpenSSL 1.0.x에서는 이제 AES가 사용됩니다. AES128/AES/192/AES256 (또는 기본적으로 사용되는 것)을 추적하는 데 문제가 있습니다. – jww
예, 변경되었음을 알려 주셔서 감사합니다. OpenSSL은 이제 SP800-90을 구현합니다. 다른 주요 강점을 정의하므로 실제로 AES 128, 256 또는 512를 사용할 수 있습니다.이 대답에 대한 정보를 편집해야합니다 ... http://csrc.nist.gov/publications/nistpubs/800-90A/ SP800-90A.pdf – indiv
OK, 이것은 {intersting | embarrasing}입니다 (손으로 확인하지 않은 것이 좋지 않음). OpenSSL FIPS 2.0 사용자 안내서 "기본 DRBG"(64 페이지)에 따르면 "기본 DRBG"라는 특수한 DRBG 인스턴스는 DRBG를 RAND 인터페이스에 매핑하는 데 사용됩니다. " 그러나 SP800-90의 4 개 발전기 중 어느 것이 사용되는지, 기본 알고리즘의 보안 수준은 명확하지 않습니다. – jww
- 1. 은 OpenSSL 1.0.0d 컴파일 후 DLL 생성
- 2. 암호화, C의 암호 해독 ++ (은 OpenSSL)
- 3. openssl 엔진을 작성하는 방법
- 4. openssl-2와 openssl-3의 차이점
- 5. 은 OpenSSL : JRuby를 만은 fcntl/ioctl에 대한 F_SETFL을 지원하는 현재
- 6. 은 OpenSSL : PKCS 번호 8 형식으로 개인 키
- 7. OpenSSL - SSL_CTX_set_default_passwd_cb
- 8. openssl/valgrind
- 9. iPhone에서 OpenSSL
- 10. openssl ssl 암호화
- 11. openssl des3 Java에서 암호 해독
- 12. 스칼라 용 OpenSSL 호환 API?
- 13. 하려면 openssl s_client가 여기에 문서
- 14. OpenSSL 라이브러리를 프로그램에 연결
- 15. C하려면 openssl 오류
- 16. openssl BF_cfb64_encrypt 스레드 안전성
- 17. Android에서 OpenSSL 빌드하기 NDK
- 18. OpenSSL 코드 문제
- 19. OpenSSL - AES 키 찾기
- 20. openssl CRC32 계산
- 21. JRuby OpenSSL 오류
- 22. C#과 OpenSSL executable
- 23. OpenSSL - SSL_write 문제
- 24. OpenSSL 서버 암호 선택
- 25. Node.js Fedora and OpenSSL
- 26. vC++에서 OpenSSL 빌드하기
- 27. OpenSSL ssl_conn 오류로 컴파일
- 28. OpenSSL 쿠키 지원
- 29. 은 C++ STL 알고리즘 및 컨테이너가 플랫폼 및 성능면에서 동일합니까?
- 30. 마커 기반 증강 현실 알고리즘 (ARToolkit과 같은)은 어떻게 작동합니까?
자신의 소스 코드를 보면, 그것을 찾기 어렵지 않다. –