Как я могу быть уверен, что каталог или файл действительно удален?

14

Я знаю, что большинство файлов при удалении фактически не удаляются с диска и могут быть восстановлены позже.

Как я могу убедиться, что удаленный каталог действительно будет удален с диска? Есть ли для этого утилиты?

Я использую Debian Linux.

jcora
источник
5
Краткий ответ: вы не можете! Длинный ответ: либо физически уничтожить диск, либо перефразировать вопрос: сколько усилий потребуется для восстановления данных и какова будет вероятность успеха такой попытки?
Марко

Ответы:

11

Зашифруйте данные перед сохранением. Чтобы стереть данные, протрите ключ.

Если вы уже написали данные в виде открытого текста, уже слишком поздно, чтобы стереть их простым способом. Может быть несколько копий данных, лежащих в разных местах:

  • в файловой системе, если файл был записан несколько раз (либо перезаписан, либо заменен);
  • в файловой системе, если она была переставлена ​​как часть дефрагментации;
  • в журнале (вероятно, он исчезнет довольно быстро после последней записи данных);
  • в резервных копиях;
  • в отключенных секторах (особенно на SSD).

Чтобы избавиться от копий данных в файловой системе, грубым методом является заполнение свободного места ( cat /dev/zero >somefileи ожидание его остановки, поскольку файловая система заполнена). Это перезапишет все полные блоки.

Небольшие части данных могут оставаться в неполных блоках, которые частично используются другими файлами. Это особенно важно для имен файлов, которые могут оставаться в блоках, в которых хранится содержимое каталога. Чтобы избавиться от всего, создайте резервную копию всех файлов, полностью перезапишите устройство, содержащее файловую систему, а затем восстановите файлы.

Носители данных могут хранить данные в блоках, которые больше не используются. На жестких дисках это означает плохие блоки, которые были перераспределены; это довольно редкое явление, пока диск не начнет изнашиваться. На SSD это обычное явление из-за выравнивания износа. В обоих случаях угроза очень мала, потому что для доступа к этим данным требуется изощренный злоумышленник с умеренно дорогим оборудованием и временем, которое нужно тратить. Если вы заботитесь об этих угрозах, зашифруйте свои данные и не оставляйте свой ключ без дела.

Обратите внимание, что вы можете увидеть совет по удалению данных, выполнив несколько проходов или используя случайные данные вместо нулей («Gutmann wipe»). Забудьте об этом: это относится только к жестким дискам 1980-х годов (и даже тогда данные не так уж и дешевы для реконструкции, а реконструкция довольно ненадежна). Перезаписать нулями достаточно хорошо; выполнение нескольких случайных проходов - устаревший совет или змеиное масло. См. Почему запись нулей (или случайных данных) на жесткий диск в несколько раз лучше, чем просто сделать это один раз?

Жиль "ТАК - перестань быть злым"
источник
12

Существует очень популярный инструмент под названием shred. Он будет перезаписывать каждый файл 25 раз, прежде чем он будет удален. Это может мне то, что вы ищете.

Использование клочков довольно просто

$ shred secret_archive.tar.gz

Однако обратите внимание, что в современных системах это shredможет быть неэффективно или бесполезно, если:

  • Ваши программы создают временные файлы, о которых вы не знаете (как и многие приложения с графическим интерфейсом)
  • Ваша FS основана на копировании при записи (как ZFS или Btrfs)
  • Ваша FS основана на журнале (как NILFS)
  • Ваша FS использует журналирование данных (например, JFS, ReiserFS, XFS, ext3 или ext4 в некоторых конфигурациях)
  • Ваша FS использует сжатие
  • Ваша ФС размещает новые версии файлов в разных местах
  • У вас есть снимки или резервные копии
  • Вы находитесь в сети ФС
  • Вы используете SSD с алгоритмами выравнивания износа

Другие и потенциально более безопасные варианты:

  • Шифрование важных данных
  • Перезапись всего раздела или устройства хранения
  • Физическое разрушение устройства
taffer
источник
1
По моей странице руководства shredработает даже с ext3 (и я думаю , ext4, тоже) при использовании данных = упорядоченный ( по умолчанию) и данные = обратную запись режимов. Кроме того, существует простая альтернатива: просто создайте огромный файл, занимающий все оставшееся пространство файловой системы, чтобы удаленный файл был перезаписан.
Scai
Благодарю. Я просто исправил это. journaling -> data jornaling
Таффер
@scai, метод огромного файла не обязательно будет работать, поскольку блоки файла, возможно, уже были перераспределены и еще не записаны (например, сбитые данные, последний блок файлов или директории ...)
Стефан Шазелас
3
shredзмеиное масло: оно не лучше, чем head -c $(wc -c secret_archive.tar.gz)>! secret_archive.tar.gz`. Использование shred всегда бессмысленно, если только вы не используете жесткий диск 1980-х или начала 1990-х годов.
Жиль "ТАК - перестань быть злым"
3
клочок / BCWipe / и т.д.. змеиное масло на уровне файловой системы. Для любой файловой системы. Из-за того, как вы работаете с файлами: каждый раз, когда вы нажимаете сохранить, старый файл удаляется (находится в свободном месте) и создается новый файл. Вы не можете уничтожить его, если файловая система уже забыла об этом. - Он отличается на уровне устройства или уровня перезаписи всего свободного пространства. Существует один из немногих быстрых источников случайных данных, доступных в Linux / Unix. / dev / (u) случайно это слишком чертовски медленно, чтобы его можно было использовать для перезаписи больших объемов данных. - Таким образом, один проход
уничтожения подходит