8 мин чтения
Как passkey защищают ваше хранилище идентичности в CardanoWall
Passkey не становится вашей идентичностью в CardanoWall — он открывает зашифрованное хранилище, которое могут открыть только ваши аутентификаторы. Вот как WebAuthn PRF делает ежедневный доступ удобным, не превращая CardanoWall в хранителя сидов.

Passkey в CardanoWall — это не ваша идентичность. Это ключ, который открывает её зашифрованную копию. Ваша настоящая идентичность — это 32-байтовый Identity Seed (сид идентичности); passkey просто позволяет вашему собственному устройству открыть зашифрованное хранилище с этим сидом, чтобы вам не приходилось вставлять его каждый раз при подписи или расшифровке.
Той самой ежедневной дверью могут служить Face ID, Touch ID, Windows Hello, синхронизируемый платформенный passkey или совместимый аппаратный ключ. За дверью лежит шифротекст, который сервер CardanoWall прочитать не может. Это разделение — сид является идентичностью, а passkey служит лишь фактором разблокировки — и есть вся суть конструкции.
Какую задачу passkey на самом деле решают?
Они делают надёжное хранение идентичности удобным в повседневной работе.
Без слоя удобства каждому вернувшемуся пользователю пришлось бы вставлять свой Identity Seed всякий раз, когда нужно что-то подписать или расшифровать. В узком смысле это безопасно, но неудобно — а неудобная безопасность склонна вырождаться в небезопасность. Люди копируют секреты не туда, оставляют их в обычных заметках или просто перестают пользоваться инструментом.
Passkey убирают это трение. CardanoWall хранит зашифрованное хранилище для вашего счёта, а ваше собственное устройство открывает его после шага проверки пользователя (отпечаток пальца, скан лица, PIN, касание аппаратного ключа). Вы получаете доступ в одно касание, не передавая CardanoWall копию своего сида в открытом виде.
Что такое passkey в этом контексте?
Passkey — это учётные данные WebAuthn, та самая технология входа по открытому ключу, которая стоит за «входом по Face ID» по всему современному вебу.
В модели FIDO и WebAuthn учётные данные создаются для конкретной доверяющей стороны (здесь — для домена CardanoWall), а закрытую половину хранит аутентификатор. Этот аутентификатор может быть встроен в ваш телефон или ноутбук, синхронизирован через провайдера passkey или храниться на отдельном аппаратном ключе безопасности.
Для хранилища идентичности обычного входа недостаточно. CardanoWall нужно, чтобы аутентификатор передал в браузер некоторый высокоэнтропийный секретный материал, которым браузер сможет расшифровать хранилище. Именно это и обеспечивает расширение WebAuthn PRF.
Что такое WebAuthn PRF простыми словами?
PRF расшифровывается как pseudorandom function — псевдослучайная функция. Аутентификатор с поддержкой PRF может выдать секретный результат, уникальный для конкретных учётных данных, доверяющей стороны и соли, которую передаёт приложение, — и при одинаковых входных данных он каждый раз выдаёт один и тот же результат.
CardanoWall детерминированно выводит эту соль из идентификатора вашего счёта, поэтому результат PRF привязан именно к вашему счёту: один и тот же физический ключ, подключённый к другому счёту, выдаёт другой материал и не может открыть чужое хранилище. Затем браузер использует результат PRF как ключ, которым снимает обёртку с вашего хранилища.
Краткая сводка для пользователя выглядит так:
- аутентификатор хранит собственный секрет и никогда его не экспортирует;
- браузер видит материал разблокировки только во время самой церемонии;
- сервер хранит лишь зашифрованный шифротекст хранилища;
- сервер не может самостоятельно воспроизвести результат PRF.
Именно это превращает ваш passkey в фактор разблокировки хранилища, а не в копию секрета, который лежит внутри.
Что именно шифруется?
Набор идентичностей вашего счёта.
Один счёт может содержать несколько идентичностей. В наборе для каждой идентичности записаны её Identity Seed и закрытая метка, и весь набор шифруется ещё до того, как он будет где-либо сохранён. Хранилище — это одна строка шифротекста на счёт: непрозрачное служебное состояние, а не кастодиальное хранение.
CardanoWall шифрует его как шифротекст age-v1, адресованный только стансам
получателей WebAuthn-PRF (fido2prf) — по одной стансе на каждый
зарегистрированный passkey. Любой из ваших зарегистрированных passkey может
открыть хранилище после успешной церемонии; реализация отказывается строить
хранилище, несущее получателя любого иного типа, поэтому шифрование по
построению остаётся только симметричным.
Если зарегистрированного passkey нет, серверного пути открытия нет вовсе — и это нормально, потому что настоящая переносимая идентичность — это сам сид. Вы всегда можете восстановиться из сида.
Почему хранилище, обёрнутое passkey, безопаснее защищённого паролем?
Потому что нет стансы, выведенной из пароля, которую можно было бы перебирать офлайн.
Когда злоумышленник крадёт файл, защищённый выбранным пользователем паролем, он может перебирать варианты локально, со всей скоростью, которую позволяет его оборудование. Это классическая проблема офлайн-перебора, и слабые или повторно используемые пароли её проигрывают.
Размещённое хранилище CardanoWall построено не вокруг пароля. Оно обёрнуто PRF-материалом, который хранит аутентификатор, — случайным 256-битным ключом, который живёт внутри вашего устройства. Поэтому утечка базы данных отдаёт злоумышленнику только шифротекст: ни хеша пароля для атаки, ни сида для чтения. Именно поэтому passkey в целом привлекательны для ежедневного доступа — они обходят фишинг и повторное использование паролей и при этом полностью держат сервер в стороне от секрета идентичности.
А как насчёт квантовых атак на хранилище?
Здесь стоит быть точным, а не драматичным.
Размещённое хранилище намеренно не содержит асимметричных стансов получателей с открытым ключом. Это важно, потому что масштабная квантовая атака, которой все опасаются, — алгоритм Шора — нацелена на системы с открытым ключом. Конфиденциальность хранилища обеспечивается только симметрично: его оборачивает 256-битный результат PRF от passkey, и в конструкции нет открытого ключа, в который могла бы целиться атака в духе Шора.
Против симметричного ключа применимое общее квантовое ускорение — это поиск в духе Гровера, который обычно описывают как примерно вдвое уменьшающий эффективный запас стойкости. Для 256-битного ключа это оставляет около 128-битного эффективного запаса — всё ещё колоссальное число.
Поэтому честное утверждение звучит не как «квантовые атаки невозможны». Оно уже и прочнее: у размещённого хранилища нет поверхности перебора, выводимой из пароля, нет цели с открытым ключом для Шора, а запас симметричного ключа остаётся очень высоким даже при общих допущениях о квантовом поиске. Менее эффектно, зато это утверждение, которому читатель-безопасник действительно может доверять.
Почему бы просто не использовать кошелёк Cardano для разблокировки?
Потому что подпись запроса — это не стабильный ключ хранилища.
Подпись кошелька действительно полезна для некоторых публичных утверждений, но это плохой примитив для повторного вывода секрета, который должен расшифровывать одно и то же хранилище на разных устройствах, в разных браузерах, при разных версиях кошельков и меняющейся поддержке оборудования. Привяжите своё хранилище к кошельку — и вы незаметно превратите поведение кошелька в восстановление счёта.
CardanoWall держит эти роли раздельно:
- Identity Seed выводит ваши ключи подписи и ключи получателя Label 309;
- passkey открывают размещённое хранилище;
- подпись кошелька Cardano зарезервирована для явных, привязанных к кошельку записей, когда вы осознанно выбираете этот путь.
Синхронизируемый passkey или аппаратный ключ — что выбрать?
Работает и то и другое; правильный выбор зависит от ценности идентичности.
Синхронизируемые passkey — удобный вариант по умолчанию. Они могут снова появиться на новом устройстве через вашего провайдера — связку ключей операционной системы или менеджер паролей, в зависимости от вашей конфигурации, — что сильно упрощает обычное восстановление. Синхронизируемый passkey наследует модель безопасности и восстановления того провайдера, который его хранит.
Аппаратные ключи дают больше контроля. Поскольку доступ требует физического устройства, они подходят для ценных или общих командных идентичностей, где вы хотите привязать фактор к чему-то, что можно запереть в ящике стола.
Разумное правило: подбирайте тип passkey под то, чего стоит идентичность. Большинству людей синхронизируемого платформенного passkey вполне хватит на каждый день. Для чувствительных командных идентичностей аппаратный ключ плюс аккуратно сохранённый сид часто оказывается лучшим компромиссом. Статья о синхронизируемых passkey против аппаратных ключей подробно разбирает различия.
Что, если мой браузер или ключ не поддерживает PRF?
Тогда CardanoWall переходит на путь сида — так и задумано.
Поддержка WebAuthn PRF зависит от сочетания браузера, операционной системы и аутентификатора. CardanoWall проверяет, способно ли это сочетание выполнять PRF, ещё до того как добавить такой фактор разблокировки для хранилища, — поэтому вас никогда не заведут в хранилище, которое вы потом не смогли бы открыть.
Доступ только по сиду — это не урезанный режим. Это суверенный путь: сид является идентичностью, а всё остальное — удобство, наслоённое сверху, когда платформа может безопасно его поддержать.
Что всё же может пойти не так?
Passkey закрывают большой класс рисков, но несколько моментов всё же остаётся, и о них лучше сказать прямо.
- Украденный сид — это полная компрометация идентичности. Кто владеет вашим Identity Seed, тот и есть эта идентичность. Ответ — создать новую идентичность и деактивировать старую, а не сбросить пароль, потому что пароля нет.
- Разблокированная сессия — это живая мишень. Пока хранилище разблокировано, ваши сиды и выведенные закрытые ключи живут в памяти браузера, чтобы вы могли подписывать и расшифровывать. CardanoWall держит этот материал вне состояния React и обнуляет его при блокировке и выходе по мере возможностей, но вредоносный скрипт или расширение в разблокированной сессии всё же может прочитать секреты в памяти. Строгая политика безопасности контента и минимум скриптов снижают этот риск, но не устраняют его. На машине, которую вы не полностью контролируете, блокируйте хранилище, когда отходите, а не оставляйте за собой открытую сессию.
- Удаление passkey не действует задним числом. Когда вы удаляете фактор, клиент заново шифрует хранилище под оставшиеся факторы, а старая строка шифротекста жёстко удаляется, так что удалённый ключ больше не может открыть текущее хранилище. Но если злоумышленник уже воспользовался этим passkey до того, как вы его удалили, удаление не отменит сделанного им. См. что происходит, если удалить passkey.
- Потеряйте всё — и дверь исчезнет. Если вы потеряете все копии сида и все факторы разблокировки, дальнейшее использование этой идентичности станет невозможным. Подтверждения, которые вы уже опубликовали, проверяются по-прежнему и навсегда — они живут в Cardano, а не в вашем хранилище, — но действовать от имени этой идентичности вы больше не сможете.
Passkey снижают риск. Они не снимают с вас ответственности за защиту сида и устройства.
Коротко
Passkey делают CardanoWall удобным, не превращая CardanoWall в хранителя.
Сервер хранит зашифрованный шифротекст хранилища и ничего, что он мог бы расшифровать. Ваш passkey позволяет браузеру вывести материал, который его открывает. Ваш Identity Seed остаётся переносимым корнем всей идентичности. Сохраните сид, а затем полагайтесь на passkey для ежедневного доступа. Удобство сверху, суверенность снизу. Если хотите понять, почему сид по-прежнему важен, даже когда passkey зарегистрированы, прочитайте почему Identity Seed по-прежнему важен.
Дополнительные материалы
- W3C Web Authentication (WebAuthn) Level 3: w3.org/TR/webauthn-3
- FIDO Alliance — обзор passkey: fidoalliance.org/passkeys
- MDN — расширения WebAuthn (включая PRF): developer.mozilla.org
- Yubico — руководство разработчика по расширению WebAuthn PRF: developers.yubico.com
- Стандарт Label 309: label309.org — открытый исходный код на github.com/cardanowall