Аутентификация без пароля: WebAuthn и FIDO2
Изучите стандарт WebAuthn от W3C и ключи доступа FIDO2 как будущее аутентификации
«Аутентификация без пароля: WebAuthn и FIDO2» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Архитектура FIDO2
FIDO2 — это обобщающий термин для спецификации веб-аутентификации W3C (WebAuthn), объединённой с протоколом взаимодействия клиента с аутентификатором 2 (CTAP2) Альянса FIDO. Вместе они определяют полноценную систему беспарольной аутентификации с использованием криптографии с открытым ключом, связанной с источником доверяющей стороны.
Типы аутентификаторов
FIDO2 поддерживает две категории аутентификаторов. Платформенные аутентификаторы встроены в устройство: Touch ID и Face ID на устройствах Apple, Windows Hello в Windows. Перемещаемые аутентификаторы представляют собой внешние аппаратные токены: YubiKey, Google Titan Key, ключи Feitian. Все они используют криптографию с открытым ключом и формируют аттестационные утверждения.
Регистрация: создание учётных данных
Во время регистрации WebAuthn аутентификатор создаёт новую асимметричную пару ключей для доверяющей стороны. Открытый ключ отправляется на сервер и сохраняется. Закрытый ключ никогда не покидает аутентификатор. Аттестационное утверждение подтверждает тип аутентификатора и то, что ключ был создан внутри аппаратного обеспечения аутентификатора.
Аутентификация: утверждение учётных данных
Во время аутентификации WebAuthn сервер отправляет клиенту запрос. Аутентификатор подписывает запрос вместе с идентификатором доверяющей стороны и данными клиента, используя сохранённый закрытый ключ. Сервер проверяет подпись с помощью сохранённого открытого ключа. Общий секрет ни на одном этапе не передаётся.
Привязка к источнику предотвращает фишинг
Идентификатор доверяющей стороны в утверждении WebAuthn криптографически связан с источником (доменом) запрашивающей страницы. Аутентификатор откажется подписывать утверждение для источника, отличного от того, с которым он был зарегистрирован. Благодаря самой своей конструкции WebAuthn устойчив к фишингу: поддельный фишинговый сайт не сможет завершить аутентификацию.
Резидентные ключи и настоящая беспарольная аутентификация
Обнаруживаемые учётные данные (ранее — резидентные ключи) хранятся непосредственно в аутентификаторе и индексируются по идентификатору доверяющей стороны. Это обеспечивает настоящие беспарольные сценарии: пользователь предъявляет свой аутентификатор, выбирает свою учётную запись среди данных, сохранённых на устройстве, и проходит аутентификацию без ввода имени пользователя или пароля.
Проверка пользователя и его присутствие
WebAuthn различает проверку пользователя (UV) и присутствие пользователя (UP). Для подтверждения присутствия пользователю достаточно прикоснуться к аутентификатору. Проверка пользователя дополнительно требует ввода PIN или биометрической проверки, подтверждая личность конкретного пользователя. Для аутентификации в приложениях с высокими требованиями к безопасности следует требовать UV.
Протокол CTAP2
CTAP2 определяет протокол взаимодействия между клиентом (браузером или OS) и внешним перемещаемым аутентификатором через USB, NFC или BLE. Он задаёт команды для создания учётных данных, формирования утверждений и управления аутентификатором. CTAP2.1 добавляет такие возможности, как управление учётными данными и политики обязательной проверки UV.
Ключи доступа: синхронизируемые учётные данные
Ключи доступа — это обнаруживаемые учётные данные WebAuthn, которые синхронизируются между устройствами пользователя через зашифрованное облако поставщика платформы (Связка ключей iCloud для Apple, Менеджер паролей Google, Windows Hello для бизнеса). Ключи доступа обеспечивают беспарольную аутентификацию с доступностью на разных устройствах, сочетая безопасность с удобством, которого пользователи ожидают от паролей.
Сценарий использования ключа доступа
Типичный сценарий аутентификации с ключом доступа: пользователь открывает веб-сайт и нажимает «Войти с помощью ключа доступа». Браузер показывает доступные для сайта ключи доступа. Пользователь проходит биометрическую аутентификацию (Face ID, Touch ID, Windows Hello). Браузер подписывает запрос и отправляет утверждение. Весь процесс занимает несколько секунд и не требует ввода пароля.
Сравнение WebAuthn с традиционной аутентификацией
Традиционные пароли: уязвимы к фишингу, могут использоваться повторно, поддаются взлому при утечках баз данных. Одноразовые коды OTP (TOTP): уязвимы к фишингу в реальном времени. Коды SMS: уязвимы к замене SIM-карты и фишингу. WebAuthn и ключи доступа: устойчивы к фишингу благодаря привязке к источнику, на сервере нет секрета для кражи, они уникальны для каждого сайта, а закрытые ключи защищены аппаратно. WebAuthn — самый надёжный широко внедрённый механизм аутентификации, доступный сегодня.
Проверка WebAuthn и паролей
Какое свойство WebAuthn делает его принципиально устойчивым к фишинговым атакам, в отличие от паролей или кодов TOTP?
Итоги урока: FIDO2 и WebAuthn
FIDO2 объединяет WebAuthn (W3C) и CTAP2 (Альянс FIDO) для устойчивой к фишингу беспарольной аутентификации. Платформенные аутентификаторы (Touch ID, Face ID) и перемещаемые аутентификаторы (YubiKey) используют криптографию с открытым ключом, связанную с источником доверяющей стороны. Ключи доступа расширяют эту возможность синхронизацией между устройствами. WebAuthn сегодня обеспечивает самый высокий уровень безопасности среди широко доступных механизмов аутентификации.
Часто задаваемые вопросы
Урок «Аутентификация без пароля: WebAuthn и FIDO2» бесплатный?
Да — полный текст урока «Аутентификация без пароля: WebAuthn и FIDO2» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Аутентификация без пароля: WebAuthn и FIDO2»?
Изучите стандарт WebAuthn от W3C и ключи доступа FIDO2 как будущее аутентификации Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Аутентификация без пароля: WebAuthn и FIDO2»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Фундаментальная проблема аутентификации по паролю
- SRP: протокол безопасной удалённой аутентификации по паролю
- Протоколы PAKE и их свойства
- Аутентификация без пароля: WebAuthn и FIDO2