GPG에 엔트로피가 충분하지 않습니다


86

충분한 엔트로피를 얻으려고 백그라운드에서 수많은 프로세스가 실행되고 있지만 여전히 실패합니다.

**We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 210 more bytes)**

작동하는 키를 생성하는 방법이 필요합니다. 내가하려는 일이 분명히 실패합니다.

답변:


112

RNG를 보셨습니까?

Fedora / Rh / Centos 유형 : sudo yum install rng-tools

deb 유형 : sudo apt-get install rng-tools설정

그런 다음 sudo rngd -r /dev/urandom키를 생성하기 전에 실행 하십시오.

참조 : http://it.toolbox.com/blogs/lim/how-to-generate-enough-entropy-for-gpg-key-generation-process-on-fedora-linux-38022


4
또한 더 중요한 것은 우분투 패키지가 없기 때문에 Fedora와 마찬가지로 sudo apt-get install rng-tools우분투를 사용하는 경우 사용할 수 있습니다 . sudo yum install rng-utilsrng-utils
Jason Swett

4
패키지 이름 rng-tools은 Fedora와 EL6에 모두 들어 있으므로 링크 된 기사에서 오타가 의심됩니다. BTW, 나중에 링크가 죽어 버릴 경우를 대비하여 여기에 답변의 필수 부분과 참조 링크를 제공하는 것이 좋습니다.
Michael Hampton

11
우라늄에는 "저품질 엔트로피"또는 "가짜 엔트로피"가 없습니다. urandom은 / dev / random과 동일한 코드를 호출합니다. CSPRNG에 추가 임의성을 제공 할 필요가 없습니다 (부팅시를 제외하고 배포판에서이를 관리해야 함). 이것은 신화이며 전파되어서는 안됩니다. 예를 들어 sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers 또는이 비디오를 참조하십시오. media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy
Sebastian Wiesinger


2
가장 높은 투표 의견은 말이되지 않습니다. 불행히도 나는 이것을 너무 많이 본다. 경고 (완전히 잘못되었을지라도)는 많은 표를 얻으며이를 수정할 수있는 방법이 없습니다 (의견 공표 옵션 없음)는 우리가 신화를 제거 할 수 없음을 의미합니다.
Stijn de Witt

28

나는 키를 생성 할 수 있었다

apt-get install rng-tools

다른 SSH 창에서

 gpg --gen-key

첫 번째 SSH 세션으로 돌아가서 실행하십시오.

sudo rngd -r /dev/urandom

gpg가 키를 생성 할 때까지 이것을 실행 시키십시오!


9
/dev/urandom중요한 키를 생성하는 데 절대 사용 하지 않는 것이 좋습니다.
Andrew Barber

12
@AndrewBarber 넌센스. 권장되는 방법입니다.
David Schwartz

3
@AndrewBarber이 목적을 위해 명시 적으로 설계되었습니다. 기본적으로 /dev/random디자인 실수입니다. 엔트로피가 아직 수집되지 않은 경우 첫 번째 호출 (첫 번째 부팅)에서만 차단해야합니다. 다른 OS에서와 마찬가지로. 대신 우리는 지금 두 개의 수영장을 가지고 있습니다. 사용하지 마십시오 /dev/random. 이점이 없습니다.
Stijn de Witt

@AndrewBarber 대신 무엇을 추천 하시겠습니까?
qodeninja

13

현재 사용 가능한 엔트로피 바이트 양을 확인하려면

cat /proc/sys/kernel/random/entropy_avail

엔트로피 버킷의 크기는 4096 바이트이므로 매우 빨리 고갈 될 수 있습니다.

이 작은 'readspeed'도구 ( http://1wt.eu/tools/readspeed/ )를 사용하여 엔트로피 버킷이 다른 방법으로 얼마나 빨리 채워지는지 측정 할 수 있습니다.

예를 들어, launch :

$ ./readspeed < /dev/random

마우스를 움직입니다. 'readspeed'는 엔트로피 버킷이 채워지는 즉시 비우고 마우스를 움직이면 약간 채워진다는 것을 알 수 있습니다.

다른 방법을 시도하면 키보드 입력과 마우스 움직임이 해당 버킷을 보충하는 데 가장 효율적인 것으로 보입니다. 네트워크 전송 및 하드 드라이브 사본은 큰 영향을 미치지 않습니다.

: 마지막으로, 이것으로 사용할 엔트로피 발생 장치가 http://www.entropykey.co.uk/은 .


4
소변에는 "저품질 엔트로피"가 없습니다. urandom은 / dev / random과 동일한 코드를 호출합니다. 이것은 신화이며 전파되어서는 안됩니다. 예를 참조하십시오 sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers 또는이 비디오 : media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy
세바스찬 Wiesinger에게

이 답변은 5 살입니다. 우리는 urandom이 무작위만큼 안전하지 않다고 생각했지만 그 이후로 상황이 바뀌었고 urandom은 안전한 것으로 간주됩니다.
Julien Vehent

1
사실 처음부터 안전했습니다. 7 년 전 경고도 틀렸다.
Stijn de Witt

8

rng- 도구의 경우 +1

입력 하드웨어 (사운드 카드, 키보드, 마우스)가 거의 연결되지 않은 헤드리스 서버에 새 소프트웨어 (rng-tools)를 설치할 수있는 권한이없는 상황에 처한 경우. 다른 터미널에서이 간단한 코드를 실행하여 동일한 서버에 연결하여 엔트로피에 추가 할 수 있습니다. 시작하기 전이나 후에 이것을 시작하더라도 중요하지 않습니다.gpg --gen-key

$ nice -n 19 bash
$ until [ $COUNT -lt 1 ]; do
  let COUNT=`cat /proc/sys/kernel/random/entropy_avail`
  echo "`date` COUNTER $COUNT"
done

첫 번째 줄은 우선 순위가 낮은 새로운 bash 셸을 시작하는 것입니다 (많은 사용자가 공유하는 서버에서 좋을 필요가 있습니다). until 루프는 무한하므로 키가 생성되면 끊어야합니다. 네트워크 트래픽으로 인해 엔트로피가 증가하고 있습니다. 또한 entropy_avail 카운터를 모니터링하여 gpg로 다른 쪽에서 채워지고 비워지는 방법을 보여줍니다. 필자의 경우 카운터는 64로 빠르게 채워지고 다시 0으로 비워졌습니다 (gpg는 64 덩어리로 픽업됩니다). 서버에서 3 시간 이상 4096 비트 키 생성을 기다리고있었습니다. 이 스크립트를 실행 한 후 5 분 안에 완료되었습니다.


나도 원격 서버에 대한 루트 액세스 권한이 없었으며 이것은 엔트로피를 만드는 데 효과적이었습니다. 조건을로 변경해야한다고 생각합니다 [ $COUNT -lt 0 ]. 엔트로피 가 매우 적은 시스템의 경우 때때로 0에 도달하고 중지합니다. GPG는 실제로 엔트로피 배고프다.
Ajay Brahmakshatriya

고마워, 이것은 에어 갭 박스에서 약간의 엔트로피 생성을 만들기에 충분해야합니다. 예측할 수있는 날짜를 사용하지 않는 것을 제외하고
grepsedawk

7

나는 4096 키를 생성하기 위해 헤드리스 우분투 14.04 서버에서 엔트로피를 생성하기로 결심하고 결정했습니다. gpg --gen-key

haveged라고하는 엔트로피를 생성하는 패키지가 있습니다. 설치 예 :

sudo apt-get install haveged

나는로했다 sudo apt-get install rng-tools가 다음 시험에서 의존성 때문이다.

엔트로피가 생성되었는지 확인하는 테스트의 예 :

cat /dev/random | rngtest -c 1000

임의의 숫자 생성기에서 매우 적은 양의 실패가 허용되지만 호버링을 사용할 때 998-1000 개의 성공을 매우 자주 볼 수 있습니다.

나는 튜토리얼에서 그것을 발견했다 :

https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

나는 달리기 후에 지금 열쇠를 가지고있다 gpg --gen-key


0

pacman-key --init아치에서 실행할 때이 문제가 발생 했습니다. 여기에있는 다른 솔루션은 나에게 잘 작동하지 않았지만 라우터를 플러딩하는 것이 훌륭하게 작동한다는 것을 알았습니다.ping -f ip.of.my.router



0

haveged가장 좋은 방법이지만 아무것도 설치할 수없는 경우 수동으로 엔트로피를 생성 할 수 있습니다. 이 방법 gpg --gen-ken을 내 컴퓨터에서 1-2 분 안에 완료 할 수있었습니다 (와 10 초 비교 haveged). 따라서 약 10 배 느립니다.

실행 gpg --gen-key중인 다른 터미널에서 이것을 실행하십시오 :

while true; do
    # print entropy available
    cat /proc/sys/kernel/random/entropy_avail
    # write a 1 MB stream of zeros to /tmp/foo
    # "conv=fdatasync" flushes the disk cache
    dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync
done

짧막 한 농담:

while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.