Закрыты все открытые вопросы проектирования. Пароль не покидает клиент (два ключа из мастера), TOFU для публичных ключей, устройства и конверт, атомарный rekey комнат, регистрация и контакты, схема SQLite и драйвер без cgo, сессии и CSRF, деплой через nginx+systemd, правила пушей, айдентика «Скобы» на системном mono. Иконки PWA в web/icons. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DbCjVfTFq4ZFG8juD45YJ
18 lines
1.3 KiB
Markdown
18 lines
1.3 KiB
Markdown
# ADR-007: Симметричный ключ комнаты и rekey
|
|
|
|
Конкретизирован [ADR-018](018-rooms-membership-rekey.md): владелец, случайный `keyId`, атомарный rekey, постоянное хранение завёрнутых ключей.
|
|
|
|
## Контекст
|
|
|
|
Сообщение в комнате должны читать все участники, но не сервер. Шифровать каждое сообщение отдельно каждому участнику — квадратичный объём работы и трафика.
|
|
|
|
## Решение
|
|
|
|
У комнаты один симметричный ключ. Он раздаётся участникам зашифрованным на их публичные ключи. При любом изменении состава — rekey: новый ключ, новая раздача.
|
|
|
|
## Следствия
|
|
|
|
- Новый участник не видит сообщений до своего вступления — их и не существует нигде, кроме устройств участников.
|
|
- Вышедший участник не читает сообщения после rekey.
|
|
- Rekey выполняют клиенты; серверу ключи недоступны.
|