Закрыты все открытые вопросы проектирования. Пароль не покидает клиент (два ключа из мастера), 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.5 KiB
Markdown
18 lines
1.5 KiB
Markdown
# ADR-008: Сервер — реле с per-device очередью
|
|
|
|
Уточнён [ADR-017](017-devices-and-envelope.md) (идентификация устройства, конверт, ACK) и [ADR-018](018-rooms-membership-rekey.md): к метаданным комнат относятся завёрнутые ключи.
|
|
|
|
## Контекст
|
|
|
|
Сервер никогда не является местом, где живёт история (философия, п. 2). Но получатель бывает офлайн — сообщение надо где-то подержать до доставки.
|
|
|
|
## Решение
|
|
|
|
Сервер хранит транзитную очередь зашифрованных недоставленных сообщений, per-device. Доставлено и подтверждено ACK — удалено с сервера. Не забрано за 30 дней — удалено. Кроме очереди сервер хранит только аккаунты и метаданные комнат и контактов.
|
|
|
|
## Следствия
|
|
|
|
- На сервере нет истории — компрометация сервера не раскрывает переписку.
|
|
- Устройство, молчавшее больше 30 дней, теряет недоставленные сообщения. Осознанно.
|
|
- Нужна идентификация устройства для очередей — открытый вопрос.
|