GNU/Linux >> Znalost Linux >  >> Linux

Proč zápis do /dev/random neurychluje paralelní čtení z /dev/random?

Můžete psát na /dev/random protože je součástí způsobu, jak poskytnout extra náhodné bajty pro /dev/random , ale to nestačí, musíte také upozornit systém, že existuje další entropie prostřednictvím ioctl() volání.

Potřeboval jsem stejnou funkcionalitu pro testování svého programu pro nastavení čipové karty, protože jsem nechtěl čekat, až moje myš/klávesnice vygeneruje dostatek pro několik volání gpg které byly vyrobeny pro každý zkušební provoz. To, co jsem udělal, je spustit program Python, který následuje, souběžně s mými testy. Samozřejmě by nemělo být vůbec použit pro skutečné gpg generování klíče, protože náhodný řetězec není vůbec náhodný (systémem generované náhodné informace budou stále prokládány). Pokud máte externí zdroj pro nastavení řetězce pro random , pak byste měli být schopni mít vysokou entropii. Entropii můžete zkontrolovat pomocí:

cat /proc/sys/kernel/random/entropy_avail

Program:

#!/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)

(Po dokončení nezapomeňte program ukončit.)


Obvykle je navržen vývojáři jádra a zdokumentován v man 4 random :

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. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Jak kódovat base64 /dev/random nebo /dev/urandom?

  1. Proč nefunguje find -exec mv {} ./target/ +?

  2. DD z /dev/zero do /dev/null...co se vlastně stane

  3. Proč Linux uvádí jednotky NVMe jako /dev/nvme0 namísto /dev/sda?

  1. RdRand z /dev/random

  2. Linux:Rozdíl mezi /dev/console , /dev/tty a /dev/tty0

  3. Je špatné propojit /dev/random s /dev/urandom v Linuxu?