ฉันจะลบเนื้อหาของธัมบ์ไดรฟ์อย่างปลอดภัยได้อย่างไรจึงไม่สามารถกู้คืนข้อมูลได้


32

ฉันต้องการทราบวิธีการลบ USB แฟลชไดรฟ์ผ่านทางเทอร์มินัลถ้าเป็นไปได้ดังนั้นจึงไม่สามารถกู้คืนข้อมูลได้


31
แฟลชไดรฟ์ แตกสิ่งที่เปิดแงะชิปทั้งหมดออกจากแผงวงจรสีเขียวสิ่งและบดพวกเขาเป็นชิ้นเล็ก ๆ น้อย ๆ มันวาว bitty เงาแล้วไปซื้ออีกหนึ่ง การทำลายทางกายภาพเป็นวิธีเดียวที่จะมั่นใจได้ว่า 'เพราะทุกสิ่งมีระดับและสิ่งที่สวมใส่ ในอนาคตใช้การเข้ารหัสดิสก์เต็มรูปแบบและสูญเสียคีย์ | รหัสผ่านเมื่อคุณไม่ต้องการอีกต่อไป
แบล็กไลท์ส่องแสง

1
@ BlacklackShining - นั่นเป็นคำตอบเดียวที่แท้จริง แท่งไม้ราคาถูกจำนวนมากก็รีไซเคิลเช่นกัน
mikeserv

1
@ BlacklightShining การเปลี่ยนเป็นพลาสมาก็ใช้ได้ดีเช่นกัน
PyRulez

3
หากเป็นสิ่งสำคัญสำหรับคุณที่ข้อมูลนั้นไม่สามารถกู้คืนได้ทางออกเดียวที่ "ปลอดภัย" คือการทำลายทางกายภาพ หากเพียงพอที่จะกู้คืนได้ยากก็ไม่จำเป็นต้องทำการฟอร์แมต / เขียนทับซ้ำอีก
Sobrique

เผาในกองไฟเพื่อให้แน่ใจว่าทุกส่วนถึงความร้อนแดง
Ben

คำตอบ:


47

TL / DR: ตรวจสอบให้แน่ใจว่าคุณได้รับชื่ออุปกรณ์ที่ถูกต้องตรวจสอบให้แน่ใจว่าไม่ได้เชื่อมต่อและทำการเขียนทับแบบสุ่มให้มากที่สุดเท่าที่จะทำได้ คุณสามารถติดตามได้โดยใช้คำสั่งลบที่ออกแบบมาสำหรับฮาร์ดแวร์แฟลชหากคุณมีการกระจายที่เพียงพอเมื่อเร็ว ๆ นี้ ในการตรวจสอบเหล่านี้ให้ใช้ไดรฟ์เสมอ (เช่น / dev / sd h ) และไม่ใช่ชื่อพาร์ติชัน (ซึ่งจะเป็น / 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
#

ในทางทฤษฎีแล้วการเขียนทับด้วยศูนย์ด้วยddก็ไม่เป็นไร อย่างไรก็ตามเนื่องจากวิธีการสร้างแฟลชไดรฟภายในถ้าคุณใช้การเขียนทับแบบครั้งเดียวอาจมีข้อมูลหลายชั้นซ่อนอยู่ด้านหลังบล็อกจริงที่ยังคงเก็บข้อมูลที่เหลืออยู่

โดยทั่วไปแล้วส่วนหนึ่งของการจัดเก็บแฟลชเป็นความผิดพลาดและถูกทำเครื่องหมายในระหว่างการผลิต นอกจากนี้ยังมีบิตอื่น ๆ ที่สามารถไปผิด (กลายเป็นไม่แน่นอนไม่สามารถเปลี่ยนแปลงได้หรือไม่ชัดเจน) ชิ้นส่วนเหล่านี้จะต้องทำเครื่องหมายความผิดเช่นกันในช่วงอายุ ข้อมูลนี้ถูกจัดเก็บในพื้นที่สงวนบนชิปเดียวกับข้อมูลของคุณ นี่คือหนึ่งในหลายเหตุผลที่ thumb drive 4GB ไม่แสดงความจุ 2 ^ 32 bytes

ที่จัดเก็บข้อมูลแฟลชยังมีการจัดระเบียบภายในเป็นบล็อกขนาดใหญ่ซึ่งบางครั้งก็ใหญ่กว่าระบบไฟล์ที่ทำงานบนไดรฟ์ ขนาดบล็อกระบบไฟล์ทั่วไปคือ 4KB และส่วนแฟลชที่สามารถลบได้ในครั้งเดียวอาจอยู่ในช่วงตั้งแต่ 64KB ถึงแม้กระทั่งหลายเมกะไบต์ บล็อกขนาดใหญ่เหล่านี้สามารถลบได้ทั้งหมดซึ่งจะรีเซ็ตบล็อกทั้งหมดเป็นสถานะที่รู้จัก (ทั้งหมด 1 วินาทีหรือ 0 วินาทีทั้งหมด) หลังจากนั้นการเขียนข้อมูลที่สามารถปรับเปลี่ยนใด ๆ ของบิต (เปลี่ยน 1s เริ่มต้นเข้าสู่ 0s ที่จำเป็นหรือเปลี่ยน 0s เริ่มต้นเข้าสู่ 1s) แต่เพียงครั้งเดียว การเปลี่ยนแปลงใด ๆ ของบิตกลับเป็นค่าเริ่มต้นกลุ่มทั้งหมดจะต้องถูกลบอีกครั้ง!

ดังนั้นเมื่อคุณต้องการเปลี่ยนบล็อก 4KB (ระบบไฟล์ถูกขอให้เปลี่ยนอักขระหนึ่งตัวที่อยู่ตรงกลางของไฟล์) ตัวควบคุมแฟลชจะต้องอ่านและบัฟเฟอร์ 64KB ทั้งหมดของข้อมูลเก่าลบทั้งหมดและ เขียนเนื้อหาใหม่กลับมา นี่จะช้ามากการลบเซกเมนต์คือการดำเนินการที่ช้าที่สุด นอกจากนี้เซ็กเมนต์สามารถลบได้ในระยะเวลาที่ จำกัด เท่านั้น (เป็นเรื่องปกตินับหมื่น) ดังนั้นหากคุณทำการเปลี่ยนแปลงไฟล์มากเกินไปไฟล์เดียวก็สามารถทำให้ไดรฟ์เสื่อมสภาพได้อย่างรวดเร็ว

แต่นี่ไม่ใช่วิธีการที่ทำ ตัวควบคุมแฟลชอัจฉริยะเพียงเขียนข้อมูลใหม่ 4KB ที่อื่นและจดบันทึกเพื่อเปลี่ยนเส้นทางการอ่านไปยังข้อมูล 4KB นี้ในช่วงกลางของบล็อกเก่า พวกเขาต้องการพื้นที่เพิ่มเพื่อที่เราจะไม่เห็นเก็บข้อมูลนี้เกี่ยวกับการเปลี่ยนเส้นทาง พวกเขายังพยายามทำให้แน่ใจว่าพวกเขาผ่านทุกเซกเมนต์ที่เข้าถึงได้เพื่อจัดเก็บข้อมูลซึ่งเรียกว่าการปรับระดับการสึกหรอการปรับระดับการสึกหรอ

ซึ่งหมายความว่าโดยทั่วไปข้อมูลเก่ายังอยู่ในไดรฟ์ ! หากคุณเพิ่งล้างข้อมูลบล็อกที่เข้าถึงได้ทั้งหมดบล็อกที่ซ่อนอยู่ทั้งหมดยังคงเก็บข้อมูลเวอร์ชันล่าสุดไว้ ไม่ว่าผู้โจมตีรายนี้จะเข้าถึงได้หรือไม่คุณต้องการให้ข้อมูลของคุณได้รับการปกป้องหรือไม่เป็นคำถามอื่น

หากคุณมีการกระจายที่เพียงพอเมื่อเร็ว ๆ นี้และไดรฟ์ USB ถูกตั้งโปรแกรมให้เปิดเผยว่าเป็นแฟลชไดรฟ์blkdiscardสามารถใช้การTRIMดำเนินการพื้นฐานซึ่งเป็นส่วนที่ลบที่เราพูดถึงข้างต้น นอกจากนี้ยังมีการตั้งค่าสถานะเพิ่มเติมเพื่อให้แน่ใจว่าแม้ข้อมูลที่ซ่อนอยู่ที่มองไม่เห็นจะถูกลบอย่างสมบูรณ์โดยฮาร์ดแวร์:

# blkdiscard -s /dev/myusbdevice

-s, --secure ทำการละทิ้งที่ปลอดภัย การทิ้งที่ปลอดภัยจะเหมือนกับการละทิ้งปกติยกเว้นว่าจะต้องลบสำเนาทั้งหมดของบล็อกที่ถูกทิ้งที่สร้างขึ้นโดยการรวบรวมขยะ สิ่งนี้ต้องการการสนับสนุนจากอุปกรณ์

มันไม่จำเป็นว่าจะทำงานอย่างที่ฉันได้อธิบายไว้ข้างต้น หากคุณได้รับOperation not supportedทั้งเคอร์เนลสาธารณูปโภคของคุณหรือชิปเกตเวย์ USB (ซึ่งอนุญาตให้ตัวควบคุมแฟลชดูเหมือนว่าไดรฟ์ผ่าน USB) ไม่รองรับการส่งTRIMคำสั่ง (ตัวควบคุมแฟลชจะต้องสามารถลบส่วนได้ด้วยตัวเอง) หากได้รับการสนับสนุนจากผู้จำหน่ายไดรฟ์ของคุณนี่เป็นวิธีที่ปลอดภัยที่สุด

อีกวิธีที่ปลอดภัยน้อยกว่าเพื่อให้แน่ใจว่าคุณกำลังอนุญาตให้ข้อมูลเก่าน้อยลงเพื่ออวดรอบ ๆ บางแห่งก็คือการเขียนทับมันหลายครั้งด้วยค่าที่สุ่มถ้าเป็นไปได้

ทำไมสุ่มคุณถาม แค่คิดว่าไดรฟ์ USB นั้นฉลาดเกินไปและตรวจพบว่าคุณต้องการล้างเซกเตอร์และเพิ่งเปลี่ยนบิตแมปที่เซกเตอร์นี้ว่างตอนนี้และจะต้องล้างในภายหลัง เป็นวิธีนี้ก็สามารถเพิ่มความเร็วในการเขียนของศูนย์จึงทำให้ PENDRIVE ที่ปรากฏมีประสิทธิภาพมากขึ้นใช่ไหม? ไม่ว่าฮาร์ดไดรฟ์ของคุณจะทำมันยากที่จะบอก

สุดขั้วไดรฟ์สามารถจดจำได้ตั้งแต่เริ่มต้นที่คุณล้างข้อมูลและสิ่งที่ต้องจัดเก็บคือข้อมูลประมาณ 4 ไบต์เพื่อทำสิ่งนี้และไม่ต้องล้างข้อมูลใด ๆ จากข้อมูลที่คุณต้องการหายไป ทั้งหมดเพื่อให้มันดูรวดเร็วมาก

หากคุณเขียนทับข้อมูลด้วยค่าที่สุ่มและคาดเดาไม่ได้การปรับให้เหมาะสมเหล่านี้เป็นไปไม่ได้ ดังนั้นไดรฟ์จึงต้องตรวจสอบให้แน่ใจว่าข้อมูลถูกเก็บไว้ในชิปแฟลช แต่คุณยังคงไม่สามารถแยกแยะได้ว่าภาคส่วนที่ใช้ก่อนหน้านี้บางส่วนยังคงอยู่ที่นั่นด้วยข้อมูลเก่าของคุณ แต่ไดรฟ์ไม่ได้พิจารณาว่ามีความสำคัญที่จะลบมันเนื่องจากยังไม่สามารถเข้าถึงได้ตามปกติ เฉพาะTRIMคำสั่งจริงเท่านั้นที่รับประกันได้ว่า

หากต้องการเขียนทับด้วยค่าสุ่มโดยอัตโนมัติคุณอาจต้องการใช้shredงานเช่น:

# shred -vzn88 /dev/myusbdrive

ตัวเลือกที่ใช้:

  • -v สำหรับทำให้มันแสดงความคืบหน้า
  • -z ให้เป็นศูนย์ที่เป็นเฟสสุดท้าย
  • -n8 คือทำ 8 รอบสุ่มของการเขียนทับ

หากเป็นไปได้ให้ใช้ทั้งสองอย่างblkdiscardและshredหากblkdiscard -sไดรฟ์ของคุณรองรับเป็นทางออกที่ดีที่สุด แต่ก็ไม่สามารถทำอันตรายshredก่อนที่จะแยกแยะความผิดพลาดของเฟิร์มแวร์ได้

โอ้และตรวจสอบอุปกรณ์ที่คุณพยายามจะล้างสองครั้งเสมอ! dmesg สามารถช่วยในการมองเห็นสิ่งที่เป็นอุปกรณ์ส่วนใหญ่แทรกเมื่อเร็ว ๆ นี้และยังมันคุ้มค่าที่จะตรวจสอบชื่ออุปกรณ์ที่คุณตั้งใจจะล้างด้วยls -alแม้สำหรับอุปกรณ์โหนดตัวเลขและblkidการส่งออกจะเห็นสิ่งที่พาร์ทิชันที่อาจจะมีอยู่ที่คุณทำไม่ได้ ต้องการล้าง

อย่าใช้คำสั่งเหล่านี้กับไดรฟ์ภายในที่คุณต้องการใช้ต่อไป - blkdiscardจะใช้งานได้กับไดรฟ์โซลิดสเตตเท่านั้น แต่ก็ไม่คุ้มที่จะสูญเสียข้อมูล!

อาจมีวิธีอื่นในการล้างข้อมูลอย่างปลอดภัยขณะที่เทคโนโลยีดำเนินไป

อีกวิธีหนึ่งที่กล่าวถึงคือSECURITY ERASEคำสั่งATA ที่สามารถออกผ่านhdparmคำสั่งได้ จากประสบการณ์ของฉันมันไม่รองรับแฟลชไดรฟ์จริงๆ มันถูกออกแบบมาสำหรับฮาร์ดไดรฟ์ระดับองค์กรและคุณสมบัตินี้ไม่ได้ถูกนำไปใช้ในอุปกรณ์จัดเก็บต้นทุนต่ำ

การดำเนินการTRIM/ DISCARDใหม่กว่าSECURITY ERASEคำสั่งมากและถูกสร้างขึ้นเพื่อตอบสนองต่อคุณสมบัติแฟลชดังนั้นจึงมีโอกาสสูงที่จะนำไปใช้แม้ในไดรฟ์ USB ราคาถูก แต่ก็ยังไม่แพร่หลาย หากคุณต้องการลบการ์ด SD / micro SD ในดองเกิล USB และblkdiscardรายงานว่าไม่รองรับคุณอาจต้องการลองใช้ตัวอ่านดองเกิล / การ์ดตัวอื่นและ / หรือทำในเครื่องที่มีช่องเสียบ SD / MMC โดยตรง .


ขอบคุณสำหรับข้อมูลที่ทันสมัย blkdiscardอยู่ใน Debian Jessie และเฉพาะใน Ubuntu ล่าสุดสองรุ่น แต่ไม่ใช่ Ubuntu LTS 14.04 blkdiscardถูกเพิ่มไปยังแพ็คเกจutil-linuxเวอร์ชัน 2.23
RobertL

คุณรู้วิธีblkdiscardเปรียบเทียบกับhdparmโซลูชันในความคิดเห็นอื่นโดย @zhenech (โดยเฉพาะลิงก์: ata.wiki.kernel.org/index.php/ATA_Secure_Erase )
RobertL

ไม่แน่ใจว่านี่เป็นกรณีของแฟลชไดรฟ์หรือไม่ แต่นี่อาจจะคุ้มค่าที่จะอ่านhowtogeek.com/234683/ …
hhaslam11

1
@ RobertL เท่ากับในทางที่ไม่ดี แฟลชไดรฟ์ราคาถูกส่วนใหญ่จะใช้ทั้ง ATA Secure Erase หรือ TRIM ดังนั้นทั้งสองวิธีอาจจะล้มเหลว
duskwuff

27

ฉันรู้ว่านี่ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่วิธีที่ง่ายที่สุดคือการทำลายไดรฟ์ (การทุบซ้ำ ๆ โดยค้อนขนาดใหญ่มักใช้กลอุบาย หากคุณกังวลเกี่ยวกับความปลอดภัยที่ต้องการตรวจสอบให้แน่ใจว่าข้อมูลนั้นไม่สามารถกู้คืนได้ค่าของข้อมูลนั้นมีค่ามากกว่าค่าใช้จ่ายของไดรฟ์เองหลายเท่าและวิธีการทางกายภาพนั้นมีราคาถูกและเชื่อถือได้


5
ถ้ามันเป็นแฟลชไดรฟ์ราคาถูกที่ถอดเปลี่ยนได้ไปอย่างแน่นอน หากคุณใช้ค้อนตรวจสอบให้แน่ใจว่าคุณได้รับชิปจัดเก็บข้อมูลจริง ฉันถอดแฟลชไดรฟ์เก่าออกเพื่อความสนุกสองสามสัปดาห์ก่อนและปริมาตรทางกายภาพส่วนใหญ่ของมันก็เป็นแบบและอากาศ
Blacklight Shining

1
นอกเหนือจากคำตอบของฉันฉันเห็นด้วยอย่างสมบูรณ์ - เป็นเรื่องยากที่จะชนพวกมันเป็นชิ้น ๆ ด้วยการเข้าถึง ssh :) เนื่องจากวิธีที่ดองเกิลเหล่านี้ไม่น่าเชื่อถือสำหรับการจัดเก็บข้อมูลมันเป็นเรื่องยากที่จะกำจัดข้อมูลเดียวกัน
chexum

เห็นด้วย - ถ้าเป็นสิ่งสำคัญสำหรับคุณที่ข้อมูลไม่สามารถกู้คืนได้การทำลายทางกายภาพเป็นเพียงตัวเลือกเดียว ให้เผชิญหน้ากับมันเมื่อเทียบกับมูลค่าทางการค้าของข้อมูลบนไดร์ฟแม้กระทั่งไดร์ฟที่แพงที่สุดก็อาจจะไม่สำคัญ หากมันไม่สำคัญว่าการลบล้าง / เขียนทับใด ๆ เกือบจะดีพอ
Sobrique

1
วิธีนี้ไม่เพียง แต่มีประสิทธิภาพมากที่สุด แต่ยังเป็นวิธีที่สนุกที่สุดอีกด้วย อย่าพลาดโอกาสในการใช้ค้อนขนาดใหญ่และได้รับเงิน
zetetic

2

ฟังก์ชั่นลบที่ปลอดภัยที่มีอยู่เกือบทั้งหมดได้รับการออกแบบมาสำหรับการหมุนสื่อแม่เหล็กซึ่งคอมพิวเตอร์มักจะสามารถระบุตำแหน่งทางกายภาพ [1] ของบล็อกที่ใช้สำหรับไฟล์และเขียนทับบล็อกเดียวกันเหล่านั้น ชิปควบคุมการจัดเก็บข้อมูลโซลิดสเตตเป็นนามธรรมทำให้ที่ตั้งทางกายภาพของข้อมูลจากระบบและชอบที่จะย้ายไปมา

คำถามของคุณขึ้นอยู่กับว่าใครเป็นคนติดตามข้อมูลของคุณ หากคุณกังวลเกี่ยวกับการสูญเสียแบบสุ่มหรือการโจรกรรมแบบปกติรูปแบบปกติจะใช้ได้ หากคุณมีความกังวลเกี่ยวกับการกำหนดเป้าหมายโดยผู้ใช้ที่มีความกระตือรือร้นสูงมีความสามารถด้านเทคนิคพร้อมด้วยทรัพยากรจำนวนมากในการกำจัด [2] จากนั้นเพียงเผาไดรฟ์และใช้จ่าย $ 10 ในการสร้างใหม่

  1. ใช่มีการทำแผนที่บล็อกตรรกะ แต่บล็อกโลจิคัล A จะแม็พกับฟิสิคัลบล็อก B เสมอ

  2. บุคคลนี้จะเปิดไดรฟ์ขึ้นดึงชิปหน่วยความจำออกจากการ์ดและอ่านหน่วยความจำแฟลชโดยตรงผ่านตัวควบคุม


1

วิธีที่ง่ายและเร็วที่สุดที่ฉันรู้คือการเขียนเลขศูนย์ (0) ลงในไดรฟ์ทั้งหมด:

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

ที่/dev/sdXเป็นโหนดอุปกรณ์ thumbdrive ของคุณ

บางคนแนะนำกระบวนการที่ละเอียดยิ่งขึ้นด้วยการวนซ้ำมากขึ้นและรูปแบบอื่น ๆ มียูทิลิตีเฉพาะให้ทำเช่นนี้ แพ็คเกจ GNU coreutils มีshredคำสั่งเฉพาะสำหรับวัตถุประสงค์นี้ หลายคนใช้badblocks -wเช่นกันซึ่งเป็นส่วนหนึ่งของแพ็คเกจ e2fsprogs บน FreeBSD shredยูทิลิตี้จะถูกเรียกใช้gshredและควรจะมีอยู่ใน/usr/ports/sysutils/coreutilsหรือ/usr/ports/sysutils/fileutilsพอร์ต


ไม่เพียงพอที่จะทำการลบแบบปลอดภัย ฉันจะสุ่มเขียนอย่างน้อย 20 ชุด ดีที่สุดของทั้งหมดฉันจะใช้เครื่องมือสำหรับการเช็ดปลอดภัยเช่นฉีก แม้ว่าบางคนบอกว่ามันไม่มีเหตุผลและการมีศูนย์ก็เพียงพอแล้ว - ฉันไม่เชื่อใจ
จันทร์ที่

4
@ Monsune นั่นเป็นเพียงตำนานเมือง ในขณะที่มาตรฐานบางอย่างจำเป็นต้องมีดูเหมือนจะไม่มีการโจมตีในทางปฏิบัติใด ๆ
Gilles 'SO- หยุดความชั่วร้าย'

แฟลชไดรฟ์ใช้ระดับการสึกหรอเพื่อไม่ทำลายเซลล์แฟลชเร็วเกินไป ลองจินตนาการว่า: ไดรฟ์มี 1200 เซลล์ แต่จะบอกคุณว่ามี 1,000 เซลล์และคอนโทรลเลอร์เลือกเซลล์ที่จะเขียนจริงเท่านั้น ดังนั้นหลังจากวันที่คุณลบ 1,000 เซลล์ แต่ไม่ใช่ 200 สำรองและที่สามารถอ่านได้โดยแนบแฟลชจริงกับตัวควบคุมโดยไม่ต้องสำรอง ฉันขอแนะนำให้ทำการลบอย่างปลอดภัยหลังจาก dd แต่ไม่ใช่ทุกสื่อแฟลชที่รองรับ
zhenech

@zhenech "การลบที่ปลอดภัย" คืออะไร?
RobertL


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.