Pemahaman saya saat ini tentang kumpulan entropi adalah bahwa ia mengumpulkan bit data yang benar-benar acak pada tingkat yang lambat. Saya ingin tahu bagaimana Unix & Linux mengumpulkan entropi, dan bagaimana entropi itu digunakan oleh / dev / random.
Saya pernah mendengar (secara umum) metode pengumpulan entropi seperti status cpu kartu video ketika paket jaringan yang dipilih "secara acak" tiba, cocok dengan faktor desis dalam konverter digital-analog, dan metode lain yang lebih bodoh.
Saya percaya bahwa entropi "kumpulan" disadap sebagaimana diperlukan, dan digunakan untuk menaburkan generator acak psuedo ....
Saya tidak mencari jawaban yang mendalam, tetapi saya tertarik untuk mengetahui apakah ini adalah pendekatan umum yang digunakan oleh Unix / Linux? .. dan mungkin beberapa petunjuk tentang apa yang sebenarnya terjadi pada pengumpulan batu bara pengumpulan-entropi. .. dan kemudian, apa yang dimasukkan entropi ke dalam .. Apakah itu cipher AES Rijndael?
Informasi latar belakang untuk teman saya di atas, berasal dari Steve Gibson's Security Now! podcast: Episode # 301 Going Acak, Bagian 2 dari 2 ... Dia hanya berbicara secara umum (tapi seperti gayanya, dengan detail dan kejelasan yang cukup sehingga bahkan aku bisa memahaminya. Setelah mendengarkan 300 episode sebelumnya membantu :), ... dan saya ingin tahu apakah ini yang dilakukan Unix / Linux ...
Jawaban:
Linux memiliki dua generator nomor acak yang tersedia untuk ruang pengguna,
/dev/random
dan/dev/urandom
./dev/random
adalah sumber dari keacakan "benar" - yaitu ia tidak dihasilkan oleh generator angka pseudo-acak. Entropi dimasukkan ke ini oleh driver input dan pengendali interupsi, melalui fungsiadd_input_randomness
danadd_interrupt_randomness
. Proses membaca perangkat ini akan diblokir jika entropi habis./dev/urandom
adalah generator angka pseudo-acak. Itu diberi makan oleh kolam entropi yang sama seperti/dev/random
, tetapi ketika itu habis, ia beralih ke generator yang kuat secara kriptografis.Aplikasi Userspace dapat dimasukkan ke dalam kumpulan entropi dengan menulis
/dev/{,u}random
.Bacalah halaman manual acak (4) , dan file
drivers/char/random.c
di pohon sumber kernel. Itu dikomentari dengan baik dan sebagian besar dari apa yang Anda tanyakan dijelaskan di sana.FreeBSD
/dev/random
secara default adalah generator nomor pseudo-acak menggunakan algoritma Yarrow (tetapi dapat menunjuk ke RNG perangkat keras jika ada yang terhubung). Generator perangkat lunak mengambil entropi dari Ethernet dan koneksi serial dan interupsi perangkat keras (dapat diubah melaluisysctl kern.random
). Algoritma Yarrow diyakini aman selama kondisi internal tidak diketahui, oleh karena itu/dev/random
harus selalu menampilkan data berkualitas tinggi tanpa memblokir. Lihat acak (4) .Di NetBSD,
/dev/random
menyediakan data acak hanya berdasarkan pada entropi yang dikumpulkan (dari disk, jaringan, perangkat input, dan / atau tape drive; dapat disesuaikan menggunakan rndctl ), sementara/dev/urandom
jatuh kembali ke PRNG ketika kumpulan entropi kosong, mirip dengan Linux. Lihat acak (4) , rndctl (8) , rnd (9) .OpenBSD memiliki empat generator:
/dev/random
adalah generator perangkat keras,/dev/srandom
adalah generator data acak yang aman (menggunakan MD5 pada kumpulan entropi: "disk dan perangkat jaringan terputus dan semacamnya"),/dev/urandom
serupa tetapi jatuh kembali ke PRNG ketika kumpulan entropi kosong. Yang keempat,,/dev/arandom
juga merupakan PRNG tetapi menggunakan RC4 . Lihat acak (4) , arc4random (3) .Mac OS X juga menggunakan algoritma Yarrow untuk
/dev/random
, tetapi memiliki/dev/urandom
kompatibilitas yang identik . "Entropi tambahan diumpankan ke generator secara teratur oleh daemon SecurityServer dari pengukuran jitter acak dari kernel." Lihat acak (4) .sumber
cat /dev/random
dan selalu bertanya-tanya mengapa aliran saya berhenti setelah begitu banyak karakter