ทำไมการเขียนข้อมูลแบบสุ่มโดยใช้ dd ส่งผลให้เกิดพาร์ติชั่นดิสก์?


11

ก่อนที่จะรันddคำสั่งคำสั่งจะlsblkส่งคืนผลลัพธ์ด้านล่าง:

NAME              MAJ:MIN  RM   SIZE    RO TYPE  MOUNTPOINT
sda               8:0       0    931.5G  0  disk  

คำสั่งdd if=/dev/urandom of=/dev/sda conv=fsync status=progressถูกเรียกใช้ อุปกรณ์สูญเสียพลังงานและปิดเครื่อง เมื่อไฟฟ้าถูกเรียกคืนคำสั่งlsblkจะส่งคืนเอาต์พุตต่อไปนี้:

NAME              MAJ:MIN     RM   SIZE    RO TYPE  MOUNTPOINT
    sda           8:0          0   931.5G  0  disk 
      sda2        8:2          0   487.5G  0  disk

@RuiFRibeiro - ขอบคุณสำหรับการเปรียบเทียบ แต่มันไม่ชัดเจนว่าทำไมddจะส่งผลให้พาร์ติชันโดยเฉพาะอย่างยิ่งหากคำสั่งมีวัตถุประสงค์เพื่อล้างดิสก์?
แรงบันดาลใจ

1
บังเอิญ: มันไม่น่าจะเกี่ยวข้องกับการตัดไฟ คุณเขียนข้อมูลสุ่มไปยังอุปกรณ์ ข้อมูลสุ่มบางส่วนนี้ไปที่ช่วงสองสามช่วงแรกซึ่งเป็นที่ที่ตารางพาร์ทิชันใช้งานได้ คุณอาจจะนิยามพาร์ติชั่น
ctrl-alt-delor

คุณสามารถโพสต์ผลลัพธ์ของfile /dev/sda*และsudo fdisk -l /dev/sda*?
phuclv

@phuclv - เมื่อฉันเริ่มกระบวนการผลลัพธ์จะยังคงมีค่าหรือไม่
แรงบันดาลใจ

1
@Motivated โปรดทราบว่าddจุดประสงค์ไม่ได้เป็นแบบต่อการล้างดิสก์ การเขียนข้อมูลแบบสุ่มลงดิสก์สามารถสร้างผลลัพธ์แบบสุ่ม
jjmontes

คำตอบ:


20

ความเป็นไปได้หลายประการ:

  • Linux สนับสนุนชนิดตารางพาร์ติชันที่แตกต่างกันจำนวนมากบางชนิดใช้เมจิกไบต์น้อยมากและจากนั้นจึงง่ายต่อการระบุข้อมูลแบบสุ่มผิดพลาด (*) [ดังนั้นจึงเป็นไปได้ที่จะสุ่มสร้างตารางพาร์ทิชันที่ค่อนข้าง "ถูกต้อง"

  • ตารางชนิดพาร์ติชันบางชนิดมีการสำรองข้อมูลที่ส่วนท้ายของดิสก์เช่นกัน (โดยเฉพาะอย่างยิ่ง GPT) และสามารถรับได้หากการเริ่มต้นของไดรฟ์ถูกแทนที่ด้วยขยะแบบสุ่ม

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

  • ...

(*) สร้างไฟล์ 1,000 ไฟล์ด้วยข้อมูลสุ่มในไฟล์เหล่านั้นและดูว่ามีอะไรออกมาบ้าง:

$ truncate -s 8K {0001..1000}
$ shred -n 1 {0001..1000}
$ file -s {0001..1000} | grep -v data
0099: COM executable for DOS
0300: DOS executable (COM)
0302: TTComp archive, binary, 4K dictionary
0389: Dyalog APL component file 64-bit level 1 journaled checksummed version 192.192
0407: COM executable for DOS
0475: PGP\011Secret Sub-key -
....

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

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

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


อุปกรณ์ได้ถูกลบก่อนหน้านี้โดยใช้คำสั่ง ATA Secure Erase ฉันคิดว่ามันจะลบข้อมูลแบบที่ 1 ซึ่งเรียกคืนไม่ได้ 2. ไม่มีข้อมูลพาร์ติชั่นเหลืออยู่ หากเป็นจริงคุณหมายถึงว่าเมื่อรันddคำสั่งการสร้างข้อมูลแบบสุ่มเมื่อถูกขัดจังหวะอาจส่งผลให้เกิดข้อมูลที่ดูเหมือนตารางพาร์ติชันหรือไม่ นอกจากนี้ยังมีฮาร์ดดิสก์ SATA (ไม่ใช่ SSD)
แรงบันดาลใจ

5
ข้อมูลสุ่มสามารถดูเหมือนอะไรก็ได้ นั่นคือความหมายของการสุ่ม คุณคุ้นเคยกับทฤษฎีบทลิงไม่มีที่สิ้นสุดหรือไม่? มันระบุว่าหากลิงจำนวนมากพอที่จะพิมพ์บนเครื่องพิมพ์ดีดแบบสุ่มในระยะเวลานานพอหนึ่งในนั้นจะมีบางจุดที่จะผลิตงานที่สมบูรณ์ของเชคสเปียร์ ตารางพาร์ติชัน MBR มีขนาดเล็กมาก (64 ไบต์เท่านั้น) ไม่มีการตรวจสอบหรือการตรวจสอบและมีรูปแบบที่หนาแน่นมาก มีโอกาสสูงที่สตริงสุ่ม 64 ไบต์จะสร้างตารางพาร์ติชันที่ถูกต้อง รูปแบบตารางพาร์ติชันอื่น ๆ นั้นเรียบง่ายในทำนองเดียวกัน
Jörg W Mittag

ใช่ตารางพาร์ติชั่นมีเพียง 64 ไบต์ (ในตอนท้าย) ประเภทพาร์ติชันมีเพียง 1 ไบต์และรายการจะต้องถูกต้องตามกฎหมายหรือตามลำดับ ดังนั้น zeroing คลัสเตอร์ / เซกเตอร์ / 512 ไบต์แรกบน MBR จึงสมเหตุสมผล คุณไม่ต้องการพฤติกรรมการบู๊ตที่คาดเดาไม่ได้ แต่มีความเสี่ยง
mckenzm

18

อย่างที่เห็นในที่นี้ MBR (Master Boot Record) นั้นค่อนข้างง่าย https://en.wikipedia.org/wiki/Master_boot_record

เมื่อคุณใช้/dev/urandomคุณสามารถสร้างสิ่งที่ดูเหมือนตารางพาร์ติชัน วิธีการแก้ปัญหาคือการเติมภูมิภาคตารางพาร์ทิชันด้วยศูนย์และใช้dev/urandomสำหรับส่วนที่เหลือ

ลีนุกซ์ยังสนับสนุนรูปแบบดิสก์เพิ่มเติมอื่น ๆ ที่อาจถูกเรียกใช้ทำให้พาร์ทิชัน "ไม่ถูกต้อง" ปรากฏขึ้นเมื่อกรอกข้อมูลแบบสุ่ม


13

สิ่งที่กำหนดคอลเลกชัน 512 ไบต์ว่าเป็นMaster Boot Recordคือการมีค่า0x55 0xAAในตอนท้าย มีโอกาส 1 ใน 65,536 ใน/dev/urandomการสร้างคุณค่าดังกล่าว: ไม่น่าจะเกินไป แต่สิ่งที่ไม่น่าจะเกิดขึ้นในทำนองเดียวกันเกิดขึ้นตลอดเวลา

(บางตารางพาร์ติชันอื่น ๆ เช่นApple Partition Mapมีลายเซ็นสั้น ๆ คล้ายกันเป็นไปได้ว่าคุณได้สร้างหนึ่งในนั้นแทน)


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