Введение в WebAuthn

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

Что такое WebAuthn?

Phishing Resistance — одна из выдающихся особенностей WebAuthn заключается в его устойчивости к фишинговым атакам. Поскольку процесс аутентификации основан на криптографии с открытым ключом, закрытый ключ пользователя никогда не покидает его устройство. Даже если пользователь будет обманут и введёт свои учётные данные на фишинговом сайте, злоумышленник не сможет использовать эти данные, поскольку они привязаны к конкретному домену.

Multi-Factor Authentication (MFA) — WebAuthn поддерживает MFA, комбинируя различные факторы, такие как «что-то, что вы есть» (биометрические данные), «что-то, что у вас есть» (ключ безопасности) и «что-то, что вы знаете» (ПИН-код). Этот многоуровневый подход значительно повышает безопасность по сравнению с традиционными парольными системами.

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

Соответствие нормативным требованиям — WebAuthn соответствует строгим нормам безопасности и конфиденциальности, таким как Закон о защите данных Калифорнии (CCPA) и Общий регламент по защите данных (GDPR), что делает его подходящим решением для компаний, работающих на глобальном уровне.

Как работает WebAuthn

Процесс регистрации начинается, когда пользователь пытается зарегистрироваться в приложении, поддерживающем WebAuthn. Вот пошаговое описание процесса:

  1. Инициирование пользователем — пользователь переходит в веб-приложение и начинает процесс регистрации.
  2. Генерация задачи — сервер создаёт уникальный вызов и отправляет его пользователю вместе с другими параметрами регистрации.
  3. Создание учётных данных — браузер в сотрудничестве с аутентификатором (например, USB-ключом безопасности или биометрическим устройством) создаёт пару открытого и закрытого ключей. Закрытый ключ безопасно хранится на устройстве пользователя, а открытый ключ отправляется на сервер для хранения.
  4. Проверка пользователя — пользователю может потребоваться предоставить согласие на использование биометрических данных или ввести ПИН-код для завершения регистрации.

В процессе аутентификации происходит следующее:

  1. Инициализация пользователем — пользователь заходит в веб-приложение и инициирует процесс входа.
  2. Генерация вызова — сервер генерирует новый вызов и отправляет его в браузер пользователя.
  3. Запрос аутентификации — браузер запрашивает у аутентификатора подпись на вызове с использованием закрытого ключа.
  4. Проверка пользователя — пользователю, возможно, потребуется предоставить согласие на использование биометрических данных или ввести ПИН.
  5. Генерация подписи — аутентификатор создаёт криптографическую подпись на основе вызова и отправляет её обратно в браузер.
  6. Проверка — браузер отправляет подпись на сервер, который проверяет её, используя сохранённый открытый ключ.

Внедрение WebAuthn в веб-приложения

Для интеграции WebAuthn в ваше веб-приложение необходимо использовать WebAuthn API, предоставляющий набор методов JavaScript для связи между веб-приложением и аутентификатором.

Шаги по внедрению:

  1. Включить WebAuthn API — убедитесь, что ваше веб-приложение поддерживает WebAuthn API. Большинство современных браузеров уже поддерживают его.
  2. Зарегистрировать учётные данные — зарегистрировать учётную запись с помощью вызова navigator.credentials.create({…}).
  3. Запросить аутентификацию — запросить аутентификацию с помощью вызова navigator.credentials.get({…}) после успешного создания учётной записи.
  4. Проверить подпись на сервере — убедиться, что подпись действительна, с помощью метода verifySignature(…) на стороне сервера.

Рекомендации по внедрению WebAuthn:

  • Уделяйте внимание удобству использования — сделайте процесс аутентификации удобным и простым для пользователей. Предоставьте несколько методов проверки, чтобы удовлетворить различные предпочтения пользователей и возможности устройств.
  • Следуйте спецификациям API — строго придерживайтесь спецификаций WebAuthn API для обеспечения оптимальной безопасности и удобства использования. Спецификации предоставляют подробные инструкции по работе с учётными данными, запросами аутентификации и проверкой подписей.
  • Рассмотрите сложность внедрения — реализация WebAuthn требует сложных задач, таких как управление парами открытого и закрытого ключей и обработка методов проверки пользователей. Выделите достаточно времени и ресурсов для решения этих проблем и обеспечения плавного перехода.
  • Планируйте восстановление пользователей — подготовьтесь к сценариям, когда пользователи могут потерять свои токены или ключи аутентификации. Реализуйте надёжные механизмы восстановления, чтобы минимизировать разочарование пользователей и обеспечить непрерывный доступ к их учётным записям.