Saya telah membaca tentang cara membuat hard drive aman untuk enkripsi, dan salah satu langkahnya adalah menulis bit acak ke drive, untuk membuat data yang dienkripsi tidak dapat dibedakan dari sisa data pada hard drive.
Namun, ketika saya mencoba menggunakan dd if=/dev/urandom of=/dev/sda
di masa lalu, ETA terlihat berada di urutan hari. Saya melihat sesuatu tentang penggunaan badblocks
pengganti urandom, tapi itu sepertinya tidak banyak membantu. Saya hanya ingin tahu apakah ada cara yang dapat membantu saya mempercepat ini, seperti opsi untuk dd
atau hal lain yang mungkin saya lewatkan, atau jika kecepatannya hanyalah batasan dari HD.
encryption
dd
random
bitflips
sumber
sumber
dd bs=1M
sebagai contoh.iostat -kx 10
untuk melihat apa yang sibuk di drive.shred -v -n 1 /dev/overwritethis
cepat. Ini tentang satu-satunya kasus di manashred
sebenarnya berguna untuk sesuatu.Jawaban:
dd if=/dev/urandom of=/dev/sda
, atau sederhananyacat /dev/urandom >/dev/sda
, bukan cara tercepat untuk mengisi disk dengan data acak. Linux/dev/urandom
bukan RNG kriptografi tercepat di sekitar. Apakah ada alternatif untuk / dev / urandom? punya beberapa saran. Secara khusus, OpenSSL mengandung PRNG kriptografi yang lebih cepat:Perhatikan bahwa pada akhirnya, apakah ada peningkatan atau tidak tergantung pada bagian mana yang menjadi hambatan: CPU atau disk.
Berita baiknya adalah bahwa mengisi disk dengan data acak sebagian besar tidak berguna. Pertama, untuk menghilangkan mitos umum, menyeka dengan nol sama baiknya pada perangkat keras saat ini . Dengan teknologi hard disk 1980-an, menimpa hard disk dengan nol meninggalkan sisa biaya kecil yang dapat dipulihkan dengan perangkat keras yang agak mahal; diperlukan beberapa kali overwrite dengan data acak ("Usus Gutmann"). Saat ini, bahkan satu setrip penimpaan dengan nol meninggalkan data yang tidak dapat dipulihkan secara realistis bahkan dalam kondisi laboratorium.
Saat Anda mengenkripsi partisi, mengisi disk dengan data acak tidak diperlukan untuk kerahasiaan data yang dienkripsi. Ini hanya berguna jika Anda perlu membuat ruang yang digunakan oleh data terenkripsi tidak dapat dibedakan dari ruang yang tidak digunakan. Membangun volume terenkripsi di atas wadah non-acak mengungkapkan blok disk mana yang pernah digunakan oleh volume terenkripsi. Ini memberi petunjuk yang baik tentang ukuran maksimum filesystem (meskipun seiring berjalannya waktu akan menjadi perkiraan yang lebih buruk dan lebih buruk), dan sedikit lagi.
sumber
cat /dev/zero
hampir selalu cukup. Hanya saja tidak cukup jika Anda ingin menyembunyikan berapa banyak ruang kosong di volume terenkripsi./etc/fstab
, kecuali Anda telah mengenkripsi partisi root, dan bahkan saat itu tidak ada begitu banyak opsi yang masuk akal).openssl rand
sepertinya memiliki batas atas jumlah byte yang akan dihasilkan. Jika Anda melebihi batas itu, misalnya 'openssl rand 810000000000, then no random output is generated. Only a brief "help" text is printed. I'm trying to random (pretty much) fill a 3TB hard drive. Not sure if there is a way to get
openssl` untuk menghasilkan banyak byte acak.openssl rand
perintah pada setiap partisi secara terbalik mulai dari sda5 atau apa pun dan bekerja mundur ke sda1 dan akhirnya sda?The openssl tampaknya tidak berfungsi untuk saya. Saya mendapat "opsi tidak dikenal" dan masalah lain dengan solusi yang disediakan. Jadi saya akhirnya pergi dengan program fio.
Yang sepertinya akan memakan waktu 3 jam untuk melakukan 19TB di 24 HDD. Jadi kira-kira 1.800 MB / s
Saya harap ini sebenarnya data acak. Halaman manual mengatakan "Default: isi buffer dengan data acak." http://linux.die.net/man/1/fio
Saya tidak melakukannya untuk tujuan enkripsi / aman, hanya mencoba memastikan tes yang saya baca nanti adalah data aktual dan bukan hanya 0. Perintah fio yang sama ini dapat digunakan untuk preconditioning SSD / NVMe. Karena hanya menggunakan / dev / nol dapat menyebabkan kompresi tingkat disk "curang" berapa banyak yang sebenarnya ditulis. Meskipun saya akan menambahkan
-loops=2
bendera untuk itu, jika itu adalah SSD baru untuk pembandingan.Jika Anda menginginkannya aman, Anda mungkin dapat menggunakan
-randrepeat=bool
opsi, karena itu akan beralih "Benih generator nomor acak dengan cara yang dapat diprediksi sehingga hasilnya dapat diulang di seluruh berjalan. Default: true.", Tapi aku masih belum yakin seberapa aman itu.Selain itu, beberapa HDD kelas perusahaan di luar sana adalah SED (Self Encrypting Drives) dan akan memungkinkan Anda untuk memutar kunci enkripsi untuk secara instan dan aman menghapus semua data yang ditulis.
Terakhir, saya pernah menggunakan DBAN (alias Darik's Boot dan Nuke), yang memiliki opsi CD dan USB bootable dan "adalah proyek open source yang dihosting di SourceForge. Program ini dirancang untuk menghapus hard disk dengan aman hingga datanya permanen secara permanen. dihapus dan tidak lagi dapat dipulihkan "
sumber
Anda bisa mendapatkan OpenSSL untuk mengenkripsi
/dev/zero
dengan kata sandi acak, memberikan data pseudorandom yang layak dengan sangat cepat (jika CPU Anda mendukung mempercepatnya).Anda dapat menyalurkan melalui ini
pv
untuk mendapatkan kemajuan / ETA. Perintah yang saya jalankan sekarang (di root shell) adalah:Saya mendapat ide ini dari jawaban ini , setelah memiliki masalah yang sama dengan John yang tidak rasional , yang mengomentari jawaban Gilles di atas. Ini meningkatkan kecepatan penghapusan saya ke array RAID baru saya dari 11 MB / s menjadi sekitar 300 MB / s, mengambil apa yang akan memakan waktu seminggu hingga 10 jam.
Saya akan menambahkan bahwa Anda harus dapat menggunakan daripada pernyataan yang lebih rumit di atas, tetapi ada bug yang akan memungkinkan untuk menghasilkan hanya 16 MB output. (Bug ini telah diajukan, Jan 2016.)
openssl rand #of_bytes
openssl enc ...
ssl
Dan, sesuai jawaban untuk pertanyaan ini , dan terus mengasumsikan bahwa CPU adalah hambatan, dimungkinkan untuk meningkatkan kecepatan lebih lanjut dengan menjalankan beberapa
openssl
proses paralel pada core yang terpisah, menggabungkannya menggunakan FIFO.sumber
openssl rand
.dd if=/dev/urandom
18MiB / sopenssl enc
,: ~ 180MiB / sfio
,: 169MiB / s,openssl rand
tidak ada dukungan> 754GB. Catatan bahwa jika Anda juga ingin perhitungan auto-ukuran, gunakan:openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt </dev/zero | pv --progress --eta --rate --bytes --size $(</proc/partitions awk '$4=="sda" {print sprintf("%.0f",$3*1024)}') | dd of=/dev/sda bs=2M
. Waspadalah,sda
hadir dua kali dalam perintah ini.Melengkapi jawaban Marco, yang Anda butuhkan adalah penghasil angka acak yang lebih cepat.
Anda menggunakan program sederhana yang menggemakan bilangan acak dari perpustakaan yang disukai
boost::random
dan menggunakannyadd
.Jika Anda memilih meningkatkan, Anda dapat menggunakan contoh ini , mengubah
experiment
fungsi sesuai kebutuhan Anda.sumber
/dev/urandom
.boost::random
tidak menawarkan RNG crypto, bukan? Jika Anda akan menggunakan RNG non-crypto, Anda mungkin juga menggunakan nol: setidaknya Anda tidak akan memiliki ilusi keamanan.boost::random
generator, satu-satunya cara untuk mengetahui dengan pasti adalah mengukur algoritma tercepat mereka terhadap/dev/urandom
Kemacetan jika bukan ukuran blok atau hard drive, tetapi generasi lambat nomor pseudo-acak.
/dev/urandom
adalah dengan magnitudo lebih cepat dibandingkan/dev/random
karena itu tidak menghalangi pada kolam entropi rendah.Anda dapat mengonfirmasi ini dengan mengukur output mentah dari nomor pseudo-acak Anda:
Nilai ini akan jauh lebih lambat daripada kecepatan tulis hard drive Anda. Solusi yang benar sangat tergantung pada tingkat keamanan yang Anda butuhkan. Jika Anda memerlukan keamanan yang tinggi baik menggunakan acak hardware cepat atau menerima kecepatan lambat. Jika kebutuhan keamanan Anda tidak setinggi itu, Anda bisa menangkap beberapa lusin MiB data dan menulis string itu berulang kali ke drive. Atau mungkin bahkan menulis nol dari
/dev/zero
adalah pilihan.Ringkasan
/dev/random
- aman, sangat lambat/dev/urandom
-kurangaman¹,RNG perangkat keras lambat - aman, cepat, sangat mahal
(
/dev/zero
- tidak acak sama sekali, sangat cepat)¹ Menurut Apakah rand dari / dev / urandom aman untuk kunci masuk?
/dev/urandom
seaman/dev/random
. Terima kasih kepada Gilles karena menunjukkan ini.sumber
urandom
./dev/random
.Saya mencoba untuk mengisi HDD USB eksternal 4TB dengan
dd if=/dev/urandom of=/dev/sdX status=progress
yang terlalu lambat (terlepas daribs=
pengaturan), dan tampaknyaopenssl
memiliki batasan pada berapa banyak data acak yang akan dikeluarkan (setidaknya untuk versi 1.0.2p). Opsi terbaik yang saya temukan adalah komentar dari frostschutz untuk digunakanshred
, seperti pada:shred -v -n 1 /dev/sdX
Pastikan untuk menggunakan yang
-n 1
sebaliknya itu akan menulis perangkat standar 3 kali lipat (ditambah-v
yang menunjukkan kemajuan). Saya tidak berpikir kualitas angka -angka pseudo-acak setinggi itu, tetapi cukup bagi saya untuk menyiapkan HDD portabel berkapasitas besar untuk enkripsi.sumber