Управление ключами
Anon использует многоуровневую архитектуру, рассчитанную на то, чтобы конфиденциальный ключевой материал не сохранялся на диск открытым текстом, а каждая операция использовала минимально необходимые полномочия ключей.
Иерархия ключей
Device authenticator (passkey / password)
│
▼
Root secret ← PRF / Argon2id; session memory
│
HKDF derivation
/ \
/ \
Railgun IDB CryptoKey
key (AES-GCM)
Ключ PRF (корневой)
При аутентификации ключом доступа аутентификатор предоставляет псевдослучайную функцию (PRF), выдающую детерминированный секрет, связанный с вашими учётными данными ключа доступа. Хранение и синхронизация зависят от аутентификатора. Выход PRF служит корнем иерархии ключей. Он не записывается на диск и существует только в памяти во время сеанса.
При аутентификации паролем Argon2id выводит аналогичный по назначению корневой секрет из пароля и сохранённой соли.
Вывод через HKDF
Из ключа PRF Anon выводит два ключа с помощью HKDF — функции вывода ключей на основе HMAC:
- Ключ Railgun (
anon:railgun:full:v1) — единый ключ для расшифровки баланса (просмотра) и создания доказательств zk-SNARK (расходования). Загружается при аутентификации и остаётся в памяти на время сеанса. - IDB CryptoKey (
anon:secrets:indexeddb:v1) — ключ AES-256-GCM для шифрования и расшифровки конфиденциальных данных в IndexedDB, включая мнемоническую фразу и данные учётной записи. Загружается при аутентификации и остаётся в памяти на время сеанса.
KeyVault (кеш в памяти)
KeyVault — единственный экземпляр хранилища в памяти, содержащий активные ключи сеанса. Он:
- Заполняется после успешной аутентификации
- Не записывается на диск
- Автоматически очищается при выходе или закрытии окна
- Защищён от способов доступа фоновых страниц, которым не нужны ключи расходования
Где хранятся данные
| Данные | Хранилище | Шифрование |
|---|---|---|
| Зашифрованная мнемоническая фраза | IndexedDB | AES-GCM с IDB CryptoKey |
| IDB CryptoKey | Хранилище Chrome | Шифрование ключом, выведенным из PRF |
| Публичный адрес | Хранилище Chrome | Открытый текст: адрес публичен по своей природе |
| Ключ Railgun | Только память | Не сохраняется |
| IDB CryptoKey (расшифрованный) | Только память | Не сохраняется |
| Ключ PRF | Только память | Не сохраняется |
Восстановление
Если вы потеряете доступ к устройству, кошелёк можно восстановить с помощью мнемонической фразы из 12 слов. Она заново создаёт все ключи. Храните её офлайн в безопасном месте.