Повышение надежности функции уничтожения файлов
Теперь протокол уничтожения включает в себя усечение файла до нулевого размера после его полной перезаписи случайными данными.
Это действие является явным и недвусмысленным сигналом для операционной системы и контроллера SSD, который с большой вероятностью инициирует команду TRIM.
Команда TRIM помечает физические ячейки памяти, где ранее хранились данные, для полной аппаратной очистки.
Полный путь уничтожения файла в "Бастионе"
Шаг 1: Подготовка и снятие защиты
Программа снимает с файла все атрибуты, такие как "Только для чтения" или "Скрытый", чтобы гарантировать полный доступ для всех последующих операций.
Шаг 2: Уничтожение временных меток
Программа перезаписывает метаданные файла, связанные со временем: дату создания, дату последнего изменения и дату последнего доступа.
Все эти метки устанавливаются в нулевое значение (00:00:00, 1 января 1601 г.).
Это первый удар по криминалистической информации, который не позволяет узнать, когда файл был создан или использовался.
Шаг 3: Зачистка альтернативных потоков данных (ADS)
В файловой системе NTFS файлы могут иметь скрытые "карманы" данных, называемые альтернативными потоками.
Вредоносное ПО часто использует их для сокрытия своей активности.
"Бастион" находит все такие потоки, связанные с файлом, и уничтожает их содержимое с помощью трехпроходной перезаписи: сначала нулями (0x00), затем единицами (0xFF) и, наконец, криптографически стойкими случайными данными.
Это гарантирует, что никаких скрытых следов не останется.
Шаг 4: Полная перезапись содержимого
Это ключевой этап, который выполняется в три прохода для максимальной надежности:
Проход 1 (Нули): Весь файл, от первого до последнего байта, перезаписывается нулевыми байтами (0x00).
Проход 2 (Единицы): Затем файл полностью перезаписывается байтами 0xFF.
Проход 3 (Усиленные случайные данные): На последнем проходе содержимое перезаписывается криптографически стойкими случайными данными.
Для максимальной непредсказуемости этот процесс состоит из двух этапов:
Сначала запрашиваются данные у системного генератора (BCryptGenRandom).
Затем эти данные дополнительно перемешиваются с помощью криптографической губки SpongeV16 вместе с энтропией (случайной информацией), собранной из различных источников системы (например, списки процессов, таймеры высокого разрешения).
После этого шага исходное содержимое файла физически уничтожено (на HDD) или логически замещено (на SSD).
Шаг 5: Усечение файла и вызов TRIM (ключевое улучшение для SSD)
Сразу после перезаписи содержимого "Бастион" выполняет операцию усечения файла до нулевого размера.
Этот шаг имеет решающее значение для SSD: он явно сообщает файловой системе, что все кластеры, которые занимал файл, теперь свободны.
Это, в свою очередь, с большой вероятностью инициирует отправку команды TRIM контроллеру SSD.
Получив команду TRIM, контроллер накопителя понимает, что физические ячейки, где хранились перезаписанные данные (и, возможно, даже оригинальные данные до перезаписи), больше не нужны и могут быть полностью очищены на аппаратном уровне во время следующего цикла "сборки мусора".
Шаг 6: Маскировка и сокрытие (переименование)
Теперь, когда файл пуст, программа начинает уничтожать его "личность". Файл трижды переименовывается в случайные, ничего не значащие имена (например, shd_A8F1.tmp), генерируемые в системной временной папке.
Эта операция перезаписывает запись о файле в главной файловой таблице (MFT), стирая его первоначальное имя.
С точки зрения системы, файл Секретные_Планы.docx перестает существовать, вместо него появляется временный файл-пустышка.
Шаг 7: Окончательное удаление
После всех этих шагов программа удаляет последний оставшийся файл — пустой, с бессмысленным именем и нулевыми временными метками.
Теперь даже если восстановить саму запись об удалении, она не будет содержать никакой полезной информации.
Если выбрана папка
Если пользователь выбрал для уничтожения целую папку, "Бастион" рекурсивно выполняет все вышеописанные шаги для каждого файла и каждой вложенной папки, двигаясь изнутри наружу.
После того как все содержимое будет уничтожено, пустая структура папок также удаляется.
В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg