Подписывающие ключи и ключи безопасности
Кошелёк Vela — это Safe, а у Safe есть владельцы. У вашего их может быть до
семи при пороге один: любой подписывающий ключ авторизует транзакцию в
одиночку. Это записывается как 1-of-n.
Что может быть подписывающим ключом
Три вида, и их можно свободно сочетать:
| Способ | Что это | Типичный пример |
|---|---|---|
| Платформенный | Аутентификатор, встроенный в устройство, которым вы пользуетесь | Face ID / Touch ID на этом телефоне или ноутбуке, синхронизируемый Связкой ключей iCloud или Менеджером паролей Google |
| Устройство рядом | Другое устройство, к которому вы подключаетесь, отсканировав код | Телефон подписывает за компьютер через гибридный транспорт WebAuthn |
| Ключ безопасности | Съёмный аутентификатор с USB или NFC | YubiKey и другие ключи FIDO2 |
Все три — учётные данные WebAuthn на кривой P-256. Для Safe они неразличимы: каждый — владелец, чью подпись модуль passkey от Safe проверяет в блокчейне одним и тем же способом. (Первый ключ проверяет общий подписант Safe, а каждый дополнительный — свой небольшой контракт-подписант, который фабрика Safe создаёт, когда кошелёк впервые разворачивается в сети.)
Какие виды ключей поддерживает каждое приложение:
| Приложение | Это устройство | Телефон рядом (QR) | Ключ безопасности |
|---|---|---|---|
| Веб-кошелёк, расширение для браузера | Да | Да | USB или NFC, через браузер |
| Десктоп (macOS, Windows, Linux) | macOS и Windows | Да | USB |
| Android | Да (с сервисами Google Play) | Да | USB |
| iOS | Да | Да | YubiKey с USB-C или Lightning, прошивка 5.8 или новее |
Вариант «Это устройство» в настольном приложении (Touch ID, Windows Hello), да и поддержка Windows в целом, появились недавно и протестированы хуже остальных способов; на компьютере сегодня надёжнее выбрать телефон или ключ безопасности.
Ключ безопасности может быть вашим первым ключом, а не только запасным. Если вы хотите, чтобы кошелёк вообще не зависел от аккаунта Apple или Google, создайте его с двумя ключами безопасности и один храните в надёжном месте. (Кошелёк, у которого единственный ключ нигде не синхронизируется, создать нельзя: приложение попросит второй ключ, потому что потеря этого одного устройства означала бы потерю кошелька.)
Почему они выбираются при создании
Эта часть многих удивляет, поэтому вместо извинений — механизм.
Адрес вашего кошелька выводится из набора владельцев. Vela вычисляет его через CREATE2 из данных инициализации Safe — в них входит публичный ключ каждого
подписывающего ключа — ещё до того, как что-либо развёрнуто в блокчейне. Именно
поэтому можно получать средства на адрес, которого ещё нет.
Для адреса следствие чисто арифметическое: другой набор ключей — другой адрес. Добавить подписывающий ключ позже не значит расширить ваш кошелёк: получится новый кошелёк по новому адресу, где нет ни копейки ваших денег.
Поэтому у вопроса «можно ли добавить ключ позже?» два честных ответа:
- Пока вы не положили средства — можно: адрес ещё ни к чему не привязан, просто создайте кошелёк заново с нужными ключами.
- После того как положили, этот адрес и есть место, где лежат ваши деньги. Сам Safe умеет менять владельцев в сети, где ваш кошелёк уже развёрнут, — но во всех сетях, где он ещё не развёрнут, тот же адрес по-прежнему соответствует исходным ключам, и наборы владельцев в разных сетях начали бы расходиться. Синхронизировать их между сетями возможно — некоторые смарт-кошельки так делают, — но в Vela этого нет, поэтому смену владельцев Vela не предлагает. Продумайте набор ключей при создании.
От чего это на самом деле защищает
Потеря устройства. Когда подписывающих ключей больше одного, потерянный телефон — лишь неудобство: подпишет другой ключ. Когда ключ ровно один, а синхронизация в ОС выключена, потерянный телефон означает потерянный кошелёк — поэтому «ваш passkey синхронизируется автоматически» описывает настройку, которой управляете вы, а не гарантию, которую мы можем дать за вас.
Аккаунт платформы, которому вы больше не доверяете. Если ваш passkey хранится в Связке ключей iCloud или Менеджере паролей Google, тот, кто контролирует этот аккаунт, потенциально может им воспользоваться. Ключ безопасности находится у вас и никуда не синхронизируется.
И то, от чего это не защищает, потому что 1-of-n режет в обе стороны:
второй ключ — это второй вход, а не второй замок. Любой, кто получит хотя бы один
из ваших подписывающих ключей, сможет подписать в одиночку. Больше ключей — больше
устойчивости к потере и больше поверхности для кражи; таков компромисс, и решать
вам.
Если ключ мог быть скомпрометирован
Удалить ключ нельзя. Если один из ваших ключей мог оказаться в чужих руках — пропал разблокированный телефон, кто-то подсмотрел код-пароль, вы больше не контролируете аккаунт Apple или Google, — переведите всё в новый кошелёк, созданный с ключами, которым вы доверяете. Со старого адреса этим ключом можно тратить средства в любой сети, включая те, что кто-то пришлёт туда позже.
Восстановление — это не добавление
Это разные вещи, и документация их разделяет:
- Восстановление и вход — вернуться к существующему кошельку на новом устройстве с ключом, который у вас уже есть.
- Эта страница — заранее решить, какие ключи вообще будут.