Аутентификация FIDO с ключами доступа

Вступление

Стандарт аутентификации FIDO (Fast IDentity Online) определяет быстрый и безопасный механизм аутентификации для доступа пользователей к веб-сайтам и приложениям.

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

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

Почему важна безопасная аутентификация?

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

Многие пользователи входят на разные веб-сайты, используя одни и те же пароли. Это означает, что при взломе одного веб-сайта любая другая учетная запись, использующая тот же пароль, подвергается риску. Таким образом, даже если вы создали безопасную систему паролей, люди все равно подвергаются риску, когда пароль является их единственной защитой.

Некоторые сайты и приложения запрашивают двухэтапную проверку, запрашивая вторые учетные данные, которые доставляются через SMS, электронную почту, приложение и т. д. Хотя это более безопасно, чем просто использование пароля, этот метод двухэтапной проверки по-прежнему уязвим для фишинга. потому что пользователя можно убедить ввести данные двухэтапной проверки на вредоносный веб-сайт.

Как FIDO обеспечивает более надежную защиту?

Аутентификация на основе FIDO устраняет многие проблемы, связанные с аутентификацией на основе пароля и аутентификацией, использующей традиционные вторые шаги. Особенно:

  • Аутентификация FIDO использует криптографию с открытым ключом.
  • FIDO помогает гарантировать, что учетные данные не будут переданы злоумышленникам или другим сторонам, которым не принадлежат учетные данные.

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

С FIDO пользователь не несет ответственности за подтверждение того, что веб-сайт или приложение на самом деле являются теми, за кого себя выдают. Кроме того, пользователь не несет ответственности за то, чтобы учетные данные не использовались в неправильных местах. FIDO привязывает каждую учетную запись к определенному источнику, что означает, что устройство (а не человек) несет ответственность за правильную идентификацию веб-сайта или приложения.

Например, предположим, что пользователь пытается войти на example.com . Если пользователь запрашивает учетные данные, принадлежащие example.com , на phishing-example.com , аутентификатор отклоняет запрос, тем самым защищая пользователя. Процесс аутентификации очень затрудняет получение фишинговыми веб-сайтами или приложениями подтверждения, предназначенного для других источников.

В целом, FIDO и ключи доступа позволяют развертывать более надежную аутентификацию, которая по-прежнему удобна и удобна для большинства пользователей.

Демо

Что такое пароли?

Ключ доступа — это цифровое удостоверение, соответствующее стандартам веб-аутентификации FIDO и W3C (WebAuthn) . Подобно паролю, веб-сайты и приложения могут запросить у пользователя создание пароля для доступа к своей учетной записи.

Ключи доступа полагаются на разблокировку устройства для проверки личности пользователя. Это может быть выполнено с помощью биометрического датчика (например, отпечатка пальца или распознавания лица), PIN-кода или шаблона. Пользователь должен сначала зарегистрироваться в источнике, чтобы сгенерировать свой пароль (пару открытого и закрытого ключей).

Когда они возвращаются на веб-сайт или в приложение для входа в систему, пользователь может предпринять следующие шаги:

  1. Зайдите в приложение.
  2. Щелкните Войти .
  3. Выберите их пароль.
  4. Разблокируйте устройство, чтобы завершить вход.

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

Пользователь может входить в службы на любом устройстве с помощью пароля, независимо от того, где он хранится. Например, пароль, хранящийся на мобильном телефоне, можно использовать для входа на веб-сайт на отдельном ноутбуке.

Как работают пароли?

Ключи доступа создаются и синхронизируются через операционную систему. Некоторые операционные системы могут разрешать автоматическую синхронизацию ключей доступа между устройствами пользователя, такими как телефон Android и устройство ChromeOS, на которых выполнен вход в одну и ту же учетную запись Google.

Хотя пароли привязаны к операционным системам, пользователь может использовать пароли со своего телефона при входе в ноутбук. Поскольку ключи доступа созданы в соответствии со стандартами FIDO и W3C, их можно использовать во всех браузерах. Например, пользователь посещает site.example на своем Chromebook. Этот пользователь ранее входил в site.example на своем устройстве iOS. Пользователю будет предложено подтвердить свою личность на устройстве iOS. Как правило, site.example создает новый ключ доступа для Chromebook пользователя, чтобы для будущих входов в систему телефон больше не требовался.

Ключи доступа полностью зашифрованы, а это означает, что, хотя Google отвечает за их синхронизацию с различными устройствами Android, Google не может прочитать ключ доступа или узнать эти данные иным образом.

Процесс аутентификации

Представление того, как может выглядеть окно аутентификации.

Чтобы реализовать ключи доступа на веб-сайте или в приложении, важно ознакомиться со следующим:

  • Аутентификаторы — это физические устройства, принадлежащие пользователю, которые содержат ключи доступа пользователя и могут идентифицировать пользователя.
  • Проверяющая сторона — это ваш веб-сайт или приложение, состоящее из внешнего приложения и внутреннего сервера.
    • Интерфейсное приложение вызывает API для взаимодействия с аутентификатором и инициирует процесс аутентификации.
    • Внутренний сервер извлекает криптографические объекты, созданные аутентификатором, и проверяет их.

Например, предположим, что пользователь хочет купить пару обуви в магазине по адресу shoes.example (проверяющая сторона). Пользователь уже зарегистрировал учетную запись на shoes.example , используя свой телефон Android с биометрическим датчиком. Пользователь входит в shoes.example на своем устройстве Android, разблокировав свое устройство. Затем shoes.example криптографически подписанные учетные данные пользователя с известным открытым ключом для этого пользователя, чтобы подтвердить точность личности пользователя.

Аутентификаторы

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

Устройство имеет две роли для регистрации и аутентификации:

  • Когда пользователь регистрируется у проверяющей стороны, устройство генерирует уникальную пару открытого и закрытого ключей. Сюда входят телефоны и компьютеры пользователя.
  • Когда пользователь в будущем войдет в проверяющую сторону, устройство создаст подпись с использованием закрытого ключа.

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

FIDO-совместимые устройства

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

  • Аутентификаторы платформы : они встроены в смартфоны и компьютеры. Аутентификаторы платформы используют биометрический датчик (например, датчик отпечатков пальцев или камеру с распознаванием лиц), PIN-код или шаблон. Поскольку аутентификация завершается разблокировкой устройства, это доказывает за один шаг, что пользователь владеет устройством и может подтвердить свою личность с помощью своих уникальных биометрических данных.
  • Ключи безопасности : обычно это USB-устройства с кнопкой, которую нужно нажать для подтверждения подлинности. При использовании с паролем ключи безопасности могут обеспечить фактор владения для двухфакторной аутентификации. Наиболее распространенным примером этого является ключ безопасности Titan или YubiKey.

Внешний интерфейс

Приложения используют клиентские API, такие как WebAuthn и FIDO2 для Android , для создания и проверки учетных данных пользователя с помощью аутентификатора.

Приложение передает аутентификатору криптографический запрос, сгенерированный внутренним сервером. Приложение отправляет ответ аутентификатора на сервер для проверки, который выполняет действие на основе этой проверки.

Серверная часть

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

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

Часто задаваемые вопросы (FAQ)

Кто поддерживает пароли?

Поскольку ключи доступа основаны на стандартах FIDO, они работают на Android и Chrome, а также на многих других популярных платформах и браузерах, таких как Microsoft Windows, Microsoft Edge, MacOS, iOS и Safari.

Обратитесь к документации, предоставленной этими платформами, чтобы подтвердить текущее состояние доступности.

Мы стремимся к тому, чтобы к концу 2022 года для Android была доступна поддержка ключей доступа для разработчиков.

Что произойдет, если пользователь потеряет свое устройство?

Ключи доступа, созданные на Android, резервируются и синхронизируются с устройствами Android, на которых выполнен вход в ту же учетную запись Google, точно так же, как резервные копии паролей сохраняются в менеджере паролей.

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

Может ли пользователь использовать пароль на своем телефоне для входа на устройстве друга?

Да. Пользователи могут установить «одноразовую связь» между своим телефоном и чужим устройством для входа в систему.

Следующие шаги

Возьмите кодлаб:

Узнать больше о: