부팅 시 syslog 메시지: 초기화되지 않은 무작위 읽기

부팅 시 syslog 메시지: 초기화되지 않은 무작위 읽기

CPU는AMD GX-412TC SoC:

GX-412TC GE412TIYJ44JB 4 6W 2MB 1.0GHz/ 1.4GHz N/AN/A DDR-1333 0-90°C

다음이 없습니다 rdrand:

grep rdrand /proc/cpuinfo
# nothing

syslog머신 부팅 후 다음 메시지가 표시됩니다 .

kernel: random: dd: uninitialized urandom read (512 bytes read)
kernel: random: cryptsetup: uninitialized urandom read (32 bytes read)

이 메시지는 정확히 무엇을 의미하며, 이에 대해 어떻게 해야 합니까?

를 의미 dd하고 cryptsetup읽으려고 시도했지만 /dev/urandom엔트로피가 충분하지 않습니까?

데몬을 사용하고 있는데 haveged이 메시지가 나타난 후 부팅 과정에서 늦게 시작되었습니다.

내 부팅 스크립트 시작 순서는 다음과 같습니다.

/etc/rcS.d/S01hostname.sh
/etc/rcS.d/S01mountkernfs.sh
/etc/rcS.d/S02mountdevsubfs.sh
/etc/rcS.d/S03checkroot.sh
/etc/rcS.d/S04checkfs.sh
/etc/rcS.d/S05mountall.sh
/etc/rcS.d/S06bootmisc.sh
/etc/rcS.d/S06procps
/etc/rcS.d/S06urandom
/etc/rcS.d/S07crypto-swap
/etc/rc2.d/S01haveged
/etc/rc2.d/S01networking
/etc/rc2.d/S04rsyslog
/etc/rc2.d/S05cron
/etc/rc2.d/S05ssh

syslog의 메시지는 다음 두 스크립트에서 나옵니다.

/etc/rcS.d/S06urandom  -> dd
/etc/rcS.d/S07crypto-swap -> cryptsetup

haveged전에 시작해야 합니까 urandom?

데비안 10을 사용하고 있습니다.

또한 이 기계는 키보드가 없는 베어보드라는 점을 덧붙이고 싶습니다. 유일한 인터페이스는 직렬 콘솔입니다. 이것이 사용 가능한 엔트로피에 영향을 미치는 것으로 생각되며, 이것이 제가 haveged처음에 설치한 이유입니다 . 가 없으면 엔트로피가 충분하지 않기 때문에 데몬이 몇 분 동안 시작되지 않습니다 haveged.sshd

답변1

진단이 정확합니다. 빈 엔트로피 풀에서 읽기를 시도했습니다. 이것은 "부팅 시간 엔트로피 기아".

EFI 시스템이 있는 경우 systemd-boot를 활용할 수 있습니다.경고를 무시하다(예측 가능한 암호화폐를 사용하고 있지만최대암호화폐를 전혀 사용하지 않는 것보다 여전히 나은 사용 사례) 또는 대체 소스에서 엔트로피를 적립해 보세요.가능한 경우- 이것을 커널 명령줄에 추가

rng_core.default_quality=X

(X=1000에서 시작하여 거기서부터 내려갑니다).

엔트로피를 수집하는 다른 기술이 있습니다. SOC에는 사용 가능한 핀이 몇 개 있을 수 있으며 핀에서 엔트로피를 수집할 수 있는 하드웨어 드라이버 모듈이 있습니다. 그런 다음 적절한 트랜지스터 및 저항 설정(또는 경우에 따라 일렉트릿 마이크)을 연결하여 열 잡음을 수집하기만 하면 됩니다.

또는 5.4+ 시리즈 커널에는 충분할 수 있는 보다 효율적인 엔트로피 수집이 있습니다.

답변2

작동하려면 커널과 호환되어야 합니다. 커널 버전 >=5.x에서는 아무것도 하지 않는 문제가 있습니다.여전히 유용하거나 관련성이 있나요? #57GitHub에서.

관리자는 친절하게 기능을 다시 도입했지만 해당 패치를 릴리스한 다음 먼저 다양한 배포판에 적용해야 합니다... 이전 버전은 전혀 시작되지 않거나 시작하더라도 실제로 아무것도 하지 않습니다. 실행 중(확인 strace), 커널의 엔트로피 풀이 더 이상 부족한 것 같지 않지만 crng init는 어떤 이유로 여전히 시간이 걸립니다.

또한 매우 초기에 실행되어야 하므로 initramfs를 사용하는 경우 임의 장치를 사용하기 얼마 전에 initramfs에서 해깅을 시작해야 합니다. 전통적인 초기화 시스템에서는 Haveged가 가능한 한 빨리 실행되어야 합니다 /proc /sys /dev.

커널에 엔트로피를 보내는 데 정확히 얼마나 오랜 시간이 걸리는지 잘 모르겠습니다. 먼저 자체적으로 임의성을 수확해야 하며 이에 대한 품질 테스트도 실행합니다. 내 마지막 테스트(패치 포함)에서는 시작과 커널 보고 사이에 0.5초 정도의 지연이 있었습니다 random: crng init done.

보유된 것 외에도 임의의 시드를 저장/복원하는 것도 고려할 수 있으며, 네트워크가 있는 경우 약간의 트래픽이 커널이 일부 엔트로피를 수집하는 데 도움이 될 수도 있습니다.

관련 정보