Solusi 1:
Sistem Anda mengumpulkan beberapa nomor acak "nyata" dengan mengawasi berbagai peristiwa:aktivitas jaringan, pembuat nomor acak perangkat keras (jika tersedia; misalnya prosesor VIA biasanya memiliki pembuat nomor acak "nyata"), dan seterusnya. Jika memasukkannya ke kumpulan entropi kernel, yang digunakan oleh /dev/random. Aplikasi yang membutuhkan keamanan ekstrem cenderung menggunakan /dev/random sebagai sumber entropinya, atau dengan kata lain, sumber keacakan.
Jika /dev/random kehabisan entropi yang tersedia, itu tidak dapat melayani lebih banyak keacakan dan aplikasi menunggu keacakan berhenti sampai lebih banyak barang acak tersedia. Contoh yang saya lihat selama karir saya adalah bahwa daemon Cyrus IMAP ingin menggunakan /dev/random untuk keacakan dan sesi POP-nya ingin menghasilkan string acak dalam koneksi APOP dari /dev/random. Di lingkungan yang sibuk ada lebih banyak upaya masuk daripada lalu lintas untuk memberi makan /dev/random -> semuanya macet. Dalam hal ini saya menginstal rng-tools dan mengaktifkan rngd yang dimilikinya -- yang menyekop angka semi-acak dari /dev/urandom ke /dev/random jika /dev/random kehabisan entropi "nyata".
Solusi 2:
Jika Anda menginginkan ikhtisar yang lebih sederhana tentang masalah mendasar:Beberapa aplikasi (seperti enkripsi) memerlukan nomor acak. Anda dapat menghasilkan angka acak menggunakan algoritme - tetapi meskipun ini tampak acak di satu sisi, angka tersebut benar-benar dapat diprediksi di sisi lain. Misalnya jika saya memberi Anda angka 58209749445923078164062862089986280348253421170679, mereka terlihat sangat acak. Namun jika Anda menyadari bahwa itu sebenarnya adalah digit PI, maka Anda akan tahu angka berikutnya adalah 8.
Untuk beberapa aplikasi, ini OK, tetapi untuk aplikasi lain (terutama yang terkait keamanan) orang menginginkan keacakan asli yang tidak dapat diprediksi - yang tidak dapat dihasilkan oleh algoritme (yaitu program) karena menurut definisi dapat diprediksi. Ini adalah masalah karena komputer Anda pada dasarnya adalah sebuah program, jadi bagaimana mungkin mendapatkan angka acak asli? Jawabannya adalah dengan mengukur peristiwa yang benar-benar acak dari dunia luar - misalnya celah antara penekanan tombol Anda dan menggunakannya untuk menyuntikkan keacakan asli ke dalam penghasil angka acak yang dapat diprediksi. 'Kumpulan entropi' dapat dianggap sebagai penyimpan keacakan ini yang dibangun oleh penekanan tombol (atau apa pun yang digunakan) dan terkuras oleh pembuatan angka acak.
Solusi 3:
Entropi adalah istilah teknis untuk "Keacakan". Komputer tidak benar-benar menghasilkan entropi tetapi mengumpulkannya dengan melihat hal-hal seperti variasi kecepatan rotasi hard drive (Fenomena fisik yang sangat sulit diprediksi karena gesekan dll.) Ketika komputer ingin menghasilkan data acak semu, itu akan menghasilkan rumus matematika dengan entropi sebenarnya yang ditemukan dengan mengukur klik mouse, variasi putaran hard drive, dll. Secara kasar entropy_avail
adalah ukuran bit yang saat ini tersedia untuk dibaca dari /dev/random
Butuh waktu bagi komputer untuk membaca entropi dari lingkungannya kecuali memiliki perangkat keras yang keren seperti dioda yang berisik atau semacamnya.
Jika Anda memiliki 4096 bit entropi yang tersedia dan Anda menyimpan /dev/random
Anda dapat berharap dapat membaca 512 byte entropi (4096 bit) sebelum file diblokir sementara menunggu lebih banyak entropi.
Misalnya jika Anda “cat /dev/random
” entropi Anda akan menyusut menjadi nol. Pada awalnya Anda akan mendapatkan 512 byte sampah acak tetapi akan berhenti dan sedikit demi sedikit Anda akan melihat lebih banyak data acak mengalir.
Ini bukan cara orang mengoperasikan /dev/random
meskipun. Biasanya pengembang akan membaca sejumlah kecil data, seperti 128 bit, dan menggunakannya untuk menyebarkan semacam algoritma PRNG. Sangat sopan untuk tidak membaca entropi lagi dari /dev/random
dari yang Anda butuhkan karena membutuhkan waktu lama untuk membangun dan dianggap berharga. Jadi jika Anda mengurasnya dengan sembarangan cat
Jika file seperti di atas, Anda akan menyebabkan aplikasi lain perlu membaca dari /dev/random
untuk memblokir. Pada satu sistem di tempat kerja, kami melihat bahwa banyak fungsi crypto terhenti. Kami menemukan bahwa tugas cron memanggil skrip python yang terus menginisialisasi ramdom.random()
pada setiap lari yang berlari setiap beberapa detik. Untuk memperbaikinya kami menulis ulang skrip python sehingga berjalan sebagai daemon yang diinisialisasi hanya sekali dan tugas cron akan membaca data melalui XMLRPC sehingga tidak terus membaca dari /dev/random
saat memulai.
Solusi 4:
File read-only entropy_avail memberikan entropi yang tersedia. Biasanya, ini akan menjadi 4096 (bit), kumpulan entropi penuh.
Anda dapat membaca lebih lanjut di:http://linux.die.net/man/4/random