Я хотел бы знать, как удалить USB-накопитель через терминал, если это возможно, чтобы данные не могли быть восстановлены.
Я хотел бы знать, как удалить USB-накопитель через терминал, если это возможно, чтобы данные не могли быть восстановлены.
Ответы:
TL / DR: убедитесь, что вы получили правильное имя устройства, убедитесь, что оно не подключено, и выполните столько случайных перезаписей, сколько можете себе позволить. Вы можете следовать за ней командой erase, предназначенной для флеш-оборудования, если у вас достаточно свежий дистрибутив. В этих проверках всегда используйте диск (например, / 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
просто отлично. Однако из-за того, как встроены внутренние устройства флэш-диска, если вы используете один проход перезаписи, может быть несколько слоев данных, скрытых за фактическими блоками, которые все еще хранят оставшуюся информацию.
Как правило, часть флэш-памяти неисправна и помечена во время производства. Есть и другие биты, которые могут пойти не так (стать неизменяемыми, неустановимыми или неустранимыми), эти части также должны быть помечены как неисправные в течение срока службы. Эта информация хранится в зарезервированном месте на тех же чипах, что и ваши данные. Это одна из нескольких причин, по которой флэш-накопитель емкостью 4 ГБ не показывает емкость 2 ^ 32 байта.
Флэш-память также внутренне организована в более крупные блоки, иногда намного больше, чем файловые системы, работающие на диске. Типичный размер блока файловой системы составляет 4 КБ, а сегменты флэш-памяти, которые можно стереть за один раз, могут варьироваться от 64 КБ до даже нескольких мегабайт. Эти большие блоки могут быть стерты только целиком, что приводит к сбросу всего блока в известное состояние (все 1 или все 0). После этого запись данных может изменить любой из битов (при необходимости изменить 1-е значение по умолчанию на 0 или изменить нулевые значения по умолчанию на 1), но только один раз . Чтобы изменить любой из битов обратно на значение по умолчанию, весь сегмент необходимо стереть снова!
Поэтому, когда вы хотите изменить блок размером 4 КБ (файловой системе предлагается изменить один символ в середине файла), контроллеру флэш-памяти потребуется прочитать и буферизовать все 64 КБ старых данных, стереть их все и напишите новое содержание. Это будет очень медленно, удаление сегментов - самая медленная операция. Кроме того, сегмент может быть удален только в течение ограниченного времени (обычно десятки тысяч), поэтому, если вы вносите слишком много изменений в один файл, это может быстро повредить диск.
Но это не так, как это делается. Интеллектуальные контроллеры флэш-памяти просто записывают новые данные объемом 4 КБ в другое место и делают пометки для перенаправления операций чтения на эти 4 КБ данных в середине старого блока. Им нужно больше места, которое мы не можем увидеть, чтобы хранить эту информацию о перенаправлениях. Они также пытаются убедиться, что они проходят все доступные сегменты для хранения данных, это называется выравниванием износа .
Это означает, что обычно старые данные все еще находятся на диске ! Если вы только что очистили все доступные блоки, все скрытые блоки по-прежнему сохраняют последнюю версию данных. Доступно ли это злоумышленнику, от которого вы хотите защитить свои данные, - это другой вопрос.
Если у вас достаточно недавний дистрибутив, а USB-накопитель запрограммирован на выявление того, что это флэш-накопитель, blkdiscard
можно использовать базовую TRIM
операцию, а именно стирание сегмента, о котором мы говорили выше. У этого также есть дополнительный флаг, чтобы гарантировать, что даже невидимые скрытые данные полностью удалены аппаратным обеспечением:
# blkdiscard -s /dev/myusbdevice
-s, --secure Выполнить безопасное удаление. Безопасный сброс аналогичен обычному сбросу, за исключением того, что все копии отброшенных блоков, которые, возможно, были созданы сборщиком мусора, также должны быть удалены. Это требует поддержки со стороны устройства.
Это не обязательно будет работать, как я продемонстрировал выше. Если вы получаете Operation not supported
, ваше ядро, ваши утилиты или чип USB-шлюза (который позволяет контроллеру флэш-памяти выглядеть как диск через USB) не поддерживает передачу TRIM
команд. (Контроллер вспышки должен по-прежнему иметь возможность стирать сегменты самостоятельно). Если это поддерживается поставщиком вашего диска, это самый безопасный способ.
Другой, менее безопасный способ убедиться, что вы позволяете меньшему количеству старых данных задерживаться где-то, - это перезаписывать их несколько раз, по возможности случайными значениями.
Вы спрашиваете, почему случайно? Просто представьте, что USB-накопитель был сделан слишком интеллектуальным, и обнаружил, что вы хотите очистить сектор, и просто внес изменения в растровое изображение, что этот сектор теперь свободен, и позже потребуется очистка. Поскольку это означает, что он может ускорить запись нулей, значит, это делает привод, который кажется более эффективным, верно? Трудно сказать, делает ли это ваш диск.
В крайнем случае, накопитель может просто помнить, сколько с самого начала вы очистили, и все, что ему нужно для хранения, - это около 4 байтов информации, чтобы сделать это, и ничего не очистить от данных, которые вы хотите удалить. Все так, чтобы это могло выглядеть очень быстро.
Если вы перезаписываете данные случайными непредсказуемыми значениями, эти оптимизации невозможны. Поэтому накопитель должен убедиться, что данные в конечном итоге хранятся внутри флеш-чипов. Но вы все равно не сможете исключить, что некоторые из ранее использованных секторов все еще были там с некоторыми вашими старыми данными, но накопитель просто не посчитал важным стереть его, поскольку он обычно недоступен. Только фактическая TRIM
команда может гарантировать это.
Чтобы автоматизировать перезапись со случайными значениями, вы можете захотеть использовать shred
, например:
# shred -vzn88 /dev/myusbdrive
Используемые параметры:
Если возможно, используйте оба, 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.
blkdiscard
сравнивается с hdparm
решением в другом комментарии @zhenech (в частности, ссылка: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
Я понимаю, что на самом деле это не ответ на ваш вопрос, но самый простой способ - физически уничтожить диск (разбив его многократно кувалдой, как правило, добьется цели, но промышленное измельчение или сжигание - также варианты). Если вы беспокоитесь о безопасности и хотите убедиться, что данные невозможно восстановить, ценность этих данных, вероятно, во много раз превышает стоимость самого диска, а физический метод дешев и надежен.
Почти все доступные функции безопасного удаления были разработаны для вращения магнитных носителей, где компьютер обычно может определять физическое местоположение [1] блоков, используемых для файла, и записывать поверх этих же блоков. Твердотельные чипы контроллера хранилища абстрагируют физическое местоположение данных от системы и любят перемещать их.
Ваш вопрос действительно зависит от того, кто будет искать ваши данные. Если вы беспокоитесь о случайной потере или случайной краже, тогда подойдет обычный формат. Если вы беспокоитесь о том, чтобы вас преследовал высоко мотивированный, технически компетентный пользователь, обладающий значительными ресурсами [2], просто сожгите диск и потратите 10 долларов на новый.
да, есть логическое отображение блоков. Но логический блок A всегда будет отображаться в физический блок B.
этот человек откроет диск, вытащит чип памяти из карты и прочитает флэш-память напрямую, минуя контроллер
Самый простой и быстрый способ, который я знаю, это записать нули (0) на весь диск:
dd if=/dev/zero of=/dev/sdX
где /dev/sdX
находится узел устройства вашего флэш-накопителя.
Некоторые предлагают более тщательный процесс с большим количеством итераций и других шаблонов. Для этого доступны специальные утилиты. Пакет GNU coreutils содержит shred
команду специально для этой цели. Многие люди также используют badblocks -w
, который является частью пакета e2fsprogs. Во FreeBSD shred
утилита вызывается gshred
и должна быть доступна либо в портах, /usr/ports/sysutils/coreutils
либо /usr/ports/sysutils/fileutils
.
Это должно быть в состоянии безопасно стереть ваш флэш-диск, если вы планируете использовать его снова : http://linux.die.net/man/1/scrub Если нет, то расплавить его ...