Стратегии гарантированного уничтожения данных и санация накопителей

3 сентября, 2018, Oleg Afonin
Рубрика: «Безопасность», «Криптография и шифрование»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Уничтожение данных – неминуемая и очень важная часть жизненного цикла практически каждого накопителя. Замена жёсткого диска, карты памяти или SSD накопителя должна предваряться уничтожением хранящейся на них информации. И здесь тот самый случай, когда даже тем, «кому скрывать нечего», стоит призадуматься. На старых жёстких дисках может найтись всё, что угодно – вплоть до паролей к учётным записям. Вот лишь несколько десятков самых нашумевших случаев утечек с жёстких дисков, данные на которых не были должным образом уничтожены: Residual Data on Used Equipment.

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

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

Как уничтожить информацию на жёстком диске

Под термином «жёсткий диск» мы будем понимать классическое устройство с вращающимися пластинами и движущимися электромагнитными головками чтения-записи. Информация, записанная на пластину, так и остаётся на ней вплоть до момента, когда данные будут перезаписаны.

Традиционный способ удаления данных с магнитных дисков – форматирование. К сожалению, при использовании Windows даже полное форматирование диска может привести к разным, временами неожиданным результатам.

Так, если вы собираетесь выбросить компьютер, работающий под управлением Windows XP (честно говоря – похвальное намерение; давно пора!), то при полном форматировании диска система вовсе не запишет нули в каждый сектор. Вместо этого ОС всего лишь произведёт поиск плохих секторов, произведя последовательное чтение данных. Очевидно, что «полное форматирование» диска в Windows XP и более старых версиях системы не приведёт к его очистке.

Правильный подход такой. Если вы собираетесь избавиться от старого компьютера, работающего под управлением Windows XP, форматируйте диск в командной строке, задав параметр /p:<число проходов>. В этом случае команда format перезапишет содержимое диска нулями столько раз, сколько задано параметром <число проходов>. Пример:

format в: /fs:NTFS /p:1

Начиная с Windows Vista, разработчики Microsoft изменили логику работы команды полного форматирования. Теперь форматирование диска действительно перезаписывает данные нулями, и параметр /p становится избыточным.

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

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

 

Для современных накопителях с высокой плотностью записи, объём которых измеряется в терабайтах, подтверждённых случаев успешного применения данного метода нет, а для дисков, использующих «черепичную» запись SMR, подход невозможен в принципе.

В современных накопителях плотность записи данных слишком высока для того, чтобы метод сработал.

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

Алгоритмы гарантированного уничтожения информации

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

Начнём, пожалуй, с широко известного, но неверно интерпретируемого американского стандарта DoD 5220.22-M. Большинство бесплатных и коммерческих приложений, которые поддерживают этот стандарт, ссылаются на старую (действовавшую до 2006 года) его ревизию. Действительно, с 1995 по 2006 «военный» стандарт уничтожения информации разрешал использовать метод перезаписи данных. Стандарт подразумевал трёхкратную перезапись диска. Первым проходом осуществлялась запись любого символа, затем – его XOR-комплимента, и наконец в последнем проходе – случайной последовательности. Например, так:

01010101 > 10101010 > 11011010*

* случайные данные.

В настоящее время военными этот алгоритм не используется; для санации используют физическое уничтожение носителей или их полное размагничивание, что называется, «в горниле ядерного взрыва». Однако для уничтожения несекретной информации этот алгоритм до сих пор применяется в различных государственных учреждениях США.

Канадская полиция уничтожает несекретную информацию при помощи утилиты DSX собственной разработки. Утилита перезаписывает данные нулями, затем – единицами, после чего записывает на диск последовательность данных, в которой закодирована информация о версии утилиты, дате и времени уничтожения данных. Секретная информация всё так же уничтожается вместе с носителем.

Примерно так:

00000000 > 11111111 > 10110101*

* предопределённая кодированная последовательность.

Похожим образом предлагает уничтожать информацию известный специалист в области криптографии Брюс Шнайер. Предложенный им алгоритм отличается от канадской разработки лишь тем, что третьим проходом записывается не предопределённая последовательность данных, а псевдослучайная. В момент публикации этот алгоритм, использующий генератор случайных чисел для перезаписи, подвергался критике как более медленный в сравнении с алгоритмами, которые записывали предопределённую последовательность данных. На сегодняшний (а также вчерашний и позавчерашний) день трудно себе представить процессор, который способна хоть как-нибудь нагрузить такая простая задача, как генерация псевдослучайного массива данных. Однако на момент публикации алгоритма в 1993 году в ходу были процессоры класса i486, работавшие на частотах порядка 20-66 МГц…

Примерно так:

00000000 > 11111111 > 10110101*

* псевдослучайные данные.

В Германии для уничтожения несекретных данных принят несколько другой подход. Стандарт BSI Verschlusssachen-IT-Richtlinien (VSITR) позволяет использовать от 2 до 6 проходов (в зависимости от классификации информации), записывающих поочерёдно псевдослучайную последовательность и её XOR-комплимент. Последним проходом записывается последовательность “01010101”.

Примерно так:

01101101* > 10010010** > 01010101

* псевдослучайная последовательность 1

** XOR-комплимент псевдослучайной последовательности 1

Наконец, в качестве технического курьёза приведём алгоритм Питера Гутмана, предложившего перезапись в 35 проходов. Опубликованный в 1996 году алгоритм был основан на теоретическом предположении уровня остаточного магнетизма в 5%, и уже на момент публикации выглядел не более чем теоретическим изыском. Тем не менее, и этот алгоритм поддерживается многими приложениями для уничтожения информации. Фактически же его использование избыточно и совершенно бессмысленно; даже трёхкратная перезапись информации по любому из описанных выше алгоритмов даст точно такой же результат.

Какой алгоритм использовать? Для современных (не старше 10-15 лет) жёстких дисков однократной перезаписи псевдослучайной последовательностью более чем достаточно для надёжного уничтожения информации. Всё, что делается сверх этого, способно лишь успокоить мнительных пользователей, но никак не уменьшить вероятность успешного восстановления информации.

Приложения для безопасного удаления данных с магнитных носителей

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

Хорошо себя зарекомендовала программа с открытым исходным кодом DBAN. Приложение работает исключительно в режиме загрузки (программа распространяется в качестве загрузочного образа; точнее – самораспаковывающегося архива, который при запуске предложит этот образ создать) и поддерживает большинство существующих стандартов уничтожения данных. Наличие открытого исходного кода позволяет убедиться не только в том, что программа делает именно то, что обещает, но и в том, что для генерации псевдослучайной последовательности использован безопасный генератор случайных цифр.

Darik’s Boot and Nume (BDAN)

Альтернативный вариант – бесплатное, но проприетарное приложение CBL Data Shredder. Приложение разработано специалистами в области восстановления данных, и поддерживает большинство существующих стандартов уничтожения информации. В отличие от десятков и сотен подобных утилит, которыми полны файловые архивы и которые работают исключительно в уже загруженной системе, особенность CBL – возможность создания загрузочной флешки, при помощи которой можно полностью очистить загрузочный диск.

Утилита CBL для уничтожения данных

Диски с аппаратным шифрованием

Иногда информацию нужно удалить быстро, буквально мгновенно. Очевидно, что сделать это на логическом уровне для магнитного диска невозможно: требуется полностью перезаписать весь объём информации, что может занять многие часы работы. Однако решение существует, и довольно давно: это жёсткие диски с шифрованием на аппаратном уровне. Стандартов аппаратного шифрования существует несколько; самые распространённые – Opal и eDrive. Объединяет эти стандарты тот факт, что при включении шифрования все данные на таком жёстком диске будут автоматически зашифрованы при записи и расшифрованы при чтении.

Нас же сейчас интересует другая особенность таких дисков, а именно – мгновенное и безвозвратное уничтожение данных. Реализовано это через стандартную команду ATA Secure Erase, которую можно выполнить через стандартную команду hdparm. Для магнитных накопителей, использующих аппаратное шифрование, команда Secure Erase мгновенно уничтожит ключ шифрования, что приведёт к невозможности расшифровать записанную на диске информацию. При использовании диском стойкого шифрования с ключом длиной от 128 бит расшифровать данные будет совершенно невозможно.

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

Использование hdparm для уничтожения информации: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

Впрочем, hdparm – не панацея. Аппаратное шифрование используется в основном в жёстких дисках, предназначенных для работы в специфических условиях (корпорациях, хостинговых и облачных компаниях). Даже если установить такой жёсткий диск в свой домашний компьютер и включить аппаратное шифрование, существует вероятность, что команда Secure Erase не сработает правильным образом из-за особенностей BIOS. В домашних условиях использовать чисто аппаратное шифрование без поддержки со стороны операционной системы – не самое лучшее и далеко не самое надёжное решение.

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

Принцип работы жёсткого диска с аппаратным шифрованием, если пароль не задан.

 

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

Принцип работы жёсткого диска с аппаратным шифрованием с установленным паролем.

 

Легко догадаться, что уничтожение криптографического ключа делает доступ к данным невозможным. Да, вы сможете считать информацию с диска, но расшифровать её будет невозможно. На таких дисках команда ATA Secure Erase в первую очередь уничтожает именно криптографический ключ, и лишь затем начинает затирать данные.

Такие диски используются практически во всех хостинговых и «облачных» компаниях. Очевидно, что такое шифрование никак не защитит от атак на уже загруженную систему. Его цель – предотвратить несанкционированный доступ к информации при физическом извлечении диска – например, если сервер украдут.

Самое надёжное удаление данных

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

Так, если данные хранятся на зашифрованном разделе BitLocker, то для их моментального уничтожения достаточно всего лишь отформатировать раздел «быстрым» форматированием. Команда format в Windows корректно распознаёт тома BitLocker как в версии для командной строки, так и в варианте с GUI. При форматировании томов BitLocker, даже «быстром», уничтожается криптографический ключ, что делает дальнейший доступ к информации невозможным.

Кстати, а известно ли вам, что отключение шифрования на уже зашифрованном разделе BitLocker не приводит к расшифровке данных? Если отключить шифрование на разделе, который был защищён BitLocker, Windows всего лишь сохранит криптографический ключ для доступа к данным в открытом виде (а не в зашифрованном паролем или данными из модуля TPM). Новые операции записи будут осуществляться в открытом виде, но существующие зашифрованные данные будут сохранены в неизменном, зашифрованном виде – просто доступ к ним будет автоматически предоставляться при помощи открытого криптографического ключа. Если повторно включить шифрование этого раздела, то криптографический ключ будет немедленно зашифрован, а данные, ранее записанные в незашифрованном виде, будут постепенно зашифрованы в фоновом режиме.

Но и здесь не обошлось без проблем. Даже если ключ шифрования от тома BitLocker будет уничтожен в первые секунды, где-то в другом месте может найтись его копия, которую можно использовать для доступа к зашифрованному массиву данных. За примерами далеко ходить не нужно: при автоматической активации шифрования при помощи BitLocker Device Protection ключ восстановления доступа автоматически же загружается в «облако» OneDrive. Таким образом, даже уничтожение ключа шифрования не поможет.

Используете BitLocker? Зайдите в учётную запись Microsoft и пройдите по ссылке https://account.microsoft.com/devices/recoverykey. Проверьте, нет ли там лишних ключей к зашифрованным томам!

Твердотельные накопители

Безвозвратно удалить данные с твердотельного накопителя SSD и проще, и сложнее, чем с магнитного жёсткого диска. Разберёмся, что происходит внутри SSD накопителя при удалении данных.

Микросхемы памяти, использующиеся в SSD накопителях, позволяют быстро считать информацию, не слишком быстро записать данные в чистый блок и довольно медленно записать информацию в область, занятую другими данными. Нас сейчас интересует именно последнее свойство SSD накопителей. Для того, чтобы записать данные в занятую ячейку, контроллер накопителя должен будет сперва очистить (стереть) данные в этой ячейке, и только после этого станет возможной операция записи. Поскольку процесс инициализации ячейки небыстрый, производители разработали ряд алгоритмов, благодаря которым в распоряжении контроллера всегда есть достаточное количество пустых ячеек (так называемый режим overprovisioning).

А что произойдёт, если операционная система захочет записать данные в ячейку с определённым адресом, но по этому адресу уже хранятся какие-то данные? В этом случае контроллер SSD осуществит моментальную подмену адресов: нужный адрес будет назначен другой, пустой ячейке, а занятый блок получит другой адрес или вовсе уйдёт в неадресуемый пул (overprovisioning) для последующей фоновой очистки.

Принцип работы «сборщика мусора» и TRIM

 

В процессе обычного использования на диск записывается гораздо больше данных, чем он способен вместить. Пул свободных ячеек со временем сокращается, и в какой-то момент контроллеру становится доступным лишь пул из неадресуемого пространства «запасной» ёмкости. Эту проблему производители решают при помощи механизма Trim, работающего совместно с операционной системой. Если пользователь удаляет какой-то файл, форматирует диск или создаёт новый раздел, система передаёт контроллеру SSD информацию о том, что определённые ячейки не содержат полезных данных и могут быть очищены.

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

Что произойдёт, если на SSD диске содержится большой объём информации, а контроллеру поступила команда Trim на всё содержимое диска? Дальнейшее никак не зависит от действий пользователя или операционной системы: алгоритмы контроллера начнут очистку ненужных ячеек. А что случится, если пользователь (или злоумышленник) попытается считать данные из ячеек, на которые уже поступила команда Trim, но которые ещё не были физически очищены?

Здесь начинается самое интересное. Современные SSD определяют три возможности; каждая модель диска может работать только в одном из этих режимов.

  1. Non-deterministic Trim: неопределённое состояние. Контроллер может вернуть фактические данные, нули или что-то ещё, причём результат может различаться между попытками (SATA Word 169 bit 0).
  2. Deterministic Trim (DRAT): контроллер гарантированно возвращает одно и то же значение (чаще всего, но не обязательно нули) для всех ячеек после команды Trim (SATA Word 69 bit 14).
  3. Deterministic Read Zero after Trim (DZAT): гарантированное возвращение нулей после Trim (SATA Word 69 bit 5).

Определить, к какому типу относится твой SSD, можно при помощи всё той же команды hdparm –I.

Пример использования:

$ sudo hdparm -I /dev/sda | grep -i trim

           *    Data Set Management TRIM supported (limit 1 block)

           *    Deterministic read data after TRIM


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

С практической точки зрения это означает только одно: сразу после удаления данных (пофайлово, форматированием или переразбивкой разделов) информация станет недоступной для чтения как с компьютера, так и на специальном стенде.

Казалось бы, всё просто? Нет, здесь есть крупный подвох, и даже не один.

Уверены ли вы, что на вашей системе корректно функционирует Trim? Дело в том, что Trim поддерживается на уровне операционной системы начиная с Windows 7 и только при соблюдении ряда условий. Всех условий! Во-первых, диск должен быть подключен напрямую (SATA, NVME); для подавляющего большинства внешних (USB) накопителей Trim не поддерживается (бывают исключения). Во-вторых, Windows поддерживает Trim только для томов NTFS. Наконец, Trim должны поддерживать как драйверы, так и BIOS компьютера. Проверить работоспособность Trim в Windows можно командой:

fsutil behavior query DisableDeleteNotify

Результат:

0 – Trim включен и работает корректно

1 – Trim неактивен

Обратите внимание: для USB накопителей (внешних SSD) Trim с большой вероятностью не будет активен, хоть и может поддерживаться на уровне встроенного в накопитель контроллера.

 

Ещё один момент. Да, остановить процесс фоновой сборки мусора невозможно: если на SSD накопитель подаётся питание, то контроллер будет продолжать уничтожать данные после Trim независимо от обстоятельств. Однако достаточно извлечь из накопителя чипы памяти, и при помощи несложного стенда данные с них можно считать. Да, у исследователя будет сильнейшая головная боль, связанная физической фрагментацией ячеек из-за переадресации блоков и сверх того – логической фрагментации данных. Тем не менее, решить такую проблему всё-таки можно.

Что приводит нас к последнему пункту. Заметная часть ёмкости накопителя (в некоторых моделях – до 10%) отводится под резервный неадресуемый пул. В теории ячейки в этом пуле должны очищаться; на практике из-за многочисленных особенностей реализации и ошибок в прошивках это работает далеко не всегда, и данные могут физически оставаться на месте даже после завершения процесса очистки.

Таким образом, ситуация с удалением данных с SSD выглядит следующим образом.

  1. Можно мгновенно удалить данные со встроенного SSD накопителя, просто отформатировав раздел (используйте NTFS в качестве новой файловой системы). Trim пометит блоки как неиспользуемые, а контроллер постепенно удалит информацию из этих ячеек.
  2. Если всё прошло правильно, то никакими недеструктивными способами добраться до информации будет невозможно. Более того, если злоумышленник подключит диск к другому компьютеру или специализированному стенду – контроллер SSD продолжит методично затирать ячейки.
  3. Если же из SSD извлекут микросхемы, то оставшиеся в ячейках данные удастся считать. Более того, даже если процесс очистки, казалось бы, завершён, в неадресуемом резервном пуле могут остаться ячейки, в которых содержатся «удалённые» данные.

Как полностью и надёжно уничтожить содержимое SSD накопителя? К сожалению, это не один, а два разных вопроса. Полностью очистить содержимое SSD можно при помощи уже знакомой команды ATA Secure Erase, которую можно выдать через hdparm. А вот «надёжно» — увы, остаётся лишь надеяться на правильную реализацию secure erase разработчиками контроллера. Практика показывает, что в некоторых случаях secure erase не производит полной очистки ячеек из резервного пула (из-за ошибок в прошивке). Таким образом, гарантию даст исключительно использование криптоконтейнера: если удаляется криптографический ключ, расшифровать остатки содержимого будет практически невозможно. Но и здесь есть свои «но»: о депонированных ключах мы уже говорили. Организации, работающие с секретной информацией, и вовсе не признают иных способов очистки SSD, кроме физического уничтожения носителя.

Заключение

Безвозвратно удалить информацию непросто, а сделать это быстро – ещё сложнее. И если магнитный жёсткий диск при наличии свободного времени можно очистить целиком и полностью, то в случае с SSD дела обстоят куда более запутанно. Надеемся, что эта статья поможет выработать оптимальную стратегию уничтожения информации.

 


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
НАШИ НОВОСТИ