/dev/random에 대한 디스크 읽기 등 제공

/dev/random에 대한 디스크 읽기 등 제공

/dev/random충분한 엔트로피를 제공할 수 있는 방법이 있나요 ? 데이터가 완전히 무작위일 필요는 없습니다. 즉, pid에 시간을 추가하고 여기에 27을 추가할 수 있습니다. 상관없습니다. 단지 더 빠르게 실행되기를 원할 뿐입니다.

나는 공을 굴리려고 노력했다 dd if=/dev/zero of=/dev/null. 예측할 수 없는 차단 전화를 받지 않도록 add_keystroke_randomness인위적으로 /linux/random.h먹이를 줄 수 있는 방법이 없을지 궁금했습니다 . /dev/random즉, 속도를 위해 임의성을 어느 정도 희생할 의향이 있습니다.

추신 - 사용을 제안하지 마십시오./dev/urandom

답변1

엔트로피를 생성하는 방법에는 다양한 솔루션이 있습니다. 예를 들면 haveged(나는 내 ​​자신에 대해 매우 만족한다), timer_entropydaudio-entropyd이다. 그들은 일반적으로 가장 많이 사용되는 응용 프로그램에 대해 충분한 엔트로피를 생성합니다 /dev/random. 최대한 활용하고 싶다면 하드웨어 랜덤마이저(USB 스틱으로 사용 가능)도 있습니다. 아마도 당신이 생각하는 것보다 적은 엔트로피를 생성하지만...

그럼에도 불구하고 /dev/urandom이는 데이터가 즉시 필요할 때 항상 좋은 옵션입니다.

대용량 데이터(예: 하드 드라이브 덮어쓰기)의 경우 사용 가능한 엔트로피에 관계없이 임의 장치는 속도 측면에서 적합하지 않습니다. 이와 같은 PRNG 기반 솔루션은 shred실제로 더 좋고 더 빠릅니다.

답변2

(내 대답은 Linux에 적용됩니다. 일반 원칙은 다른 UNIX 변형에 적용되지만 random/ urandom차이점에는 적용되지 않습니다.)

이것은 이미 커널 내부에서 일어나고 있습니다.

추가 엔트로피를 주입하는 것은 결코 나쁠 수 없습니다. 의사 난수 바이트가 많은 경우 이를 작성하면 /dev/random엔트로피 풀에 혼합됩니다.

해베그추가 엔트로피를 수집하는 인기 있는 프로그램입니다.

dd if=/dev/zero of=/dev/null하드웨어 I/O를 발생시키지 않으므로 엔트로피를 추가하지 않습니다. 키 입력에는 소량의 엔트로피가 포함되어 있습니다.


Linux에서 이 글을 읽고 있다면 /dev/random잘못하고 있는 것입니다. 리눅스 디자이너틀렸어: 그들은 엔트로피가 빠르게 고갈되는 것이라고 주장합니다.하지만 사실은 그렇지 않아요. '차단'에 대한 해결책은 /dev/random'엔트로피를 더 주입하는 것'이 아니라 '적절한 장비를 사용하는 것'이다. 듣고 싶든 말든,너는 읽어야 해/dev/urandom.

답변3

커널 버전에 따라 Linux는 add_disk_randomness(), add_input_randomness()및 를 add_interrupt_randomness()엔트로피 소스로 구현합니다. 이러한 이벤트는 디스크 I/O 이벤트, 키보드 및 마우스 이벤트, 인터럽트(IRQ) 이벤트에 해당합니다. 정확한 구현은 Random.c를 참조하세요. 이러한 소스는 내부적으로 조정, 혼합 및 저장되며 차단 /dev/random및 비차단 /dev/urandom드라이버에 데이터를 제공하는 데 사용됩니다. 이 경우 비차단이란 /dev/urandom엔트로피 풀에 엔트로피가 없더라도 호출이 항상 출력을 생성한다는 의미입니다. 가능성은 희박하지만 /dev/urandom사용하면 낮은 엔트로피 시드와 예측 가능한 결정적 RNG가 발생할 수 있습니다. 이로 인해 암호화가 깨질 수 있으며 RSA는 특히 낮은 엔트로피 조건에 취약합니다. 따라서 암호화에 사용해서는 안됩니다 /dev/urandom. 그러나 부팅 시간 /dev/urandom엔트로피는 헤드리스 시스템에서 항상 문제가 되며 올바르게 작동하려면 추가 엔트로피 소스가 필요합니다.

부팅 엔트로피 부족을 해결하는 가장 쉬운 방법은 를 통해 활성화 RdRand(또는 RdSeed) 하는 hw_rand것이지만 이를 위해서는 Intel(및 현재 AMD) 블랙박스 구현을 신뢰해야 합니다. QorlQ를 사용하는 경우 동일한 SEC 기능이 있습니다.

또는 소프트웨어의 진정한(?) 난수 생성기를 구현할 수도 있습니다. 내 제안은CPU 시간 지터잘 문서화되어 있고 기존 시스템과 통합하기 쉽기 때문에 Stephan Muller가 설계했습니다. 최대 엔트로피 결과를 얻으려면 최적화 없이 컴파일해야 한다는 점을 명심하세요.

관련 정보