Безвозвратное удаление данных с SSD/HDD/Флешки в Linux
Простое удаление файлов или форматирование накопителя не удаляет данные и их можно будет восстановить в дальнейшем. Для надежного удаления необходимо перезаписать весь объем накопителя произвольными (случайными) данными. Для перезаписи и удаления данных с накопителя в операционных системах Linux подойдет утилита dd или shred.
1. Эффективность удаления информации и данных
Гарантированное 100% удаление данных и информации, это только физическое уничтожение накопителя.
Общий принцип безвозвратного удаления данных сводится к перезаписыванию информации, чтобы данные невозможно было восстановить программными или простыми аппаратными средствами. Данный метод удаления данных подойдет для 99.9% пользователей и таких случаев, как: продать жесткий диск, твердотельный накопитель на доске объявлений, отдать на время фотоаппарат с флешкой, сдать usb-флешку с проектом и аналогичные.
Каждый накопитель имеет разные принципы работы, и для некоторых будет недостаточно многократной перезаписи информации:
- USB-флешка, карты памяти (microSD): будет достаточно перезаписать данные в два прохода.
- Жесткий диск (HDD): необходимо будет перезаписывать в четыре прохода, так как на жестком диске остается намагниченность от старых данных.
- Твердотельный накопитель (SSD): безвозвратно удалить данные в несколько проходов могут не дать нужного результата. Контроллер SSD записывает данные в произвольных местах и затрагивает “резервные” области, но для продажи накопителя несколько проходов будет достаточно.
Многие производители SSD выпускают фирменное программное обеспечение, которое позволяет удалить все данные и вернуть SSD в заводской вид. Но эти программы с закрытым исходным кодом, как и прошивки SSD, и они могут удалить только сигнатуру разметки чипов памяти, но саму информацию оставлять.
2. Определение накопителя в системе
Все дальнейшие действия в статье выполняются от root пользователя или с его привилегиями через sudo.
su -
Выводим список всех накопителей в системе Linux
fdisk -l
В моем случае /dev/sda необходимый накопитель с которого необходимо полностью удалить данные.
Внимательно выбирай необходимый накопитель, все данные на нем будут необратимо удалены. И если ошибится, то можно безвозвратно удалить данные с системного раздела или другого накопителя.
3. Удаление данных с накопителя
Накопители во время полной записи могут сильно нагреватся, особенно это касается карт памяти и USB-флешек. Необходимо следить за их температурой, чтобы не произошло повреждение устройства.
3.1. Утилита dd
Утилита dd используется в Linux для копирования, создания файлов и данных, переноса информации, записи образов. Также при помощи нее можно заполнить весь накопитель случайными данными или нулями.
Заполняем весь накопитель случайными данными
dd if=/dev/random of=/dev/sda status=progress
где /dev/sda — накопитель который необходимо очистить.
Заполняем весь накопитель нулями
dd if=/dev/zero of=/dev/sda status=progress
где /dev/sda — накопитель который необходимо очистить.
Накопитель был забит случайными данными и затем все данные были стерты.
Для флешки будет достаточно заполнить случайными данными и затем нулями. Для жесткого диска, твердотельного накопителя нужно повторить процедуру минимум 2-3 раза. Хотя в зависимости от паранойи, можно 10 и более проходов сделать.
3.2. Утилита shred
Утилита shred специально разработана для удаления данных и она позволяет удалить отдельный файл, перезаписывая его несколько раз. Это может быть полезно, если необходимо удалить не все данные с накопителя, а конкретный файл. Когда происходит удаление данных со всего накопителя, утилита shred по умолчанию поступает аналогично команде dd и делает три прохода перезаписи накопителя случайными данными.
Безвозвратно уничтожаем данные с накопителя
shred -v /dev/sda
где /dev/sda — накопитель который необходимо очистить, параметр -v — выводит информацию о процессе уничтожения данных.
Накопитель был успешно перезаписан в три прохода случайными данными.
Уничтожим данные с накопителя, добавив для утилиты shred дополнительные параметры:
shred -v -n 5 -z /dev/sda
- /dev/sda — накопитель, который необходимо очистить;
- параметр -v — выводит информацию о процессе уничтожения данных;
- параметр -n — количество перезаписи накопителя случайными данными;
- параметр -z — в конце заполнить накопитель нулями.
Произошла перезапись накопителя случайными данными 5 раз, и затем, на шестой раз накопитель был заполнен нулями. Этот вариант идеально подходит для жестких дисков.
Если необходимо уничтожить отдельный файл, вместо накопителя необходимо указать путь до файла.
Перезапись в несколько подходов отдельного файла не подойдет для твердотельного накопителя, так как контролер SSD может перезаписывать случайные данные каждый раз в произвольные места. При этом оригинальный файл может где-то остатся в чипах памяти накопителя.
Монтируем накопитель средствами графической рабочей среды (KDE, Xfce, GNOME, …) или через консоль
mount /dev/sda1 /mnt/drive/
где /dev/sda1 — раздел накопителя, /mnt/drive/ — точка монтирования.
Безвозвратно затираем (перезаписываем) файл на накопителе
shred -v -n 10 -u /mnt/drive/private
- /mnt/drive/private — путь до файла, который необходимо затереть;
- параметр -v — выводит информацию о процессе уничтожения файла;
- параметр -n — количество перезаписи файла случайными данными;
- параметр -u — в конце удалить файл через переименование.
Файл был перезаписан 10 раз случайными данными и затем был удален через метод переименования.
4. Заключение
Методы, описанные в данной статье рабочие и они безвозвратно удаляют информацию с накопителя. Для программ восстановления случайно удаленных файлов, метод перезаписывания даст почти 100% гарантию уничтожения всех данных. Тот, кто купит накопитель на доске объявления, не будет обладать знаниями и сложными техническими средствами для восстановления информации. Даже если такая возможность у покупателя будет, то нет никакой гарантии что получится восстановить данные.
Из того что я прочитал в интернете, есть методы получения информации по остаточной намагниченности, рентгенографии чипов памяти и их химическое травление, и еще более сложные. А главное эти методы будут экономически нецелесообразными, так как цена восстановления будет на несколько порядков дороже цены накопителя.
Рекомендую всегда использовать полнодисковое шифрование накопителя, о том как шифровать флешки и накопители читать: Шифрование накопителя или раздела утилитой cryptsetup (LUKS) в Linux. Даже если получится восстановить информацию, она все равно останется зашифрованной.