GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum macht das Schreiben nach /dev/random das parallele Lesen aus /dev/random nicht schneller?

Sie können an /dev/random schreiben weil es Teil des Weges ist, /dev/random zusätzliche zufällige Bytes bereitzustellen , aber es ist nicht ausreichend, Sie müssen dem System auch mit ioctl() mitteilen, dass zusätzliche Entropie vorhanden ist Anruf.

Ich brauchte die gleiche Funktionalität zum Testen meines Smartcard-Setup-Programms, da ich nicht warten wollte, bis meine Maus/Tastatur genug für die mehreren Aufrufe von gpg erzeugt hat die für jeden Testlauf gemacht wurden. Ich habe das folgende Python-Programm parallel zu meinen Tests ausgeführt. Das sollte es natürlich nicht überhaupt für echte gpg verwendet werden Schlüsselgenerierung, da die zufällige Zeichenfolge überhaupt nicht zufällig ist (vom System generierte zufällige Informationen werden immer noch verschachtelt). Wenn Sie eine externe Quelle haben, um die Zeichenfolge für random festzulegen , dann sollten Sie in der Lage sein, eine hohe Entropie zu haben. Sie können die Entropie überprüfen mit:

cat /proc/sys/kernel/random/entropy_avail

Das Programm:

#!/usr/bin/env python
# For testing purposes only 
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES

import fcntl
import time
import struct

RNDADDENTROPY=0x40085203

while True:
    random = "3420348024823049823-984230942049832423l4j2l42j"
    t = struct.pack("ii32s", 8, 32, random)
    with open("/dev/random", mode='wb') as fp:
        # as fp has a method fileno(), you can pass it to ioctl
        res = fcntl.ioctl(fp, RNDADDENTROPY, t)
    time.sleep(0.001)

(Vergessen Sie nicht, das Programm zu beenden, nachdem Sie fertig sind.)


Typischerweise wird es von Kernel-Entwicklern entworfen und in man 4 random dokumentiert :

Writing to /dev/random or /dev/urandom will update the entropy pool
with the data written, but this will not result in a higher entropy
count.  This means that it will impact the contents read from both
files, but it will not make reads from /dev/random faster.

Linux
  1. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  4. Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

  5. Warum funktioniert find -exec mv {} ./target/ + nicht?

So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

Warum macht `cat /dev/urandom` Ihr Terminal kaputt?

Warum listet Linux NVMe-Laufwerke als /dev/nvme0 anstelle von /dev/sda auf?

RdRand von /dev/random

Warum wird auf einigen Linux-Systemen das Root-Dateisystem als /dev/root statt als /dev/<realer Geräteknoten> in mtab angezeigt?

Warum sind < oder > erforderlich, um /dev/tcp