Бастион V16 - Шифрование текста

Всем привет!

Хочу поделиться программой Бастион V16.

Архитектура и ключевые особенности

В основе лежит SpongeV16 — специально разработанная реализация криптографической губки.
Она оперирует 512-битным (16 слов по 32 бита) внутренним состоянием и использует уникальную функцию-перестановку для обработки данных.
Это единое ядро используется как для шифрования, так и для всех сопутствующих криптографических задач.

Для получения ключа из вашего пароля используется итеративная KDF (Key Derivation Function).
Она смешивает пароль со случайно генерируемой солью (salt, 16 байт) и выполняет заданное количество раундов (по умолчанию 20 000).
Этот процесс является самой вычислительно затратной частью и создан таким намеренно — он делает подбор пароля (брутфорс) или атаки по словарю невероятно медленными и непрактичными для злоумышленника.

Целостность данных гарантируется с помощью HMAC (Hash-based Message Authentication Code), построенного на базе той же губчатой функции SpongeV16.
Это своего рода "цифровая восковая печать", которая немедленно покажет, если зашифрованное сообщение было изменено или повреждено.
Это защищает от атак на изменение зашифрованного сообщения (malleability attacks).

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

Магия в 8 шагов

Вот что происходит "под капотом" после каждого нажатия на кнопку «Шифровать»:

Программа проверяет, что пароли совпадают и есть текст для шифрования.
Затем она генерирует новую случайную соль (16 байт).

Программа берет ваш пароль, смешивает его с солью и прогоняет через криптографический "блендер" SpongeV16 заданное количество раундов.
Это превращает простой пароль в чрезвычайно стойкий и длинный мастер-ключ.

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

Используя ключ шифрования и еще один случайный элемент — nonce (16 байт), программа превращает ваш текст в нечитаемый шифротекст.
Nonce гарантирует, что даже при шифровании одного и того же текста одним паролем результат всегда будет уникальным.

Все технические данные, необходимые для расшифровки, упаковываются в один двоичный пакет: количество раундов, соль, nonce и сам шифротекст.

Двоичный пакет кодируется в текстовый формат Base64.
Это позволяет безопасно хранить его в текстовых файлах, копировать и передавать, не боясь повредить данные.

Используя ключ аутентификации, программа создает уникальную цифровую подпись (HMAC) для всей Base64-строки.

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

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg

image.webp
 
Добавлено предупреждение при переключении со светлой темы на тёмную, если в тексте присутствуют цветные шрифты.

Почему это происходит

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

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 

Вложения

  • Без имени-1.webp
    Без имени-1.webp
    34,3 КБ · Просмотры: 1 500
Восстановлено стандартное поведение клавиши Del.
Теперь она корректно удаляет символы справа от курсора в основном редакторе, поле ответа Телеграм и полях ввода пароля, даже если текст не выделен.

В режиме ввода кодовой фразы (Alt + P или правая кнопка мыши по "Генерировать пароль") теперь можно нажать Enter для мгновенной генерации пароля.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Переработан механизм отправки файлов и аудиосообщений в Телеграм

Данные теперь передаются в curl напрямую через стандартный ввод (STDIN) из оперативной памяти (--data-binary @-).
Полностью исключено создание временных файлов на диске в процессе шифрования и отправки, что предотвращает возможность восстановления данных средствами форензики (Data Remanence).

Добавлена строгая валидация поля Proxy

Запрещено использование спецсимволов (", &, |, <>), которые могли бы нарушить целостность командной строки.

Потокобезопасность

Флаги состояния аудиосистемы (g_isRecording, g_isPlaying, g_isPaused) переведены на std::atomic<bool>.
Это устраняет состояние гонки (race conditions) между интерфейсом и потоками драйвера, повышая стабильность работы при быстрой записи/воспроизведении.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Доработан алгоритм экстренного уничтожения данных

В режим "Паника" (Красная кнопка) добавлена команда принудительного отключения питания как финальный этап.

После перезаписи ОЗУ случайными данными физическое отключение питания ускоряет разрядку конденсаторов в чипах памяти.
Это сводит к минимуму риск восстановления данных методом "Cold Boot Attack" (атака через заморозку памяти) и гарантирует, что система переведена в состояние полного покоя.

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 

Вложения

  • Безымянный.webp
    Безымянный.webp
    19,6 КБ · Просмотры: 1 486
Реализована и внедрена отдельная функция SecureBurnStack с атрибутом NOINLINE.
Вместо локальной очистки массива теперь используется рекурсивный алгоритм (глубиной 64 уровня), который перезаписывает кадры стека и локальные переменные нулями, предотвращая восстановление данных из остаточной памяти стека.

В режиме паники программа теперь использует стратегию полного исчерпания памяти: циклически выделяются и перезаписываются паттерном 0xAA блоки памяти (от 64 МБ до 4 КБ) до тех пор, пока системе есть что выделить.
Это эффективнее удаляет остаточные данные из "кучи" (heap) других процессов или системы.

Изменена логика работы с потоком Телеграм (g_telegram_thread).
В режиме паники поток теперь "отсоединяется" (detach), а не ожидается (join), что позволяет сэкономить драгоценные миллисекунды перед выключением компьютера.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Оптимизация и усиление шредера

Внедрено циклическое переименование уничтожаемых папок (3 прохода) случайными именами для обфускации записей MFT.

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

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
выложи пж на гитхаб
 
Улучшена функция массового уничтожения файлов (DoShredMultipleFiles)

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

Количество рабочих потоков адаптируется под количество уничтожаемых объектов, избегая создания избыточных потоков для малого числа файлов.

Использование std::atomic для распределения задач обеспечивает корректную обработку списка без пропусков и дублирования.

Улучшена функция одиночного уничтожения (PerformSecureShred)

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

Реализован механизм повторных попыток (retry loop) с нарастающей задержкой при финальном удалении файлов и папок.
Это решает конфликт с антивирусами и индексаторами Windows, которые могут кратковременно удерживать файл после его перезаписи, предотвращая появление "фантомных" файлов размером 0 байт и неудаляемых пустых папок.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg

qwerty120, приветствую!

Вполне достаточно облака Яндекс и Гугл
drive.google.com/drive/folders/1FLIugY9270Ct8ho9orWH3z2H08XYHi4R
 
Улучшена работа с RTF в тёмной теме

При расшифровке текста с цветовым форматированием теперь появляется предупреждение.
Пользователь может выбрать: сбросить цвета для обеспечения читаемости или сохранить оригинальное форматирование (даже если текст сливается с тёмным фоном).

Для корректного просмотра цветного текста рекомендуется расшифровывать данные в светлой теме.

Исправлена вставка текста

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 

Вложения

  • Без имени-1.webp
    Без имени-1.webp
    46 КБ · Просмотры: 1 490
Исправлена ошибка обработки цветного текста при смене темы

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Реализован алгоритм SecureHeapSanitize для борьбы с остаточными данными в куче

Стандартные контейнеры C++ (как std::string или std::vector) при переаллокации могут оставлять копии данных в памяти, помеченной как "свободная", но физически не перезаписанной.
Функция выполняет серию быстрых аллокаций с флагом HEAP_ZERO_MEMORY, заставляя менеджер памяти Windows (LFH) отдать недавно освобожденные блоки под новые нужды и немедленно занулить их.
Атака ведется только на блоки размеров 16–256 байт (типичный размер криптографических ключей и парольных фраз), что делает очистку мгновенной и стабильной.

Данное решение (SecureHeapSanitize) является эффективным методом зачистки в рамках текущей архитектуры на стандартных STL контейнерах.
Если вы планируете использовать код в своих разработках, существует способ решения проблемы "призраков" в памяти — использование кастомных аллокаторов (Custom Allocators).

Вместо:
std::wstring password;

Рекомендуется использовать структуру с аллокатором, который выполняет RtlSecureZeroMemory при деаллокации:
std::basic_string<wchar_t, std::char_traits<wchar_t>, SecureAllocator<wchar_t>> secure_password;

Это предотвратит попадание чувствительных данных в стандартную кучу и исключит необходимость её последующего "скрабинга".

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Оптимизирована функция SecureHeapSanitize для более надежной защиты от forensic-анализа RAM

Переход от случайной/простой аллокации к детерминированной стратегии "ковровой" очистки.
Добавлен массив small_sizes для гарантированного попадания в корзины (buckets) аллокатора Windows, содержащие ключи и строковые данные (16–512 байт).
Добавлен массив io_sizes для затирания крупных буферов чтения/записи (1 КБ – 64 КБ).
Увеличено количество проходов для мелких блоков (LFH) для повышения вероятности перезаписи.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Обновлена функция шредера PerformSecureShred

Заменена логика перемещения в GetTempPath на std::filesystem для работы в родительской директории файла.

Внедрен флаг MOVEFILE_WRITE_THROUGH для обхода кэширования записи при переименовании.
Это заставляет файловую систему немедленно сбрасывать изменения метаданных на диск, затирая старые имена файлов в Master File Table (MFT).

Переход на std::mt19937 и расширенный алфавит (alphanumeric) с плавающей длиной (3-16 символов).
Вместо шаблонных имен (.tmp) теперь генерируются криптографически стойкие случайные имена, затрудняющие анализ.

Добавлена защита от блокировки удаления папок с повторными попытками сброса атрибутов.
Реализован алгоритм многократного (5) переименования папок перед финальным удалением.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Оптимизирован алгоритм экстренного завершения работы в режиме паники (красная кнопка)

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

Реализован каскадный механизм резервного выключения:
в случае отказа Native API срабатывает агрессивный вызов ExitWindowsEx с флагом EWX_FORCEIFHUNG и системная команда shutdown.exe /p /f.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Добавлена функция ForceTerminateProcess
Принудительно завершает процессы, блокирующие доступ к файлам перед их уничтожением.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Обновлена логика параметра "ram_cleanup_percentage": 100" в файле settings.txt

При значении 100 (по умолчанию):

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

При значении 99 или меньше используется "Вежливый" метод:
Программа очищает и перезаписывает только тот объем памяти, который система помечает как "свободный", оставляя небольшой запас для стабильной работы ОС и других приложений.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Интересное наблюдение: гематрия названия "Бастион V16" даёт число 112

112 — Экстренная помощь и защита

Самая очевидная ассоциация в современном мире — это телефон службы спасения 112 (действует в России, Европе и многих других странах).

Символизм
Это сигнал "SOS", последняя надежда и помощь в критической ситуации.

Всех с наступающим Новым годом!

Безымянный.webp
 
Улучшена функция принудительного завершения процессов ForceTerminateProcess

Добавлена динамическая загрузка Rstrtmgr.dll (Windows Restart Manager) и вызов RmShutdown для освобождения файловых дескрипторов и завершения процессов, блокирующих целевой файл.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Улучшен переход в режим генерации пароля из кодовой фразы (Alt + P или ПКМ по кнопке "Генерировать пароль").

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
"Цифровой тайник" (Digital Dead Drop)

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

Как использовать

  • Введите текст и зашифруйте его.
  • Нажмите средней кнопкой мыши (колесом) по кнопке "Отправить".

Программа автоматически попытается загрузить шифр на один из специализированных Pastebin-сервисов (clbin.com, 0x0.st или termbin.com).
При успешной загрузке вы получите короткую ссылку, которая автоматически скопируется в буфер обмена.

Что такое Pastebin-сервисы

Pastebin (Пэйстбин) — это веб-сервис для хранения фрагментов текста.
В отличие от обычных облачных хранилищ, консольные pastebin-сервисы (которые использует Бастион) не требуют регистрации, не ведут логов и созданы для быстрой и анонимной передачи данных.

Сценарии применения

1. Если Телеграм, почта или другие мессенджеры заблокированы в сети или временно недоступны, HTTP-запросы к этим сервисам обычно остаются открытыми.
Это ваш резервный канал связи.

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

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

Загруженные примеры

https://0x0.st/P-EU.txt
https://0x0.st/P-E0.txt

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →