Title: Adopt 2-of-3 recovery with guard + E2E server shard (supersedes KYC-SSS draft) Status: superseded Superseded by: decision-2026-01-17-cloud-backup-supersedes-sss.md Owner: Artur Date: 13.01.2026
Context:
- 2026-01-13 рассматривался вариант «KYC-провайдер выдаёт пароль из лица» (KYC-SSS). Риски: центр доверия в KYC, deepfake/replay, "костыльное" (нестадартное) решение открывающее фронт для атак, сервер/провайдер может выпустить ключ без пользователя.
- Нужен компромисс между UX и некастодиальностью: пользователь не теряет все средства при утере устройства, сервер не получает доступа к сид.
Decision:
- Принят флоу 2/3 SSS: шард U у пользователя, шард S хранится на сервере только как шифртекст, шард G у гварда. Любые 2 из 3 восстанавливают сид.
- Сервер не знает ключей расшифровки S-shard; S-shard шифруется E2E под pubkey восстановления пользователя и pubkey гварда (двойная обёртка/гибрид).
- Recovery требует участия гварда (разблокировка G-shard под KDF+био/паскод) и сессионного ключа пользователя; KYC даёт только сигнал допуска, не ключ.
- Таймауты, rate-limit, аудит событий recovery; OOB подтверждение гварда (тревога владельцу).
Safety rationale:
- Нет приватных ключей/сид на сервере; шифртекст бесполезен без ключей U/G.
- Сервер не может «тихо» запустить восстановление: нужен G-shard + сессионный ключ U, плюс OOB-подтверждение.
- KYC не даёт доступ к секретам, только риск-сигнал; биометрия — локальный гейт, а не сетевой пароль.
- Ротация/ревокация возможна: смена guard pubkey, rewrap S-shard, перевыпуск SSS.
Децентрализация:
- UX: восстановление требует участия гварда; потеря и U-shard, и G-shard при недоступности S-shard = невосстановимо.
- Server scope: хранит только шифртекст S-shard + метаданные (wallet_id, k/n, guard_id, статусы); обслуживает уведомления и аудит.
- Guard responsibilities: хранить G-shard локально в защищённом хранилище; подтверждать запросы OOB; тревожить владельца.
Links:
- Flow:
wallet/flows/flow-wallet-recovery-2of3.md - Rules/invariants:
.cursorrules
Прописать процедуру и решение rewrap при смене guard pubkey и при ротации recovery ключей.