Расшифровка аббревиатур
FIDO2 это набор открытых стандартов, разработанных альянсом FIDO совместно с консорциумом W3C. В него входят две части. WebAuthn, Web Authentication, это интерфейс браузера, через который сайт запрашивает создание и использование криптографических учётных данных. CTAP, Client to Authenticator Protocol, описывает общение браузера или системы с самим аутентификатором: аппаратным ключом, телефоном или встроенным модулем.
Эта пара стандартов лежит в основе аппаратных ключей безопасности и технологии passkey. Прежний стандарт U2F был ограничен ролью второго фактора, а FIDO2 позволяет входить и без пароля вообще.
Как проходит регистрация и вход
При регистрации сайт передаёт браузеру запрос с идентификатором своего домена и случайным значением. Аутентификатор, после подтверждения действия касанием или биометрией, создаёт новую пару ключей именно для этого сайта. Открытый ключ уходит сервису, закрытый остаётся внутри устройства и оттуда не выгружается.
При входе сервис присылает новый случайный вызов. Аутентификатор проверяет, что запрос пришёл от нужного домена, подписывает вызов закрытым ключом, и сервер сверяет подпись. Привязка к домену делает поддельные страницы бесполезными: аутентификатор не станет подписывать вызов для чужого адреса.
Виды аутентификаторов
Кроссплатформенные аутентификаторы это внешние устройства: USB-ключи, ключи с NFC и Bluetooth. Их можно подключать к разным компьютерам и телефонам. Платформенные встроены в устройство: сканер отпечатка на ноутбуке, модуль безопасности процессора, защищённая область телефона. Каждый вариант имеет свой сценарий: внешний ключ удобен как независимый резерв, встроенный удобен ежедневно.
Ключи бывают с разным набором возможностей. Одни хранят только счётчик для второго фактора, другие способны хранить полноценные обнаруживаемые учётные данные для входа без ввода имени. Стоит смотреть на спецификацию модели, если вы выбираете ключ для конкретной задачи.
Сравнение с другими способами
По устойчивости к фишингу аппаратные ключи находятся выше кодов из SMS и приложений. Нет секрета, который можно пересказать или ввести не туда. Нет сети оператора, которую можно обмануть. Даже если пароль украден, без ключа вход невозможен, если пароль вообще используется.
Минусы прозаичны. Ключ нужно иметь под рукой, его можно потерять, поэтому необходим запасной ключ. Не все сервисы и старые системы его поддерживают. Некоторые модели имеют ограничения по числу хранимых входов. Всё это преодолимо, если планировать заранее.
Практика использования
Разумно иметь два ключа: основной и запасной, зарегистрировав оба на всех важных аккаунтах и храня запасной отдельно. Начните с почты, менеджера паролей и облачного хранилища, так как через них восстанавливается остальное. После настройки проверьте вход с каждого ключа.
Сохраните резервные коды сервиса на случай, если потеряете оба ключа. Для проверки того, что сайт поддерживает стандарт, ищите в настройках безопасности пункт про ключи безопасности или passkey. Ключ не запрашивает ваш PIN сайту: этот PIN действует локально на самом устройстве.
Какие данные видит сайт
Приватность в FIDO2 продумана заранее. Для каждого сайта создаётся отдельная пара ключей, поэтому разные сервисы не могут сопоставить, что вы один и тот же человек, по идентификатору ключа. Сайт получает лишь открытый ключ и идентификатор учётных данных. Сведения о биометрии, PIN или другом способе локальной проверки на сервер не передаются.
Иногда сервису нужно убедиться, что ключ произведён определённым изготовителем. Для этого существует аттестация, при которой устройство доказывает свою модель. Она не идентифицирует конкретный экземпляр и обычно используется в корпоративных сценариях. Для домашнего использования аттестацию, как правило, не запрашивают.
Перед покупкой ключа обратите внимание на тип разъёма: USB-A, USB-C и NFC встречаются в разных сочетаниях, и нужный вариант зависит от ваших компьютеров и телефона. Для смартфона удобнее модель с NFC или USB-C. Также проверьте, какие сервисы из ваших уже поддерживают ключи безопасности.