Mengapa GNU rusak lebih cepat daripada dd saat mengisi drive dengan data acak?

8

Sementara menghapus hard drive dengan aman sebelum decommissioning saya perhatikan, itu dd if=/dev/urandom of=/dev/sdamemakan waktu hampir sepanjang hari, sedangkan shred -vf -n 1 /dev/sdahanya membutuhkan beberapa jam dengan komputer yang sama dan drive yang sama.

Bagaimana ini mungkin? Saya kira hambatannya adalah output terbatas /dev/urandom. Apakah rusak menggunakan beberapa generator pseudorandomness yang kurang acak dan hanya cukup untuk tujuan tunggal (yaitu lebih efisien) daripada urandom?


sumber
Perhatikan bahwa opsi terbaik untuk menghapus drive, terutama drive SSD, adalah perintah SATA secure erase. Opsi lain - kecuali penghancuran - akan gagal. Jauh lebih cepat juga, dan mungkin hanya butuh beberapa detik pada SSD.
Maarten Bodewes

Jawaban:

11

Rusak menggunakan generator pseudorandom internal

Secara default, perintah ini menggunakan generator pseudorandom internal yang diinisialisasi dengan sedikit entropi, tetapi dapat diarahkan untuk menggunakan sumber eksternal dengan opsi file --random-source =. Kesalahan dilaporkan jika file tidak mengandung cukup byte.

Misalnya, file perangkat / dev / urandom dapat digunakan sebagai sumber data acak. Biasanya, perangkat ini mengumpulkan kebisingan lingkungan dari driver perangkat dan sumber lainnya ke dalam kumpulan entropi, dan menggunakan kumpulan tersebut untuk menghasilkan bit acak. Jika pool kekurangan data, perangkat menggunakan pool internal untuk menghasilkan lebih banyak bit, menggunakan generator nomor pseudorandom yang aman secara kriptografis. Namun perlu diperhatikan bahwa perangkat ini tidak dirancang untuk pembuatan data acak massal dan relatif lambat .

Saya tidak yakin bahwa data acak adalah setiap lebih efektif daripada single pass dari nol (atau nilai byte lainnya) di mengaburkan isi sebelumnya.

Untuk menonaktifkan drive dengan aman, saya menggunakan magnet besar dan palu besar.

RedGrittyBrick
sumber
2

Saya kira itu akan disebabkan bukan dengan ddmenggunakan potongan yang lebih kecil untuk menulis data. Coba dd if=... of=... bs=(1<<20)lihat apakah kinerjanya lebih baik.

jpalecek
sumber
Saya akan mencobanya pada kesempatan berikutnya dan memposting hasilnya.
+1 ddUkuran blok default adalah 512. Ini dilakukan jauh di bawah batas disk di komputer saya.
Piotr Findeisen
/ dev / urandom kemungkinan besar cepat - ukuran blok dd hampir pasti masalah.
Dan Pritts
2
Setelah Anda meningkatkan ukuran blok sepertinya /dev/urandombisa menjadi hambatan - Saya menguji beberapa drive SSD lebih dari USB 3.0 dan dengan ddperintah yang sama saya mendapatkan 326 MB / s untuk if=/dev/zerotetapi hanya 12,8 MB / s untukif=/dev/urandom
austinmarton