Naisho · под капотом

Как это работает и чего мы не обещаем.

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

Архитектура в одной строке

Клиент на каждом устройстве, один хаб на сообщество (Outpost), доступный только как onion-сервис Tor v3, сквозное шифрование MLS между клиентами. Хаб упорядочивает, временно хранит и пересылает сообщения, которые не может прочитать. Никакого центрального сервера, никаких компонентов GiBSeS на пути данных.

Транспорт

Tor onion v3 на Arti

Outpost и клиенты общаются только через Tor. Outpost публикует onion-сервис v3: адрес выводится из ключа сервиса, поэтому он остаётся тем же, если ПК меняет сеть или IP, и открывать порты на роутере не нужно. Мы используем Arti — реализацию Tor на Rust от Tor Project, встроенную в бинарник: никакого внешнего процесса Tor устанавливать не нужно.

Ограничения
  • Задержка — как у Tor. В наших тестах время прохождения сообщения туда и обратно через хаб составило от 168 до 627 мс (медиана по сценарию). Большие вложения передаются дольше, чем по прямому соединению.
  • Там, где сеть Tor заблокирована, Naisho не подключится. Мостов и средств обхода блокировок мы не включаем.

Веб-версия

Веб-версия — это интерфейс в браузере для небольшой локальной программы, которая работает с Tor. Удалённого веб-сервера нет: браузер общается только с программой на вашем компьютере, а она доставляет сообщения в Outpost через Tor.

Шифрование

MLS (RFC 9420) на OpenMLS

Каждая переписка, даже на двоих, — это MLS-группа по RFC 9420, реализованная на OpenMLS. Наборы: X25519 для обмена ключами, ChaCha20-Poly1305 для шифрования, Ed25519 для подписей. На устройстве шифруются текст, фото, голосовые, файлы, а также имена и типы вложений.

Ограничения
  • Пока без постквантовой защиты Гибридные наборы для MLS всё ещё в черновике. Мы не обещаем их, пока они не станут стабильными.
  • От сообщений нельзя отказаться Каждое сообщение подписано отправителем: получатель может доказать третьим лицам, что его написали вы. Эта же подпись позволяет пожаловаться на сообщение оператору с доказательством его подлинности.

MLS обеспечивает forward secrecy и post-compromise security: украденный сегодня ключ не расшифрует вчерашний трафик, а после обновления ключа — и завтрашний. Это защищает сообщения в пути, а не историю, уже сохранённую на телефоне: её защищает шифрование локальной базы данных и блокировка приложения (PIN или биометрия).

Мы проверили это с помощью строк-маркеров, вставленных в тестовые сообщения: ноль совпадений в данных хаба.

Новый участник группы не читает её историю. Тот, кто вышел или был удалён, не читает того, что пишут после. В тесте на 100 участников удаление одного участника даёт commit размером 8,7 КБ за 6,5 мс.

Идентичность и ключи

Ключи Outpost фиксируются при входе, из приглашения. Каждый личный ID (QR или код из 32 символов) содержит отпечаток ключа: если кто-то, включая хаб, попытается его подменить, приложение заблокирует отправку и покажет предупреждение на весь экран. Два человека могут сверить 60-значный код безопасности или QR. У каждого сообщества отдельная идентичность с разными ключами.

Ограничения
  • При первом входе клиент доверяет сертификату оператора. Злонамеренный оператор может показать вам фальшивого нового участника: защита — сверка кодов, которую мы советуем для важных контактов.
  • Отдельные идентичности в разных сообществах снижают связываемость, но не делают её невозможной. Два оператора, долго сравнивающие время подключений, могут связать одного и того же человека.
  • Перехваченной ссылкой-приглашением может воспользоваться тот, кто её перехватил, раньше адресата. У QR, показанного лично, этой проблемы нет.

Хаб слеп к содержимому. К метаданным — нет.

Эту таблицу нужно прочитать целиком. Она относится к Outpost, а значит, и к тому, кто им управляет.

ДанныеХаб их видит?
Текст, фото, голосовые, файлы, имена и типы вложенийНет
Аудио и видео встреч (оба режима)Да
IP клиентовНет (Tor), кроме участников встреч в режиме «Высокое качество»
IP хаба — для клиентовНет (onion), кроме участников встреч в режиме «Высокое качество»
Список участников с ключами и метками, включая скрытыхДа
Видимость, выбранная каждымДа
Кто в какой комнате, названия комнатДа
Кто кому пишет в чатах на двоихДа
Кто загружает материалы в комнатуДа
Когда и как часто каждый подключаетсяДа
Размер сообщенийДа
Кто с кем открывает личный чат из комнатыДа

GiBSeS не видит ничего из этого: у нас нет серверов, аккаунтов, телеметрии, отчётов о сбоях и онлайн-активации. Тот, кто «виден только тем, у кого есть мой ID», остаётся видимым участникам комнат, в которые входит.

Store-and-forward

Если получатель офлайн, зашифрованный конверт остаётся на Outpost до 30 дней (настраивается), после чего срок хранения истекает. Сразу после доставки он удаляется: Outpost работает только как транзит и не хранит архив сообщений. На диске остаются список участников и комнат и очередь недоставленного — в папке, зашифрованной при хранении паролем оператора (Argon2id). В чатах на двоих вы видите «в очереди», «доставлено» или «истекло». Вложения передаются частями, с возобновлением после обрыва, до 100 МБ на элемент.

Без push

Ни одно уведомление не проходит через push-сервисы Android и iOS. Два режима: без фоновой проверки (по умолчанию) или периодическая проверка через Tor каждые 15, 30, 60 или 240 минут с локальным уведомлением без содержимого. На Android энергосбережение может задерживать проверки; на iOS система ограничивает фоновую активность, поэтому полноценный приём — при открытом приложении.

Аудиозвонки

Звонки, 1:1 и групповые примерно до 10 человек, идут через Tor и проходят через хаб, который пересылает их только в памяти, не записывая на диск. Задержка складывается из двух onion-участков и будет заметной: это скорее рация, чем обычный телефонный звонок. Если контакт недоступен, звонок считается пропущенным, и можно оставить голосовое. Есть и облегчённая демонстрация экрана.

Outpost Video

Два режима

Необязательный компонент, выключенный по умолчанию, работает на хабе как SFU (Selective Forwarding Unit). Медиапоток шифруется при передаче, но SFU расшифровывает его для пересылки: хаб видит аудио и видео встреч в обоих режимах. SFrame мы не используем. В видео вы доверяете хабу, то есть тому, кто им управляет.

Защищённый

медиапоток идёт через Tor, Outpost пересылает его как relay, в низком разрешении, чтобы уложиться в полосу и задержку onion-цепочки. Никаких открытых IP: ни участников, ни хаба. Никакой дополнительной настройки сети.

Высокое качество

прямое соединение WebRTC между клиентами и Outpost, вне Tor, с шифрованием DTLS-SRTP и встроенным TURN. Нужны публичный IP на хабе и один-два открытых порта. Сертификат self-signed: его отпечаток и адрес приходят клиентам через Tor, без внешних сервисов. IP участников видит только Outpost сообщества, а не другие участники. Участники знают IP хаба. Как и при любом прямом соединении, сетевой провайдер каждого видит, что есть подключение к этому адресу.

Чаты всегда остаются в Tor, какой бы режим видео вы ни выбрали.

Требования

Тяжёлой криптографии на хабе мало: он пересылает конверты и упорядочивает MLS-commit'ы. Реальная нагрузка — диск (очередь вложений, до 30 дней) и полоса Tor. Рабочий диск должен быть SSD: очередь пишет постоянно. Измеренный узел в рабочем режиме занимает 34–46 МБ RAM.

СообществоРекомендуемая конфигурация
До ~25 человекВключённый ПК или ноутбук, 4 ГБ RAM, 32 ГБ свободно на SSD
От ~25 до 100 человекКомпьютер или мини-ПК, 8 ГБ RAM, SSD на 64–128 ГБ
Больше 100 человекНесколько Outpost
Видео «Высокое качество», 5 участников~10 Мбит/с на отдачу у хаба, публичный IP, 1–2 порта
Видео «Высокое качество», 10 участников~45 Мбит/с на отдачу у хаба; компьютер с 8 ГБ
Видео «Защищённый»Никаких дополнительных требований к сети; качество ограничено полосой Tor

Outpost для Windows 10/11 x64 и Linux x86_64. Автозапуск, онлайн в течение 3 минут после включения. Для чата хватит домашнего канала в несколько Мбит/с: практический предел — задержка Tor, а не железо.

Код

Клиент и Outpost написаны на Rust: Arti для Tor, OpenMLS для шифрования. Outpost — один бинарник, без установки и без прав администратора.

Читать дальше

Для вас и вашей группы

Фото детей, голосовые от бабушки, чат клуба остаются между вами. Здесь — что нужно сделать тому, кто ведёт группу, и почему Chat Control касается вас.

Для вашей компании

Проекты под NDA, видеовстречи, чаты коллег: данные остаются на компьютере в вашем офисе. Naisho работает рядом с инструментами, которые у вас уже есть.

Напишите нам