Что такое passkeys и заменят ли они пароли
Основы3 минРедакция Innovialabs
Коротко
Passkey — это пара криптографических ключей вместо пароля: закрытый ключ остаётся на вашем устройстве и открывается отпечатком, лицом или PIN-кодом, сайт хранит только открытый ключ, а поддельный сайт не может им воспользоваться, поэтому фишинг и утечки паролей перестают работать.
Короткий ответ
Passkey (ключ доступа) — способ входа без пароля. Вместо секрета, который вы вводите, устройство создаёт для каждого сайта пару ключей: закрытый остаётся у вас, открытый хранит сайт. Вход вы подтверждаете тем же, чем разблокируете телефон или ноутбук, — отпечатком, лицом или PIN-кодом.
Пароли не исчезнут за один день, но у крупных сервисов passkeys уже становятся основным способом входа.
Как это работает
Passkeys построены на стандартах FIDO2 / WebAuthn и криптографии с открытым ключом:
- Регистрация. Устройство генерирует пару ключей для сайта. Закрытый ключ остаётся в защищённом хранилище устройства или в менеджере паролей. Сайт получает только открытый ключ.
- Вход. Сайт отправляет случайный challenge (запрос). Устройство просит подтвердить вход биометрией или PIN-кодом и подписывает запрос закрытым ключом.
- Проверка. Сайт проверяет подпись сохранённым открытым ключом. Совпало — вы вошли.
Отпечаток или лицо никогда не покидают устройство — они лишь открывают локальный ключ. А у сайта нет ничего, что позволило бы войти под вашим именем.
Почему не работает фишинг
Пароль можно ввести на любой похожей странице. С passkey так не получится:
- Каждый passkey привязан к домену сайта. Браузер не предложит passkey от
example.comнаexamp1e-login.com. - Нечего вводить и пересказывать, значит, нечего и выманить.
- При утечке базы сайта злоумышленники получат только открытые ключи, бесполезные для входа.
- У каждого сайта своя пара ключей — нет повторов и нет credential stuffing.
Синхронизация и устройства
- Синхронизируемые passkeys хранятся в iCloud Keychain, менеджере паролей Google или стороннем менеджере паролей и появляются на всех ваших устройствах с этим аккаунтом.
- Привязанные к устройству passkeys живут на одном устройстве, например на аппаратном ключе, и никогда не копируются. Компании используют их для аккаунтов с высоким риском.
- Вход с чужого устройства: если на компьютере нет passkey, он может показать QR-код; вы сканируете его телефоном, а телефон подтверждает вход и через Bluetooth проверяет, что он физически рядом.
Текущая поддержка
Passkeys работают в актуальных версиях основных операционных систем и браузеров, и многие крупные сервисы — почтовые, маркетплейсы, платёжные и платформы для разработчиков — уже их предлагают. Детали различаются: где-то passkey — второй фактор, где-то полноценная замена паролю.
Что пока требует внимания:
- Восстановление аккаунта — если вы потеряли все устройства, сервису всё равно нужен безопасный способ вернуть доступ.
- Переезд между экосистемами — внутри одной платформы passkeys синхронизируются хорошо, а перенос между провайдерами ещё стандартизируется.
- Общие аккаунты — делиться passkeys можно в некоторых менеджерах паролей, но это сложнее, чем передать пароль.
Что нужно разработчикам для входа по passkey
- Используйте поддерживаемую серверную библиотеку WebAuthn для вашего языка, а не проверяйте подписи вручную.
- Эндпоинт регистрации: сформируйте параметры (challenge, ID проверяющей стороны — ваш домен, идентификатор пользователя), вызовите
navigator.credentials.create()в браузере, проверьте ответ на сервере. - Храните для каждого ключа: ID ключа, открытый ключ, счётчик подписей, ID пользователя, дату создания и понятное название. Разрешите несколько passkeys на аккаунт.
- Эндпоинт входа: выдайте новый challenge, вызовите
navigator.credentials.get(), проверьте подпись и challenge. - Автозаполнение: пусть браузер предлагает passkeys прямо в поле логина.
<input type="text" name="username" autocomplete="username webauthn">
const credential = await navigator.credentials.get({
publicKey: optionsFromServer, // challenge, rpId и т. д.
mediation: "conditional",
});
- Оставьте запасной вход — пароль с 2FA или вход по почте — и понятный сценарий восстановления. Предлагайте создать passkey после успешного входа, когда пользователь уже подтверждён.
- В мобильных приложениях свяжите приложение с доменом (associated domains в iOS, Digital Asset Links в Android), чтобы одни и те же passkeys работали и на сайте, и в приложении.
Актуальные данные о поддержке и шаблоны внедрения собраны в руководстве для разработчиков passkeys.dev.