디스크 읽기 등으로 /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_entropyd, audio-entropyd등. 일반적으로 를 사용하는 대부분의 응용 프로그램에 충분한 엔트로피를 생성합니다 /dev/random. 최대한 활용하고 싶다면 USB 스틱으로 사용할 수 있는 하드웨어 랜덤 생성기도 있습니다. 생각보다 엔트로피가 적을 수도 있지만...

그럼에도 불구하고 /dev/urandom지연 없이 데이터를 사용할 수 있어야 하는 경우에는 항상 좋은 선택입니다.

대용량 데이터(예: 하드 디스크 덮어쓰기)의 경우 사용 가능한 엔트로피에 관계없이 임의의 장치 중 어느 것도 속도 측면에서 적합하지 않습니다. PRNG 기반 솔루션은 shred더 나은/빠른 작업을 수행합니다.

답변2

(내 대답은 Linux에 적용됩니다. 일반 원칙은 다른 유닉스 변형에 적용되지만 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(또는 )하는 것이지만 이를 위해서는 Intel(및 현재 AMD) 블랙박스 구현을 신뢰해야 합니다. QorlQ를 사용하게 되면 동등한 SEC 기능이 있습니다.RdSeedhw_rand

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

관련 정보