Taxa de caracol de “criação de entropia” não aumentando significativamente com ferramentas de rng

3

A taxa de "criação de entropia" no meu sistema (Linux 4.13.0-38-genérico, 16.04.1-Ubuntu, CPU Intel® Celeron (R) G3930 @ 2.90GHz × 2, disco principal é SSD) é uma impraticávelmente lento muito menos do que 1 bit por segundo.

Nota: Eu julgo a taxa de criação de entropia usando este comando:

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

Por outro lado, o Linux CSPRNG subjacente está produzindo dados em um bom ritmo de cerca de 187 Mb por segundo:

$ 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

Eu instalei rng-tools . Ele está funcionando e lendo /dev/hwrng como esperado:

% 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

No entanto, a taxa de entropia é pouco alterada e ainda é muito inferior a 1 bit por segundo.

O hardware RNG está provavelmente criando muito mais do que 1 bit por segundo. Então, por que a taxa de criação de entropia não aumenta significativamente?

    
por Craig Hicks 28.04.2018 / 22:33

1 resposta

5

Eu encontrei a resposta.

O serviço rnd-tools chama o programa /usr/sbin/rngd . Procurando em a documentação do Ubuntu pode ser visto como um parâmetro:

-W n, --fill-watermark=nnn

      Once we start doing it, feed entropy to random-device until at least fill-watermark bits of entropy are available in its entropy pool (default: 2048).  Setting this too high will cause rngd to dominate the contents of the entropy pool.  Low values will hurt system performance during entropy starves.  Do not set fill-watermark above the size of the entropy pool (usually 4096 bits).

Então, meu teste da taxa de "criação de entropia" só foi feito quando o buffer estava mais da metade cheio, e é por isso que não aumentou.

Foi fácil verificar usando este comando para esvaziar o buffer:

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

Isso elimina 2048 bits de entropia e, em seguida, o buffer é retornado para mais da metade em uma fração de segundo.

    
por 29.04.2018 / 00:04