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

Переработан режим "Маска"

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

1. Режим "Стелс" (Маска ВКЛЮЧЕНА)

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

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

При шифровании файлов, папок или создании "агентов", вместо явного заголовка (B16B) используется динамический маркер, вычисляемый на основе соли и nonce.
Файл не имеет никаких опознавательных знаков "Бастиона".

2. Режим "Открытый" (Маска ВЫКЛЮЧЕНА)

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

При шифровании текста применяется стандартное одинарное кодирование Base64.
Выходная строка является классическим Base64-текстом, который легко распознается.

При шифровании файлов, папок или создании "агентов", зашифрованный файл сохраняется в бинарном формате с добавлением в самое начало статичного, хорошо видимого маркера B16B.
Любой зашифрованный файл можно мгновенно идентифицировать как файл "Бастиона", просто открыв его в текстовом или HEX-редакторе.

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

Если заметите какие-то недоработки/баги, пожалуйста, сообщите.
 
Более интеллектуальный поиск мест внедрения агентов

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

Это делает процесс внедрения более быстрым, логичным и повышает качество маскировки.

Напоминание

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

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

Функции DoEncryptFile и DoEncryptFolder были объединены в PerformEncryptionAndSave, что позволило устранить дублирование кода и унифицировать обработку файловых объектов.

Общая логика инициализации состояния (InitializeAeadState) была вынесена из функций Encrypt_AEAD_V16 и Decrypt_AEAD_V16, что обеспечивает симметричность операций и упрощает сопровождение кода.

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

Скачать можно в облаках

 
Оптимизация производительности ядра шифрования

Критически важная часть криптографической функции (S-Box слой в пермутации SpongeV16) была переписана с использованием набора инструкций SSE (Streaming SIMD Extensions).
Это позволило векторизовать вычисления, обеспечив параллельную обработку данных и значительное ускорение всех криптографических операций.

Скорость создания ключа из пароля (KDF):
Производительность увеличена в среднем на 21%.

Скорость шифрования/расшифровки данных:
Пропускная способность возросла в среднем на 10%.

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

После внедрения ручной SSE2-оптимизации для ускорения основной криптографической функции было замечено неоднозначное поведение:

1. На старых процессорах без поддержки AVX производительность значительно увеличилась, как и ожидалось.
2. На современных процессорах с поддержкой AVX/AVX2 производительность упала и стала ниже, чем у оригинальной версии кода без явных SSE2-инструкций.

Причина

Современные компиляторы (в частности, Clang) способны самостоятельно и очень эффективно векторизовать (оптимизировать) стандартный C++ код для новейших архитектур (AVX2).
Ручная SSE2-оптимизация в этом случае мешает компилятору, создавая накладные расходы на переключение между наборами инструкций и используя менее эффективные 128-битные регистры там, где могли бы использоваться 256-битные.

Решение

Внедрена система динамического выбора кода во время выполнения:

1. При первом вызове криптографической функции программа выполняет однократную проверку возможностей центрального процессора.
2. Критерием выбора стал флаг поддержки AVX2, так как он является надежным маркером современных и производительных архитектур.
3. Если процессор поддерживает AVX2, программа будет использовать оригинальную, не векторизованную вручную версию кода, доверяя оптимизацию компилятору.
4. Если процессор не поддерживает AVX2, программа будет использовать быструю SSE2-версию, которая на таком оборудовании дает максимальный прирост.

Результат

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

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

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

В интерфейс добавлена кнопка "Телега" (горячая клавиша Alt + T), открывающая окно настроек.
В этом окне вы можете указать токен бота и ID чата для подключения.

Чекбокс "Включить интеграцию с Telegram" позволяет переключаться между двумя режимами работы:

Интеграция включена:
Кнопка "Отправить" отправляет сообщения в Telegram.
"Бастион" автоматически принимает сообщения из указанного чата.

Интеграция выключена:
Кнопка "Отправить" работает по-старому, используя почтовый клиент (MAPI).

Как получить Токен Бота и ID Чата

За создание ботов отвечает официальный помощник Telegram по имени @BotFather.

В строке поиска в Telegram введите @BotFather и выберите бота с синей галочкой верификации.
Откройте чат с ним и нажмите кнопку "Запустить" внизу чата, а затем отправьте ему команду:
/newbot

Дайте боту два имени

Сначала имя для отображения:
BotFather попросит придумать имя для бота (например, Мой личный шифр).
Это имя будут видеть пользователи.

Имя пользователя (username):
Теперь придумайте уникальное имя пользователя.
Оно должно быть на английском и обязательно заканчиваться на _bot (например, MySecretAgent_bot).

Скопируйте Токен

После успешного создания BotFather пришлет сообщение с токеном доступа.
Это длинная строка из цифр и букв.

Получение ID Чата

Найдите в поиске Telegram своего только что созданного бота по его username (например, @MySecretAgent_bot).
Откройте с ним чат и нажмите кнопку "Запустить".

Теперь в поиске Telegram найдите другого бота:
@userinfobot.

Запустите его, он пришлет сообщение с вашим ID.

Как ввести данные в "Бастион"

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

Вставьте скопированный токен в верхнее поле "Bot Token".
Вставьте ваш ID в нижнее поле "Chat ID".

Поставьте галочку в чекбокс "Включить интеграцию с Telegram".

Нажмите "OK", чтобы сохранить настройки.

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

Для обеспечения работы с Телеграм, "Бастион" теперь поставляется в виде архива.
Внутри, помимо самой программы, находятся файлы, необходимые для сетевого взаимодействия (curl.exe, libcurl-x64.dll, curl-ca-bundle.crt).

Для корректной работы Телеграм-функций эти файлы должны находиться рядом с "Бастионом".

Режим чата и пакетная расшифровка

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

Кнопка "Расшифровать" стала умнее

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

Вы можете получать несколько шифров в разных сообщениях:

Передай дальше
mIzjNp/qhfT6RPidAlHchNrCvFjsWJGy4OJQaJgnvP7/Z2Ru0diKPcRyaodKN83n4bSxqHyqmklmqIrpTBCl

Сделай сегодня
mOyau70Y3duLIE/ZRvhe5ae7FbUWQ7BT8UcGF4NhYlEerUwJlpmnjxvVo6e+oIg/b5i9Xfvz+BQvkKvu


После ввода пароля и нажатия "Расшифровать" оба шифра будут расшифрованы.

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Добавлено кратковременное уведомление "Ушло", которое появляется после успешной отправки сообщения в Телеграм для подтверждения доставки на сервер.

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

В настройки интеграции с Телеграм добавлено поле: "Разрешенные User ID (белый список)".

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

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

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

Попросите вашего собеседника его уникальный User ID.
Самый простой способ — написать боту @userinfobot, который в ответ пришлет ID.

Зайдите в Настройки -> Настройки Telegram в "Бастионе".

В поле "Разрешенные User ID (белый список)" введите полученный ID.

Если у вас несколько доверенных контактов, вводите их ID через запятую, без пробелов.
Пример: 12345678,87654321,99988877

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

Рекомендация по ведению переписки

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

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

Пример сообщения в окне "Бастиона" перед шифрованием:

Сегодня встречаемся возле кинотеатра в 19:00
Алекс Б

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Добавлена кнопка "Проверить соединение" в окне настроек Telegram

Теперь можно проверить, правильно ли введен токен вашего бота и есть ли у программы доступ к серверам Telegram.
При нажатии на кнопку программа отправляет безопасный тестовый запрос (getMe) к API Telegram.
Вы получите уведомление об успехе или ошибке, что позволяет быстро диагностировать возможные проблемы (неверный токен, блокировка сети брандмауэром и т.д.), не дожидаясь отправки реального сообщения.

Благодаря новому парсеру, теперь поддерживается ввод списка ID с пробелами после запятых, что повышает удобство редактирования длинных списков.
Пример: 12345678, 87654321, 99988877

Рекомендуемый формат остаётся прежним (без пробелов): 12345678,87654321,99988877

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
В настройки Телеграм добавлена опция "Автоматически шифровать при отправке"

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

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

Зайдите в настройки (кнопка Телега или Alt+T) и установите флажок "Автоматически шифровать при отправке".

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
В настройки Телеграм добавлена опция "Автоматически расшифровывать при получении"

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

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

Зайдите в настройки (кнопка Телега или Alt + T) и установите флажок "Автоматически расшифровывать при получении".
Если флажок установлен, "Бастион" будет автоматически расшифровывать входящие сообщения при условии, что правильный пароль уже введён в соответствующее поле в главном окне.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Отправка и приём файлов через Telegram

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

Как отправить

Зажмите клавиши Ctrl + Alt и перетащите нужный файл на окно программы.
"Бастион" автоматически отправит его в фоновом режиме.

После успешной отправки на экране кратковременно появится сообщение "Ушло".

Для корректной работы функции отправки убедитесь, что в настройках Телеграм (кнопка Телега или Alt + T) выполнены все три условия:

Указан Bot Token.
Указан ID чата/пользователя для отправки.
Установлен флажок "Включить интеграцию с Telegram".

Улучшена логика работы программы

Ранее, если вы расшифровывали текст, а затем сразу пытались зашифровать его снова, появлялось ненужное сообщение "Кнопка шифрования была нажата, повторить шифрование?".
Теперь программа корректно определяет, что текст был расшифрован, и это сообщение больше не появляется в данном сценарии.

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

Вместо ручного поиска ключевых слов в тексте ответа от Телеграм теперь используется современная и быстрая библиотека nlohmann/json.

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

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

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Реализован новый метод формирования multipart/form-data запросов для отправки файлов.

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

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

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

Похожие темы