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

Исследования

Самое известное исследование про флеш память - Reliably Erasing Data From Flash-Based Solid State Drives (PDF). Открыв документ, прочитаем интересные результаты.

Например, простое удаление файла на флешке без контроллера со сбором мусора позволяет восстановить его в более чем 99% случаев:

Перезапись одного файла даже несколько раз тоже не гарантирует его полное уничтожение на носителях с флеш-памятью.

Что ещё более удивительно, перезапись пустого места в файловой системе 100 раз (!) тоже совсем не гарантирует уничтожение удалённых файлов:

Как же тогда безвозвратно удалить что-то с SSD? Ответ в той же статье:

In most cases, overwriting the entire disk twice was sufficient to sanitize the disk, regardless of the previous state of the drive. There were three exceptions: about 1% (1 GB) of the data remained on Drive A after twenty passes. We also tested a commercial implementation of the four-pass 5220.22-M standard [12] on Drive C. For the sequential initialization case, it removed all the data, but with random initialization, a single fingerprint remained.

То есть 2 перезаписей носителя полностью хватило в большинстве случаев, чтобы стереть все данные, ниже таблица с результатом:

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

Теперь затронем магнитные носители. Смотрим Википедию, Data erasure/Number of overwrites needed:

Data on floppy disks can sometimes be recovered by forensic analysis even after the disks have been overwritten once with zeros (or random zeros and ones).[27]

This is not the case with modern hard drives:

  • According to the 2014 NIST Special Publication 800-88 Rev. 1, Section 2.4 (p. 7): "For storage devices containing magnetic media, a single overwrite pass with a fixed pattern such as binary zeros typically hinders recovery of data even if state of the art laboratory techniques are applied to attempt to retrieve the data."[25] It recommends cryptographic erase as a more general mechanism.

  • According to the University of California, San Diego Center for Magnetic Recording Research's (now its Center for Memory and Recording Research) "Tutorial on Disk Drive Data Sanitization" (p. 8): "Secure erase does a single on-track erasure of the data on the disk drive. The U.S. National Security Agency published an Information Assurance Approval of single-pass overwrite, after technical testing at CMRR showed that multiple on-track overwrite passes gave no additional erasure."[28] "Secure erase" is a utility built into modern ATA hard drives that overwrites all data on a disk, including remapped (error) sectors.[29]

  • Further analysis by Wright et al. seems to also indicate that one overwrite is all that is generally required.[30]

Итак, для HDD достаточна перезапись 1 раз

Общий случай

Это, как ни странно, подумать об удалении заранее и шифровать носители информации. Это могут быть как встроенные в ОС алгоритмы (BitLocker, FileVault, LUKS), так и сторонние утилиты, как VeraCrypt, или программы с поддержкой, например, gocryptfs.

Флеш-память без контроллера со сбором мусора (флешки и карты памяти)

Полностью перезаписываем рандомом 2 раза (см. главу Исследования)

shred -v -n 2 /dev/X

где X - Ваш диск, например, sda

shred - утилита с самой быстрой перезаписью рандомом из известных мне, поэтому здесь и далее используем её

SATA SSD и HDD

Перепечатано из ATA WIKI, смотрите оригинальную статью для дополнительной информации.

Воспользуемся ATA Enhanced Secure Erase через утилиту hdparm, что также затронет данные на плохих секторах. Может занять как несколько секунд, так и несколько часов, в зависимости от вида носителя. Например, более 3 часов на 500GB 5400RPM HDD.

  1. Смотрим вывод hdparm -I /dev/X, где X здесь и далее - Ваш диск (например, sda). Под Security должно быть not enabled и frozen:

Security: 
       Master password revision code = 65534
               supported
       not     enabled
       not     locked
               frozen
       not     expired: security count
               supported: enhanced erase
       2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
  1. Переводим компьютер в режим сна и включаем обратно. Теперь видим not frozen

  1. Ставим пароль на диск, здесь он Eins:

hdparm --user-master u --security-set-pass Eins /dev/X

Вывод:

security_password="Eins"

/dev/sdd:
Issuing SECURITY_SET_PASS command, password="Eins", user=user, mode=high

Теперь hdparm -I /dev/X кроме not frozen покажет ещё и enabled:

Security: 
       Master password revision code = 65534
               supported
               enabled
       not     locked
       not     frozen
       not     expired: security count
               supported: enhanced erase
       Security level high
       2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
  1. Отправляяем команду ATA Secure Erase Enhanced:

    hdparm --user-master u --security-erase-enhanced Eins /dev/X

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

HDD, альтернативный способ

Перезаписываем рандомом 1 раз (см. главу Исследования). Обратите внимание, что такая перезапись не затронет переназначенные сектора:

shred -v -n 1 /dev/X

Где X - ваш диск (например, sda)

В случае с HDD можно затирать и отдельные файлы, и даже пустое место. Для первого можно использовать ту же утилиту shred, для второго можно временно создать виртуальный большой файл командой fallocate, а затем перезаписать его. Обратите внимание, что в таком случае есть риск остатков следов объектов в файловой системе.

NVMe SSD

Перепечатано из Arch Wiki, смотрите оригинальную статью для дополнительной информации.

Воспользуемся утилитой nvme-cli и проверим поддержку команд format и sanitize:

nvme id-ctrl /dev/nvme0 -H | grep "Format |Crypto Erase|Sanitize"

Вывод:

  [1:1] : 0x1	Format NVM Supported
  [29:29] : 0	No-Deallocate After Sanitize bit in Sanitize command Supported
    [2:2] : 0	Overwrite Sanitize Operation Not Supported
    [1:1] : 0x1	Block Erase Sanitize Operation Supported
    [0:0] : 0x1	Crypto Erase Sanitize Operation Supported
  [2:2] : 0x1	Crypto Erase Supported as part of Secure Erase
  [1:1] : 0	Crypto Erase Applies to Single Namespace(s)
  [0:0] : 0	Format Applies to Single Namespace(s)

Если у Вас более новый диск, поддерживающий стандарт NVMe 1.3, воспользуйтесь второй командой:

-a <action>
--sanact=<action>
    Sanitize Action
    000b - Reserved
    001b - Exit Failure Mode
    010b - Start a Block Erase sanitize operation
    011b - Start an Overwrite sanitize operation
    100b - Start a Crypto Erase sanitize operation

nvme sanitize /dev/nvme0 -a 0x02

Или

nvme sanitize /dev/nvme0 -a 0x04

Для проверки прогресса можно выполнить

nvme sanitize-log /dev/nvme0

Вывод:

Sanitize Progress                      (SPROG) :  655
Sanitize Status                        (SSTAT) :  0x4
Sanitize Command Dword 10 Information (SCDW10) :  0x4
Estimated Time For Overwrite                   :  4294967295 (No time period reported)
Estimated Time For Block Erase                 :  174
Estimated Time For Crypto Erase                :  34
Estimated Time For Overwrite (No-Deallocate)   :  0
Estimated Time For Block Erase (No-Deallocate) :  0
Estimated Time For Crypto Erase (No-Deallocate):  0

Вывод после завершённой операции:

Sanitize Progress                      (SPROG) :  65535
Sanitize Status                        (SSTAT) :  0x101
Sanitize Command Dword 10 Information (SCDW10) :  0x4
Estimated Time For Overwrite                   :  4294967295 (No time period reported)
Estimated Time For Block Erase                 :  174
Estimated Time For Crypto Erase                :  34
Estimated Time For Overwrite (No-Deallocate)   :  0
Estimated Time For Block Erase (No-Deallocate) :  0
Estimated Time For Crypto Erase (No-Deallocate):  0

Для более старых дисков можно попробовать nvme format:

nvme format /dev/nvme0 -s 1 -n 1

Где -s 1 - User Data Erase, а -s 2 - Cryptographic Erase

Прочие SSD и флешки с контроллером со сбором мусора

blkdiscard --secure /dev/device

Или без --secure при отсутствии данной опции. Это пошлёт команду TRIM на все сектора накопителя.

Пустое место на SSD

В случае, если полностью перезаписать SSD в настоящее время невозможно, попробуйте подать команду TRIM только на пустое место - например, через fstrim -v -a на Linux, Оптимизацию диска на Windows и перезагрузку на macOS. Повторюсь, что TRIM не гарантирует уничтожение информации.

На этом всё, спасибо, что прочитали!

Комментарии (8)


  1. olegkrutov
    09.11.2023 23:07
    +3

    В каком смысле "флэшки без контроллера"? Контроллер там есть всегда, если не считать чего-то более раннего, чем древности типа SmartMedia, и то он там мог быть.


    1. Rio
      09.11.2023 23:07

      Я когда слышу "флэшка без контроллера" сразу представляю NOR-flash чип на локальной шине. Или NAND, но с ними возни слишком много, когда они голые бесконтроллерные, и с надёжностью туго. А NOR-ки простые, неубиваемые, надёжные, и часто во встроенных системах используются как загрузочные флешки, например. Впрочем, в таких системах и методы из статьи не прокатят, потому что если в ТЗ прописана фича полного уничтожения данных, то время на этот процесс ограничено секундами или, в лучшем случае минутами, а не часами. И там что-то интереснее придумывать нужно. Каким-то образом выжигать чип физически, а не перезаписывать данные "по правилам".


    1. gfx_pro Автор
      09.11.2023 23:07

      Вы правы, я добавил "со сбором мусора", спасибо


  1. anzay911
    09.11.2023 23:07

    Подстригаю разные VHD с помощью sdelete.exe из Sysinternals Suite. Только пришлось раскопать версию 1.61, а то 2.0 зависает.


  1. Vaitek
    09.11.2023 23:07
    +7

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


  1. MarvinD
    09.11.2023 23:07

    Не знаю, как у кого, но полное стирание флешки (в windows с помощью Eraser, в Linux dd if=/dev/random of=/dev/sdb bs=512 с последующим форматированием) пока не подводило. Пробовал после этого что-нибудь восстановить - не смог. А вот с SSD только шифрованием спастись можно, согласен.


    1. vviz
      09.11.2023 23:07

      if=/dev/random - 64 гига наверно пару дней затираете? не проще if=/dev/zero, ну или уж if=/dev/urandom. и в чем отличие dd на SSD от флэшки?


      1. SergeyMax
        09.11.2023 23:07

        не проще if=/dev/zero

        Автор в статье же объясняет, почему не проще)