Вы должны войти, чтобы создавать сообщения и темы.

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

◄Страница 2 из 24► 24

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

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

Скорость работы основного алгоритма шифрования SpongeV16 была увеличена в 2.5 раза

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

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

Ссылка та же

Добавлена проверка целостности файла после сохранения

Чтобы гарантировать, что зашифрованный файл был записан на диск без ошибок и повреждений.
Иногда, в очень редких случаях (из-за сбоев ОС, проблем с жестким диском или USB-накопителем), файл может быть сохранен некорректно.

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

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

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

Ссылка та же

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

Добавлена кнопка (☀) справа от кнопки "Найти" для переключения между светлой и темной темами интерфейса.
Ссылка та же

dehote9223, Добрый день.

Как видят твои посты другие

Лайкнул Сибирь
Сибирь
Голова дана человеку не для того, чтобы кушать, а для того, чтобы думать.

Приветствую, да, я вижу, надо пробовать другой хостинг
Загрузка на Имгур не работает


dehote9223, fastpic работает пока. Заливаю с помощью Image Uploader, но думаю можно и так заливать.

Голова дана человеку не для того, чтобы кушать, а для того, чтобы думать.

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

Ссылка та же

Здравствуйте.
Классная программа, спасибо.
А вы не думали сделать такую опцию, чтобы программу можно было запустить как службу? Тогда можно сделать такие функции, например: при нажатии заданных клавиш, выделенный текст шифруется и помещается в буфер обмена, а при нажатии других клавиш, выделенный текст расшифровывается и показывается пользователю. Так программу удобно было бы использовать при общении через незащищённую связь.
А ещё программа могла бы работать как сетевая функция — передаёшь ей данные, а она их шифрует или расшифровывает, и возвращает отправителю.

Цитата: dehote9223 от 02.08.2025, 17:28
Загрузка на Имгур не работает

Если обращаться к Имгур не напрямую, а через друга, то работает.

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

Предложение от Google AI, но нужно найти бесплатный хостинг с поддержкой PHP

Основная идея

Алиса хочет отправить сообщение Бобу.
Пишет сообщение в "Бастионе", вводит пароль, и нажимает "Отправить".

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

Боб, в свою очередь, запускает "Бастион", вводит тот же пароль и тот же "Адрес канала", и нажимает "Проверить/Получить".

Программа Боба обращается к тому же веб-серверу, забирает оттуда зашифрованное сообщение по "Адресу канала", расшифровывает его и показывает Бобу.

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

Вариант 1: PHP-скрипт на бесплатном хостинге (Самый простой и гибкий)

Это, на мой взгляд, идеальный вариант для старта.
Что нужно: Найти любой бесплатный веб-хостинг с поддержкой PHP (их очень много, например, Beget, Hostinger и т.д. предлагают бесплатные тарифы).

Создать два файла на сервере:
post.php (для отправки сообщения)
get.php (для получения сообщения)

<?php
// post.php
if (isset($_POST['channel']) && isset($_POST['data'])) {
$channel_id = basename($_POST['channel']); // basename для безопасности
$data = $_POST['data'];

// Сохраняем зашифрованные данные в файл с именем канала
file_put_contents("channels/{$channel_id}.txt", $data);
echo "OK";
}
?>

Пример get.php:

<?php
// get.php
if (isset($_GET['channel'])) {
$channel_id = basename($_GET['channel']);
$filepath = "channels/{$channel_id}.txt";

if (file_exists($filepath)) {
echo file_get_contents($filepath);
} else {
echo "EMPTY"; // Канал пуст
}
}
?>

На сервере нужно создать папку channels и дать ей права на запись.

Интеграция в C++ код:

Вам понадобится библиотека для выполнения HTTP-запросов. Самая популярная — libcurl.

Отправка:
Формируете POST-запрос на http://ваш-сайт.com/post.php с параметрами channel (Адрес канала) и data (зашифрованный текст).

Получение:
Формируете GET-запрос на http://ваш-сайт.com/get.php?channel=АДРЕС_КАНАЛА и читаете ответ.

Плюсы:
Очень просто настроить.
Полный контроль над логикой.
Можно легко расширить (например, хранить несколько последних сообщений).

Минусы:
Нужно найти и настроить хостинг (хотя это занимает 15-20 минут).
Бесплатные хостинги могут быть медленными или показывать рекламу (но для API это неважно).

Вариант 2: Использование публичного MQTT-брокера

MQTT — это легковесный протокол для обмена сообщениями по подписке. Идеально подходит для чатов.

  1. Что нужно: Найти публичный, бесплатный MQTT-брокер (например, broker.hivemq.com или test.mosquitto.org).

  2. Как это работает:

    • "Адрес канала" становится топиком (topic) в MQTT.

    • Отправитель публикует (publish) зашифрованное сообщение в этот топик.

    • Получатель подписывается (subscribe) на этот же топик и мгновенно получает сообщение, как только оно появляется.

  3. Интеграция в C++ код:

    Понадобится C++ библиотека для MQTT, например, Paho MQTT C++ Client.

  • Плюсы:

    • Сообщения доставляются почти мгновенно (real-time).

    • Не нужно настраивать свой сервер вообще.

    • Очень эффективно.

  • Минусы:

    • Чуть сложнее в коде, чем HTTP-запрос.

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

    • Все сообщения проходят через одного брокера, что может создавать риски метаданных (кто с кем общается).

Лайкнули Сибирь и Psydiant
СибирьPsydiant

Добрый день dehote9223.

Похоже, что Google AI передложил создать мессенджер, но это лишь одна из сфер современной жизни, где требуется шифрование. А то что ваша программа, сама по себе не лезет в интернет, ИМХО — большой плюс.

Я же имел в виду не переход в какую-то конкретную сферу, отбросив остальные, а расширение возможностей взаимодействия с программой. Сделать эдакий "шифрующий комбайн" — сервис готовый к взаимодействию с пользователем и другими программами или скриптами, через гор.клавиши, буфер обмена, контекстное меню, API, аргументы при запуске, и.т.д). Например:

  • Пользователь, через контекстное меню, или горячие клавиши шифрует/дешифрует файл или выделенный текст
  • Общение.
    a) Мессенджер с помощью скрипта, как предложил Google AI. Но пользователь пишет сообщение не в Бастионе, а в скрипте, тот отправляет Бастиону (через API или аргументы), и получает обратно зашифрованные или дешифрованные данные, после чего отправляет их дальше или показывает пользователю.
    b) Или ручная отправка зашифрованных файлов и сообщений через уже существующие каналы связи (мессенджеры, почта, чаты и.т.д.). С контекстным меню или гор.клавишами, будет удобней.
  • Установить защищённый канал связи с другой программой и/или другим ПК.
  • Камера видео наблюдения или пользователь сохраняет на облачный диск уже зашифрованные файлы.

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

Вышеперечисленное это просто идея, на Ваше рассмотрение. Как по мне, Бастион уже сейчас полезный инструмент. Спасибо, что поделились.

Автоматическое копирование зашифрованного текста

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

Для обеспечения стабильности работы программы и предотвращения зависаний при обработке очень больших объемов данных, установлен лимит в 50 МБ.
Если зашифрованный текст превышает этот размер, программа сообщит об этом и предложит сохранить результат в файл, не копируя его в буфер.

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

Улучшенное уведомление при генерации пароля

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

СкопированоНовый пароль скопирован в буфер обмена
СкопированоОБЯЗАТЕЛЬНО СОХРАНИТЕ ЕГО В НАДЁЖНОМ МЕСТЕ ПРЯМО СЕЙЧАС
СкопированоБуфер обмена будет перезаписан зашифрованным текстом после шифрования или очищен при закрытии программы

Это делает поведение программы более предсказуемым и безопасным.

Ссылка та же

Лайкнул OnePunchMan
OnePunchMan

OnePunchMan, большое спасибо за предложения!

Полностью переработан модуль декодирования Base64

Новый декодер строго следует стандарту RFC 4648.
Он больше не будет пытаться "угадать" результат при работе с поврежденными или некорректно сформированными данными, а вместо этого сообщит об ошибке.

Программа теперь проверяет:

Наличие недопустимых символов.
Правильность структуры и расположения символов паддинга (`=`).
Превышение разумного лимита на размер входных данных (100 МБ), чтобы избежать зависания или сбоя программы при открытии слишком больших файлов.

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

Ссылка та же

Лайкнул OnePunchMan
OnePunchMan
◄Страница 2 из 24► 24