Dalam video berikut: Linux HOWTO: Amankan Data Anda dengan PGP, Bagian 2 , Anda diperlihatkan cara membuat pasangan kunci gpg
. Pada sekitar 1:50
, instruktur mengatakan yang berikut:
Ketika kunci sedang dibuat, itu ide yang baik untuk menggerakkan mouse Anda sedikit untuk memberikannya sedikit lebih banyak entropi angka acak untuk pembuatan keypair.
Bagi saya ini seperti mitos, terutama karena alat baris perintah biasanya tidak terpengaruh oleh kursor. Di sisi lain, saya tidak tahu bagaimana penghasil angka acak Linux bekerja, apakah itu dibagikan oleh GUI atau independen darinya. Apakah ada stok dalam apa yang dia klaim, atau ini contoh pemrograman pemujaan kargo ?
Jawaban:
Ada banyak kebenaran dalam hal ini, pada kenyataannya lebih banyak kebenaran daripada mitos, tetapi meskipun demikian pernyataan tersebut mencerminkan kesalahpahaman mendasar tentang apa yang terjadi. Ya, menggerakkan mouse sambil membuat kunci dengan GPG bisa menjadi ide yang bagus. Ya, menggerakkan mouse memberikan kontribusi beberapa entropi yang membuat angka acak menjadi acak. Tidak, menggerakkan mouse tidak membuat kunci lebih aman.
Semua generator acak yang bagus cocok untuk kriptografi, dan Linux dalam kategori itu, memiliki dua komponen:
Entropi harus berasal dari sumber yang eksternal ke komputer. Pengguna adalah salah satu sumber entropi. Apa yang dilakukan pengguna sebagian besar tidak acak, tetapi waktu penekanan tombol dan gerakan mouse yang baik sangat tidak terduga sehingga sedikit acak - tidak terlalu acak, tetapi sedikit demi sedikit, itu menumpuk. Sumber potensial entropi lainnya termasuk waktu paket jaringan dan noise putih kamera atau mikrofon. Versi dan konfigurasi kernel yang berbeda dapat menggunakan serangkaian sumber yang berbeda. Beberapa komputer memiliki sirkuit perangkat keras RNG khusus berdasarkan peluruhan radioaktif atau, yang kurang mengesankan, sirkuit elektronik yang tidak stabil. Sumber khusus ini sangat berguna dalam perangkat dan server tertanam yang dapat memiliki perilaku yang cukup dapat diprediksi pada boot pertama mereka, tanpa pengguna melakukan hal-hal aneh.
Linux menyediakan nomor acak untuk program melalui dua perangkat:
/dev/random
dan/dev/urandom
. Membaca dari kedua perangkat menghasilkan kualitas kriptografis. Kedua perangkat menggunakan keadaan RNG internal yang sama dan algoritma yang sama untuk mengubah keadaan dan menghasilkan byte acak. Mereka memiliki keterbatasan khusus yang membuat keduanya tidak benar:/dev/urandom
dapat mengembalikan data yang dapat diprediksi jika sistem belum mengakumulasi cukup entropi./dev/random
menghitung jumlah entropi dan blok yang tersedia jika tidak cukup. Ini kedengarannya bagus, kecuali bahwa perhitungan didasarkan pada pertimbangan teoritis yang membuat jumlah entropi yang tersedia berkurang secara linier dengan setiap bit keluaran. Jadi/dev/random
cenderung untuk memblokir dengan sangat cepat.Sistem Linux menyimpan status RNG internal ke disk dan mengembalikannya saat boot. Karenanya entropi dijalankan dari satu boot ke boot berikutnya. Satu-satunya waktu ketika sistem Linux mungkin kurang entropi adalah ketika itu baru diinstal. Setelah ada cukup entropi dalam sistem, entropi tidak berkurang; hanya perhitungan cacat Linux yang berkurang. Untuk penjelasan lebih lanjut tentang pertimbangan ini, baca
/dev/urandom
cocok untuk menghasilkan kunci kriptografi , oleh seorang kriptografi profesional. Lihat aso Bisakah Anda menjelaskan estimasi entropi yang digunakan dalam random.c .Memindahkan mouse menambah lebih banyak entropi ke sistem. Tapi gpg hanya bisa membaca
/dev/random
, bukan/dev/urandom
(cara untuk menyelesaikan masalah ini adalah dengan membuat/dev/random
perangkat 1: 9 yang sama/dev/urandom
), jadi tidak pernah berisiko menerima nomor acak yang tidak cukup acak. Jika Anda tidak menggerakkan mouse, kuncinya adalah acak; tetapi apa yang bisa terjadi adalah gpg itu bisa diblokir dalam baca dari/dev/random
, menunggu penghitung entropi kernel naik.sumber
add_input_randomness
masukdrivers/input/input.c
, tapi saya tidak tahu dalam keadaan apa itu benar-benar akan menyuntikkan entropi.GPG menggunakan generator nomor acak Linux (kernel). Generator kernel mendapat entropi (keacakan) dari semua jenis tempat, di antaranya adalah interupsi waktu, untuk interupsi tertentu. Memindahkan mouse (dan mengetik, aktivitas disk, dll.) Akan menghasilkan interupsi.
Jadi, menggerakkan mouse memang berpotensi memberi makan ke dalam generator angka acak. Tetapi apakah itu tergantung pada versi kernel yang digunakan; versi yang lebih baru tidak (setidaknya dalam pengujian saya) menggunakan interupsi keyboard atau mouse untuk entropi. Namun, aktivitas disk (jadi, misalnya, menjalankan
sync
akan menambah jumlah entropi yang berpotensi besar, tergantung pada seberapa banyak yang memerah).Singkatnya: ini tidak benar pada versi Linux saat ini. Itu pada yang lebih tua.
Namun, jika generator kehabisan entropi, itu seharusnya berhenti — jadi generasi kunci Anda akan menggantung sampai beberapa entropi dihasilkan. Jadi itu akan menjadi masalah selamanya, bukan masalah keamanan.
Anda dapat melihat seberapa banyak entropi tersedia oleh
cat /proc/sys/kernel/random/entropy_avail
.sumber
rngd
memberi makan artifisial pada kolam entropi.haveged
itu adalah alat lain yang bagus untuk memberi makan artifisial entropi.Ekor memiliki generasi kunci yang sangat cepat karena telah
haveged
diinstal:sumber