Seberapa seringkah / dev / urandom pengambilan sampel dari / dev / random?


15

Kecuali saya benar-benar bingung dan tidak melakukan itu.

Saya ingin tahu apakah / dev / urandom akan mendapatkan peningkatan entropi jika saya mengambil RNG perangkat keras dan memasukkan entropinya ke / dev / acak.

Jadi, ulangi, jika saya meningkatkan entropi / dev / acak dengan X bit / detik (yaitu, / dev / acak setelah injeksi memungkinkan Anda sampel X bit / detik) apakah itu akan meningkatkan transfer entropi ke urandom?


2
Meskipun tidak terlalu relevan, 2uo.de/myths-about-urandom dan blog.cloudflare.com/… (khususnya grafik di blog.cloudflare.com/content/images/image01.png ) mungkin merupakan bacaan yang bermanfaat.
user1686

Jika Anda memiliki perangkat keras RNG yang sebenarnya, Anda bisa menggunakannya secara langsung.
Michael Hampton

Jawaban:


25

Itu tidak benar-benar akurat untuk mengatakan bahwa /dev/urandomsampel dari /dev/random. Sebaliknya, dua kumpulan didukung oleh sumber entropi yang sama. Ketika jumlah entropi kumpulan mencapai nol, mereka kembali dari kumpulan input bersama. Jadi jika Anda memberikan entropi input kernel dengan beberapa cara, ia dapat menggunakannya untuk salah satu /dev/randomatau /dev/urandom, tergantung pada yang dibaca.

Namun, /dev/urandom juga terbatas pada seberapa sering ia dapat meminta pengerjaan ulang. Secara default ini hanya dapat diulang sekali setiap 60 detik.

Tidak ada yang benar-benar penting dalam praktik, karena selama kumpulan awalnya diunggulkan dengan setidaknya 128 bit atau lebih entropi, memprediksi output apa pun akan membutuhkan tidak hanya melihat output sebelumnya tetapi juga melanggar algoritma yang digunakan, termasuk setidaknya resistensi preimage dari SHA-1 ( yang tetap tidak terputus ).


7

Tergantung implementasinya. Tapi biasanya, /dev/randomdan /dev/urandomtarik entropi dari kolam yang sama, jadi itu akan terjadi.

Diagram dari https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/


4

Di Linux, semua data yang ditulis ke / dev / random atau / dev / urandom disalin ke kedua blocking pool (sumber keacakan / dev / random) dan nonblocking pool (sumber keacakan untuk / dev / urandom).

Lihat saja fungsi random_write .

Tetapi data yang ditulis ke / dev / acak tidak dihitung oleh estimator entropi internal (setelah semua, beberapa musuh lokal dapat mencoba untuk hanya mengarahkan / dev / nol atau beberapa sumber yang sangat non-acak ke / dev / acak), jadi jika Anda memiliki masalah dengan memblokir / dev / acak, hanya menulis ke / dev / acak tidak membantu.

Di Linux menulis ke / dev / random (atau / dev / urandom, tidak ada perbedaan), tetapi baca selalu dari / dev / urandom (setelah diunggulkan - sebenarnya cara terbaik adalah menggunakan getrandom panggilan sistem baru ).

Saya tidak tahu cara kerjanya di Unix lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.