/ dev / urandom은 얼마나 자주 / dev / random에서 시드를 샘플링합니까?


15

내가 완전히 혼란스럽고 그렇게하지 않는 한.

하드웨어 RNG를 가져 와서 / dev / random에 엔트로피를 연결하면 / dev / urandom이 엔트로피를 증가 시킬지 여부를 알고 싶습니다.

다시 말해서, 만약 내가 / dev / random의 엔트로피를 X bits / sec만큼 증가 시킨다면 (즉, 주입 후 / dev / random은 X bits / sec를 샘플링 할 수 있습니다) 엔트로피가 우라늄으로 넘어 가게 될까요?


2
그다지 중요 하지는 않지만 2uo.de/myths-about-urandomblog.cloudflare.com/… (특히 blog.cloudflare.com/content/images/image01.png 의 그래프 )은 유용한 읽기가 될 수 있습니다.
user1686

진정한 하드웨어 RNG가 있다면 직접 사용할 수 있습니다.
Michael Hampton

답변:


25

/dev/urandom샘플 을 말하는 것은 실제로 정확하지 않습니다 /dev/random. 대신, 두 풀은 동일한 엔트로피 소스에 의해 지원됩니다. 풀의 엔트로피 수가 0에 도달하면 공유 입력 풀에서 다시 시드했습니다. 따라서 어떤 식 으로든 커널 입력 엔트로피를 주면 어느 것이 읽히는 지에 따라 /dev/random또는에 대해 사용할 수 있습니다 /dev/urandom.

그러나 얼마나 자주 시드를 요청할 수 있는지에 따라 /dev/urandom 속도가 제한 됩니다. 기본적으로 60 초마다 한 번 씩만 시드 할 수 있습니다.

풀이 초기에 최소 128 비트 정도의 엔트로피로 시드되는 한, 출력을 예측하려면 이전 출력을 볼뿐만 아니라 적어도 사전 이미지 저항을 포함하여 사용 된 알고리즘을 중단해야하기 때문에 실제로는 그다지 중요하지 않습니다. SHA-1 ( 중단되지 않은 상태 ).


7

구현에 따라 다릅니다. 그러나 일반적으로, /dev/random그리고 /dev/urandom풀 엔트로피 같은 풀에서, 그래서 것이다.

https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/의 다이어그램


4

Linux에서 / dev / random 또는 / dev / urandom에 기록 된 모든 데이터는 블로킹 풀 (/ dev / random의 임의 소스)과 비 블로킹 풀 (/ dev / urandom의 임의 소스)에 모두 복사됩니다.

그냥보고 random_write 기능.

그러나 / dev / random에 기록 된 데이터는 내부 엔트로피 추정기에 의해 계산되지 않습니다 (결국 일부 로컬 공격자는 / dev / zero 또는 다른 비 랜덤 소스를 / dev / random으로 리디렉션하려고 시도 할 수 있음). / dev / random을 차단하면 / dev / random에 쓰는 것만으로는 도움이되지 않습니다.

리눅스에서는 / dev / random (또는 / dev / urandom, 차이는 없음)에 쓰지만 / dev / urandom (항상 시드되면 실제로 가장 좋은 방법은 새로운 시스템 호출 getrandom 을 사용하는 )에서 읽습니다 .

다른 Unices에서 어떻게 작동하는지 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.