rng-tools를 사용할 때 달팽이의 "엔트로피 생성" 속도가 크게 증가하지 않습니다.

rng-tools를 사용할 때 달팽이의 "엔트로피 생성" 속도가 크게 증가하지 않습니다.

내 시스템(Linux 4.13.0-38-generic, 16.04.1-Ubuntu, Intel® Celeron(R) CPU G3930 @ 2.90GHz × 2, 기본 디스크는 SSD)의 "엔트로피 생성" 속도가 비현실적으로 느립니다. 1 미만 초당 비트.

참고: 엔트로피 생성 속도를 결정하려면 다음 명령을 사용합니다.

watch -n1 cat /proc/sys/kernel/random/entropy_avail

반면에 기본 Linux CSPRNG는 초당 약 187Mb의 좋은 속도로 데이터를 생성합니다.

$ dd if=/dev/urandom of=/dev/null bs=1M count=1024 iflag=fullblock  
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.74347 s, 187 MB/s

설치했는데 예상대로 작동하고 rng-tools있습니다 ./dev/hwrng

% systemctl status rng-tools
● rng-tools.service
   Loaded: loaded (/etc/init.d/rng-tools; bad; vendor preset: enabled)
   Active: active (running) since Sat 2018-04-28 13:17:17 PDT; 33s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 15840 ExecStop=/etc/init.d/rng-tools stop (code=exited, status=0/SUCC
  Process: 23876 ExecStart=/etc/init.d/rng-tools start (code=exited, status=0/SU
   CGroup: /system.slice/rng-tools.service
           └─23878 /usr/sbin/rngd -r /dev/hwrng

그러나 엔트로피 속도는 거의 변하지 않았으며 여전히 초당 1비트보다 훨씬 낮습니다.

하드웨어 RNG에 의해 생성되는 데이터의 양은 초당 1비트보다 훨씬 클 수 있습니다. 그렇다면 왜 엔트로피 생성 속도가 크게 증가하지 않는 걸까요?

답변1

나는 답을 찾았다.

서비스 rnd-tools는 프로그램을 호출합니다 /usr/sbin/rngd. 이 콘텐츠 찾기우분투 문서매개변수가 있는 것을 볼 수 있습니다.

-W n, --fill-watermark=nnn

      이 작업을 시작하면 엔트로피를 제공하십시오.무작위 장비적어도워터마크 채우기 엔트로피 풀에는 사용 가능한 엔트로피 비트가 있습니다(기본값: 2048). 너무 높게 설정하면 rngd엔트로피 풀의 내용을 제어합니다. 낮은 값은 엔트로피 결핍 기간 동안 시스템 성능을 저하시킬 수 있습니다. 설정되지 않음 워터마크 채우기엔트로피 풀의 크기(일반적으로 4096비트)보다 큽니다.

따라서 "엔트로피 생성" 속도에 대한 테스트는 버퍼가 절반 이상 찼을 때만 수행되었으므로 버퍼가 증가하지 않았습니다.

다음 명령을 사용하면 버퍼 비우기를 쉽게 확인할 수 있습니다.

dd if=/dev/random of=/dev/null bs=256 count=1 iflag=fullblock

이렇게 하면 2048비트의 엔트로피가 지워지고 버퍼는 1초 이내에 크기의 절반 이상으로 돌아갑니다.

관련 정보