Каждый, кто хоть раз забывал пароль от очередного аккаунта или получал подозрительное письмо с просьбой «срочно войти на сайт банка», знает, как ненадёжны и уязвимы привычные нам пароли. За последние годы хакеры научились взламывать и красть пароли с пугающей регулярностью. Но кажется, у нас наконец-то появился шанс навсегда забыть об этой головной боли благодаря passkeys — технологии, которая использует принципы криптографии для безопасной аутентификации.
Но как это работает на самом деле, и почему именно криптография стала ключом к безопасному интернету?
🔐 Что такое passkeys?
В основе passkeys лежит пара криптографических ключей:
- 🔒 Приватный ключ хранится исключительно на устройстве пользователя.
- 📬 Публичный ключ хранится на сервере сайта.
Когда пользователь хочет войти в аккаунт, сайт отправляет ему уникальный вызов («challenge»). Пользователь подписывает его своим приватным ключом, а сайт проверяет подпись публичным ключом. Всё просто: никакие чувствительные данные по сети не отправляются, а значит, украсть просто нечего.
🎣 Прощай, фишинг!
Само по себе использование криптографических подписей не ново. Однако passkeys идут дальше, решая фундаментальную проблему, с которой пароли никогда не справлялись — фишинг.
Главная причина фишинга — это возможность подменить сайт и обманом заставить пользователя раскрыть свои данные. Passkeys решают эту проблему благодаря стандарту WebAuthn, который жёстко связывает ключ с конкретным веб-сайтом. Если злоумышленник пытается заставить пользователя использовать passkey с другим сайтом, устройство просто откажет в аутентификации.
Технически это реализуется так:
- 🌐 Сайт, запрашивающий аутентификацию, передаёт браузеру своё доменное имя (origin).
- 🖥️ Браузер передаёт эту информацию аутентификатору (устройству, управляющему passkey).
- 🔍 Аутентификатор проверяет, совпадает ли origin с изначальным сайтом, для которого был создан passkey.
- ✅ Если нет совпадения — аутентификация не происходит.
📱💻 Виды аутентификаторов и их особенности
Есть два типа устройств-аутентификаторов:
- 📱 Платформенные аутентификаторы
(например, iCloud Keychain, Google Password Manager)
➕ Удобны в использовании, имеют облачные резервные копии
➖ Уязвимы при компрометации устройства - 🔑 Внешние аутентификаторы (roaming authenticators)
(например, YubiKey, Titan Security Key)
➕ Максимальная безопасность, независимы от устройства
➖ Можно потерять, обычно нет резервной копии
Для важных аккаунтов лучше всего использовать именно внешние аппаратные ключи.
⚙️ Технические детали: криптография под капотом
На практике passkeys основаны на алгоритмах цифровой подписи (например, ECDSA или Ed25519). Генерация ключей происходит непосредственно на устройстве пользователя:
- 🌱 Ключи генерируются случайным образом и никогда не покидают устройство.
- 📃 Публичный ключ отправляется на сервер во время регистрации.
- 🔐 Приватный ключ используется для подписи вызовов.
Дополнительную безопасность дают криптографические расширения (extensions):
- 🧩 prf-extension позволяет реализовать HMAC-функции и даже выводить ключи, подходящие для шифрования.
- 📦 largeBlob даёт возможность хранить сертификаты и дополнительные данные, связанные с пользователем.
Однако пока не все браузеры и устройства поддерживают эти расширения, хотя в будущем ситуация улучшится.
🚧 Passkeys не серебряная пуля?
Несмотря на впечатляющий потенциал, passkeys не решают всех проблем сразу:
- ⚠️ Уязвимость при компрометации браузера
Если браузер взломан, пользователь может быть обманут насчёт того, для какого сайта подписывает запрос. - 🕳️ Поддельные аутентификаторы
Недобросовестные устройства могут незаметно раскрыть ваши приватные ключи хакерам. - 📛 Коллизии идентификаторов
Возможны (хоть и маловероятны) совпадения идентификаторов passkeys, поэтому серверы должны защищаться от такой ситуации.
🛟 А что делать, если ключ потерян?
Важный момент: потеря passkey — это потеря доступа, ведь ключи нельзя восстановить. Поэтому:
- ☁️ Используйте платформенные решения с резервными копиями, если хотите избежать риска потери.
- 🛡️ Для наиболее важных аккаунтов предпочтите аппаратные решения и предусмотрите механизмы восстановления аккаунта через дополнительные факторы.
🗝️ Моё мнение: будущее уже здесь
Лично для меня, человека, который уже много лет интересуется вопросами информационной безопасности, технология passkeys — это, пожалуй, лучшее, что происходило в этой области за последнее время. Удобство и криптографическая защищённость становятся доступными каждому пользователю, а не только экспертам по безопасности.
Тем не менее, важно помнить, что любая технология имеет границы применимости. Passkeys отлично защитят от массовых атак, но пользователям и разработчикам стоит внимательно относиться к резервному копированию, выбору аутентификаторов и возможным уязвимостям своих браузеров.
Внедрение passkeys — важный шаг на пути к более безопасному интернету, и я рекомендую всем, кто заботится о своей безопасности, уже сегодня задуматься о переходе на эту технологию.
🌐 Полезные ссылки для изучения темы: