Безопасность
Защита — часть архитектуры, а не отдельная настройка
Ниже — как именно устроены границы системы: от входа в аккаунт до хранения вложений. Без общих слов про «военный уровень шифрования».
Вход и аккаунт
Учётная запись — первая граница системы. Всё, что можно проверить на этом рубеже, проверяется здесь.
-
Подтверждение почты
Регистрация завершается подтверждением адреса, поэтому чужой email нельзя занять «про запас».
-
Двухфакторная аутентификация
Второй фактор включается в настройках профиля и требуется при входе с нового устройства.
-
Восстановление пароля
Через одноразовую ссылку с ограниченным сроком жизни, а не через письмо с текущим паролем.
-
Активные сессии
Список устройств, с которых выполнен вход, и возможность завершить любую сессию отдельно.
Права и роли
Доступ описывается ролями пространства, а не раздаётся людям поштучно. Так его можно проверить глазами.
-
Иерархия ролей
Права наследуются по иерархии; роль ниже не может выдать себе то, чего нет у роли выше.
-
Права на канал и категорию
Помимо прав пространства есть переопределения на конкретный канал — приватная переписка остаётся приватной.
-
Управляемые приглашения
Ссылка-приглашение ограничивается сроком действия и числом переходов.
-
Журнал действий
Решения модераторов видимы и обратимы, а не растворяются в истории канала.
Передача данных
Между браузером и сервером всё идёт по защищённым каналам — включая голос и видео.
-
HTTPS на всём периметре
Edge-прокси Caddy терминирует TLS и получает сертификаты автоматически.
-
Cookie сессии
Сессия живёт в httpOnly-cookie с флагом Secure: JavaScript страницы не имеет к ней доступа.
-
Голос через wss
Сигнальный канал LiveKit работает на том же origin по wss, поэтому браузер не блокирует его как смешанный контент.
-
Заголовки безопасности
Ответы отдаются с nosniff и строгой политикой реферера.
Изоляция сервисов
Компрометация одной части не должна открывать всю систему, поэтому домены разведены по процессам и правам в базе.
-
Отдельные сервисы
Поиск, биллинг и уведомления вынесены из ядра и общаются с ним по служебным токенам.
-
Разделение в базе
Домены разложены по схемам PostgreSQL с ролями по принципу наименьших привилегий.
-
Тяжёлые задачи в воркерах
Обработка медиа и рассылки идут отдельными процессами через очередь, а не в обработчике HTTP-запроса.
-
Ограниченные контейнеры
Контейнеры запускаются без лишних привилегий, с лимитами памяти и процессов.
Файлы и вложения
Загруженный файл — самый удобный способ занести в систему что-то лишнее, поэтому он проходит отдельный путь.
-
Приватное хранилище
Вложения лежат в приватном S3-совместимом хранилище и отдаются по подписанным ссылкам.
-
Антивирусная проверка
Загрузки проходят через ClamAV перед тем, как стать доступными участникам.
-
Лимиты загрузки
На бесплатном уровне — до 25 МБ на файл и 500 МБ в сутки; платные уровни расширяют лимит.
-
Обработка вне запроса
Превью и перекодирование выполняет отдельный воркер, а не процесс, отвечающий пользователю.
Приватность
Приватность здесь — это не обещание не смотреть, а отсутствие причины смотреть и коротко живущие ссылки на то, что вы загрузили.
-
Никакой рекламной модели
Продукт не зарабатывает на внимании пользователя, поэтому у него нет причин собирать профиль поведения.
-
Вложения не лежат в открытом доступе
Хранилище закрыто целиком: и загрузка, и скачивание идут по подписанной ссылке, которая живёт минуты, а не вечно.
-
Локальная обработка голоса
Подавление шума через RNNoise и DeepFilterNet выполняется в браузере: аудио не уходит на сторонний сервис.
-
AI по отдельному ключу
AI-поиск и краткие пересказы работают только при подключённом ключе OpenAI. Пока его нет, содержимое каналов во внешнюю модель не уходит.
Что честно сказать отдельно
Zyrqad активно развивается. Описанные механизмы работают, но продукт не проходил внешний аудит безопасности, и мы не станем утверждать обратное. Медиапоток звонка шифруется на транспорте — это не то же самое, что сквозное шифрование, и мы не называем одно другим.
Полный список ограниченийПроверять удобнее изнутри
Активные сессии, двухфакторная аутентификация и права ролей видны в настройках аккаунта и сервера. Прочитать про них — одно, увидеть на своём пространстве — другое.