Bagaimana saya bisa dengan aman menghapus isi thumb drive sehingga data tidak dapat dipulihkan.

32

Saya ingin tahu cara menghapus USB flash drive melalui terminal jika memungkinkan sehingga data tidak dapat dipulihkan.

pengguna
sumber
31
Sebuah flash drive? Pecahkan benda itu, cungkil semua keripik dari papan sirkuit hijau, dan hancurkan menjadi potongan-potongan kecil yang mengkilap, lalu beli yang lain. Penghancuran fisik benar-benar satu-satunya cara untuk memastikan, karena semua level-memakai dan barang-barang. Di masa depan, gunakan enkripsi disk penuh dan kehilangan kunci | kata sandi saat Anda tidak menginginkannya lagi.
Blacklight Shining
1
@ BlacklightShining - itulah satu-satunya jawaban yang benar-benar. banyak tongkat murahan juga didaur ulang.
mikeserv
1
@ BlacklightShining Mengubahnya menjadi plasma juga berfungsi dengan baik.
PyRulez
3
Jika penting bagi Anda bahwa data tidak dapat dipulihkan, satu-satunya solusi "aman" adalah penghancuran fisik. Jika itu cukup untuk hanya sulit untuk dipulihkan, maka benar-benar tidak perlu untuk lebih dari format / timpa.
Sobrique
Membakarnya dalam api arang, memastikan semua bagian mencapai panas merah.
Ben

Jawaban:

47

TL / DR: Pastikan Anda mendapatkan nama perangkat yang tepat, pastikan itu tidak dipasang, dan lakukan sebanyak mungkin timpa secara acak. Anda dapat mengikutinya dengan perintah erase yang dirancang untuk perangkat keras flash, jika Anda memiliki distribusi yang cukup baru. Dalam pemeriksaan ini, selalu gunakan drive (seperti / dev / sd h ) dan bukan nama partisi (yang akan menjadi / dev / sd h1 )

# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#

Secara teori, menimpa dengan nol dengan ddbaik-baik saja. Namun, karena cara internal flash drive dibuat, jika Anda menggunakan pass overwrite tunggal, mungkin ada beberapa lapisan data yang tersembunyi di balik blok aktual yang masih menyimpan informasi sisa.

Biasanya bagian dari penyimpanan flash rusak, dan ditandai demikian selama pembuatan. Ada juga bit lain yang bisa salah (menjadi tidak dapat diubah, tidak dapat diatur, atau tidak jelas), bagian-bagian ini harus ditandai rusak juga selama masa pakai. Informasi ini disimpan dalam ruang yang disediakan, pada chip yang sama dengan data Anda. Ini adalah salah satu dari beberapa alasan thumb drive 4GB tidak menunjukkan kapasitas 2 ^ 32 byte.

Penyimpanan flash juga diatur secara internal dalam blok yang lebih besar, kadang-kadang jauh lebih besar daripada sistem file yang bekerja pada drive. Ukuran blok sistem file tipikal adalah 4KB, dan segmen flash yang dapat dihapus dalam sekali jalan dapat berkisar dari 64KB hingga beberapa megabita. Blok besar ini hanya dapat dihapus secara keseluruhan, yang me-reset semua blok ke kondisi yang diketahui (semua 1s atau semua 0s). Setelah itu penulisan data dapat mengubah bit mana pun (ubah 1s default menjadi 0s jika diperlukan, atau ubah 0s default menjadi 1s), tetapi hanya sekali . Untuk mengubah bit kembali ke default, semua segmen perlu dihapus lagi!

Jadi, ketika Anda ingin mengubah blok 4KB (sistem file diminta untuk mengubah satu karakter di tengah file), pengontrol flash perlu membaca dan buffer semua 64KB dari data lama, menghapus semua itu, dan tulis kembali konten baru. Ini akan sangat lambat, menghapus segmen adalah operasi paling lambat. Selain itu, segmen hanya dapat dihapus dengan waktu terbatas (puluhan ribu adalah khas), jadi jika Anda membuat terlalu banyak perubahan pada satu file, itu dapat dengan cepat merusak drive.

Tapi ini bukan bagaimana hal itu dilakukan. Pengontrol flash cerdas cukup menulis data baru 4KB di tempat lain, dan membuat catatan untuk mengarahkan bacaan ke data 4KB ini di tengah-tengah blok lama. Mereka memerlukan lebih banyak ruang, yang tidak dapat kita lihat untuk menyimpan informasi ini tentang arahan ulang. Mereka juga mencoba memastikan bahwa mereka melalui semua segmen yang dapat diakses untuk menyimpan data, ini disebut leveling keausan .

Ini berarti bahwa biasanya data lama masih ada di drive di suatu tempat! Jika Anda baru saja menghapus semua blok yang dapat diakses, semua blok tersembunyi masih menyimpan versi data yang cukup baru. Apakah ini dapat diakses oleh penyerang yang Anda inginkan agar data Anda dilindungi, adalah pertanyaan yang berbeda.

Jika Anda memiliki distribusi yang cukup baru, dan drive USB diprogram untuk mengungkapkan bahwa itu adalah drive flash, blkdiscarddapat menggunakan TRIMoperasi yang mendasarinya , yang merupakan penghapusan segmen yang kita bicarakan di atas. Ini juga memiliki bendera tambahan untuk memastikan bahwa bahkan data tersembunyi yang tidak terlihat sepenuhnya terhapus oleh perangkat keras:

# blkdiscard -s /dev/myusbdevice

-s, --secure Melakukan pembuangan yang aman. Buang aman adalah sama dengan Buang biasa kecuali bahwa semua salinan blok dibuang yang mungkin dibuat oleh pengumpulan sampah juga harus dihapus. Ini membutuhkan dukungan dari perangkat.

Ini tidak akan berhasil, seperti yang saya tunjukkan di atas. Jika Anda mendapatkan Operation not supported, baik kernel Anda, utilitas Anda, atau chip gateway USB (yang memungkinkan pengontrol flash terlihat seperti drive melalui USB) tidak mendukung TRIMperintah passing . (Pengontrol flash masih harus dapat menghapus segmen dengan sendirinya). Jika didukung oleh vendor drive Anda, ini adalah cara paling aman.

Cara lain yang kurang aman untuk memastikan Anda membiarkan lebih sedikit data lama untuk berlama-lama di suatu tempat adalah dengan menimpanya beberapa kali, dengan nilai acak, jika memungkinkan.

Kenapa acak, Anda bertanya? Bayangkan saja jika drive USB dibuat terlalu cerdas, dan mendeteksi bahwa Anda ingin menghapus suatu sektor, dan hanya membuat perubahan dalam bitmap bahwa sektor ini sekarang bebas, dan perlu dibersihkan nanti. Karena ini berarti dapat mempercepat penulisan angka nol, jadi itu membuat flashdisk yang tampak lebih efisien, bukan? Apakah drive Anda melakukannya, sulit diceritakan.

Paling ekstrim, drive hanya dapat mengingat berapa banyak dari awal Anda telah membersihkan, dan semua yang diperlukan untuk menyimpan adalah sekitar 4 byte informasi untuk melakukan ini, dan tidak menghapus apa pun dari data yang ingin Anda hilangkan. Semua itu bisa terlihat sangat cepat.

Jika Anda menimpa data dengan nilai acak dan tidak dapat diprediksi, optimasi ini tidak mungkin dilakukan. Jadi drive harus memastikan data akhirnya disimpan di dalam chip flash. Tetapi Anda masih tidak akan dapat mengesampingkan bahwa beberapa sektor yang sebelumnya digunakan masih ada dengan data lama Anda, tetapi drive itu belum dianggap penting untuk dihapus dulu, karena itu tidak dapat diakses secara normal. Hanya TRIMperintah yang sebenarnya yang bisa menjamin itu.

Untuk mengotomatisasi menimpa dengan nilai acak, Anda mungkin ingin melihat ke dalam menggunakan shred, seperti:

# shred -vzn88 /dev/myusbdrive

Opsi yang digunakan:

  • -v untuk membuatnya menunjukkan kemajuan
  • -z menjadi nol sebagai fase akhir
  • -n8 adalah melakukan 8 kali overwrite secara acak

Jika memungkinkan, gunakan keduanya blkdiscarddan shred, jika blkdiscard -sdidukung oleh drive Anda, ini adalah solusi optimal, tetapi tidak ada salahnya untuk melakukan shredsebelumnya untuk menyingkirkan kesalahan firmware.

Oh, dan selalu periksa dua kali lipat perangkat yang Anda coba hapus! dmesg dapat membantu untuk melihat apa perangkat yang paling baru disisipkan, dan juga ada baiknya memeriksa nama perangkat yang ingin Anda hapus ls -al, bahkan untuk nomor simpul perangkat, dan blkidoutput untuk melihat partisi apa yang tersedia yang tidak Anda miliki. ingin membersihkan.

Jangan pernah menggunakan perintah ini pada drive internal yang ingin Anda terus gunakan - blkdiscardhanya akan bekerja pada solid state drive, tetapi tidak ada gunanya mencoba kehilangan data!

Mungkin ada cara lain untuk menghapus data dengan aman seiring kemajuan teknologi.

Satu cara lain yang disebutkan adalah SECURITY ERASEperintah ATA yang dapat dikeluarkan melalui hdparmperintah. Dalam pengalaman saya, itu tidak benar-benar didukung pada flash drive. Ini dirancang untuk hard drive perusahaan, dan fitur ini tidak selalu diimplementasikan pada perangkat penyimpanan dengan biaya terendah.

The TRIM/ DISCARDoperasi jauh lebih baru daripada SECURITY ERASEperintah, dan telah dibuat dalam menanggapi fitur flash, sehingga memiliki kesempatan yang jauh lebih tinggi dari yang sedang dilaksanakan, bahkan di murah USB drive, tapi masih tidak di mana-mana. Jika Anda ingin menghapus kartu SD / micro SD dalam dongle USB, dan blkdiscardmelaporkannya tidak didukung, Anda mungkin ingin mencoba dongle / pembaca kartu yang berbeda, dan / atau melakukannya di mesin dengan slot SD / MMC langsung .

chexum
sumber
Terima kasih atas informasi terkini. blkdiscardada di Debian Jessie, dan hanya di dua rilis terbaru Ubuntu, tetapi tidak Ubuntu LTS 14.04. blkdiscardtelah ditambahkan ke paket util-linuxversi 2.23.
RobertL
Apakah Anda tahu bagaimana blkdiscardmembandingkan dengan hdparmsolusi dalam komentar lain oleh @zhenech (khususnya tautannya: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
RobertL
Tidak yakin apakah ini juga kasus dengan flash drive, tetapi ini mungkin layak dibaca howtogeek.com/234683/…
hhaslam11
1
@ Robert Sama, dengan cara yang buruk. Kebanyakan flash drive murah tidak mengimplementasikan ATA Secure Erase maupun TRIM, sehingga kedua metode ini mungkin gagal.
duskwuff
27

Saya menyadari ini bukan jawaban untuk pertanyaan Anda, tetapi cara paling sederhana adalah dengan menghancurkan drive secara fisik (menghancurkannya berulang kali dengan palu godam pada umumnya memang berhasil, tetapi penghancuran atau pembakaran industri juga merupakan pilihan). Jika Anda cukup khawatir tentang keamanan untuk ingin memastikan data tidak dapat dipulihkan, nilai data itu kemungkinan kali lebih besar daripada biaya drive itu sendiri, dan metode fisiknya murah dan dapat diandalkan.

MPLewis
sumber
5
Jika flash drive yang murah dan dapat diganti, pasti akan rusak secara fisik. Jika Anda menggunakan palu, pastikan Anda mendapatkan chip penyimpanan yang sebenarnya. Saya membuka flash drive lama untuk bersenang-senang beberapa minggu yang lalu, dan sebagian besar volume fisiknya adalah case dan air.
Blacklight Shining
1
Terlepas dari jawaban saya, saya setuju sepenuhnya - itu hanya sulit untuk menghancurkan mereka menjadi potongan-potongan melalui akses ssh :) Mengingat betapa tidak dapat diandalkannya dongle-dongle ini untuk penyimpanan data, sangat sulit untuk membuatnya benar-benar membuang data yang sama.
chexum
Setuju - jika penting bagi Anda bahwa data tidak dapat dipulihkan, maka penghancuran fisik adalah satu-satunya pilihan. Mari kita hadapi itu, dibandingkan dengan nilai komersial data di dalamnya, bahkan drive yang paling mahal mungkin tidak terlalu signifikan. Jika tidak terlalu penting, hampir semua wipe / overwrite adalah 'cukup baik'.
Sobrique
1
Metode ini tidak hanya paling efektif, tetapi juga paling menyenangkan. Jangan pernah melewatkan kesempatan untuk menggunakan palu godam dan dapatkan bayaran untuk itu.
zetetik
2

Hampir semua fungsi secure-delete yang tersedia dirancang untuk memutar media magnetik, di mana komputer biasanya dapat menentukan lokasi fisik [1] dari blok yang digunakan untuk file dan menulis di atas blok yang sama. Chip pengontrol penyimpanan solid-state mengabstraksi lokasi fisik data dari sistem dan suka memindahkannya.

Pertanyaan Anda benar-benar tergantung pada siapa yang mencari data Anda. Jika Anda khawatir tentang kehilangan acak atau pencurian biasa maka format biasa akan baik-baik saja. Jika Anda khawatir menjadi sasaran pengguna yang sangat termotivasi dan kompeten secara teknis dengan sumber daya substansial yang dapat mereka gunakan, maka bakar saja drive tersebut dan belanjakan $ 10 untuk yang baru.

  1. ya, ada pemetaan blok logis. Tapi blok logis A akan selalu memetakan ke blok fisik B.

  2. orang ini akan membuka drive, menarik chip memori dari kartu dan membaca memori flash secara langsung, melewati controller

pengguna149598
sumber
1

Cara paling sederhana dan tercepat yang saya tahu adalah menulis nol (0) ke seluruh drive:

dd if=/dev/zero of=/dev/sdX

di mana /dev/sdXnode perangkat thumbdrive Anda.

Beberapa menyarankan proses yang lebih menyeluruh dengan lebih banyak iterasi dan pola lainnya. Utilitas khusus tersedia untuk melakukan ini. Paket GNU coreutils berisi shredperintah khusus untuk tujuan ini. Banyak orang juga menggunakan badblocks -w, yang merupakan bagian dari paket e2fsprogs. Pada FreeBSD shredutilitas dipanggil gshreddan harus tersedia di port /usr/ports/sysutils/coreutilsatau /usr/ports/sysutils/fileutils.

RobertL
sumber
Ini tidak cukup untuk melakukan pembersihan yang aman. Saya akan pergi untuk setidaknya 20 seri penulisan hal-hal acak. Terbaik dari semua saya akan menggunakan alat untuk menghapus aman misalnya rusak. Meskipun beberapa orang mengatakan bahwa itu tidak masuk akal dan penekanannya sudah cukup - saya tidak akan mempercayainya.
monsune
4
@monsune Itu hanya legenda urban. Sementara beberapa standar mengharuskan itu , sepertinya tidak ada serangan praktis.
Gilles 'SO- berhenti bersikap jahat'
Flash drive menggunakan leveling keausan untuk tidak menghancurkan sel-sel flash terlalu cepat. Bayangkan seperti: drive memiliki 1200 sel tetapi hanya memberitahu Anda memiliki 1000 dan controller memilih sel yang sebenarnya ditulisnya. Jadi setelah dd Anda telah menghapus 1000 sel tetapi tidak 200 cadangan dan mereka dapat dibaca dengan memasang flash aktual ke controller tanpa cadangan. Saya sarankan melakukan penghapusan aman setelah dd, tetapi tidak semua media flash mendukungnya.
zhenech
@zhenech, apa itu "hapus aman"?
RobertL