2013-03-14 2 views
1

C에서 매우 큰 임의의 정수를 생성하려고합니다. 나는/dev/random이 좋은 소스이지만 엔트로피 풀이 고갈되면 차단합니다./dev/urandom은 다음 goto처럼 보였으 나, randomness의 품질은 비교할 때 좋지 않습니다./dev/random의 정수를 사용하여 PRNG를 시드 할 수있는 방법이 있나요? 그래서/dev/random을 읽지 않아도됩니다. 장기적이지는 않지만 암호로 안전한 PRNG를 찾고 있습니다. /dev/random에서C에서 암호로 안전한 PRNG C

+0

/dev/urandom은 암호로 보호되기 때문에 * 기본적으로 사용자가 제안한 것과 동일합니다./dev/random을 사용하여 PRNG를 시드합니다. 어떻게 품질을 테스트 했습니까? –

답변

7

사용하여 정수는 PRNG/dev/urandom이 바로 이러한 작업을 수행하는 것입니다 씨앗입니다. 우울증에 약점이 있다는 증거가없는 한, 당신은 바퀴를 재발 명하고 있습니다.

urandom이 /dev/random보다 약한 것은 사실이지만, 제안 된 구성표는 정확히 동일한 방식으로 약하므로, urandom을 사용하는 것 이상의 이점은 없습니다. urandom은 새로운 엔트로피가 기본 하드웨어에서 사용 가능 해짐에 따라 새로운 엔트로피를 생성 된 숫자에 계속해서 혼합 할 수 있다는 추가적인 이점이 있습니다. FreeBSD 예를 들면 에는 urandom-style 장치가 있습니다.

마지막으로, urandom은 수년 동안 주변에 있었고 소스는 보안 전문가에 의해 검토되었으며 대체 할 사람이없는 경우는 없습니다.

+0

감사합니다. 그런 다음 urandom을 사용하겠습니다. – JessMcintosh

0

플랫폼에 따라 다를 수 있습니다. 일부는 이미/dev/random에 대해 암호화 된 보안 PRNG를 사용합니다. 예 : FreeBSD, OpenBSD, OS X. Yarrow, Fortuna, ISAAC (RC4 기반)도 볼 수 있습니다. 이것은 당신이 그것을 조회하려면 시작하기에 좋은 장소입니다 더 : 당신은 단순히 엔트로피의 큰 수영장을 원한다면, 당신은 다음과 같은 기본 뭔가를 할 수 http://csrc.nist.gov/groups/ST/toolkit/index.html

0

(노이즈 데이터 스트림으로부터 데이터 블록의 SHA1을 예를 들어 비디오 또는 바쁜 환경의 오디오).

그러면 질문은 얼마나 많은 엔트로피가되고 얼마나 빨리됩니까? "큰 숫자"란 프로젝트에서 임의의 1 비트의 무작위 비트를 의미 할 수 있기 때문에 "이 서비스를 위해 100k/초의 일정한 엔트로피 스트림이 필요합니다"

0

하드웨어가 있다면 더 좋을 것입니다 . 암호화 난수 생성을 지원한다면 CPU 또는 다른 모듈을 점검하십시오./dev/random과/dev/urandom은 모두 암호화 측면에서 안전하지 않습니다. 응용 프로그램에서 소스로 사용해서는 안됩니다.

관련 문제