Хабрахабр

Новые стандарты для беспарольной аутентификации: как они работают

На прошлой неделе были опубликованы два новых стандарта для беспарольной аутентификации на сайтах, в мобильных и веб-приложениях: WebAuthn API и CTAP. Оба были одобрены Microsoft, Mozilla и Google.

Подробнее об них расскажем ниже.


/ Flickr / Mark Burnett / СС

Первый занимается внедрением технологических стандартов для интернета, а второй — разработкой и совершенствованием надежных стандартов аутентификации в сети. WebAuthn стал результатом коллаборации консорциумов W3C и FIDO Alliance.

0 консорциуму W3C. Работа над стандартом WinAuthn началась еще в 2015 году, когда FIDO передали веб-API фреймворка аутентификации FIDO 2. 0 Web API позволяют пользователям залогиниться в сервисах Google, Facebook, Dropbox, GitHub и другим, используя секретные токены. Последовавшие версии FIDO 2.

0 Web API, однако поддерживает множество других способов аутентификации. WinAuthn работает по тем же принципам, что и FIDO 2. Новый стандарт дает пользователям возможность идентифицировать себя в сетевых приложениях и на сайтах по отпечатку пальца, лицу, сетчатке глаза и другим биометрическим показателям.

Также FIDO Alliance был разработан новый протокол аутентификации CTAP (Client-to-Authenticator Protocol), позволяющий идентифицировать пользователей помощью внешних ключей безопасности (например, USB-ключей) или мобильных устройств.

Это означает, что вскоре их начнут интегрировать в ИТ-экосистему. Стандарты уже утвердили представители Microsoft, Apple, Google, PayPal и др. В частности, консорциум W3C уже призвал разработчиков начать работу над реализациями WebAuthn.


/ Flickr / Christiaan Colen / CC

Принцип работы WebAuthn

Последовательность действий пользователя при аутентификации с помощью нового стандарта следующая:

  1. Пользователь через компьютер или ноутбук заходит на сайт example.ru и видит опцию «Войти с помощью телефона».
  2. Пользователь выбирает эту опцию и получает сообщение от браузера «Пожалуйста, выполните вход на своем телефоне».
  3. На телефон приходит уведомление «Войти на сайт example.ru».
  4. При нажатии на уведомление появляется список аккаунтов, из которого выбирается нужный.
  5. Далее, идет запрос авторизации (отсканировать палец, ввести PIN-код и т. д.), и в случае успеха сайт открывается на компьютере/ноутбуке.

Данные входа принадлежат пользователю, а управляются аутентификатором, с которым через браузер и ОС взаимодействует сервис, использующий WinAuthn. С помощью скриптов выполняются операции создания новых данных для входа или реализуется аутентификация по уже существующим. Скрипты не имеют доступа к данным пользователя, а только получают информацию о них в виде объектов.

С их помощью WebAuthn регистрирует данные входа (credentials) на сервере, а затем используют их для проверки «подлинности» пользователя. В основе стандарта лежат два базовых метода, отвечающих за регистрацию и вход в систему: navigator.credentials.create() и navigator.credentials.get().

  • Navigator.credentials.create() создает реквизиты доступа либо при регистрации аккаунта, либо для ассоциации новой асимметричной пары ключей с уже существующим аккаунтом.
  • Navigator.credentials.get() использует уже известные реквизиты доступа для аутентификации на сервисе.

Оба метода требуют защищенного соединения (например, https). По сути, во время работы они получают от сервера длинное число, которое называется challenge, а затем передают его обратно, подписав закрытым ключом. Это доказывает серверу, что пользователь имеет необходимый для аутентификации закрытый ключ. Поэтому раскрывать дополнительные секреты по сети нет необходимости.

Этот ID затем передается клиентом аутентификатору при каждой операции, чтобы убедиться, что все проходит исключительно в рамках идентифицированного сервиса. При этом данные пользователей для входа ассоциируются с уникальным ID.

О протоколе CTAP

Протокол CTAP концептуально состоит из трех уровней: Authenticator API, Message Encoding и Transport-specific Binding.

Здесь используются следующие методы: authenticatorMakeCredential для генерации новых входных данных, authenticatorGetAssertion для подтверждения аутентификации и authenticatorCancel для отмены всех текущих операций. На уровне абстракции Authenticator API, каждая операция определяется как API-вызов — принимает входные параметры и возвращает результат (или ошибку).

Хост должен создать и зашифровать запрос и отправить его аутентификатору с использованием выбранного транспортного протокола. На уровне Message Encoding осуществляется формирование и шифрование всех запросов к Authenticator API.

Что касается уровня Transport-specific Binding, то здесь запросы и ответы передаются внешним аутентификаторам с использованием USB, NFC, Bluetooth и др.

Кто внедряет

В 60-м релизе Firefox и 67-м релизе Chrome (выходят в мае) будет поддержка WinAuthn. Microsoft еще в феврале анонсировали эту спецификацию в браузере Edge и Windows Hello, встроенной системе проверки подлинности учетных данных.

В компаниях убеждены, что нововведения в браузерах позволят повысить защиту от фишинга, атак посредника (MITM) и атак повторного воспроизведения.

Поэтому можно ожидать, что новости о внедрении новых стандартов появятся в скором времени. Apple пока еще никак не комментировали поддержку стандарта в Safari, однако часть её инженеров входит в состав рабочей группы WinAuthn.

Майкл Джонс (Michael Jones), директор по партнерским отношениям Microsoft и один из редакторов спецификации WebAuthn, отметил: «Внедрение WebAuthn это большой шаг к практичной, прочной и надежной в области сохранения аутентификационных данных в сети».

Несколько материалов из нашего корпоративного блога:

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»