PGP 키에 대한 엔트로피 생성


12

VM에 원격으로 로그온하고 4096 비트 PGP 키를 생성하려고하면 엔트로피가 없기 때문에 영원히 멈추고 원격 데스크톱을 통해 작업하기 때문에 마우스 움직임을 엔트로피로 감지하지 못할 수 있습니다.

어떻게 생성 할 수 있습니까?

나는 시도 cat /dev/urandom > /dev/null했지만 도움이되지 않습니다.

답변:


13

데이터를 얻기 에서/dev/random또는 /dev/urandom확실히 하지 문제가 더 악화하고, 그것을 할 것입니다 모두가 당신의 엔트로피 풀을 고갈, 도움이 될 것. 이 두 파일의 주요 차이점은 커널에 엔트로피 urandom가 부족하더라도 품질이 낮은 임의의 데이터를 계속 생성하는 동시에 random새로운 고품질의 임의 데이터를 수집 할 수있을 때까지 차단한다는 것입니다. PGP는 보안 키를 생성하기 위해 가능한 한 가장 높은 임의 데이터를 요구하므로 항상를 사용 /dev/random합니다.

당신은 주변에 좋은 임의의 데이터를, 또는 다른 서버의 일부를 내보내는 경우 /dev/random, 당신이 할 수있는 cat그것을 서버의 /dev/random수 더 많은 엔트로피. cat같은 파일을 두 번 입력 해서는 안됩니다 /dev/random.

엔트로피 부족이 자주 발견 되면 백그라운드에서 엔트로피를 다시 생성 하고 필요에 따라 다시 채우는 데몬 인 haveged 와 같은 것을 설치하는 것도 고려할 수 있습니다 /dev/random.

또한 심볼릭 링크 /dev/random를 사용하려는 유혹 /dev/urandom이 있지만 키를 사용하여 생성 된 키는 키보다 덜 안전 할 수 있으므로 보안 위험으로 간주해야합니다. 중요하지 않은 하나의 응용 프로그램에 도움이 될 수 있지만 /dev/random다른 사용자가 자신의 키, CSR 등을 생성하는 것을 포함하여 가능한 모든 다른 용도를 고려해야합니다 .


하는 것으로는 FreeBSD의에, /dev/randomA는 고품질의 PRNG , 일반적 차단해서는 안된다.
Kevin

@Kevin /dev/random은 최신 BSD 및 Linux에서 고품질 PRNG입니다. 그러나 엔트로피가 충분하지 않으면 차단됩니다. 다른 한편으로는, /dev/urandom이용 가능한 것이 충분하지 않으면 차단되지 않지만,이 경우 임의의 품질로 인해 어려움을 겪을 수 있습니다. 세부 사항에서 Linux와 다양한 BSD 사이의 무작위 구현과 urandom 구현 사이에는 많은 미묘함이 있지만 위의 내용은 모든 AFAIK에서 적용되어야합니다.
Huygens

Linux에서는 ping 8.8.8.8다른 네트워크 호스트를 소유하고있는 경우 (예 : RTT가 <100ms 인 경우) 호스트를 핑 (ping)하여 더 많은 엔트로피를 생성 할 수 있습니다 . 그리고 / 또는 사용은 find하드 디스크에있는 파일을 찾아 각 파일 검색 사이의 RAM 캐시를 플러시합니다.
Huygens

@Huygens : 내가 링크 한 man 페이지를 열고 Ctrl + F "kern.random.sys.seeded"; 기본적 /dev/random으로 FreeBSD를 차단하지 않습니다.
Kevin

1
@Kevin 네, 맞습니다. 엔트로피 풀링 또는 수확은 아마도 PRNG를 "씨앗는"두 가지 방법 일 것입니다. 그리고 내 BSD 상자에서 테스트 한 결과 무작위와 우라늄이 같은 방식으로 작동한다는 것을 알았습니다. PRNG를 충분히 생성 할 수 없을 때 차단합니다. dd if=/dev/random of=/tmp/rndtest bs=64M count=1새로 부팅 한 후 실행 해 보십 시 오. 64MB 파일 증가를 생성하는 데 걸리는 시간을 확인하기 위해 2 회 연속 실행했습니다. urandom을 입력으로 사용하면이 효과를 볼 수 없다고 생각했지만 FreeBSD는 Linux와 달리 차단하고있는 것으로 보입니다.
Huygens


4

로컬 컴퓨터에서 원격 키보다 훨씬 나은 임의의 gpg 키를 생성하는 것이 좋습니다. 그런 다음 SSH를 사용하여 키를 원격 시스템으로 마이그레이션하십시오.

로컬에서 생성하는 것이 더 빠르며 (엔트로피 소스가 더 많음) 더 안전합니다 (시스템이 감염되지 않은 경우 아무도 프로세스에서 감시 할 수 없으며 무작위성이 향상됩니다).

여전히 원격으로 생성하려는 경우 : Linux에서 ping 8.8.8.8다른 네트워크 호스트를 소유 한 경우 호스트를 핑 (예 :)하여 더 많은 엔트로피를 생성 할 수 있습니다 (RTT가 100ms 미만인 경우). 그리고 / 또는 사용은 find하드 디스크에있는 파일을 찾아 각 파일 검색 사이의 RAM 캐시를 플러시합니다.

https://wiki.archlinux.org/index.php/Haveged#Virtual_machineshaveged : 가상 환경에서 실행하는 경우 제한 사항을 설치할 수 있지만 읽을 수도 있습니다.


내 생각에 이것은 올바른 해결책입니다-나에게서 +1.
MadHatter

3

데비안 기반 시스템에서는 rng-toolsatp-get을 사용 하여 패키지를 설치 한 다음 데몬을 시작하여 엔트로피를 생성 할 수 있습니다 .

echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart

CentOS-6 서버에서 rng데몬은 기본 도구 중 하나로 설치되며 (적어도 내가 작업 한 대부분의 시스템에는) 다음 엔트로피를 생성하기 위해 다음 명령을 실행하여 시작할 수 있습니다.

sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart

rngd의 소스로 urandom을 사용하는 것이 영리하다고 생각하지 않습니다. 엔트로피를 더 빨리 고갈시키는 데 도움이되고 일단 고갈되면 엔트로피에 대한 편향된 소스가됩니다. 따라서이 솔루션을 피할 것입니다.
Huygens

1
sudo yum install haveged && sudo systemctl start haveged

CentOS 7.2 VM에서 확실히 작동합니다. 묶음을 만들고 키링을 그대로 유지하려는 경우 VM에서 GPG 키를 생성하려는 경우가 있습니다.

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