Tại sao việc ghi dữ liệu ngẫu nhiên bằng cách sử dụng dd dẫn đến phân vùng đĩa?


11

Trước khi chạy ddlệnh, lệnh lsblktrả về đầu ra bên dưới:

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

Lệnh dd if=/dev/urandom of=/dev/sda conv=fsync status=progressđược chạy. Thiết bị tuy nhiên mất điện và tắt. Khi nguồn được phục hồi, lệnh lsblksẽ trả về đầu ra sau:

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 - Cảm ơn sự tương tự tuy nhiên không rõ tại sao ddlại dẫn đến phân vùng đặc biệt là nếu lệnh này có ý định xóa đĩa?
Động lực

1
Sự trùng hợp: rất khó có khả năng liên quan đến việc cắt điện. Bạn viết dữ liệu ngẫu nhiên vào thiết bị. Một số dữ liệu ngẫu nhiên này đã đi đến một số khối đầu tiên, đây là nơi các bảng phân vùng sống. Bạn có thể đã kết thúc việc xác định một phân vùng.
ctrl-alt-delor

bạn có thể gửi kết quả của file /dev/sda*sudo fdisk -l /dev/sda*?
phuclv

@phuclv - Khi tôi đã bắt đầu quá trình, liệu đầu ra có còn giá trị không?
Động lực

1
@Motivated Lưu ý rằng ddmục đích không phải là để xóa đĩa. Ghi dữ liệu ngẫu nhiên vào đĩa có thể tạo ra kết quả ngẫu nhiên.
jjmontes

Câu trả lời:


20

Một số khả năng:

  • Linux hỗ trợ rất nhiều loại bảng phân vùng khác nhau, một số trong đó sử dụng rất ít byte ma thuật và sau đó rất dễ xác định sai dữ liệu ngẫu nhiên (*) [vì vậy có thể tạo ngẫu nhiên một bảng phân vùng có phần "hợp lệ".

  • Một số loại bảng phân vùng cũng có bản sao lưu ở cuối đĩa (đáng chú ý nhất là GPT) và có thể được chọn nếu khởi động ổ đĩa được thay thế bằng rác ngẫu nhiên.

  • Thiết bị không hoạt động đúng và nó đã bị ngắt kết nối trước khi ghi xong dữ liệu hoặc tiếp tục trả lại dữ liệu cũ, do đó bảng phân vùng vẫn tồn tại. Đôi khi điều này xảy ra với thanh USB.

  • ...

(*) Tạo 1000 tệp với dữ liệu ngẫu nhiên trong đó và xem những gì xuất hiện:

$ 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 -
....

Mục tiêu của việc băm ngẫu nhiên một ổ đĩa là làm cho dữ liệu cũ biến mất vĩnh viễn. Không có lời hứa ổ đĩa sẽ xuất hiện trống rỗng, không sử dụng, trong tình trạng nguyên sơ sau đó.

Đó là thông thường để theo dõi với một lau không để đạt được điều đó. Nếu bạn đang sử dụng LVM, thông thường LVM sẽ loại bỏ một vài lĩnh vực đầu tiên của bất kỳ LV nào bạn tạo để dữ liệu cũ sẽ không can thiệp.

Ngoài ra còn có một tiện ích chuyên dụng ( wipefs) để loại bỏ các chữ ký byte ma thuật cũ mà bạn có thể sử dụng để loại bỏ siêu dữ liệu bảng hệ thống và bảng phân vùng.


Các thiết bị đã bị xóa trước đó bằng lệnh ATA Secure Erase. Tôi giả định rằng điều này sẽ xóa dữ liệu sao cho 1. nó không thể phục hồi được 2. không có thông tin phân vùng nào tồn tại. Nếu điều này là đúng, bạn có nghĩa là khi chạy ddlệnh, việc tạo dữ liệu ngẫu nhiên khi bị gián đoạn có thể dẫn đến dữ liệu trông giống như các bảng phân vùng? Ngoài ra đây là các đĩa cứng SATA (không phải SSD).
động lực

5
Dữ liệu ngẫu nhiên có thể trông giống như bất cứ điều gì. Đó là những gì nó có nghĩa là ngẫu nhiên. Bạn có quen thuộc với Định lý khỉ vô hạn? Nó tuyên bố rằng nếu một lượng khỉ đủ lớn ngẫu nhiên gõ vào máy chữ trong một thời gian đủ dài, một lúc nào đó chúng sẽ tạo ra các tác phẩm hoàn chỉnh của Shakespeare. Một bảng phân vùng MBR thực sự nhỏ (chỉ 64 byte), nó không có tổng kiểm tra hoặc xác minh và định dạng rất dày đặc. Rất có khả năng một chuỗi ngẫu nhiên 64 byte sẽ tạo ra một bảng phân vùng hợp lệ. Các định dạng bảng phân vùng khác cũng đơn giản tương tự.
Jörg W Mittag

Có, bảng phân vùng chỉ có 64 byte, (ở cuối) loại phân vùng chỉ có 1 byte và các mục cần phải hợp pháp hoặc tuần tự. Vì vậy, zeroing cụm / sector / 512 đầu tiên trên MBR là hợp lý. Bạn cũng không muốn hành vi khởi động không thể đoán trước, ít có khả năng, nhưng vẫn có rủi ro.
mckenzm

18

Như đã thấy ở đây, MBR (Master Boot Record) tương đối đơn giản; https://en.wikipedia.org/wiki/Master_boot_record .

Khi bạn sử dụng, /dev/urandombạn luôn có thể tạo một cái gì đó trông giống như một bảng phân vùng. Giải pháp là lấp đầy các vùng bảng phân vùng bằng 0 và sử dụng dev/urandomcho phần còn lại.

Linux cũng hỗ trợ các định dạng đĩa bổ sung khác cũng có khả năng được kích hoạt, khiến các phân vùng "không hợp lệ" hiển thị khi điền dữ liệu ngẫu nhiên.


13

Thứ xác định bộ sưu tập 512 byte là Bản ghi khởi động chính là sự hiện diện của các giá trị 0x55 0xAAở cuối. Có một cơ hội 1 trong 65.536 để /dev/urandomtạo ra một giá trị như vậy: không quá có khả năng, nhưng những điều tương tự không thể xảy ra mọi lúc.

(Một số bảng phân vùng khác, như Bản đồ phân vùng của Apple , có chữ ký ngắn tương tự. Có thể bạn đã tạo một trong số chúng thay thế.)


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.