Как работают аппаратные ключи безопасности стандартов FIDO2 и WebAuthn на уровне взаимодействия с браузером и сервером?
Аппаратные ключи безопасности, такие как YubiKey, представляют собой физические устройства, которые подключаются к компьютеру или смартфону по USB, NFC или Bluetooth. Они реализуют криптографическую аутентификацию на основе стандартов FIDO2 и WebAuthn, полностью исключая необходимость передачи пароля по сети. Когда пользователь пытается войти на сайт, сервер генерирует уникальную случайную последовательность байт и отправляет её в браузер вместе с идентификатором запрашиваемого домена.
Браузер передает этот запрос подключенному аппаратному ключу. Ключ проверяет, совпадает ли домен сервера с тем, который был сохранен при регистрации, что делает фишинг практически невозможным, так как поддельный сайт не сможет выдать себя за настоящий. Для подтверждения операции устройство требует физического воздействия от пользователя, например, нажатия на сенсорную кнопку или ввода PIN-кода непосредственно на самом токене.
После подтверждения ключ использует встроенный защищенный микрочип для создания цифровой подписи с помощью асимметричной криптографии. При первичной регистрации на сайте генерируется уникальная пара ключей: открытый ключ отправляется и сохраняется на сервере, а закрытый ключ никогда не покидает защищенную память аппаратного устройства. При последующих входах ключ подписывает случайный вызов сервера с помощью закрытого ключа, а сервер проверяет подпись с помощью сохраненного открытого ключа.
Этот метод обеспечивает максимальный уровень защиты от перехвата учетных данных, утечек баз данных на стороне сервисов и атак типа Man-in-the-Middle. Даже если база данных сервера будет полностью скомпрометирована злоумышленниками, у них останутся лишь открытые ключи, с помощью которых невозможно войти в систему или восстановить исходный закрытый ключ.