GNU/Linux >> Belajar Linux >  >> Linux

Apakah rand dari /dev/urandom aman untuk kunci login?

Jawaban singkatnya adalah ya. Jawaban panjangnya juga ya. /dev/urandom menghasilkan data yang tidak dapat dibedakan dari keacakan sebenarnya, mengingat teknologi yang ada. Mendapatkan keacakan "lebih baik" dari apa /dev/urandom berikan tidak ada artinya, kecuali jika Anda menggunakan salah satu dari beberapa algoritme kriptografi "teori informasi", yang bukan kasus Anda (Anda akan mengetahuinya).

Halaman manual untuk urandom agak menyesatkan, bisa dibilang salah, ketika menyarankan bahwa /dev/urandom mungkin "kehabisan entropi" dan /dev/random harus disukai; satu-satunya instan di mana /dev/urandom mungkin menyiratkan masalah keamanan karena entropi rendah adalah pada saat-saat pertama instalasi OS otomatis yang baru; jika mesin mem-boot ke titik di mana ia mulai memiliki beberapa aktivitas jaringan, maka ia telah mengumpulkan cukup keacakan fisik untuk memberikan keacakan dengan kualitas yang cukup tinggi untuk semua penggunaan praktis (saya berbicara tentang Linux di sini; di FreeBSD, instan sesaat dari sedikit kelemahan tidak terjadi sama sekali). Di sisi lain, /dev/random memiliki kecenderungan memblokir pada waktu yang tidak tepat, menyebabkan masalah kegunaan yang sangat nyata dan menjengkelkan. Atau, singkatnya:gunakan /dev/urandom dan berbahagialah; gunakan /dev/random dan menyesal.

(Edit: halaman Web ini menjelaskan perbedaan antara /dev/random dan /dev/urandom cukup jelas.)

Untuk tujuan menghasilkan "kuki":kuki semacam itu harus sedemikian rupa sehingga tidak ada dua pengguna yang berbagi kuki yang sama, dan secara komputasi tidak mungkin bagi siapa pun untuk "menebak" nilai kuki yang ada. Urutan byte acak melakukannya dengan baik, asalkan menggunakan keacakan dengan kualitas yang memadai (/dev/urandom tidak apa-apa) dan cukup panjang . Sebagai patokan, jika Anda memiliki kurang dari 2 pengguna (n =33 jika seluruh populasi Bumi dapat menggunakan sistem Anda), maka urutan n+128 bit cukup lebar; Anda bahkan tidak perlu memeriksa tabrakan dengan nilai yang ada:Anda tidak akan melihatnya seumur hidup. 161 bit muat dalam 21 byte.

Ada adalah beberapa trik yang bisa dilakukan jika Anda menginginkan cookie yang lebih pendek dan masih ingin menghindari mencari tabrakan di database Anda. Tapi ini hampir tidak diperlukan untuk cookie (saya berasumsi konteks berbasis web). Selain itu, ingatlah untuk menjaga kerahasiaan kuki Anda (mis. gunakan HTTPS, dan setel tanda "aman" dan "HttpOnly" kuki).


Ya, ini cara yang bagus.

Penjelasan @Thomas berhasil. Dan dia sepenuhnya benar untuk mengkritik /dev/urandom halaman manual. Tepat.

Tapi lewati "memeriksa apakah sudah ada". Cek itu tidak ada gunanya. Itu tidak akan terjadi. (Kemungkinan hal itu terjadi lebih rendah daripada kemungkinan tersambar petir -- berkali-kali -- di hari yang sama.)


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Kapan Menggunakan /dev/random Vs /dev/urandom?

  3. Bagaimana cara menyandikan base64 /dev/random atau /dev/urandom?

  1. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  2. DD dari /dev/zero ke /dev/null...apa yang sebenarnya terjadi

  3. Linux:Perbedaan antara /dev/console , /dev/tty dan /dev/tty0

  1. kernel:menonaktifkan /dev/kmem dan /dev/mem

  2. Bagaimana Linux menggunakan /dev/tty dan /dev/tty0

  3. Apakah salah menautkan /dev/random ke /dev/urandom di Linux?