Я хотел бы знать, как удалить 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 Если нет, то расплавить его ...