РАЗБОР

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

G
guidesoul Exploit Dev · 284 сообщений
Подписаться
60,5 тыс.
Всем привет!

Хочу поделиться программой Бастион 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
 

Комментарии

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

Выделите несколько файлов/папок и перетащите на окно программы с зажатым Shift или Ctrl + Shift.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Гибридные аудио-текстовые сообщения

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

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

- Откройте файл .v16a и введите пароль для начала воспроизведения.

- Прямо во время прослушивания введите или вставьте текст в главное окно программы.

- Нажмите кнопку Сохранить.

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Компактный режим шифрования (Unicode)

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

Как включить

- Запустите и закройте программу.

- Откройте появившийся файл settings.txt.

- Найдите строку "use_unicode_encoding": false и замените её на "use_unicode_encoding": true.

- Сохраните файл и запустите программу.

Сравнение длины шифра (на примере слова "Тест")

Стандартный режим (Base64):
GNp/x9y8psOEsvGRweI4ECl7cLN6mzC0O+Xn7pOo8u5MyzQzdK6JCQ0bmaezotk0i7tneUr82ryCbagMrZZw2e1xZUG8Kr0=
(Длинная строка, очевидный шифр)

Компактный режим (Unicode):
竰쓭柲砰릎巿ꎲꕉ椐嫇牞挘跗蕚弼뛝賷ꆧ쮖댥蹇皴묷橩얇滈蹳籯補衕罊쫉쬧駒잀멧ꛊ뺐
(Короткая строка, меньше привлекает внимания)

Примечание

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Кнопка "Отправить" (по почте, когда отключена интеграция с Телеграм) теперь распознает зашифрованный текст с включенной опцией Unicode кодировка, и не блокирует действие.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Гибридные аудио-контейнеры

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

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

- Введите (вставьте) текст в главное окно программы или откройте текстовый файл.

- Нажмите кнопку записи аудио (●) и произнесите сообщение.

- Нажмите кнопку остановки (■).

При сохранении файла (.v16a) введенный текст будет добавлен к аудиозаписи.
При последующей расшифровке этого файла программа воспроизведет звук и восстановит текст в поле редактора.

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

Вложения

  • Безымянный.webp
    Безымянный.webp
    25,1 КБ · Просмотры: 206
Добавлена поддержка форматирования текста.
Теперь при сохранении файла .v16a сохраняются стили (жирный шрифт, цвета, курсив и т.д.).

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Реализовано переключение кодировки выходного текста

Теперь, нажав правой кнопкой мыши на кнопку "Шифровать", можно выбрать между стандартным Base64 и Unicode-кодировкой через меню.

Примечание

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

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

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

Вложения

  • Без имени-1.webp
    Без имени-1.webp
    55,5 КБ · Просмотры: 172
Добавлено сочетание клавиш Alt + E для быстрого открытия окна выбора кодировки (Base64 / Unicode).

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Исправлена проблема, из-за которой аудиофайлы (.v16a) с текстовым вложением определялись как поврежденные при получении из Телеграм.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Улучшен режим "Паника" (красная кнопка в интерфейсе)

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

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

Вложения

  • Безымянный.webp
    Безымянный.webp
    40,7 КБ · Просмотры: 136
Добавлена возможность вызова генератора паролей из кодовой фразы (Alt + P) нажатием правой кнопки мыши по кнопке "Генерировать пароль".

Чем полезна генерация пароля из кодовой фразы

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

При передаче зашифрованного файла коллеге, вам не нужно диктовать сложный набор символов (j#9dL!2...).
Достаточно сказать кодовую фразу (например, "Синий слон летит на север").
Коллега введет её в программу, и она сама преобразует фразу в тот же самый сложный ключ.

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

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Добавлена возможность быстрой отправки файла в Телеграм

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

Вы также можете отправить файл или папку, перетащив их на окно программы с зажатыми клавишами Ctrl + Alt.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Кнопка "Очистить" теперь работает по усиленному протоколу:
пароли и текст сообщений физически перезаписываются в оперативной памяти перед удалением.

Также блокируется возможность случайного восстановления данных через команду отмены (Ctrl + Z).

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
  • Нравится
Реакции: xzotique
1
Не думал что встречу НАСТОЛЬКО масштабную работу
Сохранил для себя, рано или поздно возьмусь за изучение!
 
Безопасность приёма файлов

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

[@evgenyguidesoul]
Получен файл: Секретно.doc

Чтобы сохранить файл, нажмите на название (выделено жирным шрифтом).

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
xzotique, большое спасибо!
Просто увлёкся, и понесло... )
 
Добавлена поддержка ANSI (Windows-1251) кодировки, которая стандартна для старых текстовых файлов на русском языке в Windows.

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Обновлена логика кнопки "Расшифровать"

Устранена ошибка "Base64: некорректная длина" при ручной расшифровке сообщений из Телеграм.
Реализован комбинированный алгоритм: сначала выполняется поиск и дешифровка шифротекста построчно (для обработки логов чатов), и только при неудаче — попытка расшифровать весь текст целиком (для файлов).

В облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Исправляю баг при расшифровке длинного текста из-за крайнего обновления, пока не качать
 
Устранено появление "мусора" (RTF-тегов) при расшифровке текста

Если зашифрованный текст содержал форматирование (например, подсветку синтаксиса из Visual Studio), после расшифровки оно отображалось как текст.
Теперь программа автоматически определяет наличие RTF-кода и корректно рендерит его.

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