Saya mencoba menghapus semi-aman sekelompok hard drive. Berikut ini berfungsi pada 20-50Mb / s
dd if=/dev/zero of=/dev/sda
Tapi
dd if=/dev/random of=/dev/sda
sepertinya tidak bekerja. Juga saat saya mengetik
dd if=/dev/random of=stdout
Itu hanya memberi saya beberapa byte terlepas dari apa yang saya berikan untuk bs = dan hitung =
Apakah saya menggunakan / dev / salah acak? Info apa lagi yang harus saya cari untuk memajukan pemecahan masalah ini? Apakah ada cara lain untuk melakukan ini dengan skrip atau semacamnya
makeMyLifeEasy | dd if=stdin of=/dev/sda
Atau semacam itu...
/dev/random
hanya mengembalikan beberapa byte, lihat superuser.com/a/712515/139307Jawaban:
Keduanya
/dev/random
dan/dev/urandom
menggunakan "kolam entropi". Ketika pool habis,/dev/random
tunggu sampai diisi ulang, yang membutuhkan perilaku sistem pemantauan (input keyboard, pergerakan mouse, dll.), Sedangkan/dev/urandom
akan terus memberi Anda data pseudo-acak./dev/random
secara teori kualitasnya lebih tinggi, tetapi/dev/urandom
hampir pasti cukup bagus untuk keperluan Anda. (Tetapi bahkan/dev/urandom
mungkin lebih lambat dari beberapa metode lain. Generator yang lebih cepat, tetapi lebih rendah, kualitasnya mungkin cukup baik untuk menghapus hard drive. Tidak jelas bahwa penyerang akan mendapatkan keuntungan dari mengetahui urutan yang akan dihasilkan, atau bahwa angka acak lebih baik untuk tujuan ini daripada urutan seperti 0, 1, 2, 3, 4, ....)Mengutip
random(4)
halaman manual:UPDATE : Halaman manual `acak (4) telah diperbarui sejak saya menulis itu. Sekarang tertulis:
Lihat juga " Mitos tentang / dev / urandom " oleh Thomas Hühn.
Tetapi
/dev/urandom
, meskipun itu tidak akan diblokir, kemungkinan akan terlalu lambat jika Anda ingin menghasilkan data dalam jumlah besar. Lakukan beberapa pengukuran pada sistem Anda sebelum mencobanya.EDIT: Berikut ini adalah penyimpangan pada nomor acak "benar" vs nomor pseudo-acak. Jika semua yang Anda minati adalah jawaban praktis untuk pertanyaan itu, Anda bisa berhenti membaca sekarang.
Sepertinya saya telah mengklaim (termasuk dalam jawaban lain di sini) yang
/dev/random
mengimplementasikan generator nomor acak "benar", sebagai lawan dari generator nomor acak semu (PRNG). Sebagai contoh, artikel Wikipedia membuat klaim seperti itu. Saya tidak percaya itu benar. Ada beberapa diskusi tentang hal ini di sini yang mengacu pada generator nomor acak perangkat keras, tetapi saya tidak melihat bukti yang/dev/random
biasanya menggunakan perangkat seperti itu, atau bahwa komputer biasa bahkan memiliki perangkat seperti itu. Mereka berbeda dari PRNG sepertirand()
fungsi C karena mereka tidak deterministik, karena mereka mengambil entropi dari sumber yang secara praktis tidak dapat diprediksi.Saya akan mengatakan ada tiga kelas generator nomor "acak":
PRNG deterministik, seperti
rand()
fungsi C , yang menggunakan algoritma untuk menghasilkan urutan berulang yang memiliki (kurang lebih) sifat statistik dari urutan yang benar-benar acak. Ini bisa cukup baik untuk gim (diberikan cara yang baik untuk menaburnya), dan diperlukan untuk aplikasi yang membutuhkan pengulangan, tetapi tidak cocok untuk kriptografi.Generator menyukai
/dev/random
dan mengambil/dev/urandom
entropi dari sumber yang praktis tidak dapat diprediksi seperti aktivitas I / O (inilah sebabnya menggedor keyboard atau menggerakkan mouse dapat menyebabkan/dev/random
menghasilkan lebih banyak data). Tidak jelas (bagi saya) apakah ini memenuhi definisi PRNG (Saya telah melihat definisi yang mengatakan PRNG adalah deterministik), tetapi mereka juga tidak benar - benar menghasilkan bilangan acak.Generator nomor acak perangkat keras yang secara fisik tidak dapat diprediksi bahkan dengan pengetahuan lengkap tentang keadaan awal mereka, dan yang tambahan menggunakan teknik matematika untuk memastikan sifat statistik yang tepat.
sumber
/dev/urandom
jelas pseudo-random./dev/random
berbeda karena mencoba membuat estimasi konservatif dari entropi inputnya dan tidak menghasilkan lebih banyak entropi daripada yang sebenarnya (menurutnya). Ini tidak tergantung pada kehadiran perangkat TRNG yang berdedikasi, karena entropi sejati juga dapat diperoleh dari acara independen apa pun, seperti keyboard atau jaringan IO vs waktu./dev/random
adalah sumber entropi sejati, byte benar-benar acak. Karena itu, perlu sumber keacakan. Anda dapat 'menggunakan' keacakan dengan membaca darinya. Ini akan memberi Anda semua keacakan yang dimilikinya, kemudian memblokir sampai mendapat lebih banyak. Anda mungkin hanya duduk di sana menunggu, dan mesin mendapat sangat sedikit keacakan baru, dan itu hanya menunggu./dev/random
untuk crypto benar-benar acak, keacakan kualitas tinggi. Dengan demikian, ini adalah overkill untuk menimpa drive disk. Menulis dari/dev/zero
beberapa kali tidak masalah. Atau Anda dapat menulis dari/dev/urandom
, yang tidak akan memblokir dan memberikan angka pseudo-acak ketika kehabisan keacakan yang sebenarnya.sumber
/dev/random
tidak menghasilkan "byte benar-benar acak". Ini menghasilkan byte -random pseudo -random berkualitas lebih tinggi daripada yang/dev/urandom
dilakukan.Di Linux / dev / random adalah file khusus yang menyajikan nomor acak semu yang berkualitas tinggi. Implementasi ini mengumpulkan entropi dari acara yang berasal dari gangguan keyboard, mouse, disk, dan sistem. (rujuk dokumen ini ) Jadi, ketika tidak ada acara seperti itu, kumpulan entropi kosong, bacaan dari / dev / random akan diblokir hingga kebisingan lingkungan tambahan dikumpulkan. Ini menjelaskan masalah Anda. Untuk mengisi kumpulan entropi, Anda dapat menekan tombol pada keyboard.
Di sisi lain, generator angka acak menggunakan perangkat generator angka acak Perangkat Keras yang menghasilkan angka acak dari proses fisik. Proses ini termasuk fenomena mikroskopis yang menghasilkan sinyal "noise" tingkat rendah, acak secara statistik, seperti noise termal atau efek fotoelektrik atau fenomena fisik lainnya. Secara teori, proses-proses ini benar-benar tidak dapat diprediksi, dan pernyataan teori tentang tidak dapat diprediksi akan diuji secara eksperimental.
Generator nomor acak perangkat keras biasanya terdiri dari transduser untuk mengubah beberapa aspek fenomena fisik menjadi sinyal listrik, penguat, dan sirkuit elektronik lainnya untuk meningkatkan amplitudo fluktuasi acak ke tingkat makroskopis, dan beberapa jenis pengubah analog ke digital untuk mengubah output menjadi angka digital, seringkali digit biner sederhana 0 atau 1. Dengan berulang kali mengambil sampel sinyal yang berubah secara acak, serangkaian angka acak diperoleh.
Perangkat Penghasil Angka Acak Perangkat Keras mengumpulkan kebisingan lingkungan dari driver perangkat dan sumber lain ke dalam kumpulan entropi. Dari kumpulan entropi ini angka acak dibuat. Saat membaca, perangkat / dev / random hanya akan mengembalikan byte acak dalam perkiraan jumlah bit noise di kumpulan entropi. Ini menjelaskan masalah Anda.
Beberapa implementasi Hardware RNG dijelaskan dalam kernel doc dan informasi pada perangkat .
Mitra untuk / dev / random adalah / dev / urandom ("sumber tidak terkunci" / sumber acak yang tidak memblokir) yang menggunakan kumpulan internal untuk menghasilkan bit pseudo-acak yang lebih banyak. Ini berarti bahwa panggilan tersebut tidak akan memblokir, tetapi output mungkin mengandung lebih sedikit entropi daripada pembacaan yang sesuai dari / dev / random.
Jadi, jika maksud Anda bukan untuk menghasilkan CSPRNG (generator nomor pseudorandom yang aman secara kriptografis), Anda harus menggunakan / dev / urandom.
sumber
/dev/random
benar-benar menggunakan sumber seperti noise termal? Pemahaman saya adalah bahwa ia menggunakan informasi dari (relatif) status sistem yang tidak dapat diprediksi, seperti aktivitas I / O dan status proses. Saya tidak berpikir sebagian besar sistem Linux bahkan memiliki perangkat keras yang dapat memanen noise termal. Bisakah Anda mengutip beberapa dokumentasi tentang ini?/dev/random
menghasilkan "angka yang benar-benar acak".Tanpa menjawab pertanyaan Anda - sudah ada jawaban lengkap di sini - Anda juga dapat melihat Boot Darik dan Nuke alias DBAN yang merupakan penghapus drive CD langsung.
sumber
Cukup gunakan
shred
perintah yang datang dengan coreutils. Ini menggunakan data acak dengan cara yang efisien. dd adalah alat level rendah dan itu mungkin level agak terlalu rendah untuk tugas ini.shred
akan secara efisien melewati bagian perangkat yang tidak dapat ditulis misalnya.sumber