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

Улучшена проверка емкости PNG-изображений перед шифрованием

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Устранено ограничение на объем вставляемого текста

При вставке в основное текстовое поле большого объема данных (более 64 КБ, что составляло примерно 1700 строк кода), текст обрезался.
Лимит на максимальный объем текста в поле ввода был снят.
Это исправлено путем замены устаревшей команды EM_SETLIMITTEXT на EM_EXLIMITTEXT, что позволяет приложению корректно обрабатывать тексты практически неограниченного размера.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Оптимизация криптографического ядра "SpongeV16"

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

Внутреннее состояние шифра теперь хранится в std::array вместо std::vector.
Это исключает медленные операции выделения памяти в куче (heap allocation) при каждом создании объекта и улучшает локальность данных, что делает работу процессорного кэша более эффективной.
Тесты показывают прирост скорости только от этого изменения примерно на 3-4%.

Ручное преобразование байтов в 32-битные слова заменено на современную комбинацию memcpy и std::byteswap (C++23).
Это позволяет компилятору использовать высокопроизводительные специализированные инструкции процессора (bswap), дополнительно ускоряя обработку данных.

Эффективное управление памятью

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

Ключевые функции были переписаны для работы с существующими буферами памяти через std::span вместо постоянного создания и возврата новых векторов.
Это значительно сокращает количество медленных операций выделения памяти и уменьшает её фрагментацию при длительной работе.

Качество кода и рефакторинг

Низкоуровневые reinterpret_cast при работе с файлом настроек заменены на современный и безопасный std::bit_cast (C++20), что повышает надежность кода.
Некоторые функции, принимавшие ранее std::vector, теперь используют std::span, что делает их более гибкими и эффективными.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Функции кодирования и декодирования Base64 (base64_encode, base64_decode) были полностью переписаны.
Устранены ручные манипуляции с индексами и циклами while, которые могли приводить к ошибкам.
Новая реализация использует современный подход с std::span и циклами for с фиксированным шагом.
Это делает код более читаемым, безопасным и декларативным, так как логика обработки порций данных ("чанков") становится очевидной.

В функции потокового шифрования (stream_cipher_process_V16) стандартный цикл for, выполняющий операцию XOR, был заменен на более современный алгоритм std::ranges::transform.
Тестирование показало, что производительность осталась на прежнем уровне, в пределах статистической погрешности.
Это подтверждает, что исходный цикл for уже был скомпилирован максимально эффективно, и скорость операции была ограничена пропускной способностью памяти, а не самими вычислениями.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Улучшение точности теста производительности

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

Тест создания ключа (KDF):
Перед основным тестом выполняется предварительный расчет на 10% от заданного числа раундов.

Тест скорости шифрования:
Перед замером скорости для каждой конфигурации (например, "Самый быстрый", "Надежный" и т.д.) выполняется тестовое шифрование небольшого блока данных (128 КБ).

Зачем это нужно

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

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

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

Как запустить тест

С помощью горячих клавиш Alt + B.
Нажав на кнопку со значком секундомера (
⏱️
) в главном окне программы.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Повышение производительности функции создания ключа (KDF)

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

Что было сделано

В наиболее нагруженном цикле функции создания ключа было устранено создание временного массива для счетчика на каждой итерации.
За счет использования современных возможностей C++23 (std::byteswap) и более прямого доступа к памяти удалось значительно снизить накладные расходы.

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

Тесты показывают, что производительность функции формирования ключа (KDF) увеличилась примерно на 9%.
Это напрямую ускоряет запуск операций шифрования и расшифровки.

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Полностью переработан и значительно ускорен основной модуль аутентифицированного шифрования DuplexAEAD.
Вместо медленной побайтовой обработки данных теперь используется высокоэффективная пословная обработка (word-by-word), аналогичная той, что применяется в криптографической губке SpongeV16.
Это изменение дало наибольший прирост производительности и напрямую влияет на скорость шифрования и расшифровки больших объемов текста и файлов.

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Перетаскивание текста (Drag and Drop)

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

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

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Шифрование/расшифровка буфера обмена

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

Шифрование: Ctrl + Alt + Enter
Расшифровка: Shift + Alt + Enter

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

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

1. Зажмите клавишу "Alt" на клавиатуре.
2. Нажмите на стандартную кнопку сворачивания окна ( _ ) в заголовке программы.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Шифрование "на лету" с помощью трея и горячих клавиш

Запустите "Бастион" и введите пароль в соответствующее поле.

Сверните программу в трей, нажав на кнопку сворачивания окна, удерживая клавишу Alt.

Напишите текст в любом приложении (мессенджер, браузер, блокнот).
Выделите и скопируйте в буфер Ctrl + C.

Нажмите горячие клавиши Ctrl + Alt + Enter.
"Бастион" заменит текст в буфере обмена на зашифрованный.

Вставьте результат Ctrl + V куда нужно.

Процесс расшифровки так же прост:
скопируйте Ctrl + C зашифрованный текст и нажмите Shift + Alt + Enter.
 
Операция "Чужой среди своих"

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

Как это работает

При активации операции "Бастион" сканирует некритичные папки программ (Program Files, ProgramData, AppData), анализируя десятки потенциальных "укрытий" на предмет их неприметности.

Генерируется имя, имитирующее "соседние" файлы.
Копируется доминирующее расширение файла в этой папке (.dat, .bin, .cfg и т.д.).
Подделывается временная метка (дата создания/изменения), чтобы агент не выделялся на фоне "старожилов".

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

"Бастион" не ведет журнал и не хранит никаких записей о местоположении ваших "агентов".
Это обеспечивает максимальную безопасность, но требует от вас ответственности.

Используйте на свой страх и риск

Надежность маскировки агента напрямую зависит от его "легенды" — папки, в которую он внедрен.
Если эта папка будет удалена или изменена, ваш агент будет безвозвратно утерян.

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

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

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

Зажмите клавишу Shift и, не отпуская ее, перетащите файл или папку в окно "Бастиона", после чего введите пароль.
"Бастион" проведет операцию и предоставит вам "координаты" — полный путь к внедренному агенту.

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Операция "Чужие среди своих"

Главным риском при использовании агентов была уязвимость единственной точки отказа.
Случайное удаление папки-укрытия системной утилитой или самим пользователем приводило к безвозвратной потере зашифрованных данных.

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

Групповое внедрение (3 агента)

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

Для внедрения одного агента, как и раньше, используйте Shift + Перетаскивание.

Для активации группового внедрения используйте новую комбинацию Ctrl + Shift + Перетаскивание.

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

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

Теперь можно задать численность группы внедрения.
При активации протокола (Ctrl + Shift + Перетаскивание) появится запрос на количество агентов для развертывания (от 2 до 7).

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Мы в соцсетях:

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

Похожие темы