При попытке безопасно стереть SSD, у нас есть несколько проблем:
- SSD изнашиваются после ограниченного количества циклов стирания
- SSD имеют контроллер, который динамически отображает LBA (адреса логических блоков, используемые системой для доступа к диску) в ячейки NVRAM (фактические ячейки флэш-памяти), чтобы сбалансировать износ, что означает указание диску перезаписывать блоки, которые ранее сохраняли определенную файл может привести к перезаписи любых других запасных блоков.
- Твердотельные накопители имеют значительный процент резервной емкости, которая используется для компенсации умирающих ячеек хранения и уменьшения износа. Они не видны системе и могут содержать старые фрагменты данных.
Теперь, какие у нас есть возможности изнутри Ubuntu для безопасного стирания SSD?
Я слышал, что некоторые новые твердотельные накопители должны быть в состоянии безопасно стереть себя, но как мне узнать, способен ли мой SSD к этому и как я могу его запустить?
Также должна быть команда безопасного стирания ATA, как мне узнать, поддерживается ли она, и как мне вызвать это?
Существуют ли способы безопасного удаления только определенного файла или только неиспользуемого пространства?
Я предполагаю, что создание резервной копии всех разделов, безопасное удаление всего диска с последующим восстановлением резервной копии было бы возможно, но звучит слишком сложно и займет слишком много времени, чтобы быть практичным. Есть ли другие альтернативы? Если нет, какие инструменты я могу использовать для резервного копирования разделов без резервного копирования уже удаленных файлов?
Конечно, стандартные инструменты, подобные shred
или wipe
не пригодные для использования здесь для пунктов, описанных выше. Они просто перезаписывают файл (перезаписывая его кластеры файловой системы, которые связаны с LBA, которые не постоянно указывают на одни и те же флэш-ячейки из-за контроллера выравнивания износа).
источник
Ответы:
В настоящее время нет способа безопасно удалить файлы на SSD без стирания содержимого всего диска или доступа к встроенному ПО SSD.
Невозможно узнать, где SSD может хранить предыдущие копии логического блока.
Что еще хуже, из-за механизмов журналирования и копирования при записи файловой системы может оказаться невозможным узнать, какие логические блоки могут содержать предыдущую копию конкретного файла.
Единственный способ предотвратить утечку удаленных файлов кому-либо, имеющему прямой доступ к диску, - это, во-первых, зашифровать их и защитить ключ шифрования от посторонних глаз.
Приложение:
Я провел некоторое исследование и обнаружил, что вы можете отсортировать все ранее удаленные файлы, если вам удастся изучить все незанятые сектора файловой системы, что обычно возможно и предлагается некоторыми инструментами файловой системы (например, для семейства ext *). ), а затем отбрасывает их (например, с помощью,
blkdiscard(8)
как указано в этом ответе на связанный вопрос ), который возвращает блоки для сборки мусора, пока они не будут использованы снова и перезаписаны в процессе.Это безопасно для всех, кто не может получить доступ к флеш-ячейкам напрямую, поэтому каждый, кто
источник
Самый простой способ определить, поддерживает ли ваш диск безопасное стирание, это задать его: я использовал / dev / sdX в примерах ниже. Вам необходимо тщательно изменить его, чтобы он соответствовал устройству, с которым вы работаете:
Источники:
https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase
/superuser/1161531/how-to-un-freeze-drive-in-linux
На моем SSD это приводит к:
Если ваше устройство поддерживает безопасное стирание, запуск выполняется в 2 или 3 этапа.
sudo hdparm -I /dev/sdX
аналогичном следующему:Разморозьте его, приостановив и возобновив работу вашей системы. Я сделал это с помощью команды
sudo systemctl suspend
перемещения указателя, пока система не возобновила работу.Вы должны установить пароль, чтобы использовать безопасное стирание. В этом случае я использую foobar в качестве пароля, вы можете использовать любой непустой пароль, который вам нравится, поскольку он временный.
sudo hdparm --user-master u --security-set-pass foobar /dev/sdX
С установленным паролем вы можете теперь использовать его для безопасного стирания диска:
sudo hdparm --user-master u --security-erase foobar /dev/sdX
Если ваш накопитель поддерживает его и вы этого хотите, вы можете использовать вместо него усиленное стирание с помощью:
sudo hdparm --user-master u --security-erase-enhanced foobar /dev/sdX
источник