Безопасность NCraft: что защищено, от кого, и что мы нашли сами
У NCraft нет сервера с вашими данными и нет учётных записей, которые можно украсть. Но у такой схемы свои риски: каждый участник группы хранит полную копию, а устройство — ваши ключи. Здесь — как это устроено, от чего защищает и чего не обещает, и честные итоги аудита безопасности.
Как устроена личность
- Ключ личности — Ed25519, выводится из 24 слов (словарь BIP-39). Слова и ключ не покидают ваших устройств; мы их никогда не получаем.
- Ключ устройства — P-256 в защищённом элементе: Secure Enclave на Mac, TPM на Windows. Приватная половина не покидает чип.
- Устройство — это сертификат, подписанный ключом личности. Отозванное устройство теряет право действовать от вашего имени во всех группах.
- Отпечаток личности — 20 знаков в пяти группах (100 бит). По нему и по узору ключа вас узнают при сверке.
- Своё устройство добавляется только сверкой шести цифр на двух экранах.
- Нет паролей, сессий и «входа» — подбирать и перехватывать нечего.
24 слова, резерв и возврат личности
- Резерв 24 слов. Устройство, на котором есть ключ личности, хранит 24 слова вместе с подписанным списком ваших устройств в хранилище паролей платформы: на Mac и iPhone — в связке ключей iCloud, на Windows — в диспетчере учётных данных Windows (с учётной записью Microsoft и включённой синхронизацией паролей Windows может перенести его на другие ваши компьютеры, с локальной — он только на этом). NCraft для Android резерва в облаке не хранит. К нам резерв не попадает.
- Новое устройство. «У меня уже есть личность»: если резерв найден — «Восстановить личность»; можно добавить устройство с другого своего; а если не осталось ни резерва, ни устройств — ввести 24 слова. Тогда прежние устройства будут отозваны как потерянные, а в каждую группу вас снова пригласит её менеджер. Группы и история приезжают с других ваших устройств и от участников, а не из резерва.
- Цена резерва. Тот, кто может открыть вашу связку ключей iCloud или учётную запись Windows, может по резерву забрать вашу личность. Берегите эти учётные записи так же, как слова.
- Забыть личность — с галочкой удаления резерва 24 слов, она включена по умолчанию. Резерв общий для устройств этой учётной записи: если галочку снять, он останется, а устройство, на котором ещё есть ключ, сохранит его снова.
- Возврат владельца группы (macOS, iPhone, Windows и Android). Владелец, потерявший все устройства, возвращает и группу: вернувшегося по словам приглашает администратор, преемник, а если нет ни того ни другого — любой участник. Участники видят возврат в группе; тот, кто позвал, до срока может его «Отозвать». После срока ожидания (назначенного для преемника, иначе 7 дней) новое устройство входит владельцем условно: пока возврат не окончателен (его примут прежние устройства или пройдёт 30 дней), нельзя исключать участников, менять права и преемника и удалять группу. Любое прежнее устройство владельца, которое ещё работает, может ответить «Это не я — отказать».
Устройства: подтверждение, отзыв и срок
Сертификат устройства действует 400 суток. Ядро начинает продление, когда осталось не больше 60 суток, а предупреждает — за 30 суток. После срока предусмотрено льготное окно 7 суток; истёкший сертификат не даёт права арбитра группы. Продление сохраняет личность и ключи устройства, а не создаёт нового человека.
Отзыв устройства подписывается ключом личности. Если на устройстве нет этого ключа, 24 слова можно ввести на время операции. Слова подтверждают личность, но сами по себе не возвращают историю групп. Новое устройство первые сутки ограничено в управляющих действиях владельца; подтверждение уже доверенным устройством позволяет снять этот период. Отзыв и подтверждение проверяются другими устройствами, а не доверяются только местной кнопке.
Ротация ключа шифрования
Собственный ключ шифрования листа MLS обновляется через подписанную заявку и коммит группы. Ядро проверяет срок 30 суток; дата сохраняется после перезапуска и отката, поэтому сон устройства не начинает срок заново. Ключ подписи записей, сертификат и личность от этой ротации не меняются: исторические подписи остаются проверяемыми. Ключи встречи и ключ подписи — другие ключи, это не одна общая ротация.
Сменить ключи группы
Владелец и админы могут «Сменить ключи группы» — на macOS, iPhone, Windows и Android. Меняются ключи встречи и уведомлений группы: прежние перестают действовать, участники получают новые сами. Никого из группы это не исключает: чтобы закрыть доступ потерянному устройству, его отзывают — «Отозвать устройство»; чтобы уйти самому — «Выйти из группы».
Эти сведения отражают проверенный исходный код. Нативная проверка оболочек macOS и iOS остаётся отдельным этапом; публикация исходников не означает публичный выпуск приложения.
Что шифруется
| что | как |
|---|---|
| сообщения, темы, заметки, задачи, реакции в группе | MLS (RFC 9420) на вашем устройстве; у каждого участника — своя копия |
| закрытые темы | дополнительно — отдельным ключом темы; удаление участника выпускает новое поколение ключа |
| профиль, блокировки, курсоры прочтения, ваши правила — между своими устройствами | личный канал с прямой секретностью |
| прямое соединение между устройствами, голос звонков | DTLS (WebRTC), подлинность — ключом устройства |
| соединение с узлами встречи | Noise (Noise_IK_25519_ChaChaPoly_BLAKE2s) |
| база на диске | SQLCipher; ключ базы — в Keychain (macOS) или под DPAPI учётной записи (Windows) |
| приглашение человека в группу | случайный 128-битный код из 26 символов; сверка шести цифр обеими сторонами |
| жалоба владельцу | письмо MAIL3, зашифрованное ключу получателя с помощью HPKE; остальные участники не читают текст |
Что видит сервер
NCraft пользуется тремя узлами встречи — asia.ncraft.live,
eu.ncraft.live и ru.ncraft.live. Они нужны только чтобы устройства
нашли друг друга и открыли прямое соединение. Устройство подключается к
первому ответившему узлу; узлы обмениваются между собой только метками
встречи и окнами приглашений, а не содержимым, — так устройства на разных
узлах находят друг друга.
- Видят: IP-адрес, размеры и время пакетов, короткоживущие случайные метки.
- Не видят: кто вы, в каких вы группах, никакого содержимого. Ключей у них нет; метки считаются из ключа группы, которого у сервера нет.
- Хранят в памяти секунды–минуты (запись присутствия — 90 с), на диск не пишут, запросы не журналируют; остаются только общие счётчики без адресов.
- Звонки, данные групп и файлы через наши серверы не идут: файл едет от устройства участника, у которого он есть.
- Свой ретранслятор (TURN) группы, если его поставил организатор, видит IP-адреса соединений группы и зашифрованный поток. Мы такие серверы не контролируем.
- Устройство, с которым вы соединяетесь напрямую, узнаёт ваш IP — как в любой P2P-связи.
- Уведомления на macOS. Если вы разрешили уведомления, устройство участника может разбудить ваш Mac через наш сервер и службу уведомлений Apple. Сервер видит адрес для уведомлений и время отправки, прочитать содержимое не может (текста сообщения в нём нет) и ничего не хранит. NCraft для Windows показывает уведомления, только пока запущен.
Вход на сайты NCraft
Сайты ncraft.live и *.ncraft.live могут попросить браузер назваться
(ответ 401 с WWW-Authenticate: NB). NCraft отвечает сам, без вопроса:
подписывает вызов ключом устройства и повторяет переход. Сайт узнаёт ключ
вашей личности, отпечаток и номер устройства — больше ничего.
- Приватная вкладка и устройство без личности не отвечают.
- Другим сайтам личность не раскрывается: список адресов зашит в ядро.
- Закрытый раздел нашего сайта помнит вход кукой до 12 часов; смена секрета службы гасит все входы сразу.
- Есть на macOS, iPhone, Windows и Android.
Модель угроз — от кого защищаемся
- Посторонний в интернете и в сети по дороге — не читает и не подменяет данные: всё зашифровано и подписано.
- Оператор узла встречи (в том числе мы) — не знает, кто с кем общается, и не видит содержимого.
- Посторонний в вашей локальной сети — не впишется в спаривание и приглашение без совпадения шести цифр.
- Злонамеренный участник группы — видит то, что ему показали в группе (как в любом общем рабочем пространстве), но не должен управлять вашим браузером, читать ваш диск или ломать группу. Это самый трудный класс, и именно здесь аудит нашёл больше всего (см. ниже).
- Вредоносная программа под вашей учётной записью — вне полной защиты: она видит то же, что вы. Мы уменьшаем ущерб (Windows Hello перед показом 24 слов, ключ устройства в чипе), но не обещаем защиту.
- Украденное устройство — заблокированное и с шифрованием диска (FileVault / BitLocker) не отдаёт данные без пароля входа. Разблокированное — как пункт 5. Отзовите украденное устройство с другого своего.
Чего NCraft не обещает
- Удалить у других то, что они уже получили. «Удалить у всех» убирает запись из группы, но копию, которую участник уже сохранил, вернуть нельзя.
- Сменить ключ личности после кражи 24 слов: другой ключ — другой человек. Берегите слова.
- Скрыть ваш IP от собеседника при прямом соединении.
- Защитить от сайтов: сайты получают то же, что от любого браузера. Исключение — сайты NCraft: им браузер сам называет личность (см. «Вход на сайты NCraft»).
- Проверить присланный файл: своего антивируса нет. Перед программой NCraft предупреждает, а на macOS и Windows сохранённый файл несёт метку системы — дальше его проверяют Gatekeeper, SmartScreen и антивирус.
Аудит безопасности (02.10.2026)
Код ядра, обеих оболочек, протокола, сервера встречи, бота и сборки проверили несколько независимых аудиторов-агентов, каждую находку — затем отдельные проверяющие «по коду» и «как атакующий».
| итоговая серьёзность | записей |
|---|---|
| критическая | 3 |
| высокая | 35 |
| средняя | 73 |
| низкая | 126 |
| справочная | 39 |
| всего | 276 |
Подтверждено 150, не проверено до конца 125, опровергнуто 1. Многие записи дублируют друг друга — одну проблему находили разные аудиторы (все три критические — одна и та же проблема).
Главное, что нашли
- Права удалённых команд были слишком широки по умолчанию. Участник группы мог через удалённую команду обращаться к файлам на диске другого участника и видеть его вкладки. Исправлено (Windows 0.35.2–0.35.4, ядро общее): доступ к диску — отдельное опасное право, выключено по умолчанию, и даже выданное не трогает сетевые и системные пути и не перезаписывает файлы; вкладки видны только тому, кому вы разрешили лично; политика группы может только сужать права; команда принимается только по каналу своей группы.
- Проверка входящих записей журнала. Подписи и привязка записей, стирание «у всех», письма с фактами личности, сигналы звонка и адреса страниц от участников. Исправлено срезами ядра 3 и 4а (журнал v2).
- Сервер встречи и транспорт — устойчивость к отказу в обслуживании. Исправлено (срез «сервер встречи и транспорт»).
- Сборка и цепочка поставки — зависимости не были закреплены.
Исправлено: замок
Cargo.lock, сборка--locked, закреплённые NuGet, флаги защиты при сборке Windows (Windows 0.35.3). - Оболочка Windows — адреса страниц, мост агента страницы, поиск по
странице, ссылки
nb://, удалённое управление, полный экран. Исправлено (Windows 0.36.0). Аналогичный срез macOS опубликован. - Права при изменении состава группы (кто может менять состав и владение). В работе — исправление на проверке (06.10.2026).
- Не закрыто на 06.10.2026: подписанный отзыв устройства, гонка одновременных изменений состава, восстановление безопасности после компрометации (PCS); установщик Windows пока не подписан Authenticode; хранение 24 слов на первом устройстве (Windows).
Срез исходников на 08.10.2026: подписанный отзыв устройства и ротация собственного ключа шифрования MLS реализованы и проверены в ядре. Это уточнение к состоянию на 06.10 выше, а не заявление о полной защите после компрометации устройства. Нативная приемка macOS и iOS отдельно.
На 20.10.2026 копии 24 слов в файле на устройстве больше нет ни на одной платформе: ключ личности лежит в зашифрованной базе NCraft, резерв слов — в хранилище паролей платформы (см. «24 слова, резерв и возврат личности»).
Полный отчёт пока не публикуем: в нём есть ещё не закрытые находки.
Сообщить об уязвимости
Об уязвимостях пишите на support@ncraft.live; о злоупотреблениях — на abuse@ncraft.live.
Эта страница — место обсуждения. Откройте её в NCraft: заметки, задачи и чат о ней будут рядом, в группе NCraft.