Обзор безопасности
Подробный разбор того, как Freedom Messenger защищает ваши данные — от хеширования паролей до шифрования сообщений, ограничения запросов и ротации ключей.
Аутентификация
Хеширование паролей
Пароли пользователей хешируются с помощью Argon2id — победителя Password Hashing Competition и текущего золотого стандарта хранения паролей. Даже при получении доступа к базе данных пароли не могут быть восстановлены.
Двухфакторная аутентификация
Все пользователи обязаны включить TOTP-аутентификацию. Стандарт совместим с Google Authenticator, Authy и аналогами. 6-значный код, обновляемый каждые 30 секунд, требуется при каждом входе.
При настройке 2FA пользователи получают 16-символьные hex-коды восстановления. Каждый код можно использовать один раз для обхода 2FA при потере аутентификатора.
Управление сессиями
Сессии используют JWT-токены со сроком действия 30 дней. Ключ подписи JWT генерируется из мастер-секрета через HKDF с контекстом «jwt». Ключ не хранится напрямую — он выводится при каждом запуске сервера.
Шифрование
Шифрование данных в покое
Содержимое сообщений шифруется AES-256-GCM. Уникальный ID каждого сообщения используется как Additional Authenticated Data (AAD), привязывая шифротекст к конкретному сообщению и предотвращая атаки подмены.
Шифрование при передаче
Все соединения используют TLS. В режиме HTTPS — сертификаты Let's Encrypt. В режиме Cloudflare — TLS от Cloudflare. В режиме VLESS — протокол REALITY, неотличимый от легитимных соединений.
Ротация ключей
Мастер-секрет можно ротировать без потери доступа к старым сообщениям:
- Сгенерируйте новый секрет
- Переместите старый в
previous_secretsв config.toml - Новые сообщения шифруются новым ключом
- Старые расшифровываются предыдущим
Приватность
Удаление EXIF
При загрузке изображений Freedom Messenger автоматически удаляет EXIF-метаданные — GPS-координаты, модель камеры, временные метки и другую идентифицирующую информацию.
Защита от SSRF
Функция превью ссылок запрашивает URL для генерации предпросмотра. Модуль включает защиту от SSRF для предотвращения доступа к ресурсам внутренней сети.
Ограничение частоты запросов
- Попытки входа: 20 за 15 минут по IP
- Регистрация: 10 за 15 минут по IP
- Проверка TOTP: 10 за 5 минут по IP
- Загрузка файлов: 20 в час на пользователя
- Сообщения: 60 в минуту на пользователя
- Глобальный: 120 запросов в минуту по IP
Блокировка аккаунта
После повторных неудачных попыток входа аккаунт временно блокируется. Защищает от перебора паролей.
Безопасность инфраструктуры
Защита файла конфигурации
Сервер требует права 0600 для config.toml. Предупреждение выдаётся при более широких правах.
Усиление systemd
На Linux systemd-сервис включает:
- Лимит памяти: 512 МБ
- Защита от OOM
- Ограничение перезапусков: 5 за 5 минут
Что пока не реализовано
Сквозное шифрование (E2E) запланировано на v2.0 с использованием Signal Protocol. Сейчас сервер может читать сообщения в покое (они зашифрованы ключом сервера, а не ключами пользователей). Если ваша модель угроз требует E2E — это важное ограничение.
См. Прозрачность для честного обсуждения текущих ограничений.