FreeBSD 스크립트가 엔트로피를 생성한다는 것을 알았습니다.
감옥에서 탈출하면 튀어 나올 것입니다.
# uname -srm ## notice: install of mfsBSD (https://mfsbsd.vx.sk)
FreeBSD 11.2-RELEASE-p7 amd64
# grep jail /usr/libexec/save-entropy
[ $(/sbin/sysctl -n security.jail.jailed) = 0 ] || exit 0
그 이유는 무엇입니까?
감옥에서 호스트가 어느 정도 임의성을 갖는 것이 안전하지 않습니까?
각 교도소가 무작위 가치 풀을 공유하는 것이 안전하지 않습니까?
감옥 내에서 실행되는 프로그램의 무작위성이 이로 인해 영향을 받지 않을까요?
감사해요,
남자 이름
답변1
너무 길어요.엔트로피 풀은 부팅 중에만 사용됩니다. 난수를 제공하는 커널이 있습니다. 교도소 사용 패턴으로 인해 엔트로피 풀을 보유하는 것만으로도 더 높은 수준의 비결정적 동작이 보장됩니다.
엔트로피 풀이 여러 개 있어도 거기에 사용되는 알고리즘을 신뢰한다면 /dev/random
어떤 이점도 얻지 못합니다 . 공통 풀을 더 빠르게 비운 다음 새 풀을 생성(재시드)하는 것이 좋습니다.
사용자 모드 프로그램은 엔트로피 풀을 직접 사용해서는 안 됩니다. 그들은해야언제나사용랜덤(4)그리고 친구들.
따옴표가 포함된 더 긴 버전:
이것/dev/무작위장치는 다음을 사용하여 구현됩니다.톱풀5.0과 10.0 사이의 구현. 그것은되었다포르투나FreeBSD 10에서. 2014년에 대규모 업그레이드가 이루어졌습니다.개정 273872. 작은 토론이 있습니다해커 뉴스대략적인 시간.
rc.d/initrandom
댓글과 함께 삭제됨:
/dev/random 장치를 리팩터링합니다. 주요 시사점은 다음과 같습니다.
사용자 공간 시드는 더 이상 사용되지 않습니다. 이는 PC/데스크톱 설정이 시작될 때 자동으로 시드됩니다. 임베디드 박스를 설정하는 부분에서는 약간의 조정과 독창성이 필요할 수 있지만 최소한의 노력으로 간주됩니다.
엔트로피 캐시는 /entropy에 기록되며(설치 중에도) 커널은 다음에 부팅할 때 이를 사용합니다.
/boot/entropy에 기록된 엔트로피 파일은 loader(8)로 로드할 수 있습니다.
감옥 호스트는 시스템의 한 커널만 실행한 다음 감옥에서 선택한 사용자 영역 바이너리를 실행한다는 점을 기억하세요. 동일한 코어가 동일한 감옥에 서비스를 제공하는 경우 각 감옥의 엔트로피를 변경하면 이점이 있는지 질문해야 합니다.
이 내용은 다음과 같습니다리신내부에논의하다변경 사항이 발생하는 경우:
PRNG가 작동하는 방식은 하나 이상의 엔트로피 소스를 사용하여 내부 상태를 "공급"하고 PRF를 통해 내부 상태에서 일련의 의사 난수를 생성하는 것입니다.
FreeBSD는 이더넷, 인터럽트, 소프트웨어 인터럽트 등 다양한 소스와 시스템에서 사용할 수 있는 하드웨어 RNG로부터 엔트로피를 수집하고 이 모든 엔트로피를 사용하여 PRNG의 내부 상태를 파생합니다.
/dev/random에서 읽을 때 입력 무작위 장치의 엔트로피가 본질적으로 소비되어 결국 다시 시드가 발생합니다. 이상적인 세상에서는 잠재적인 공격자가 예측하기 어렵고 통제하기 어렵기를 바랍니다.
실행 중인 프로세스가 많다고 가정하면 일반 응용 프로그램은 /dev/random을 작은 단위로 읽는 경향이 있으며, 이 작업은 개별적이고 거의 무작위 방식으로 수행됩니다. 반면에 엔트로피 저장은 결정론적인 시간에 더 큰 덩어리로 발생합니다. 여러 감옥이 실행 중인 경우 /dev/random 장치에서 대량의 데이터를 읽어 해당 동작을 보다 결정적으로 만들어 바람직하지 않은 결과를 초래할 수 있습니다.
답변2
무작위(4) 장치는 감옥별이 아닌 코어별 장치이므로 감옥에서 실행되는 이러한 프로세스에는 전혀 유용하지 않습니다.
https://mailing.freebsd.hackers.narkive.com/iq0HeCDX/save-entropy-in-jail-environment