Linux에서 /dev/random을 /dev/urandom에 연결하는 것이 잘못된 것입니까?

Linux에서 /dev/random을 /dev/urandom에 연결하는 것이 잘못된 것입니까?

gpg --genkey현재 Linux VM에서 테스트 중입니다 . 불행하게도 이 소프트웨어는 엔트로피 수집에 의존하는 것으로 보이며 /dev/random암호화된 무작위 입력 화면 이후에 사용자에게 수동으로 화면을 입력하도록 정중하게 요청하므로 결국 키 생성으로 끝날 수 있습니다. 이를 알려주는 명령줄 매개 변수를 찾지 못했습니다. 다른 파일을 엔트로피 소스로 사용하는 것입니다(그 사람은이 영상에동일한 문제가 발생합니다 ...).

/dev/urandom그러나 사용자는 대신 사용하도록 자유롭게 선택할 수 있어야 합니다 .아무 문제 없어. 이는 주로 암호화 관점에서 볼 때 더 약한 이전 PRNG 알고리즘을 회상하기 위한 것입니다. 예를 들어, 동안NetBSD 맨페이지이러한 구별은 매우 초기 부팅 단계에서도 여전히 유용할 수 있다는 점을 인정하며 다음과 같은 구별을 설명합니다."민속학"그리고"판타지 위협 모델에 대해서만 방어하는 상상의 이론". 어느 누구도 동의하지 않는다이 명령에 필요한 엔트로피의 양엔트로피가 실제로 소비되는 것이라는 사실도 아닙니다.GPG 맨페이지("제발, 무엇을 하고 있는지 알지 못하는 한 이 명령을 사용하지 마십시오. 시스템에서 귀중한 엔트로피가 제거될 수 있습니다!").

나는 다음과 같은 내용을 읽었습니다.rngd데몬을 설치하는 사람들/dev/urandom피드에 대한 엔트로피 소스로 사용하도록 구성했지만 /dev/random그러한 관행이 매우 더러운 것으로 나타났습니다.

/dev/random대신 FreeBSD 방식으로 문제를 제거 하고 연결하여 문제를 해결하려고 했습니다 /dev/urandom.

rm /dev/random
ln -s /dev/urandom /dev/random

나는 이것을 말해주는 설정으로 본다./dev/urandom" 엔트로피 소스로 신뢰합니다 ".

어떤 종류의 오류가 발생할까봐 두려웠지만 이제 명령이 즉시 성공적으로 반환되므로 예상한 결과를 제공하는 것 같습니다.

내 질문은 다음과 같습니다FreeBSD 시스템에서 기본적으로 수행되는 것처럼 Linux 시스템에 /dev/random연결 하면 알려진 실제적이고 잘못된 부작용이 있습니까 ?/dev/urandom아니면 일부 서비스 잠금으로 인해 반복적인 문제가 발생할 경우 이를 영구적으로 설정할 수 있습니까(예: 부팅 프로세스가 끝날 때 스크립트에서) /dev/random?

답변1

보다우랜덤에 관한 신화, /dev/random에 대한 공격이 아닌 /dev/urandom에 대한 알려진 공격은 없습니다. Linux 시스템의 주요 문제점은 복제 후 저장된 엔트로피 풀을 재설정하지 않고 여러 VM으로 복제하여 실행하는 것입니다. 그것은 당신이 원하는 것과 접하는 코너 케이스입니다.

답변2

한 가지 다른 점 /dev/random은 엔트로피 풀이 사용된 후에 출력을 중지한다는 것입니다. 이 시도:

$ cat /dev/random
(a few short lines of gibberish)^C
$ 

/dev/urandom그러나 동일한 풀을 재사용하여 출력을 계속합니다. 여기에 표시된 대로:

$ cat /dev/urandom
(tons of gibberish fills the screen)^C
$

(이러한 특수 장치를 차단하려고 하면 프롬프트가 엉망이 될 수 있습니다. 입력 reset하고 입력하기만 하면 터미널이 정상으로 돌아갑니다)

/dev/urandom"무작위" 비트의 지속적인 흐름으로 무언가를 채워야 할 때 사용하세요 . /dev/random절대적으로 무작위여야 하는 키에 사용하세요 .

답변3

Linux에서는 /dev/random고품질의 임의 비트를 제공합니다. 그들은 다음과 같은 소스에서 파생됩니다.~ 아니다예측 가능하고~ 아니다반복 가능, 기계 외부. 대조적으로, (사용 가능한 경우) /dev/urandom와 동일한 난수 데이터를 사용하고 /dev/random, 없는 경우 의사 난수 생성기를 사용합니다.결정론적인. 대부분의 경우 충분히 예측할 수 없지만~ 아니다암호화와 같이 매우 까다로운 애플리케이션에는 적합하며 GPG와 같이 수명이 긴 키를 생성하는 경우에는 훨씬 적습니다.

관련 정보