it-swarm-id.com

Makan / dev / kumpulan entropi acak?

Cara memberi makan yang mana lagi /dev/random kumpulan entropi yang akan Anda sarankan untuk menghasilkan kata sandi acak? Atau, apakah mungkin ada cara yang lebih baik untuk membuat kata sandi yang sepenuhnya acak secara lokal?

51
pootzko

Anda dapat memberinya makan dengan white noise dari chip suara Anda, jika ada. Lihat artikel ini: http://www.linuxfromscratch.org/hints/downloads/files/entropy.txt

24
Henri

Kamu harus menggunakan /dev/urandom, bukan /dev/random. Dua perbedaan antara /dev/random dan /dev/urandom are (saya berbicara tentang Linux di sini):

  • /dev/random mungkin secara teoritis lebih baik dalam konteks algoritma informasi-aman secara teoritis . Ini adalah jenis algoritma yang aman terhadap teknologi saat ini, dan juga teknologi masa depan, dan teknologi yang digunakan oleh alien, dan iPad milik Tuhan juga. Algoritma yang aman secara informasi-informasi aman terhadap daya komputasi tanpa batas. Tidak perlu dikatakan, algoritma seperti itu sangat langka dan jika Anda menggunakannya, Anda akan mengetahuinya. Juga, ini adalah "mungkin": secara internal, /dev/random menggunakan fungsi hash konvensional, jadi kemungkinan besar ia akan memiliki kelemahan jika diserang dengan kekuatan tak terbatas (tidak ada yang perlu dikhawatirkan bagi penyerang berbasis Bumi).

  • /dev/urandom tidak akan memblokir, sementara /dev/random dapat melakukannya. /dev/random mempertahankan counter "berapa banyak entropi masih memiliki" di bawah asumsi bahwa setiap bit yang telah dihasilkan adalah bit entropi yang hilang. Memblokir menyebabkan masalah yang sangat nyata, mis. server yang gagal mem-boot setelah instalasi otomatis karena macet pada pembuatan kunci server SSH (ya, saya telah melihat itu). /dev/urandom menggunakan generator nomor pseudo-acak kriptografis yang kuat sehingga tidak akan pernah memblokir.

Jadi, Anda ingin menggunakan /dev/urandom dan berhenti khawatir tentang bisnis entropi ini.

Sekarang Anda mungkin ingin khawatir tentang entropi jika Anda menulis penginstal Linux. Kuncinya adalah /dev/urandom tidak pernah memblokir, selamanya, bahkan ketika seharusnya: /dev/urandom aman selama ia telah menerima cukup byte "entropi awal" sejak boot terakhir (32 byte acak sudah cukup). Instalasi Linux normal akan membuat seed acak (dari /dev/random) saat instalasi, dan simpan di disk. Setiap kali reboot, seed akan dibaca, dimasukkan ke dalam /dev/urandom, dan sebuah seed baru langsung dihasilkan (dari /dev/urandom) untuk menggantinya. Dengan demikian, ini menjamin bahwa /dev/urandom akan selalu memiliki cukup entropi awal untuk menghasilkan alea yang kuat secara kriptografis, cukup sempurna untuk pekerjaan kriptografi biasa, termasuk pembuatan kata sandi. Satu-satunya titik kritis adalah selama instalasi: installer harus mendapatkan beberapa entropi dari /dev/random, yang dapat memblokir. Masalah ini juga terjadi dengan live CD dan varian lainnya tanpa area penyimpanan permanen baca-tulis. Dalam situasi ini, Anda mungkin ingin mencari sumber entropi untuk memastikan bahwa /dev/random akan cukup makan, dan tidak akan memblokir.

Sistem operasi itu sendiri, dan lebih tepatnya kernel, berada di tempat yang tepat untuk mengumpulkan entropi dari peristiwa perangkat keras, karena menangani perangkat keras. Jadi ada relatif sedikit yang bisa Anda gunakan untuk entropi yang belum digunakan kernel. Salah satu sumber yang tersisa adalah data Webcam: webcam, bahkan menghadap dinding kosong, akan mengeluarkan data dengan noise termal, dan karena itu menghasilkan banyak data , itu adalah pengumpul entropi yang bagus. Jadi ambil saja beberapa frame dari webcam, hash mereka dengan fungsi hash yang aman (SHA-256), dan tulis itu menjadi /dev/urandom. Ini masih memerlukan banyak usaha keras.

50
Thomas Pornin

Saya tahu daemon entropi audio dan hasge yang digunakan oleh daemon yang dirajam , cobalah.

13
krempita

Nilai terbaik yang pernah saya lihat dalam perangkat keacakan HW adalah kunci entropy simtec.
Memiliki sejumlah perlindungan untuk melindungi dari kegagalan dan serangan. Sebagai contoh, ia menjalankan tes acak FIPS 140-2 pada setiap batch 20Kb, mematikan sendiri jika sejumlah tes signifikan gagal. Saya mendapat satu ketika saya melakukan banyak kunci generasi untuk penelitian DNSSEC, dan itu sangat mempercepat pekerjaan saya. Ini melewati semua tes dieharder. (perhatikan, selalu uji aliran acak Anda secara berkala, tidak peduli apa yang dikatakan vendor kepada Anda ;-)

7
spinkham

1) Anda tidak perlu menambahkan entropi lagi ke /dev/random, untuk menggunakannya untuk kata sandi. Sistem sudah melakukan itu untuk Anda.

2) Untuk menghasilkan kata sandi acak, lebih baik menggunakan /dev/urandom, bukan /dev/random. (/dev/random memiliki beberapa masalah: memblokir, menghabiskan kumpulan entropi dengan cara yang dapat menyebabkan pengguna lain /dev/random untuk memblokir. /dev/urandom adalah antarmuka tujuan umum yang lebih baik.)

3) Berikut ini skrip sederhana yang saya gunakan untuk menghasilkan kata sandi acak. Anda bebas menggunakannya.

#!/bin/sh
# Make a 48-bit password (8 characters, 6 bits per char)
dd if=/dev/urandom count=1 2>/dev/null | base64 | head -1 | cut -c4-11 
7
D.W.

Saya menggunakan kombinasi sumber data dan algoritma hashing yang baik untuk menghasilkan data acak.

Pada server web Anda dapat menggabungkan data server (HW, SW, kinerja), data klien (agen pengguna, waktu permintaan, cookie, variabel URL, apa pun yang dapat Anda kumpulkan), beberapa data eksternal (seperti random.org), campur semuanya dengan katakanlah sha1 (mixed_data + time + some_secret_key) dan Anda mendapatkan bit data acak yang tidak dapat diprediksi.

Anda juga dapat mempertimbangkan untuk menggunakan P2PEG untuk dengan mudah mengumpulkan entropi dari klien dan server.

2
DUzun

Kata sandi, jika pendek, selalu dapat dipecahkan dengan kekerasan jika kecepatan atau jumlah percobaan tidak terbatas. Jika, di sisi lain, percobaan terbatas (mis. Login interaktif), bahkan sejumlah kecil entropi pada dasarnya tidak dapat dipecahkan - jumlah percobaan yang diperlukan menjadi penghambat sangat cepat.

Jadi, seharusnya tidak ada kasus di mana mendapatkan entropi kata sandi yang benar-benar bagus adalah masalah.

Jadi gunakan saja/dev/urandom, ini lebih dari cukup.

Namun, jawaban lain yang diberikan di sini adalah komentar yang bagus tentang bagaimana menjaga/dev/acak Anda diberikan cukup entropi, jika Anda membutuhkannya.

1
Nakedible