C에서 매우 큰 임의의 정수를 생성하려고합니다. 나는/dev/random이 좋은 소스이지만 엔트로피 풀이 고갈되면 차단합니다./dev/urandom은 다음 goto처럼 보였으 나, randomness의 품질은 비교할 때 좋지 않습니다./dev/random의 정수를 사용하여 PRNG를 시드 할 수있는 방법이 있나요? 그래서/dev/random을 읽지 않아도됩니다. 장기적이지는 않지만 암호로 안전한 PRNG를 찾고 있습니다. /dev/random
에서C에서 암호로 안전한 PRNG C
답변
사용하여 정수는 PRNG이 /dev/urandom
이 바로 이러한 작업을 수행하는 것입니다 씨앗입니다. 우울증에 약점이 있다는 증거가없는 한, 당신은 바퀴를 재발 명하고 있습니다.
urandom이 /dev/random
보다 약한 것은 사실이지만, 제안 된 구성표는 정확히 동일한 방식으로 약하므로, urandom을 사용하는 것 이상의 이점은 없습니다. urandom은 새로운 엔트로피가 기본 하드웨어에서 사용 가능 해짐에 따라 새로운 엔트로피를 생성 된 숫자에 계속해서 혼합 할 수 있다는 추가적인 이점이 있습니다. FreeBSD 예를 들면 에는 urandom-style 장치가 있습니다.
마지막으로, urandom은 수년 동안 주변에 있었고 소스는 보안 전문가에 의해 검토되었으며 대체 할 사람이없는 경우는 없습니다.
감사합니다. 그런 다음 urandom을 사용하겠습니다. – JessMcintosh
플랫폼에 따라 다를 수 있습니다. 일부는 이미/dev/random에 대해 암호화 된 보안 PRNG를 사용합니다. 예 : FreeBSD, OpenBSD, OS X. Yarrow, Fortuna, ISAAC (RC4 기반)도 볼 수 있습니다. 이것은 당신이 그것을 조회하려면 시작하기에 좋은 장소입니다 더 : 당신은 단순히 엔트로피의 큰 수영장을 원한다면, 당신은 다음과 같은 기본 뭔가를 할 수 http://csrc.nist.gov/groups/ST/toolkit/index.html
(노이즈 데이터 스트림으로부터 데이터 블록의 SHA1을 예를 들어 비디오 또는 바쁜 환경의 오디오).
그러면 질문은 얼마나 많은 엔트로피가되고 얼마나 빨리됩니까? "큰 숫자"란 프로젝트에서 임의의 1 비트의 무작위 비트를 의미 할 수 있기 때문에 "이 서비스를 위해 100k/초의 일정한 엔트로피 스트림이 필요합니다"
하드웨어가 있다면 더 좋을 것입니다 . 암호화 난수 생성을 지원한다면 CPU 또는 다른 모듈을 점검하십시오./dev/random과/dev/urandom은 모두 암호화 측면에서 안전하지 않습니다. 응용 프로그램에서 소스로 사용해서는 안됩니다.
- 1. 암호로 안전한 XML 비교기
- 2. C에서 sscanf 대신 안전한 무엇입니까?
- 3. 암호로 안전한 난수 생성기를 테스트하는 방법
- 4. PHP로 암호로 안전한 난수를 어떻게 생성합니까?
- 5. SQL Server에서 암호로 안전한 번호를 생성하려면 어떻게합니까?
- 6. C에서 스레드 안전한 데이터베이스 액세스
- 7. glibc에서 PRNG 유형을 전환하십시오
- 8. 처음부터 Java PRNG
- 9. PRNG 시드 오류
- 10. PRNG 키로 키순으로 시드
- 11. 0에서 1 사이의 암호로 안전한 Double을 생성하는 방법은 무엇입니까?
- 12. 암호로 안전한 PRNG를 사용하여 암호를 생성하는 것이 더 안전합니까?
- 13. C에서 SerialPort 및 스레드로 "안전한 핸들이 닫혔습니다."
- 14. 입니다 !! C에서 bool로 변환하는 안전한 방법 + +?
- 15. C에서 이진 인코딩 문자를 구현하기위한 안전한 코딩?
- 16. CUDA : PRNG 생성기 및 상태
- 17. 안전한 C++ 코딩 사례
- 18. C# : 스레드로부터 안전한 이벤트
- 19. C++ 안전한 객체 삭제
- 20. 암호로 암호화 한 파일을 C#
- 21. iOS의 안전한 파일 저장
- 22. C에서 메모리를 할당하고 할당을 해제하는 가장 안전한 방법은 무엇입니까?
- 23. C++에서 안전한 정수 변환
- 24. 비동기 스레드로부터 안전한 C++ 로깅
- 25. 이 코드는 안전한 스레드입니까? C#
- 26. Objective-C 안전한 캐스팅 매크로
- 27. 네트워크를 통한 안전한 C 구조체 직렬화? - C++
- 28. 저장/복원 시퀀싱 상태를 지원하는 PRNG 라이브러리?
- 29. 안전한 방법으로 이메일 보내기
- 30. C#에서 암호로 액세스 데이터베이스를 여는 방법?
/dev/urandom은 암호로 보호되기 때문에 * 기본적으로 사용자가 제안한 것과 동일합니다./dev/random을 사용하여 PRNG를 시드합니다. 어떻게 품질을 테스트 했습니까? –