엔트로피 풀에 대한 나의 현재 이해는 그것이 정말 무작위로 수집된다는 것입니다.조금데이터 전송 속도가 매우 느립니다. Unix와 Linux가 엔트로피를 수집하는 방법과 /dev/random이 해당 엔트로피를 사용하는 방법을 알고 싶습니다.
나는 "무작위로" 선택된 네트워크 패킷이 도착할 때 그래픽 카드의 CPU 상태를 일치시키는 것과 같은 (일반적인) 엔트로피 수집 방법, 디지털-아날로그 변환기의 히스 요인을 일치시키는 것 및 기타 더 둔감한 방법에 대해 들었습니다.
나는 엔트로피 "풀"이 필요에 따라 채굴되어 의사 난수 생성기를 시드하는 데 사용된다고 믿습니다.
심층적인 답변을 원하는 것은 아니지만 이것이 Unix/Linux에서 사용되는 일반적인 접근 방식인지 알고 싶습니다. ..그리고 석탄 표면에서 엔트로피 수확이 실제로 어떻게 보이는지에 대한 몇 가지 팁도 있을 수 있습니다. .. 그런 다음,무엇입력의 엔트로피입니까? AES Rijndael 암호인가요?
위 댓글의 배경 정보는 다음에서 비롯됩니다.스티브 깁슨의이제 안전해요!팟캐스트: 에피소드 301 Shuffle, 2부 중 2부...그는 일반적인 이야기만 합니다. (그러나 그의 스타일도 그렇고, 나도 그를 이해할 수 있을 만큼 충분히 자세하고 명확합니다. 이전 300개의 에피소드를 듣는 것이 도움이 되었습니다. :), ...이것이 Unix/Linux의 방식인지 궁금합니다. 그렇습니까...
답변1
Linux에는 사용자 공간에 사용할 수 있는 두 개의 난수 생성기가 있습니다 /dev/random
./dev/urandom
/dev/random
"진정한" 무작위성의 소스입니다. 즉, 의사 난수 생성기에 의해 생성되지 않습니다. 입력 드라이버와 인터럽트 핸들러는 함수 add_input_randomness
와 입력 엔트로피를 전달합니다 add_interrupt_randomness
. 엔트로피가 소진되면 장치를 읽는 프로세스가 차단됩니다.
/dev/urandom
의사 난수 생성기입니다. 와 동일한 엔트로피 풀에 의해 공급되지만 /dev/random
엔트로피 풀이 소진되면 암호화가 강력한 생성기로 전환됩니다.
사용자 공간 응용 프로그램은 엔트로피 풀에 쓰기를 통해 들어갈 수 있습니다 /dev/{,u}random
.
읽어랜덤(4)매뉴얼 페이지 및 문서drivers/char/random.c
커널 소스 트리에서. 잘 검토되었으며 귀하가 묻는 대부분의 질문이 거기에 설명되어 있습니다.
FreeBSD는 /dev/random
기본적으로 Yarrow 알고리즘을 사용하는 의사 난수 생성기입니다(그러나 연결된 경우 하드웨어 RNG를 가리킬 수 있음). 소프트웨어 생성기는 sysctl kern.random
하드웨어 인터럽트뿐만 아니라 이더넷 및 직렬 연결로부터 엔트로피(변경 가능)를 얻습니다 . 내부 상태를 알 수 없는 한 Yarrow 알고리즘은 안전한 것으로 간주되므로 /dev/random
항상 차단 없이 고품질 데이터를 출력해야 합니다. 바라보다랜덤(4).
NetBSD에서는 /dev/random
다음을 기반으로 임의의 데이터를 제공합니다.오직수집된 엔트로피(디스크, 네트워크, 입력 장치 및/또는 테이프 드라이브에서, 다음을 사용하여 사용 가능)rndctl), /dev/urandom
Linux와 유사하게 엔트로피 풀이 비어 있으면 PRNG로 대체됩니다. 바라보다랜덤(4),RNDCTL(8),연구그룹(9).
OpenBSD에는 /dev/random
하드웨어 생성기, /dev/srandom
보안 무작위 데이터 생성기(엔트로피 풀에서 MD5 사용: "디스크 및 네트워크 장치 중단 등")의 4가지 생성기가 있습니다. /dev/urandom
유사하지만 엔트로피 풀이 비어 있을 때 PRNG로 대체됩니다. 네 번째 것인 /dev/arandom
역시 PRNG이지만RC4 사용. 바라보다랜덤(4),아크4랜덤(3).
Mac OS X도 Yarrow 알고리즘을 사용 /dev/random
하지만 /dev/urandom
호환성 작동 원리는 동일합니다. "SecurityServer 데몬은 커널의 무작위 지터 측정을 기반으로 생성기에 주기적으로 추가 엔트로피를 공급합니다."랜덤(4).