ИНФОРМАЦИЯ

Удаление данных с жёстких дисков

В данной статье будет рассмотрен вопрос надёжного удаления данных с жёстких дисков: эффективные контрмеры попыткам восстановления данных
впоследствии.

Удалить данные с любых носителей непросто. Здесь возникает последовательный ряд проблем, который мы и рассмотрим:

  • удаление файлов;
  • удаление данных на носителе;
  • удаление данных из оперативной памяти.

В статье делается упор на работу с жёсткими дисками. Однако практически всё ниженаписанное применимо и к другим носителям.

Удаление файлов

Зачастую удаление файла не приводит к фактическому удалению данных с носителей. В большинстве файловых систем файл представляет из себя
некую запись, ссылку в таблице (директория) и его удаление приведёт к обнулению/удалению ссылки.

Например, в файловых системах File Allocation Table (FAT) удаление файла означает лишь удаление первого символа в его имени и пометке что файл удалён. Утилитами, присутствующими в самой операционной системе, можно восстановить файл без потерь (кроме первого символа имени).

Часто используемые методы поиска конкретного расположения данных на носителе:

  • нахождение “магических последовательностей” данных. Такие последовательности используются для быстрой идентификации типа данных (например что это изображение в формате JPEG или же звуковой файл в формате WAVE PCM).
  • анализ и обнаружение инодов и экстентов (метаинформация о файлах в современных файловых системах).
  • чтение журнала транзакций файловой системы и определение размещения инодов и экстентов, так как они зачастую не имеют магических последовательностей для своей идентификации.
  • “отсеивание” корреляций между “мгновенными снимками” (snapshots) файловой системы, чтобы понять произошедшие в ней изменения.

Удаление файла никогда не приводит к удалению его содержимого на носителе. Данные фактически всё равно остаются на носителе. Здесь нет речи об их восстановлении.

Удаление данных на носителе

Для удаления данных применяют следующие способы:

  • перезапись данных;
  • размагничевание накопителя (если это ленты, жёсткие диски, и прочее);
  • физическое уничтожение накопителя.

Безопасность — это всегда компромисс между чем-либо (стоимость — время — эффективность).

  • Перезапись является самым доступным способом удаления данных — не требуется дополнительного оборудования. Накопитель остаётся пригодным
    для дальнейшего использования. Однако этот процесс может занимать длительное время, в зависимости от того, насколько хочется усложнить
    работу по восстановлению.
  • Размагничивание — более дорогая операция, так как требует дополнительное оборудование (соленоид). Жёсткие диски после размагничивания могут быть не пригодны для дальнейшего использования, в отличии от лент. Этот процесс очень быстр (считанные секунды). Однако, в последнее время заверяется что современные жёсткие диски с высокой плотностью записи всё равно могут иметь остаточную намагниченность областей.
  • Физическое уничтожение — наиболее дорогая (если учитывать стоимость носителя) и эффективная операция. Здесь также существуют компромиссы
    между простотой и эффективность. Например сверление отверстий в его пластинах — приведут к потере лишь части данных. То, что не тронуто
    сверлом, всё также может быть прочитано под микроскопом.

Перезапись

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

Возникает множество областей намагниченности, которые можно прочитать специальным микроскопом. Расположение магнитных доменов при линейных операциях записи чётко коррелирует между собой и, благодаря этому, можно понять их “возраст”.

Суть размещения и силы магнитных доменов дорожки
Рис. 1. Суть размещения и силы магнитных доменов дорожки

Каждый цикл перезаписи будет сводить на нет существование “нежелательных” остаточных доменов. Здесь имеется компромисс между
количеством циклов: кто-то считает что необходимо до сотни циклов. Большинство же стандартов/советов ограничиваются количеством менее десяти.

Есть особые моменты при перезаписи:

  • при перезаписи файла необходимо быть уверенным что запись производится действительно в одну и ту же область носителя. Версионируемые файловые системы, мгновенные снимки, журналы транзакций данных (а не только метаинформации) — не способствуют постоянной записи в одно и то же место носителя.
  • необходимо удостоверится что данные действительно записываются на диск. Большинство операционных систем активно используют технологию кэширования для увеличения производительности дисковой подсистемы. Можно провести операцию перезаписи какого-либо блока на диске сотни раз, но только последняя “версия” данных действительно сохранится на носитель. Особенно опасны аппаратные контроллеры в которых применяется ёмкая (до десятков гигабайт) flash память.
  • необходимо применение новых случайных данных при каждом цикле перезаписи. Существуют даже чётко зафиксированные наборы данных, которые, как считается, лучше обеспечат более полное покрытие нежелательных доменов. Это безусловно зависит от специфики носителя информации. Использование собственных генерируемых случайных данных при большем количестве циклов даст эффективность не хуже.
  • перезаписываться также должны области до и после удаляемых данных.

Чаще всего рекомендации по перезаписи данных отмечают:

  • перезапись одними “нулями”;
  • перезапись одними “единицами”;
  • многократная перезапись случайными данными.

Для безопасного удаления файлов можно использовать свободные утилиты schred, wipe и другие. Необходимо иметь ввиду то, что их эффективность может быть сведена на нет при использовании файловых систем сохраняющих в журнале не только метаинформацию, но также и сами данные блоков.

Утилита sgeraser

Процесс многократной перезаписи всего жёсткого диска довольно длительный процесс (сутки). При использовании стандартных утилит типа dd его прерывание не желательно. Если процесс прерван пользователем, то он ещё может указать dd откуда необходимо продолжить работу. Но если процесс прерван чем-то внезапным, то определить где работа закончена — сложно.

В данной статье будет рассмотрена работа с утилитой sgeraser, позволяющей производить как простое “обнуление” (заполнение нулями, что очень желательно перед любым начальным использованием накопителя), так и безопасное удаление данных со всего диска.

Программа использует метод Шнайера для очистки диска: заполнение единицами, пятикратное заполнение случайными данными, заполнение нулями. Генератором псевдослучайных данных является хэш-функция SHA256. Она же используется и для подтверждения целостности метаинформации равномерно распределённой по всему жёсткому диску.

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

Весь жёсткий диск разбивается на группы одного размера. Прогресс работы указывается также в группах. По умолчанию размер одной группы
равен одному гибибайту. Программа считывает и записывает данные на блочное устройство блоками по одному мибибайту.

Подразумевается, что диск который мы хотим очистить будет /dev/sda.

Для запуска процесса безопасной очистки необходимо выполнить следующую команду:

# sgeraser wipe /dev/sda

Во время своей работы, программа будет сообщать прогресс обработки жёсткого диска. Её также можно запустить в фоновом режиме, указав путь к файлу в котором будет обновляться прогресс обработки в глобальной переменной LOG_FILE. Опционально можно указать файл где будет сохранён идентификатор процесса фонового демона в переменной PID_FILE. Кроме того, при задании переменной окружения SHOW_SPEED программа будет выводить скорость обработки каждой группы в блоках в секунду:

# LOG_FILE=/var/log/sgeraser.log PID_FILE=/var/run/sgerase.pid \
     SHOW_SPEED sgeraser wipe /dev/sda

Если процесс обработки будет прерван, то следующая команда проверит состояние жёсткого диска:

# sgeraser chck /dev/sda
WIPE 18 24 10 1048576

Вывод программы показывает что на жёстком диске выполнялась операция безопасного удаления данных и было обработано 18 из 24 групп. Продолжить операцию очистки (с 18-ой группы) можно следующей командой:

# sgeraser cont /dev/sda 18

После обработки всех групп, программа переведёт диск в состояние, так называемой, финализации, заключающейся в удалении всей оставшейся на диске метаинформации.

Несмотря на то, что процесс очистки диска может подходить к концу, это не значит что “вытащив” накопитель можно сразу его применять. В начале диска, в конце и в начале каждой группы располагается криптографическая метаинформация. Можно использовать команду fnlz для её принудительной очистки.

Полнодисковое шифрование

Отличной контрмерой получению нежелательных данных является применение полнодискового шифрования (full disk encryption). Даже не удалённые зашифрованные данные не будут представлять никакой ценности для злоумышленников. Процесс перезаписи всего жёсткого диска — долгий
процесс, однако если потребуется многократно перезаписать небольшую область содержащую ключ шифрования, то проще и доступнее способа
уничтожения данных не найти. Ключ шифрования можно хранить и на внешнем носителе, независимым от основного хранилища.

Удаление данных из оперативной памяти

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

Заставить программное обеспечение “забыть” что-то — также нелёгкая задача.

Когда всем программам не достаточно имеющейся оперативной памяти компьютера, то ядро операционной системы может производить процесс
“сброса” редкоиспользующихся страниц памяти в специальный, так называемый, файл подкачки (swap). В большинстве случаев этот файл также расположен на накопителе. Поэтому процедуру удаления данных необходимо бы применять и к нему.

Есть возможность сообщить ядру операционной системы о том, что определённые страницы памяти нельзя помещать в область подкачки. Однако,
может возникнуть другая проблема: память после завершения работы программы может не очищаться (это же ведь падение производительности системы). Когда происходит программный запрос на выделение памяти, то ядро резервирует участок оперативной памяти, помечает его и возвращает ссылку на данную область. Когда память больше не требуется, то программа сообщает что освобождает её (плохие программы даже и этого не делают — происходит, так называемая, утечка памяти), при этом ядро просто помечает в своих внутренних таблицах что теперь данный участок памяти можно выделить другим процессам. Следующая программа может получить этот же участок памяти, в котором всё ещё будут содержаться те самые удалённые данные.

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

Как показала практика, чипы статической памяти (SRAM) могут продолжительное время сохранять имеющиеся в ней данные, даже после
выключения питания компьютера.

Динамическая память (DRAM) также на практике может сохранять данные достаточное время чтобы её можно было вынуть, вставить в другой компьютер и успешно многое прочесть. Данная атака на ключи шифрования в памяти называется атакой холодной перезагрузки (coldboot attack).

Из-за особенностей устройства планок памяти, данные сохраняются не в равной степени на разных чипах платы. В одних данные могут сохранится дольше — в других заметно меньше. Именно это можно использовать для минимизации возможности получения полезных данных.

Например, хранение небольшого объёма данных (ключи шифрования) можно сделать в виде двух составных частей, по возможности обеспечив их реальное физическое размещение в разных планках и/или чипах памяти. Предварительно необходимо сгенерировать случайный набор данных и сохранить в одном месте оперативной памяти. Затем применить операцию логического исключающего ИЛИ (XOR) над данными которые необходимо сохранить и значением криптографической хэш-функции над случайным набором данных. Время от времени необходимо обновлять эти составные части: сгенерировав новую случайную последовательность, XOR-ить её с предыдущей и обновить вторую составную часть. Для чтения оригинальных данных необходимо прочитать сгенерированные случайные данные, вычислить их хэш и XOR-ить со второй составной частью.

Контрмеры атакам холодной перезагрузки
Рис. 2. Контрмеры атакам холодной перезагрузки

Кроме оперативной памяти, в современных компьютерах часто применяется кэш-память, которая также может содержать остаточные данных. Как правило, время работы программ и переключений их контекстов достаточно мало для гарантированной полной “смены” содержимого кэша. Здесь однако стоит аккуратнее следить за более редко используемыми регистрами процессора, такими как MMX/SSE/и подобными.

Вывод

Удалить данные с носителей без возможности последующего восстановления крайне тяжело.

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

В большинстве случаев, наилучшим компромиссом для обеспечения конфиденциальности является полнодисковое шифрование. Для “удаления”
данных которого достаточно удалить только ключ шифрования.

НОВОСТИ

Последние новости