사실에는 신화보다 더 많은 진실이 있지만 그럼에도 불구하고 그 진술은 무슨 일이 일어나고 있는지에 대한 근본적인 오해를 반영합니다. 예, GPG를 사용하여 키를 생성하는 동안 마우스를 이동하는 것이 좋습니다. 그렇습니다. 마우스를 움직이면 임의의 숫자를 무작위로 만드는 엔트로피가 생깁니다. 아니요, 마우스를 움직여도 키가 더 안전하지 않습니다.
암호화에 적합한 모든 좋은 임의 생성기는 Linux에 해당 범주에 있으며 두 가지 구성 요소가 있습니다.
- 엔트로피 비 결정적이다 소스. 엔트로피의 목적은 난수 생성기를 예측할 수없는 데이터로 부트 스트랩하는 것입니다. 엔트로피 소스는 결정적이지 않아야합니다. 그렇지 않으면 공격자가 동일한 계산을 재현 할 수 있습니다.
- 유사 난수 변화 내부 상태에서 결정적 방식으로 예측 불가능한 난수를 생성한다.
엔트로피는 컴퓨터 외부의 소스에서 가져와야합니다. 사용자는 엔트로피의 한 소스입니다. 사용자가하는 일은 대부분 무작위가 아니지만, 키 스트로크와 마우스 움직임의 미세한 타이밍은 예측할 수 없을 정도로 약간 무작위 적입니다. 매우 무작위 적이지는 않지만 조금씩 누적됩니다. 엔트로피의 다른 잠재적 원인으로는 네트워크 패킷 및 카메라 또는 마이크 화이트 노이즈의 타이밍이 있습니다. 다른 커널 버전과 구성은 다른 소스 세트를 사용할 수 있습니다. 일부 컴퓨터에는 방사성 붕괴 또는 덜 불안정한 전자 회로에 기반한 전용 하드웨어 RNG 회로가 있습니다. 이 전용 소스는 사용자가 이상한 일을하지 않고도 처음 부팅 할 때 예측 가능한 동작을 수행 할 수있는 내장 장치 및 서버에 특히 유용합니다.
Linux는 두 개의 장치를 통해 프로그램에 난수를 제공합니다 : /dev/random
및/dev/urandom
. 두 장치 중 하나에서 읽으면 암호화 품질이 반환됩니다. 두 장치 모두 동일한 내부 RNG 상태와 동일한 알고리즘을 사용하여 상태를 변환하고 임의 바이트를 생성합니다. 그들에게는 옳지 않은 한계가 있습니다.
/dev/urandom
시스템이 아직 충분한 엔트로피를 축적하지 않은 경우 예측 가능한 데이터를 반환 할 수 있습니다.
/dev/random
사용 가능한 엔트로피의 양을 계산하고 충분하지 않은 경우 차단합니다. 계산이 사용 가능한 엔트로피의 양을 각 출력 비트에 따라 선형으로 줄 이도록하는 이론적 고려 사항을 기반으로한다는 점을 제외하고는 좋은 소리입니다. 따라서 /dev/random
매우 빨리 차단되는 경향이 있습니다.
Linux 시스템은 내부 RNG 상태를 디스크에 저장하고 부팅시 복원합니다. 따라서 엔트로피는 한 부팅에서 다음 부팅으로 이어집니다. 엔트로피가 부족한 Linux 시스템은 새로 설치할 때뿐입니다. 시스템에 엔트로피가 충분하면 엔트로피가 감소하지 않습니다. 리눅스의 결함 계산 만이 감소합니다. 이 고려 사항에 대한 자세한 설명을 보려면 전문 암호 작성자 /dev/urandom
가 암호 키를 생성하는 데 읽기 가 적합합니다 . 아소 참조 할 수 있습니다은 RANDOM.C에 사용되는 엔트로피 추정을 설명 .
마우스를 움직이면 시스템에 더 많은 엔트로피가 추가됩니다. 그러나 GPG 만 읽을 수 /dev/random
없습니다,/dev/urandom
(이 문제를 해결하는 방법은 만드는 것입니다 /dev/random
:로 9 장치 같은 1 /dev/urandom
가 - 랜덤 충분하지 난수를받을 위험에 노출되지 않도록). 마우스를 움직이지 않으면 키는 임의로 무작위입니다. 그러나 일어날 수있는 일은 gpg가 에서 읽기로 차단 되어 /dev/random
커널의 엔트로피 카운터가 상승하기를 기다리는 것입니다.