Làm cách nào tôi có thể xóa an toàn nội dung của ổ ngón tay cái để dữ liệu không thể được phục hồi.


32

Tôi muốn biết cách xóa ổ flash USB qua thiết bị đầu cuối nếu có thể để dữ liệu không thể được phục hồi.


31
Một ổ đĩa flash? Mở cái thứ đang mở ra, cạy tất cả các con chip ra khỏi bảng mạch màu xanh lá cây, và nghiền nát chúng thành những mảnh nhỏ bóng loáng, sau đó đi mua một cái khác. Sự hủy diệt vật lý thực sự là cách duy nhất để chắc chắn, vì tất cả các cấp độ và trang phục. Trong tương lai, sử dụng mã hóa toàn bộ đĩa và mất các khóa | mật khẩu khi bạn không muốn nó nữa.
Blacklight Shining

1
@BlacklightShining - đó là câu trả lời thực sự duy nhất. rất nhiều gậy giá rẻ cũng được tái chế.
mikeerv

1
@BlacklightShining Biến nó thành plasma cũng hoạt động tốt.
PyRulez

3
Nếu điều quan trọng với bạn là dữ liệu không thể phục hồi được, thì giải pháp "an toàn" duy nhất là phá hủy vật lý. Nếu nó đủ để chỉ khó phục hồi, thì thực sự không cần phải nhiều hơn định dạng / ghi đè.
Sobrique

Đốt nó trong lửa than, đảm bảo tất cả các bộ phận đều đạt được nhiệt độ đỏ.
Ben

Câu trả lời:


47

TL / DR: Đảm bảo bạn có được tên thiết bị phù hợp, đảm bảo nó không được gắn kết và thực hiện nhiều lần ghi đè ngẫu nhiên mà bạn có thể chi trả. Bạn có thể làm theo nó bằng một lệnh xóa được thiết kế cho phần cứng flash, nếu bạn đang ở trên một bản phân phối đủ gần đây. Trong các kiểm tra này, luôn luôn sử dụng ổ đĩa (như / dev / sd h ) chứ không phải tên phân vùng (sẽ là / 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
#

Về lý thuyết, ghi đè bằng 0 với ddchỉ là tốt. Tuy nhiên, do cách thức bên trong của ổ đĩa flash được tạo, nếu bạn sử dụng một lần ghi đè duy nhất, có thể có một số lớp dữ liệu ẩn đằng sau các khối thực tế vẫn đang lưu trữ thông tin còn sót lại.

Thông thường, một phần của bộ lưu trữ flash bị lỗi và được đánh dấu như vậy trong quá trình sản xuất. Ngoài ra còn có các bit khác có thể đi sai (trở nên không thể thay đổi, không thể hoặc không thể xóa được), những phần này cũng phải được đánh dấu bị lỗi trong suốt cuộc đời. Thông tin này được lưu trữ trong một không gian dành riêng, trên cùng các chip với dữ liệu của bạn. Đây là một trong nhiều lý do khiến ổ USB 4GB không hiển thị dung lượng 2 ^ 32 byte.

Bộ lưu trữ flash cũng được tổ chức bên trong trong các khối lớn hơn, đôi khi lớn hơn nhiều so với các hệ thống tệp làm việc trên ổ đĩa. Kích thước khối hệ thống tệp thông thường là 4KB và các phân đoạn flash có thể bị xóa trong một lần có thể dao động từ 64KB đến thậm chí vài megabyte. Các khối lớn này chỉ có thể bị xóa toàn bộ, điều này đặt lại tất cả các khối về trạng thái đã biết (tất cả 1 hoặc tất cả 0). Sau đó, việc ghi dữ liệu có thể thay đổi bất kỳ bit nào (thay đổi 1s mặc định thành 0 khi cần hoặc thay đổi 0 mặc định thành 1), nhưng chỉ một lần . Để thay đổi bất kỳ bit nào trở lại mặc định, tất cả các phân đoạn cần phải được xóa lại!

Vì vậy, khi bạn muốn thay đổi khối 4KB (hệ thống tệp được yêu cầu thay đổi một ký tự ở giữa tệp), bộ điều khiển flash sẽ cần đọc và đệm tất cả 64KB dữ liệu cũ, xóa tất cả dữ liệu đó và xóa tất cả viết lại nội dung mới. Điều này sẽ rất chậm, xóa các phân đoạn là hoạt động chậm nhất. Ngoài ra, một phân đoạn chỉ có thể bị xóa trong một thời gian giới hạn (hàng chục nghìn là điển hình), vì vậy nếu bạn thực hiện quá nhiều thay đổi cho một tệp, điều đó có thể nhanh chóng làm hỏng ổ đĩa.

Nhưng đây không phải là cách nó được thực hiện. Bộ điều khiển flash thông minh chỉ cần ghi dữ liệu mới 4KB ở nơi khác và ghi chú để chuyển hướng đọc sang 4KB dữ liệu này ở giữa khối cũ. Họ cần thêm không gian, mà chúng ta không thể thấy để lưu trữ thông tin này về các chuyển hướng. Họ cũng cố gắng đảm bảo rằng họ đi qua tất cả các phân đoạn có thể truy cập để lưu trữ dữ liệu, điều này được gọi là cân bằng hao mòn .

Điều này có nghĩa là dữ liệu cũ thường vẫn còn trên ổ đĩa ở đâu đó! Nếu bạn chỉ xóa tất cả các khối có thể truy cập, tất cả các khối ẩn vẫn giữ một phiên bản dữ liệu khá gần đây. Liệu điều này có thể truy cập được đối với kẻ tấn công mà bạn muốn dữ liệu của mình được bảo vệ hay không, là một câu hỏi khác.

Nếu bạn có một bản phân phối đủ gần đây và ổ USB được lập trình để tiết lộ rằng đó là ổ đĩa flash, blkdiscardcó thể sử dụng TRIMthao tác cơ bản , đó là phân đoạn xóa mà chúng ta đã nói ở trên. Nó cũng có một cờ bổ sung để đảm bảo rằng ngay cả dữ liệu ẩn vô hình cũng bị phần cứng xóa hoàn toàn:

# blkdiscard -s /dev/myusbdevice

-s, --secure Thực hiện loại bỏ an toàn. Loại bỏ an toàn cũng giống như loại bỏ thông thường ngoại trừ tất cả các bản sao của các khối bị loại bỏ có thể được tạo bởi bộ sưu tập rác cũng phải được xóa. Điều này đòi hỏi sự hỗ trợ từ thiết bị.

Nó sẽ không nhất thiết phải làm việc, như tôi đã trình bày ở trên. Nếu bạn nhận được Operation not supported, nhân của bạn, tiện ích của bạn hoặc chip cổng USB (cho phép bộ điều khiển flash trông giống như một ổ đĩa thông qua USB) không hỗ trợ truyền TRIMlệnh. (Bộ điều khiển flash vẫn phải có thể tự xóa các phân đoạn). Nếu nó được hỗ trợ bởi nhà cung cấp ổ đĩa của bạn, đây là cách an toàn nhất.

Một cách khác, ít an toàn hơn để đảm bảo rằng bạn cho phép ít dữ liệu cũ lưu lại ở đâu đó là ghi đè lên dữ liệu nhiều lần, với các giá trị ngẫu nhiên, nếu có thể.

Tại sao ngẫu nhiên, bạn hỏi? Chỉ cần tưởng tượng nếu ổ USB được làm quá thông minh và phát hiện ra rằng bạn muốn xóa một khu vực và chỉ cần thực hiện một thay đổi trong một bitmap rằng khu vực này hiện đang miễn phí và sẽ cần xóa sau. Vì điều này có nghĩa là nó có thể tăng tốc độ ghi các số không, vì vậy nó làm cho một ổ đĩa có vẻ hiệu quả hơn, phải không? Cho dù ổ đĩa của bạn đang làm điều đó, khó để nói.

Ở mức cực đoan nhất, ổ đĩa chỉ có thể nhớ được bao nhiêu từ lúc bạn đã xóa và tất cả những gì nó cần lưu trữ là khoảng 4 byte thông tin để làm điều này và không xóa bất cứ thứ gì từ dữ liệu bạn muốn biến mất. Tất cả để nó có thể trông rất nhanh.

Nếu bạn ghi đè dữ liệu bằng các giá trị ngẫu nhiên, không thể đoán trước, những tối ưu hóa này là không thể. Vì vậy, ổ đĩa phải đảm bảo dữ liệu cuối cùng được lưu trữ bên trong các chip flash. Nhưng bạn vẫn không thể loại trừ rằng một số lĩnh vực được sử dụng trước đây vẫn còn ở đó với một số dữ liệu cũ của bạn, nhưng ổ đĩa chỉ không coi trọng việc xóa nó, vì nó không thể truy cập bình thường. Chỉ có TRIMlệnh thực tế có thể đảm bảo rằng.

Để tự động ghi đè với các giá trị ngẫu nhiên, bạn có thể muốn xem xét sử dụng shred, như:

# shred -vzn88 /dev/myusbdrive

Các tùy chọn được sử dụng:

  • -v để làm cho nó hiển thị tiến trình
  • -z đến 0 ở giai đoạn cuối
  • -n8 là thực hiện 8 lần ghi đè ngẫu nhiên

Nếu có thể, hãy sử dụng cả hai blkdiscardshred, nếu blkdiscard -sđược ổ đĩa của bạn hỗ trợ, đó là giải pháp tối ưu, nhưng không thể làm gì shredtrước để loại trừ các lỗi phần mềm.

Ồ, và luôn luôn kiểm tra ba lần thiết bị mà bạn đang cố gắng xóa! dmesg có thể giúp xem thiết bị nào được chèn gần đây nhất và cũng đáng để kiểm tra tên thiết bị bạn định xóa ls -al, ngay cả đối với số nút của thiết bị và blkidđầu ra để xem phân vùng nào có thể có sẵn mà bạn KHÔNG muốn giải tỏa.

Không bao giờ sử dụng các lệnh này trên ổ đĩa nội bộ mà bạn muốn tiếp tục sử dụng - blkdiscardsẽ chỉ hoạt động trên các ổ đĩa trạng thái rắn, nhưng không đáng để thử mất dữ liệu!

Có thể có những cách khác để xóa dữ liệu một cách an toàn khi tiến bộ công nghệ.

Một cách khác được đề cập là SECURITY ERASElệnh ATA có thể được ban hành thông qua hdparmcác lệnh. Theo kinh nghiệm của tôi, nó không thực sự được hỗ trợ trên các ổ đĩa flash. Nó được thiết kế cho các ổ cứng doanh nghiệp và tính năng này không phải lúc nào cũng được triển khai trong các thiết bị lưu trữ chi phí thấp nhất.

Các TRIM/ DISCARDhoạt động là mới hơn nhiều so với SECURITY ERASElệnh, và đã được tạo ra để đáp ứng với các tính năng đèn flash, vì vậy nó có cơ hội cao hơn nhiều đang được triển khai, ngay cả trong ổ đĩa USB giá rẻ, nhưng nó vẫn không phổ biến. Nếu bạn muốn xóa thẻ SD / micro SD trong khóa USB và blkdiscardbáo cáo rằng nó không được hỗ trợ, bạn có thể muốn thử một đầu đọc thẻ / thẻ khác và / hoặc thực hiện trong máy có khe cắm SD / MMC trực tiếp .


Cảm ơn bạn đã thông tin tiên tiến. blkdiscardcó trong Debian Jessie và chỉ trong hai bản phát hành Ubuntu gần đây nhất, nhưng không phải là Ubuntu LTS 14.04. blkdiscardđã được thêm vào gói util-linuxphiên bản 2.23.
RobertL

Bạn có biết blkdiscardso sánh với hdparmgiải pháp trong một nhận xét khác của @zhenech (cụ thể là liên kết: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
RobertL

Bạn không chắc chắn nếu điều này cũng là trường hợp với ổ đĩa flash, nhưng điều này có thể là giá trị đọc howtogeek.com/234683/...
hhaslam11

1
@RobertL Bình đẳng, theo cách xấu. Hầu hết các ổ đĩa flash giá rẻ đều không thực hiện ATA Secure Erase hay TRIM, vì vậy cả hai phương pháp có thể sẽ thất bại.
duskwuff

27

Tôi nhận ra đây không thực sự là một câu trả lời cho câu hỏi của bạn, nhưng cách đơn giản nhất là phá hủy ổ đĩa vật lý (đập nó liên tục bằng búa tạ thường là một mánh khóe, nhưng việc băm nhỏ hoặc thiêu hủy công nghiệp cũng là những lựa chọn). Nếu bạn đủ lo lắng về bảo mật để đảm bảo dữ liệu không thể khôi phục được, giá trị của dữ liệu đó có thể gấp nhiều lần so với chi phí của ổ đĩa và phương pháp vật lý là rẻ và đáng tin cậy.


5
Nếu đó là một ổ đĩa flash giá rẻ, có thể thay thế, chắc chắn đi cùng với sự phá hủy vật lý. Nếu bạn sử dụng búa, hãy chắc chắn rằng bạn có được chip lưu trữ thực tế. Tôi đã mở một ổ đĩa flash cũ để vui chơi vài tuần trước, và hầu hết khối lượng vật lý của nó thực sự là vỏ và không khí.
Blacklight Shining

1
Ngoài câu trả lời của tôi, tôi hoàn toàn đồng ý - thật khó để đập chúng thành từng mảnh thông qua truy cập ssh :) Với việc các khóa này không đáng tin cậy để lưu trữ dữ liệu, thật khó để làm cho chúng thực sự thoát khỏi cùng một dữ liệu.
chexum

Đồng ý - nếu điều quan trọng với bạn là dữ liệu không thể phục hồi, thì phá hủy vật lý là lựa chọn duy nhất. Hãy đối mặt với nó, so với giá trị thương mại của dữ liệu trên đó, ngay cả những ổ đĩa đắt nhất cũng có thể không đáng kể. Nếu nó không phải quan trọng gần như bất kỳ lau / ghi đè là 'đủ tốt'.
Sobrique

1
Phương pháp này không chỉ hiệu quả nhất mà còn thú vị nhất. Không bao giờ bỏ qua một cơ hội để sử dụng búa tạ và được trả tiền cho nó.
zetetic

2

Hầu như tất cả các chức năng xóa an toàn có sẵn được thiết kế để quay phương tiện từ tính, trong đó máy tính thường có thể xác định vị trí vật lý [1] của các khối được sử dụng cho tệp và ghi trên cùng các khối đó. Chip điều khiển lưu trữ trạng thái rắn trừu tượng vị trí vật lý của dữ liệu từ hệ thống và thích di chuyển nó xung quanh.

Câu hỏi của bạn thực sự phụ thuộc vào người sẽ theo dõi dữ liệu của bạn. Nếu bạn lo lắng về mất mát ngẫu nhiên hoặc trộm cắp thông thường thì một định dạng thông thường sẽ ổn. Nếu bạn lo lắng về việc bị nhắm mục tiêu bởi một người dùng có năng lực kỹ thuật cao, có năng lực với các nguồn lực đáng kể theo ý của họ [2] thì chỉ cần đốt ổ đĩa và chi 10 đô la cho một cái mới.

  1. vâng, có ánh xạ khối logic. Nhưng khối logic A sẽ luôn ánh xạ tới khối vật lý B.

  2. người này sẽ mở ổ đĩa lên, rút ​​chip nhớ ra khỏi thẻ và đọc bộ nhớ flash trực tiếp, bỏ qua bộ điều khiển


1

Cách đơn giản nhất và nhanh nhất mà tôi biết là ghi số không (0) vào toàn bộ ổ đĩa:

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

nơi /dev/sdXlà nút thiết bị của ổ cứng di động của bạn.

Một số gợi ý một quy trình kỹ lưỡng hơn với nhiều lần lặp và các mẫu khác. Tiện ích cụ thể có sẵn để làm điều này. Gói GNU coreutils chứa shredlệnh đặc biệt cho mục đích này. Nhiều người cũng sử dụng badblocks -w, là một phần của gói e2fspross. Trên FreeBSD, shredtiện ích được gọi gshredvà nên có sẵn ở một trong hai /usr/ports/sysutils/coreutilshoặc /usr/ports/sysutils/fileutilscổng.


Điều này thực sự không đủ để làm sạch an toàn. Tôi sẽ đi ít nhất 20 loạt bài viết về những thứ ngẫu nhiên. Tốt nhất là tôi sẽ sử dụng một công cụ để xóa an toàn, ví dụ như shred. Mặc dù một số người nói rằng nó vô nghĩa và không có gì là đủ - tôi sẽ không tin điều đó.
monsune

4
@monsune Đó chỉ là một truyền thuyết đô thị. Mặc dù một số tiêu chuẩn yêu cầu điều đó , dường như không có bất kỳ cuộc tấn công thực tế nào.
Gilles 'SO- ngừng trở nên xấu xa'

Ổ đĩa flash sử dụng cân bằng hao mòn để không phá hủy các tế bào flash quá nhanh. Hãy tưởng tượng nó như thế nào: ổ đĩa có 1200 ô nhưng chỉ cho bạn biết nó có 1000 và bộ điều khiển chọn ô mà nó thực sự ghi vào ô nào. Vì vậy, sau một dd bạn đã xóa 1000 ô nhưng không phải là 200 ô dự trữ và chúng có thể đọc được bằng cách gắn đèn flash thực tế vào bộ điều khiển mà không cần dự trữ. Tôi khuyên bạn nên xóa an toàn sau dd, nhưng không phải tất cả các phương tiện flash đều hỗ trợ điều đó.
zhenech

@zhenech, "xóa an toàn" là gì?
RobertL


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.