Jelaskan dalam Bahasa Inggris Biasa tentang Entropi Yang Tersedia

28

Jika saya menjalankan perintah ini di Ubuntu

sudo cat /proc/sys/kernel/random/entropy_avail

ia mengembalikan angka yang menunjukkan berapa banyak "entropi" tersedia untuk kernel, tetapi hanya itu yang saya tahu. Unit apa yang diukur dalam entropi ini? Untuk apa ini digunakan? Saya sudah diberitahu "buruk" jika angka itu "rendah". Seberapa rendah "rendah" dan hal "buruk" apa yang akan terjadi jika ya? Berapa kisaran yang baik untuk itu? Bagaimana cara ditentukan?

Josh Lindsey
sumber

Jawaban:

22

Sistem Anda mengumpulkan beberapa nomor acak "nyata" dengan mengawasi berbagai peristiwa: aktivitas jaringan, generator nomor acak perangkat keras (jika tersedia; misalnya prosesor VIA biasanya memiliki generator nomor acak "nyata"), dan seterusnya. Jika mengumpankannya ke pool entropy kernel, yang digunakan oleh / dev / random. Aplikasi yang membutuhkan keamanan ekstrim cenderung menggunakan / dev / acak sebagai sumber entropi mereka, atau dengan kata lain, sumber keacakan.

Jika / dev / random kehabisan entropi yang tersedia, itu tidak dapat melayani lebih banyak keacakan dan aplikasi menunggu untuk 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. Dalam lingkungan yang sibuk ada lebih banyak upaya login daripada lalu lintas untuk memberi makan / dev / random -> semuanya terhenti. Dalam hal ini saya menginstal rng-tools dan mengaktifkan rngd yang dimilikinya - yang menyekop angka semi-acak dari / dev / urandom ke / dev / random dalam kasus / dev / random kehabisan entropi "nyata".

Janne Pikkarainen
sumber
19

Jika Anda ingin gambaran umum yang lebih sederhana dari masalah yang mendasarinya: Beberapa aplikasi (seperti enkripsi) memerlukan angka acak. Anda dapat menghasilkan angka acak menggunakan algoritma - tetapi meskipun ini tampak acak di satu sisi mereka benar-benar dapat diprediksi di lain. Sebagai contoh jika saya memberi Anda digit 58209749445923078164062862089986280348253421170679, mereka terlihat cukup acak. Tetapi jika Anda menyadari bahwa mereka sebenarnya adalah digit PI, maka Anda akan tahu yang berikutnya akan menjadi 8.

Untuk beberapa aplikasi ini OK, tetapi untuk aplikasi lain (terutama yang berhubungan dengan keamanan) orang menginginkan keacakan yang tidak dapat diprediksi - yang tidak dapat dihasilkan oleh suatu algoritma (yaitu program) karena itu menurut definisi dapat diprediksi. Ini adalah masalah karena komputer Anda pada dasarnya adalah sebuah program, jadi bagaimana mungkin ia bisa mendapatkan angka acak asli? Jawabannya adalah dengan mengukur kejadian yang benar-benar acak dari dunia luar - misalnya kesenjangan antara penekanan tombol Anda dan menggunakannya untuk menyuntikkan keacakan asli ke dalam penghasil angka acak yang dapat diprediksi. 'Kelompok entropi' dapat dianggap sebagai penyimpan keacakan ini yang dibangun oleh penekanan tombol (atau apa pun yang sedang digunakan) dan dikeringkan oleh generasi bilangan acak.

JustinP
sumber
2
Penjelasan yang bagus ...
pradipta
Tetapi PI tidak rasional dan itu akan mencakup setiap urutan termasuk urutan di atas diikuti oleh 9 (bukan 8).
Ajay Brahmakshatriya
9

Entropy 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, ia akan seed formula matematika dengan entropi sejati yang ditemukan dengan mengukur mouse, variasi putaran hard drive dll. Secara kasar entropy_availadalah ukuran bit yang saat ini tersedia untuk dibaca dari/dev/random

Butuh waktu bagi komputer untuk membaca entropi dari lingkungannya kecuali ia memiliki perangkat keras yang keren seperti dioda berisik atau sesuatu.

Jika Anda memiliki 4096 bit entropi yang tersedia dan Anda /dev/randomdapat menggunakannya, Anda dapat berharap untuk dapat membaca 512 byte entropi (4096 bit) sebelum blok file sementara menunggu lebih banyak entropi.

Misalnya jika Anda " cat /dev/random" entropi Anda akan menyusut ke nol. Pada awalnya Anda akan mendapatkan 512 byte sampah acak tetapi itu akan berhenti dan sedikit demi sedikit Anda akan melihat lebih banyak data acak mengalir.

Ini bukan bagaimana orang harus beroperasi /dev/random. Biasanya pengembang akan membaca sejumlah kecil data, seperti 128 bit, dan menggunakannya untuk menyemai semacam algoritma PRNG. Adalah sopan untuk tidak membaca entropi lebih dari yang /dev/randomAnda butuhkan karena membutuhkan waktu lama untuk membangun dan dianggap berharga. Jadi jika Anda mengeringkannya dengan catting file seperti di atas Anda akan menyebabkan aplikasi lain yang perlu dibaca /dev/randomuntuk diblokir. Pada satu sistem di tempat kerja kami memperhatikan bahwa banyak fungsi crypto sedang macet. Kami menemukan bahwa pekerjaan cron memanggil skrip python yang terus diinisialisasiramdom.random()pada setiap lari yang berjalan setiap beberapa detik. Untuk memperbaikinya kami menulis ulang skrip python sehingga dijalankan sebagai daemon yang diinisialisasi hanya sekali dan tugas cron akan membaca data melalui XMLRPC sehingga tidak akan terus membaca dari /dev/randomsaat startup.

Carlos D. Garza
sumber
1
"Untuk memperbaikinya kami menulis ulang skrip python sehingga dijalankan sebagai daemon yang diinisialisasi hanya sekali dan tugas cron akan membaca data melalui XMLRPC sehingga tidak akan terus membaca dari / dev / acak pada saat startup." --- Kecuali untuk bagian yang saya kutip, yang sulit untuk dievaluasi karena tidak jelas apakah naskah Anda benar-benar membutuhkan keacakan atau tidak, jawaban Anda sangat jelas dan eksplisit.
Craig Hicks
8

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

Prix
sumber