Skip to content

Security: space-protocol-project/space-protocol

Security

SECURITY.md

Безопасность

Работающего релиза пока нет; архитектура и криптографические профили экспериментальны. Не используйте проект для production identities или хранения реальных секретов.

Не публикуйте secrets и воспроизводящие данные реальных пользователей в issues. Канал приватного сообщения об уязвимостях необходимо настроить до публичного релиза; контакт не задан и не выдумывается.

До выпуска обязательны проверки auth, ACL, recovery, revocation, sync, uploads и admin UI, а также независимый анализ криптографического дизайна.

Экспериментальные JSON-карточки описаны в ADR-021. Пароль и управляющий секрет не отправляются серверу; неправильный пароль/AEAD и ограничения KDF проверяются клиентами. Это не аппаратный vault и не полный master-seed профиль.

Отзыв grant закрывает сессии этого устройства. Если устройство уже владеет исходным root secret (как исходный Flutter-профиль), оно может намеренно выдать новый grant; нужна ротация root. Экспериментальный серверный API, Flutter UI и protected journal реализованы. Dart/WebCrypto проверяют root history; восстановление v2 работает в обоих клиентах. UI ротации в /space и pairing после ротации реализованы и проверены. Рабочие устройства из delegated-card не сохраняют этот управляющий секрет. Утёкшая карточка и пароль требуют отзыва recovery grant с каскадом дочерних устройств. Полное обнуление временных копий секретов в управляемой памяти не заявляется.

QR-камера включается только по явному действию. Flutter Windows использует camera_windows 0.3.0: официальные ограничения. В локальном BSD-пакете GetFilePathForPicture перенесён в Temp, чтобы кадры не попадали в Pictures/OneDrive. Приложение удаляет точный созданный кадр после обработки; при аварийном завершении процесса временный кадр может остаться в Temp. Серверу видео/кадры не передаются, микрофон не включается. Браузер использует camera=(self), microphone=() и закрывает tracks при завершении/отмене/скрытии вкладки.

Текущая Windows-реализация

Реально используемый storage backend — Dart/DPAPI. Active/journal теперь физически разделены безопасными partition filenames; encrypted write проходит через flushed temporary file и MoveFileEx(REPLACE_EXISTING | WRITE_THROUGH). Старый общий storage читается и мигрируется. Вызов crash checkpoint удалён compile-time из обычной сборки, включается только в отдельном drill target. Прерывается только созданный тестовый процесс с проверенным executable path и случайным namespace. Это проверка process crash; она не обещает сохранность при потере диска или повреждении всех резервных копий.

Каналы и права доступа

Экспериментальный ADR-024 добавляет роли и индивидуальные ACL каналов. Scope устройства и блокировка пространства ограничивают эти правила. Public preview раскрывает только метаданные; содержание требует сессии и read. История, журнал и каждый кадр подписки проверяют доступ под блокировками; уже переданные данные невозможно отозвать. Делегированный manage меняет метаданные, но не ACL или публичность. Подробности: ADR-024.

Автоматический первый владелец

На новой базе действует first_login: первый клиент с успешной подписью входа получает owner. Доступный клиенту API позволяет ему претендовать на первоначальное владение; это намеренное изменение поведения по запросу пользователя. Статические страницы и metadata сами прав не дают. После выбора владелец не заменяется новым входом. Старые установки сохраняют свой owner/manual режим. Подробности: ADR-026.

There aren't any published security advisories