gpg2 --gen-key
방금 Live CD(Tails)에서 실행되는 운영 체제에서 2048비트 RSA 키 쌍을 생성하는 데 사용했습니다 . 이 모든 일은 내가 예상했던 것보다 훨씬 빨리 일어났습니다. 이전에 일반 컴퓨터에서 이 작업을 수행한 경우 시간이 오래 걸리고 일반적으로 잠시 기다렸다가 다른 작업을 수행해야 합니다. 필요한 임의성을 생성하는 데 시간이 걸리기 때문이라고 생각합니다.
Live CD에 부팅 프로세스가 평소보다 더 많은 무작위성을 발생시키는 특이한 프로세스가 있습니까? 아니면 그것이 사용되고 있을 가능성이 있습니까 /dev/urandom
? 내가 아는 한 gpg는 /dev/random
이를 사용하므로 키를 생성하는 데 시간이 걸릴 수 있습니다.
답변1
엔트로피("무작위성")는 커널에 축적됩니다. GPG가 시작되기 전에 커널이 충분한 엔트로피를 축적하면 GPG는 즉시 이점을 얻습니다.
Linux의 엔트로피 처리에 문제가 있습니다. Linux 에는 두 가지 유형의 장치가 있습니다 /dev/random
. 충분한 엔트로피가 축적되는 한 차단됩니다. 항상 차단하지 않고 데이터를 반환합니다. 원칙적으로 이것은 좋은 일입니다. 문제는 Linux의 엔트로피 계산이 극도로 보수적이라는 것입니다. 즉, 엔트로피가 모두 소진될 것이라고 가정하는데, 이는 매우 이론적인 의미에서만 사실입니다. 따라서 차단되어서는 안 될 때 차단되는 경향이 있습니다./dev/urandom
/dev/random
/dev/urandom
/dev/random
일반 시스템에서는 다음을 수행해야 합니다.그냥 사용/dev/urandom
- 하지만gpg를 포함한 일부 소프트웨어는 선택권을 제공하지 않습니다.. 그러나 Live CD에서는 컴퓨터에 하드웨어 RNG(예:RdRand 명령최신 Intel 프로세서) 및 Linux에서는 이를 지원합니다. 따라서 이 경우에는 /dev/random
필요한 경우 실제로 사용하고 기다려야 합니다 . 사용자 상호 작용(예: 마우스 이동)은 이 엔트로피에 영향을 미칩니다.
당신은 또한 볼 수 있습니다GPG 키에 "난수 엔트로피"를 추가하시겠습니까?그리고Random.c에서 사용되는 엔트로피 추정을 설명할 수 있습니까?
다시 한 번 걱정할 필요가 없습니다. GPG+Linux는 엔트로피 추정에 있어서 매우 보수적입니다. GPG가 키를 빠르게 생성한다면 충분한 엔트로피를 제공할 만큼 컴퓨터와 상호 작용했거나 컴퓨터에 지원되는 하드웨어 RNG가 있는 것입니다.
답변2
나는 답을 찾았습니다. Tails에는 "haveged" 난수 생성기가 함께 제공됩니다. http://www.reddit.com/r/tails/comments/2oxr7n/how_does_tails_generate_gpg_keys_so_fast/
이것이 Tails에만 해당된다는 점을 반영하기 위해 질문 제목을 편집했습니다.
다음은 HAVEGED 알고리즘이 유용한지에 대한 몇 가지 논의입니다.https://crypto.stackexchange.com/questions/8083/quality-of-randomness-on-a-linux-system-with-haveged
gpg를 사용할 때 취하는 보수적인 접근 방식은 를 /dev/random
사용하는 것에 비해 많은 경우 과잉일 수 있지만 /dev/urandom
시간 제한이 없는 gpg 키 생성을 위한 라이브 CD 환경의 특정 관점에서 보면 hasged를 사용하는 것은 불필요해 보입니다.
따라서 내 생각에 가장 간단한 해결책은 Tails에서 정지된 프로세스를 종료하고 /proc/sys/kernel/random/entropy_avail이 배수될 때까지 기다린 다음 gpg가 정상적으로 수행하는 작업을 수행하도록 하는 것입니다.
답변3
/dev/urandom
첫째, 와 의 차이점 은 난수를 생성하기에 충분한 엔트로피가 있을 때까지 차단 /dev/random
하는 반면, 엔트로피가 소진되면 차단하지 않는다는 것입니다. 이는 또한 앱의 생성 이 ./dev/random
/dev/urandom
/dev/urandom
/dev/random
문제의 경우 비밀을 생성하는 실행 시간은 시스템에서 사용 가능한 엔트로피와 엔트로피 풀을 소진하지 않고 두 개의 소수를 빠르게 얻을 수 있는 행운에 따라 달라집니다.
Tails에서 항상 빠르게 키 쌍을 생성하는 경우 구현에 문제가 있을 수 있습니다.