Пара слов о Passkeys
Видео выше никак не связано с темой passkeys, просто меня однажды впечатлил баг с модификатором, и сегодня решил рассказать вам о потенциальной проблеме в смарт контрактах.
Сейчас часто встречаю статьи про технологию регистрации и логина на сайтах web2, которую назвали passkeys. Примечательно то, что она также использует систему приватных/публичных ключей, как и кошельки web3. А теперь, чуть подробнее.
Passkeys — это метод аутентификации пользователей, основанный на криптографии с открытым ключом. Вместо пароля используются:
1. Публичный ключ: хранится на сервере сервиса и не является конфиденциальным.
2. Приватный ключ: хранится на устройстве пользователя и защищается биометрической аутентификацией (например, отпечаток пальца или распознавание лица).
При входе в систему устройство пользователя подписывает запрос приватным ключом, а сервер проверяет подпись с помощью публичного ключа.
С одной стороны passkeys устраняет риски, связанные с утечкой, угадыванием или повторным использованием паролей, а также исключает случаи, когда пользователи просто забывают свои пароли и приходится проходить процесс их восстановления. А с другой - если девайс, на котором хранятся passkeys будет утерян, то восстановить доступ к услугам или сервисам станет сложной задачей.
Тут надо уточнить, что приватный ключ хранится в защищенных аппаратных компонентах, таких как Secure Enclave (Apple) или Trusted Platform Module (Windows), и может быть защищен биометрией. Именно поэтому потеря девайса - станет проблемой.
Формирование публичного и приватного ключей в системе passkeys базируется на принципах асимметричной криптографии, также известной как криптография с открытым ключом. Этот процесс выполняется автоматически на устройстве пользователя в момент регистрации passkey.
Как вообще происходит создание ключа и регистрация на сайте:
1. Когда пользователь регистрирует passkey на сайте или в приложении, сервис отправляет запрос на создание новой пары ключей через протокол WebAuthn (Web Authentication API).
2. Устройство пользователя генерирует пару ключей: приватный ключ и публичный ключ, который создается одновременно с первым и может быть передан серверу сервиса.
3. Публичный ключ отправляется на сервер сервиса, где он сохраняется для дальнейшей аутентификации. Он не является конфиденциальным и не может быть использован для доступа к аккаунту без соответствующего приватного ключа.
5. Сервер связывает публичный ключ с учетной записью пользователя.
6. Теперь, когда пользователь пытается войти в систему, сервер отправляет запрос на аутентификацию через WebAuthn.
7. Устройство пользователя использует приватный ключ для подписания запроса. Этот процесс требует подтверждения пользователя (например, с помощью биометрии или PIN-кода).
8. Сервер проверяет подпись с помощью публичного ключа, сохраненного при регистрации. Если подпись верна, доступ предоставляется.
В целом, довольно интересная технология. Будет забавно, если через год-два выйдут приложения, как web3 кошельки, которые будут предназначены только для авторизации на различных сайтах через passkeys.
#passkeys
Post #1329
992
- 🔥 5
- ❤ 1
- 👍 1
- 🤔 1