Все записи

9 мин чтения

Как CardanoWall хранит вашу идентичность

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

CardanoWall никогда не хранит ваш Identity Seed в открытом виде. На сервере лежит зашифрованное хранилище, которое могут открыть только ваши собственные passkey, плюс публичные, несекретные данные, нужные для работы вашего аккаунта. Сам сид — то, что и есть ваша идентичность, — остаётся на вашей стороне.

Если коротко, мысленная модель такая: ваш Identity Seed (сид идентичности) — это переносимая идентичность и настоящая резервная копия, а размещённое на сервере хранилище — лишь удобный слой, открываемый passkey, а не передача на хранение.

В этой статье разберём, что CardanoWall хранит, что он намеренно не может прочитать и что это значит, когда что-то идёт не так.

Что такое Identity Seed и почему это важно?

Идентичность в CardanoWall строится из одного 32-байтового Identity Seed. Из этого сида детерминированный вывод ключей порождает ключи, которыми вы реально пользуетесь: ключ Ed25519, подписывающий записи, и ключи на основе X25519, принимающие запечатанные файлы. Одни и те же 32 байта всегда воссоздают одну и ту же идентичность где угодно — на сайте, в инструменте командной строки, в SDK или в любом другом программном обеспечении, которое следует открытым правилам вывода Label 309.

Вот ключевое свойство: сид переносим, и он определяет всё. Ключи — производные от него. Поэтому единственный важный для хранения вопрос — где находится сам сид.

Ответ: у вас. CardanoWall может держать зашифрованную копию для удобства, но хранит он шифротекст, а не читаемые сиды.

Что CardanoWall хранит на самом деле?

CardanoWall хранит служебные данные, нужные для работы вашего аккаунта. Сюда входят:

  • состояние входа в аккаунт;
  • записи о биллинге и балансе;
  • ваши публичные ключи идентичности;
  • публичные записи подтверждений и ссылки на транзакции Cardano;
  • зашифрованный шифротекст хранилища идентичности;
  • ключи API, которые хранятся только как хеши;
  • продуктовые настройки, например состояние жизненного цикла каждой идентичности;
  • записи вашей адресной книги и настройки папки «Входящие».

Обратите внимание, чего в этом списке нет. Ваш Identity Seed, ваш производный закрытый ключ подписи, ваши производные закрытые ключи получателя и любые расшифрованные запечатанные файлы — всё это секреты на стороне клиента. Они никогда не хранятся в читаемом столбце на сервере. Зашифрованное хранилище — единственное место, где сервер держит хоть что-то, связанное с сидом, и держит он это как шифротекст, который не может открыть.

Чтобы увидеть полную картину того, что видит сервис, а что остаётся на вашем устройстве, прочитайте что видит CardanoWall.

Что такое хранилище идентичности?

Хранилище идентичности — это единый зашифрованный набор, который держит секреты идентичностей вашего аккаунта.

Внутри открытого текста хранилища каждая запись содержит 32-байтовый сид одной идентичности и закрытую отображаемую метку, которую вы для неё выбрали, — «Личное», «Пресс-служба», что бы вы ни ввели. (Аккаунт может держать несколько идентичностей; для каждой создаётся своя запись.) Метка тоже находится внутри шифрования, поэтому она никогда не раскрывается на стороне сервера.

Прежде чем что-либо из этого сохранится, оно шифруется. CardanoWall держит результат как одну текущую строку хранилища на аккаунт, в формате age v1. Сервер может держать этот шифротекст и отдавать его вам обратно, но он не держит ключевой материал, нужный для его открытия.

В этом весь смысл: хранилище — это не передача на хранение. Это зашифрованный кэш для удобства. Каноничный, переносимый артефакт — по-прежнему сид.

Что открывает хранилище?

Его открывает ваш зарегистрированный passkey — и больше ничего.

Хранилище шифруется исключительно для факторов WebAuthn passkey, которые поддерживают расширение PRF (псевдослучайная функция), по одной станзе получателя на каждый passkey. В размещённом на сервере хранилище намеренно нет станзы, выведенной из пароля, и нет станзы с открытым ключом. Во время разблокировки ваш аутентификатор выполняет проверку пользователя и передаёт браузеру ключевой материал, выведенный через PRF; этот материал открывает хранилище локально.

Сервер CardanoWall никогда не получает сид в открытом виде, расшифрованное хранилище или какой-либо закрытый ключ, выведенный из сида. Со стороны сервера всё, что он знает, — это что аккаунт аутентифицирован и что он может отдать обратно блок шифротекста. Открывает его ваш браузер в ходе проверки вашего passkey.

О том, как passkey обеспечивают эту защиту, и о компромиссах восстановления для разных типов passkey читайте в статье как passkey защищают ваше хранилище идентичности.

Почему просто не хранить сид на сервере?

Потому что это превратило бы CardanoWall в хранителя вашей идентичности — а именно такого режима отказа дизайн и избегает.

Если бы сервис хранил сиды в открытом виде или сиды, которые он мог бы расшифровать сам, то взлом сервера мог бы обернуться компрометацией пользовательских ключей. Злоумышленник, укравший базу данных или ключи сервера, мог бы подписываться от имени пользователей или расшифровывать их запечатанные записи. Это единая точка катастрофического отказа.

CardanoWall построен вокруг другого обещания: утечка базы данных не должна раскрывать Identity Seed, потому что сервер никогда не держит материал, который их открывает. Дизайн призван сделать гипотетический взлом серьёзным, но не катастрофическим для ваших ключей.

У выбора «шифровать только для passkey» есть два конкретных следствия, которые стоит назвать. Поскольку нет станзы, выведенной из пароля, в украденном хранилище нечего перебирать — нет выбранной человеком парольной фразы, которую можно прогнать перебором. А поскольку нет станзы с открытым ключом, нет и асимметричной мишени для будущей квантовой атаки (по типу Шора); ключи, защищающие хранилище, — это 256-битные симметричные значения, хранящиеся внутри ваших аутентификаторов, где актуальна квантовая угроза по типу Гровера, оставляющая запас эффективной стойкости примерно в 128 бит.

Это не устраняет все риски. Но это значит, что самый важный секрет не лежит в читаемом столбце сервера в ожидании копирования.

Является ли хранилище резервной копией?

Не последней инстанцией для восстановления. Настоящая переносимая резервная копия — это Identity Seed.

Если у вас есть сид, вы можете воссоздать ту же идентичность в CardanoWall, в инструменте командной строки, в SDK, в десктопном приложении или в любом будущем ПО для Label 309, которое следует тем же правилам вывода. Сид — единственное, что путешествует с вами повсюду.

Размещённое на сервере хранилище избавляет вас от необходимости перепечатывать сид каждый день. Оно также может помочь перейти на другое устройство со входом в аккаунт, когда ваш поставщик passkey синхронизирует passkey между вашими устройствами. Но хранилище принадлежит сервисному слою. Его можно удалить, оно может стать недоступным или быть удалено, когда вы убираете свой последний passkey. Сохранять нужно именно сид. Подробнее об этом — в статье почему сид идентичности всё ещё важен.

Что происходит в браузере при разблокировке?

Когда вы разблокируете идентичность, браузеру нужен временный доступ к закрытому ключевому материалу. Этого не избежать: чтобы подписать запись, клиент должен держать ключ подписи; чтобы расшифровать запечатанный файл — ключ получателя. Эти ключи выводятся из сида в браузере, после того как вы выполнили разблокировку.

Дизайн держит секреты вне обычного постоянного хранилища браузера. Локальный кэш браузера (IndexedDB) может держать зашифрованный шифротекст хранилища — те же байты, что есть у сервера, — поэтому при перезагрузке страницы достаточно одного касания passkey вместо обращения по сети. Он никогда не кэширует сид в открытом виде. Активные закрытые ключи живут в сессионной памяти, отдельно от состояния интерфейса приложения, и обнуляются при блокировке или выходе по мере возможности.

Это модель web-крипто, а не аппаратная изоляция, и она честна насчёт своих пределов. Вредоносное расширение браузера, скомпрометированное устройство или активный вредоносный скрипт, работающий во время разблокированной сессии, могут прочитать то, что находится в памяти, пока вы разблокированы. Строгая политика безопасности контента, минимум скриптов и разблокировка только по явному действию сокращают эту поверхность атаки, но не могут устранить её. CardanoWall убирает риск передачи на хранение сервису; он не может сделать недоверенное устройство безопасным. Механика описана в статье хранилище браузера и сессионные ключи, а более общий принцип — в почему ключи никогда не покидают устройство.

Что происходит, когда вы удаляете passkey?

Хранилище пересобирается без этого фактора.

Когда вы удаляете passkey, текущее хранилище заново шифруется для оставшихся факторов и записывается как новая единственная строка, замещая старый шифротекст на месте. Удалённый passkey больше не может открыть существующее хранилище. Сервис даже обеспечивает это на границе хранения: хранилище нельзя записать обёрнутым на учётные данные, которые аккаунт уже удалил.

Это настоящий отзыв для текущего размещённого на сервере хранилища. Это контроль на уровне сервиса, а не путешествие во времени. Если passkey был использован не по назначению, пока ещё был действителен, — например, чтобы открыть хранилище и прочитать сид внутри активной сессии, — то злоумышленник, возможно, уже держит сид, и повторное шифрование хранилища после этого не вернёт его обратно. В таком случае правильный ответ — не сброс, а старт с нуля: создайте новую идентичность, деактивируйте старую и опубликуйте новые публичные ключи там, где люди ожидают их найти.

Статья что происходит, если вы удаляете passkey разбирает точную последовательность.

Что если CardanoWall исчезнет?

Ваши опубликованные подтверждения всё равно проверяются.

Подтверждение Label 309 спроектировано так, чтобы проверяться автономно. Проверка одного из них зависит от публичных данных Cardano, от публичного контентно-адресуемого хранилища, когда запись на него указывает, и от собственной копии исходного содержимого или материала для расшифровки у проверяющего. Действительное подтверждение не требует, чтобы CardanoWall оставался в сети, — любой, у кого есть ссылка на транзакцию и публичный обозреватель блокчейна Cardano, может его проверить.

Ваша идентичность тоже сохраняется, если вы сохранили сид. Те же 32 байта восстанавливают ту же идентичность в любом совместимом инструменте.

Что вы теряете без сида — это будущее использование этой идентичности: создание новых подписей и расшифровку запечатанных записей, адресованных ей. Подтверждения, которые вы уже опубликовали, остаются проверяемыми навсегда, но действовать от имени этой идентичности вы больше не можете. Эта асимметрия — опубликованные подтверждения постоянны, а будущее использование зависит от владения сидом — это осознанная цена отсутствия хранителя.

Что вам на самом деле стоит сделать?

Сначала сохраните Identity Seed.

Положите его туда, чему вы доверяете для особо ценных секретов: в менеджер паролей, в офлайн-хранилище или в любую модель, которой вы пользуетесь для вещей, потерю которых не можете себе позволить. Затем добавьте passkey для повседневного удобства.

Для обычного использования эта комбинация — надёжный баланс: сид остаётся переносимым, а passkey делает ежедневный доступ удобным. Для идентичностей с повышенным риском добавьте операционные меры контроля — аппаратный ключ безопасности, выделенное устройство и отдельную идентичность, зарезервированную для чувствительной работы.

И ещё кое-что, что стоит чётко различать: утерянный сид (без оставшихся факторов разблокировки) означает, что будущее использование идентичности потеряно, но её подтверждения по-прежнему проверяются. Украденный сид — это полная компрометация идентичности, и ответ на неё — новая идентичность плюс деактивация старой, а никак не сброс пароля, потому что сбрасывать нечего: пароля нет.

Если коротко

CardanoWall хранит зашифрованный шифротекст хранилища, а не Identity Seed в открытом виде.

Ваш сид — это идентичность. Ваш passkey открывает зашифрованное хранилище. Браузер использует закрытые ключи только после того, как вы выполнили разблокировку, и очищает их при блокировке. Сервер может помочь вам публиковать, синхронизировать и удобно восстанавливать доступ — но по замыслу он не может прочитать или воссоздать вашу идентичность.

Сохраните сид. Пользуйтесь passkey. Понимайте разницу.

Что почитать дальше

securityidentitypasskeys