GNU/Linux >> Belajar Linux >  >> Linux

Mengapa menulis ke /dev/random tidak mempercepat pembacaan paralel dari /dev/random?

Anda dapat menulis ke /dev/random karena ini adalah bagian dari cara untuk menyediakan byte acak ekstra ke /dev/random , tetapi itu tidak cukup, Anda juga harus memberi tahu sistem bahwa ada entropi tambahan melalui ioctl() panggilan.

Saya memerlukan fungsionalitas yang sama untuk menguji program penyiapan kartu pintar saya, karena saya tidak ingin menunggu mouse/keyboard saya menghasilkan cukup untuk beberapa panggilan ke gpg yang dibuat untuk setiap uji coba. Apa yang saya lakukan adalah menjalankan program Python, yang mengikuti, secara paralel dengan pengujian saya. Tentu saja harus tidak digunakan sama sekali untuk gpg nyata pembuatan kunci, karena string acak tidak acak sama sekali (info acak yang dihasilkan sistem akan tetap disisipkan). Jika Anda memiliki sumber eksternal untuk mengatur string untuk random , maka Anda harus dapat memiliki entropi yang tinggi. Anda dapat memeriksa entropi dengan:

cat /proc/sys/kernel/random/entropy_avail

Programnya:

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

(Jangan lupa untuk mematikan program setelah Anda selesai.)


Biasanya, ini dirancang oleh pengembang kernel dan didokumentasikan dalam 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. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  3. Kapan Menggunakan /dev/random Vs /dev/urandom?

  1. Linux – Apa Arti Huruf 'u' Di /dev/urandom?

  2. Bagaimana cara menyandikan base64 /dev/random atau /dev/urandom?

  3. Mengapa find -exec mv {} ./target/ + tidak berfungsi?

  1. Mengapa `cat /dev/urandom` merusak terminal Anda?

  2. Mengapa Linux mencantumkan drive NVMe sebagai /dev/nvme0 bukan /dev/sda?

  3. RdRand dari /dev/random