암호화 과정의 경우 Linux에서 엔트로피 풀을 고갈시키려고 노력하고 있지만(예: /proc/sys/kernel/random/entropy_avail
0으로 이동하고 에서 읽기 명령 차단 /dev/random
) 달성할 수 없습니다. /dev/random
청크에서 데이터를 읽어야 합니다 . 이 두 명령을 실행하면:
watch -n 0.5 cat /proc/sys/kernel/random/entropy_avail
엔트로피를 관찰한 다음:
od -d /dev/random
무작위 풀을 덤프하기 위해 명령의 값은 watch
3700과 3900 사이에서 움직이며 이 명령을 실행할 때 약간의 이득과 손실만 있습니다. 이 두 명령을 약 3분 동안 실행했는데 크기에는 눈에 띄는 변화가 없었습니다 entropy_avail
. 그 동안 컴퓨터를 많이 하지 않았어요. 인터넷 검색을 통해 하드웨어 난수 생성기가 너무 좋아서 엔트로피가 떨어지지 않을 수도 있다는 것을 알았습니다. 하지만 그렇게 하면 다음과 같습니다.
cat /sys/devices/virtual/misc/hw_random/rng_available
빈 줄만 보입니다. 그래서 몇 가지 질문이 있습니다.
- 내 엔트로피를 그토록 잘 보충하는 것은 무엇이며, 무작위성의 구체적인 원인을 어떻게 찾을 수 있습니까?
- 강제로 차단이 발생하도록 무작위 소스를 일시적으로 비활성화할 수 있는 방법이 있습니까?
답변1
Linux 임의 장치의 개발 규모는 놀랍습니다. 속도 저하와 차단 현상은 사라지고 /dev/random
데이터가 부족하지 않는 속도로 대체되었습니다./dev/random
예를 들어 Linux 4.8 이전으로 돌아가야 합니다(더 빠른 crng 알고리즘 도입) 또는 Linux 5.6(디더 엔트로피 생성 도입).
현재 커널에서는 원래 동작을 복원할 수 없습니다.
이전 버전의 Linux에서 이 문제가 발생하는 경우 hwrng 외에 haveged
rng-tools 또는 유사한 사용자 공간 엔트로피 공급자를 사용하고 있을 수 있습니다.rngd
일부 배포판에서는 임의의 비트를 기다리는 동안 중단되는 것을 방지하기 위해 기본적으로 이를 설치합니다. 이 경우 제거하거나 비활성화하거나 다른 프로세스를 실행하지 않고 initrd/busybox 셸에서 시도해 볼 수 있습니다.
문제가 지속된다면 아마도 커널이 자연적으로 지속적으로 엔트로피를 수집하는 매우 시끄러운 하드웨어 부분을 갖고 있을 것입니다.
답변2
내 엔트로피를 그토록 잘 보충하는 것은 무엇이며, 무작위성의 구체적인 원인을 어떻게 찾을 수 있습니까?
커널 5.6부터 /dev/random
부팅 중에 초기화되고 차단되지 않는 커널의 CRNG에서 무작위성을 얻습니다.
바라보다"Linux /dev/random 차단 풀 제거".
강제로 차단이 발생하도록 무작위 소스를 일시적으로 비활성화할 수 있는 방법이 있습니까?
5.6 이전 커널을 사용해야한다고 생각합니다.
답변3
이는 하드웨어에 따라 다를 수 있으며, CPU 성능을 사용하는 경우 끝이 없을 수 있습니다. 다른 하드웨어에서는 그렇지 않습니다.
그러나 시도해 볼 수 있습니다.커널 옵션 random.trust_cpu=off
시작할 때.