Biasanya membaca dari /dev/random
menghasilkan 100-500 byte dan blok, menunggu entropi dikumpulkan.
Mengapa tidak menulis informasi /dev/random
melalui proses lain mempercepat membaca? Bukankah seharusnya memberikan entropi yang diperlukan?
Ini dapat berguna untuk membuka blokir gpg
atau perangkat lunak serupa tanpa memulai ulang dan memasukkan kembali semuanya, untuk menghasilkan kunci non-super-rahasia, dll.
/dev/urandom
./dev/urandom
adalah sebagai aman sebagai/dev/random
untuk digunakan kriptografi , perilaku/dev/random
adalah desain yang buruk.gpg --gen-key
dari/dev/random
ke/dev/urandom
tanpa restart?gpg
memiliki/dev/random
hard-coded. Anda dapat mengubah konfigurasi udev Anda untuk membuat/dev/random
perangkat yang sama dengan/dev/urandom
, di antara kemungkinan lainnya.gpg --gen-key
, oleh karena itu menyokong kembali data yang diminta secara interaktif (atau menggunakan metode yang lebih pintar seperti menentukan lebih banyak parameter baris perintah). Juga waktu CPU yang menghasilkan prime akan hilang (gpg dapat bekerja sebentar, mencetak beberapa+
es dan kemudian meminta data acak tambahan). Dan itu memberi perasaan "ayo kembali dan pergi ke rute lain" alih-alih "ayo palu dan paksakan maju" ...Jawaban:
Anda dapat menulis
/dev/random
karena itu adalah bagian dari cara untuk memberikan byte acak tambahan/dev/random
, tetapi itu tidak cukup, Anda juga harus memberi tahu sistem bahwa ada entropi tambahan melaluiioctl()
panggilan.Saya membutuhkan fungsionalitas yang sama untuk menguji program pengaturan kartu pintar saya , karena saya tidak ingin menunggu mouse / keyboard saya menghasilkan cukup untuk beberapa panggilan
gpg
yang dibuat untuk setiap uji coba. Apa yang saya lakukan adalah menjalankan program Python, yang mengikuti, secara paralel dengan tes saya. Itu tentu saja tidak boleh digunakan sama sekali untukgpg
pembuatan kunci nyata , karena string acak tidak acak sama sekali (sistem yang dihasilkan info acak masih akan disisipkan). Jika Anda memiliki sumber eksternal untuk mengatur stringrandom
, maka Anda harus dapat memiliki entropi tinggi. Anda dapat memeriksa entropi dengan:Program:
(Jangan lupa untuk mematikan program setelah Anda selesai.)
sumber
rngd
. Ini tersedia sebagai paket di sebagian besar (semua?) Distro.random = "3420348024823049823-984230942049832423l4j2l42j"
lihat xkcd.com/221Biasanya, ini dirancang oleh pengembang kernel dan didokumentasikan dalam
man 4 random
:sumber
Anthony sudah menjelaskan bahwa menulis untuk
/dev/random
tidak meningkatkan jumlah entropi dan menunjukkan bagaimana RNDADDENTROPY ioctl (lihat acak (4) ) dapat digunakan untuk kredit untuk entropi. Ini jelas tidak benar-benar aman, jadi di sini ada alternatif ketika generator nomor acak perangkat keras tersedia.Implementasi berikut mengambil 512 byte (4096 bit) dari keacakan
/dev/hwrng
dan meneruskannya ke kumpulan entropi (mengkredit 4 bit entropi per byte, ini adalah pilihan sewenang-wenang dari saya). Setelah itu akan memanggil syscall pilih (2) untuk memblokir ketika kumpulan entropi penuh (didokumentasikan dalam manual acak (4) ).Versi Python:
Karena iso Arch Linux tidak memiliki Python diinstal, berikut adalah versi Perl juga:
Ini mungkin apa yang dilakukan oleh program rngd (bagian dari rng-tools ) (tidak terverifikasi), kecuali bahwa ia menggunakan alat (Python atau Perl) yang sudah umum tersedia.
sumber
/dev/urandom
alih-alih/dev/hwrng
jika Anda sama sekali tidak peduli dengan nilai acak tidak aman .getrandom()
syscall digunakan dengan hwrng pada kernel yang lebih tua dari 4,8-rc1 yang menghasilkan perilaku memblokir. Solusinya adalahread()
dua kali dari/dev/random
, lihat github.com/Lekensteyn/archdir/commit/…