Перейти к содержанию
Innovialabs

Что такое passkeys и заменят ли они пароли

Основы3 мин

Коротко

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

Короткий ответ

Passkey (ключ доступа) — способ входа без пароля. Вместо секрета, который вы вводите, устройство создаёт для каждого сайта пару ключей: закрытый остаётся у вас, открытый хранит сайт. Вход вы подтверждаете тем же, чем разблокируете телефон или ноутбук, — отпечатком, лицом или PIN-кодом.

Пароли не исчезнут за один день, но у крупных сервисов passkeys уже становятся основным способом входа.

Как это работает

Passkeys построены на стандартах FIDO2 / WebAuthn и криптографии с открытым ключом:

  1. Регистрация. Устройство генерирует пару ключей для сайта. Закрытый ключ остаётся в защищённом хранилище устройства или в менеджере паролей. Сайт получает только открытый ключ.
  2. Вход. Сайт отправляет случайный challenge (запрос). Устройство просит подтвердить вход биометрией или PIN-кодом и подписывает запрос закрытым ключом.
  3. Проверка. Сайт проверяет подпись сохранённым открытым ключом. Совпало — вы вошли.

Отпечаток или лицо никогда не покидают устройство — они лишь открывают локальный ключ. А у сайта нет ничего, что позволило бы войти под вашим именем.

Почему не работает фишинг

Пароль можно ввести на любой похожей странице. С passkey так не получится:

  • Каждый passkey привязан к домену сайта. Браузер не предложит passkey от example.com на examp1e-login.com.
  • Нечего вводить и пересказывать, значит, нечего и выманить.
  • При утечке базы сайта злоумышленники получат только открытые ключи, бесполезные для входа.
  • У каждого сайта своя пара ключей — нет повторов и нет credential stuffing.

Синхронизация и устройства

  • Синхронизируемые passkeys хранятся в iCloud Keychain, менеджере паролей Google или стороннем менеджере паролей и появляются на всех ваших устройствах с этим аккаунтом.
  • Привязанные к устройству passkeys живут на одном устройстве, например на аппаратном ключе, и никогда не копируются. Компании используют их для аккаунтов с высоким риском.
  • Вход с чужого устройства: если на компьютере нет passkey, он может показать QR-код; вы сканируете его телефоном, а телефон подтверждает вход и через Bluetooth проверяет, что он физически рядом.

Текущая поддержка

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

Что пока требует внимания:

  • Восстановление аккаунта — если вы потеряли все устройства, сервису всё равно нужен безопасный способ вернуть доступ.
  • Переезд между экосистемами — внутри одной платформы passkeys синхронизируются хорошо, а перенос между провайдерами ещё стандартизируется.
  • Общие аккаунты — делиться passkeys можно в некоторых менеджерах паролей, но это сложнее, чем передать пароль.

Что нужно разработчикам для входа по passkey

  1. Используйте поддерживаемую серверную библиотеку WebAuthn для вашего языка, а не проверяйте подписи вручную.
  2. Эндпоинт регистрации: сформируйте параметры (challenge, ID проверяющей стороны — ваш домен, идентификатор пользователя), вызовите navigator.credentials.create() в браузере, проверьте ответ на сервере.
  3. Храните для каждого ключа: ID ключа, открытый ключ, счётчик подписей, ID пользователя, дату создания и понятное название. Разрешите несколько passkeys на аккаунт.
  4. Эндпоинт входа: выдайте новый challenge, вызовите navigator.credentials.get(), проверьте подпись и challenge.
  5. Автозаполнение: пусть браузер предлагает passkeys прямо в поле логина.
<input type="text" name="username" autocomplete="username webauthn">
const credential = await navigator.credentials.get({
  publicKey: optionsFromServer, // challenge, rpId и т. д.
  mediation: "conditional",
});
  1. Оставьте запасной вход — пароль с 2FA или вход по почте — и понятный сценарий восстановления. Предлагайте создать passkey после успешного входа, когда пользователь уже подтверждён.
  2. В мобильных приложениях свяжите приложение с доменом (associated domains в iOS, Digital Asset Links в Android), чтобы одни и те же passkeys работали и на сайте, и в приложении.

Актуальные данные о поддержке и шаблоны внедрения собраны в руководстве для разработчиков passkeys.dev.

Частые вопросы

Без разблокировки устройства вашей биометрией или PIN-кодом passkey не использовать. Защитите телефон надёжной блокировкой экрана и убедитесь, что можете удалённо отвязать устройство от своих аккаунтов.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.