ВебАутн
Эта статья может быть слишком технической для понимания большинства читателей . ( февраль 2024 г. ) |
Аббревиатура | ВебАутн |
---|---|
Впервые опубликовано | 31 мая 2016 г. |
Последняя версия | Рекомендация уровня 2 21 апреля 2021 г. |
Предварительная версия | Уровень 3 ( FPWD ) 15 декабря 2021 г. |
Организация | Проект FIDO2 ( Альянс FIDO и W3C ) |
комитет | Рабочая группа по веб-аутентификации |
Редакторы | Текущие редакторы Предыдущие редакторы |
Базовые стандарты |
|
Домен | Аутентификация |
Веб-аутентификация ( WebAuthn ) — это веб-стандарт , опубликованный Консорциумом World Wide Web (W3C). [1] [2] [3] WebAuthn является основным компонентом проекта FIDO2 под руководством FIDO Alliance . [4] Цель проекта — стандартизировать интерфейс для аутентификации пользователей в веб-приложениях и сервисах с использованием криптографии с открытым ключом . Учетные данные WebAuthn (которые сами по себе являются учетными данными FIDO) иногда называются ключами доступа . [5]
На стороне клиента поддержка WebAuthn может быть реализована различными способами. Базовые криптографические операции выполняются аутентификатором , который представляет собой абстрактную функциональную модель, которая в основном не зависит от того, как управляется ключевой материал. Это позволяет реализовать поддержку WebAuthn исключительно программно, используя доверенную среду выполнения процессора или доверенный платформенный модуль (TPM). Чувствительные криптографические операции также можно переложить на роуминговый аппаратный аутентификатор, к которому, в свою очередь, можно получить доступ через USB , Bluetooth Low Energy или связь ближнего радиуса действия (NFC). Аппаратный роуминговый аутентификатор соответствует протоколу FIDO Client to Authenticator (CTAP). [6] обеспечение эффективной обратной совместимости WebAuthn со стандартом FIDO Universal 2nd Factor (U2F). [7]
Как и устаревший U2F, веб-аутентификация устойчива к выдаче себя за проверяющего; то есть он устойчив к фишинговым атакам, [8] но в отличие от U2F, WebAuthn не требует традиционного пароля. [ нужна ссылка ] Более того, перемещаемый аппаратный аутентификатор устойчив к вредоносному ПО, поскольку материал закрытого ключа никогда не доступен программному обеспечению, работающему на хост-компьютере.
Стандарты WebAuthn уровней 1 и 2 были опубликованы как Рекомендации W3C 4 марта 2019 года и 8 апреля 2021 года соответственно. [1] [9] [10] Спецификация уровня 3 в настоящее время является первым общедоступным рабочим проектом (FPWD). [11]
Фон
[ редактировать ]FIDO2 является преемником FIDO Universal 2nd Factor (U2F). В то время как U2F поддерживает только многофакторный режим и был разработан для усиления существующих потоков входа в систему на основе имени пользователя и пароля, FIDO2 добавляет поддержку однофакторного режима. В многофакторном режиме аутентификатор активируется посредством проверки присутствия пользователя , которая обычно состоит из простого нажатия кнопки; пароль не требуется. В однофакторном режиме аутентификатор ( то, что у вас есть ) выполняет проверку пользователя . [12] В зависимости от возможностей аутентификатора это может быть: [13]
- что-то, что вы знаете: секрет, например PIN-код , код доступа или шаблон смахивания.
- то, кем вы являетесь: , биометрические данные такие как отпечаток пальца, радужная оболочка глаза или голос.
Независимо от режима аутентификатор никогда не передает свои секреты или биометрические данные веб-сайту. [14] Более того, секрет или биометрические данные одного пользователя работают со всеми веб-сайтами, поскольку аутентификатор выберет правильный материал криптографического ключа для использования в службе, запрашивающей аутентификацию, после успешного завершения проверки пользователя.
Секрет и биометрические данные аутентификатора можно использовать вместе, аналогично тому, как они используются на смартфоне . Например, отпечаток пальца используется для обеспечения удобного доступа к вашему смартфону, но иногда доступ по отпечатку пальца не удается, и в этом случае можно использовать PIN-код.
Преимущества перед традиционной аутентификацией на основе пароля
[ редактировать ]WebAuthn намеренно решает многие проблемы, присущие традиционной аутентификации на основе пароля:
- Безопасное создание и хранение учетных данных : WebAuthn генерирует уникальные учетные данные для каждого веб-сайта, используя надежные алгоритмы, надежно сохраняя их в доверенных аутентификаторах. Это устраняет распространенные уязвимости, такие как:
- Слабые пароли, которые можно легко подобрать из-за недостаточной длины.
- Предсказуемые пароли, уязвимые для атак по словарю (например, «пароль», «12345678»).
- Угадываемые пароли на основе личной информации (например, даты рождения, адреса).
- Плохое хранение паролей на стороне клиента (например, записанные и сохраненные в телефонных контактах).
- Повторное использование паролей на нескольких веб-сайтах, поскольку учетные данные WebAuthn по своей конструкции специфичны для отдельных веб-сайтов.
- Неадекватные требования к паролю, установленные сервером (например, слишком слабые или ограничительные критерии, произвольные ограничения максимальной длины, ограниченные наборы символов).
- Ограничения, препятствующие функциям автозаполнения менеджера паролей.
- Отсутствие хранилища учетных данных на стороне сервера . Частная часть учетных данных никогда не хранится на сервере, что исключает риски и уязвимости, такие как:
- Небезопасное хранение паролей в базах данных (например, в виде открытого текста или использование слабых алгоритмов/конструкций на основе хеширования).
- Утечки базы данных, раскрывающие пароли.
- Обязательная, неэффективная периодическая смена пароля.
- Уникальные учетные данные для каждого веб-сайта . WebAuthn обеспечивает уникальность учетных данных для каждого веб-сайта, устраняя следующие риски и уязвимости:
- Атаки с подстановкой учетных данных, при которых злоумышленники используют учетные данные от одной утечки данных на нескольких сайтах.
- Фишинговые атаки, поскольку учетные данные нельзя повторно использовать или неправильно применять на разных веб-сайтах.
Обзор
[ редактировать ]Как и его предшественник FIDO U2F, веб-аутентификация W3C (WebAuthn) включает в себя веб-сайт , веб-браузер и аутентификатор: [1]
- Веб-сайт является проверяющей стороной, соответствующей требованиям WebAuthn.
- Браузер является соответствующим клиентом WebAuthn.
- Аутентификатор — это аутентификатор FIDO2, то есть предполагается, что он совместим с клиентом WebAuthn.
WebAuthn определяет, как заявитель демонстрирует владение и контроль над аутентификатором FIDO2 верификатору, называемому проверяющей стороной WebAuthn. Процесс аутентификации опосредуется объектом, называемым клиентом WebAuthn, который представляет собой не что иное, как соответствующий веб-браузер.
Аутентификация
[ редактировать ]В целях иллюстрации мы предполагаем, что аутентификатор представляет собой перемещаемый аппаратный аутентификатор (другие варианты см. ниже). В любом случае аутентификатор — это многофакторный криптографический аутентификатор, который использует криптографию с открытым ключом для подписи утверждения аутентификации, предназначенного для проверяющей стороны WebAuthn. Предполагая, что аутентификатор использует PIN-код для проверки пользователя, сам аутентификатор — это то, что у вас есть , а PIN-код — это то, что вы знаете .
Чтобы инициировать процесс аутентификации WebAuthn, [15] Проверяющая сторона WebAuthn сообщает о своих намерениях клиенту WebAuthn (т. е. браузеру) посредством JavaScript . Клиент WebAuthn взаимодействует с аутентификатором с помощью API JavaScript , реализованного в браузере. Роуминговый аутентификатор соответствует протоколу FIDO Client to Authenticator .
WebAuthn строго не требует наличия перемещаемого аппаратного аутентификатора. В качестве альтернативы может использоваться программный аутентификатор (например, реализованный на смартфоне) или аутентификатор платформы (т. е. аутентификатор, реализованный непосредственно на клиентском устройстве WebAuthn). Соответствующие примеры средств аутентификации платформы включают Windows Hello. [16] и операционная система Android . [17]
Проиллюстрированный процесс основан на проверке пользователя на основе PIN-кода, что с точки зрения удобства использования является лишь скромным улучшением по сравнению с обычной аутентификацией по паролю. На практике использование биометрии для проверки пользователей может повысить удобство использования WebAuthn. [ нужна ссылка ] Однако логистика биометрии до сих пор плохо изучена. Среди пользователей сохраняется непонимание того, что биометрические данные передаются по сети так же, как и пароли, но это не так. [18] [19]
Регистрация
[ редактировать ]Когда проверяющая сторона WebAuthn получает подписанное подтверждение аутентификации от браузера, цифровая подпись утверждения проверяется с использованием доверенного открытого ключа пользователя. Как проверяющая сторона WebAuthn вообще получает этот доверенный открытый ключ?
Чтобы получить открытый ключ для пользователя, проверяющая сторона WebAuthn инициирует процесс регистрации WebAuthn. [20] это очень похоже на процесс аутентификации, показанный выше. Основное отличие состоит в том, что аутентификатор теперь подписывает заявление об аттестации своим закрытым ключом аттестации. Подписанное заявление о подтверждении содержит копию открытого ключа, который проверяющая сторона WebAuthn в конечном итоге использует для проверки подписанного утверждения аутентификации. Оператор аттестации также содержит метаданные, описывающие сам аутентификатор. [ нужна ссылка ]
Цифровая подпись в заявлении о подтверждении проверяется с помощью доверенного открытого ключа подтверждения для этой конкретной модели аутентификатора. Каким образом проверяющая сторона WebAuthn получает хранилище доверенных открытых ключей аттестации, не уточняется. Один из вариантов — использовать службу метаданных FIDO. [21]
Тип аттестации, указанный в JavaScript, определяет модель доверия. Например, может потребоваться тип аттестации, называемый самоаттестацией, для которого модель доверия по существу представляет собой доверие при первом использовании .
Поддерживать
[ редактировать ]Стандарт WebAuthn уровня 1 был опубликован в качестве рекомендации W3C рабочей группой веб-аутентификации 4 марта 2019 года. [1] [9] [22] WebAuthn поддерживается Google Chrome , Mozilla Firefox , Microsoft Edge , Apple Safari. [9] и Опера . [23]
Версия Google Chrome для настольных компьютеров поддерживает WebAuthn начиная с версии 67. [24] Firefox, который не полностью поддерживал предыдущий стандарт FIDO U2F, включил и включил WebAuthn в Firefox версии 60, выпущенной 9 мая 2018 года. [25] В ранней версии Microsoft Edge (сборка 17682) для программы предварительной оценки Windows реализована версия WebAuthn, которая работает как с Windows Hello, так и с внешними ключами безопасности. [26]
Существующие ключи безопасности FIDO U2F в значительной степени совместимы со стандартом WebAuthn, хотя в WebAuthn добавлена возможность ссылаться на уникальный идентификатор «дескриптора пользователя» для каждой учетной записи, который старые аутентификаторы не могут хранить. [1]
Одним из первых аутентификаторов второго поколения , совместимых с FIDO2, стал ключ безопасности от Yubico, анонсированный 10 апреля 2018 года. [27] Первыми FIDO2-совместимыми аутентификаторами с дисплеем стал Trezor Model T от SatoshiLabs, анонсированный 6 ноября 2019 года. [28] Trezor Model T также был первым аутентификатором, который позволял пользователям выбирать, какие резидентные учетные данные FIDO2 следует использовать непосредственно на устройстве.
Первый ключ FIDO2, сертифицированный на уровне безопасности 2, под названием «Goldengate» был анонсирован годом позже, 8 апреля 2019 года, компанией eWBM. [29] [30]
Dropbox объявил о поддержке входов через WebAuthn (в качестве второго фактора) 8 мая 2018 года. [31]
Apple объявила, что Face ID или Touch ID можно использовать в качестве средства аутентификации платформы WebAuthn в Safari . 24 июня 2020 года [32]
API
[ редактировать ]WebAuthn реализует расширение более общего управления учетными данными API W3C , которое представляет собой попытку формализовать взаимодействие между веб-сайтами и веб-браузерами при обмене учетными данными пользователей. API веб-аутентификации [33] [34] расширяет возможности управления учетными данными navigator.credentials.create()
и navigator.credentials.get()
методы JavaScript , чтобы они принимали publicKey
параметр. create()
метод используется для регистрации аутентификаторов с открытым ключом в рамках их связывания с учетными записями пользователей (возможно, во время первоначального создания учетной записи, но более вероятно при добавлении нового устройства безопасности к существующей учетной записи), в то время как метод get()
используется для аутентификации (например, при входе в систему).
Чтобы проверить, поддерживает ли браузер WebAuthn, скрипты должны проверить, поддерживает ли браузер window.PublicKeyCredential
интерфейс определен. В дополнение к PublicKeyCredential
стандарт также определяет AuthenticatorResponse
, AuthenticatorAttestationResponse
, и AuthenticatorAssertionResponse
интерфейсы в дополнение к множеству словарей и других типов данных.
API не допускает прямого доступа к закрытым ключам или манипулирования ими, за исключением запроса на их первоначальное создание.
Прием
[ редактировать ]В августе 2018 года компания Paragon Initiative Enterprises провела аудит безопасности стандарта WebAuthn. Хотя им не удалось обнаружить каких-либо конкретных эксплойтов , они выявили некоторые серьезные недостатки в том, как используется базовая криптография и как это предусмотрено стандартом. [35]
Основные моменты критики вращаются вокруг двух потенциальных проблем, которые были проблематичными для других криптографических систем в прошлом, и поэтому их следует избегать, чтобы не стать жертвой атак того же класса:
- Благодаря обязательному использованию COSE ( RFC 8152 ) WebAuthn также поддерживает RSA с дополнением PKCS1v1.5 . Известно, что эта конкретная схема заполнения уязвима для конкретных атак в течение как минимум двадцати лет, и в прошлом она успешно подвергалась атакам в других протоколах и реализациях криптосистемы RSA. Его сложно использовать в данных условиях в контексте WebAuthn, но, учитывая, что существуют более безопасные криптографические примитивы и схемы заполнения, это по-прежнему плохой выбор и больше не считается лучшей практикой среди криптографов.
- Альянс FIDO стандартизировал асимметричную криптографическую схему ECDAA . [36] Это версия прямой анонимной аттестации, основанная на эллиптических кривых , и в случае WebAuthn она предназначена для проверки целостности аутентификаторов, сохраняя при этом конфиденциальность пользователей, поскольку не допускает глобальной корреляции дескрипторов. Однако ECDAA не учитывает некоторые уроки, извлеченные за последние десятилетия исследований в области криптографии эллиптических кривых , поскольку выбранная кривая имеет некоторые недостатки безопасности, присущие этому типу кривой, что существенно снижает гарантии безопасности. Более того, стандарт ECDAA предполагает случайные, недетерминированные подписи, что уже было проблемой в прошлом.
Paragon Initiative Enterprises также раскритиковала первоначальную разработку стандарта, поскольку предложение не было обнародовано заранее, а к опытным криптографам не обращались за предложениями и отзывами. Следовательно, стандарт не подвергался широким криптографическим исследованиям в академическом мире.
Несмотря на эти недостатки, компания Paragon Initiative Enterprises по-прежнему призывает пользователей продолжать использовать WebAuthn, но разработала некоторые рекомендации для потенциальных разработчиков и разработчиков стандарта, которые, как они надеются, могут быть реализованы до того, как стандарт будет доработан. Избежание таких ошибок как можно раньше защитит отрасль от любых проблем, которые возникают из-за нарушения стандартов и необходимости обратной совместимости .
ECDAA был разработан для использования только в сочетании с аттестацией устройства. Эта конкретная функция WebAuthn не обязательно требуется для работы аутентификации. Текущие реализации позволяют пользователю решить, будет ли отправлено заявление о подтверждении во время церемонии регистрации. Независимо от этого доверяющие стороны могут решить, требовать или нет аттестацию. ECDAA был удален из WebAuthn Level 2, поскольку он не был реализован ни браузерами, ни проверяющими сторонами. [37]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Балфанц, Дирк; Ческис, Алексей; Ходжес, Джефф; Джонс, Джей Си; Джонс, Майкл Б.; Кумар, Акшай; Ляо, Анджело; Линдеманн, Рольф; Лундберг, Эмиль (ред.). «Веб-аутентификация: API для доступа к учетным данным открытого ключа уровня 1 (последняя версия)» . Консорциум Всемирной паутины . Проверено 4 марта 2019 г.
- ^ «Рабочая группа по веб-аутентификации» . Консорциум Всемирной паутины . Проверено 11 мая 2018 г.
- ^ Стрикленд, Джонатан (18 марта 2019 г.). «Что такое WebAuthn» . Технические вещи . iHeartMedia . 20:35 минут . Проверено 20 марта 2019 г.
- ^ «Проект ФИДО2» . Альянс ФИДО . Проверено 11 мая 2018 г.
- ^ «Информационный документ: Учетные данные FIDO для нескольких устройств» (PDF) . Альянс ФИДО . Март 2022. с. 6 . Проверено 20 мая 2024 г.
- ^ Бранд, Кристиан; Ческис, Алексей; Эренсвард, Якоб; Джонс, Майкл Б.; Кумар, Акшай; Линдеманн, Рольф; Пауэрс, Адам; Веррепт, Йохан, ред. (30 января 2019 г.). «Протокол клиент-аутентификатор (CTAP)» . Альянс ФИДО . Проверено 7 марта 2019 г.
- ^ «WebAuthn / CTAP: современная аутентификация» (PDF) . Консорциум Всемирной паутины . 10 декабря 2018 года . Проверено 11 марта 2019 г.
- ^ Кан, Майкл (7 марта 2019 г.). «Google: количество фишинговых атак, способных победить двухфакторную аутентификацию, растет» . Журнал ПК . Проверено 8 марта 2019 г.
- ^ Jump up to: а б с «Альянс W3C и FIDO завершают разработку веб-стандарта для безопасного входа без пароля» . Консорциум Всемирной паутины . 4 марта 2019 года . Проверено 4 марта 2019 г.
- ^ Балфанц, Дирк; Ческис, Алексей; Ходжес, Джефф; Джонс, Джей Си; Джонс, Майкл Б.; Кумар, Акшай; Линдеманн, Рольф; Лундберг, Эмиль, ред. (8 апреля 2021 г.). «Веб-аутентификация: API для доступа к учетным данным открытого ключа уровня 2» (последнее издание). Консорциум Всемирной паутины . Проверено 27 ноября 2022 г.
- ^ Балфанц, Дирк; Ческис, Алексей; Ходжес, Джефф; Джонс, Джей Си; Джонс, Майкл Б.; Кумар, Акшай; Линдеманн, Рольф; Лундберг, Эмиль, ред. (4 апреля 2021 г.). «Веб-аутентификация: API для доступа к учетным данным открытого ключа уровня 3» (первый общедоступный рабочий проект). Консорциум Всемирной паутины . Проверено 24 декабря 2021 г.
- ^ «Присутствие пользователя и проверка пользователя» . Проверено 19 февраля 2024 г.
- ^ Багдасарян, Давид; Хилл, Брэд (2 июля 2018 г.). «Реестр предопределенных значений FIDO» . сайт fidoalliance.org . Альянс ФИДО . Проверено 16 июня 2019 г.
- ^ «Веб-аутентификация: API для доступа к учетным данным открытого ключа уровня 1 § Терминология: проверка пользователя» . www.w3.org . W3C. 4 марта 2019 года . Проверено 16 июня 2019 г.
- ^ «API веб-аутентификации» . Мозилла . Раздел Аутентификация . Проверено 18 марта 2019 г.
- ^ Саймонс, Алекс (20 ноября 2018 г.). «Безопасный вход в вашу учетную запись Microsoft без пароля с помощью ключа безопасности или Windows Hello» . Майкрософт . Проверено 6 марта 2019 г.
- ^ «Android теперь сертифицирован FIDO2, ускоряя глобальную миграцию помимо паролей» . БАРСЕЛОНА: Альянс ФИДО . 25 февраля 2019 года . Проверено 6 марта 2019 г.
- ^ «Touch ID и не только: планы Duo по WebAuthn» . Дуэт безопасности. 5 марта 2019 года . Проверено 8 марта 2019 г.
- ^ Стил, Ник (27 февраля 2019 г.). «Как WebAuthn решает проблему с паролями» . Помогите Net Security . Проверено 8 марта 2019 г.
- ^ «API веб-аутентификации» . Мозилла . в разделе Регистрация . Проверено 18 марта 2019 г.
- ^ «Служба метаданных» . Альянс ФИДО . Проверено 18 марта 2019 г.
- ^ Проталинский, Эмиль (4 марта 2019 г.). «W3C утверждает WebAuthn в качестве веб-стандарта для входа в систему без пароля» .
- ^ «Могу ли я использовать API веб-аутентификации?» . Проверено 7 марта 2019 г.
- ^ Бранд, Кристиан (3 июня 2018 г.). «Включение строгой аутентификации с помощью WebAuthn» . Разработчики Google . Проверено 25 июня 2018 г.
- ^ Шенкленд, Стивен (9 мая 2018 г.). «Firefox переносит браузеры в будущее без паролей с помощью технологии WebAuthn» . CNET . Проверено 11 мая 2018 г.
- ^ Саркар; и др. (23 мая 2018 г.). «Анонсируем сборку 17682 Windows 10 Insider Preview» . Майкрософт . Проверено 25 июня 2018 г.
- ^ «Yubico запускает новую программу разработчика и ключ безопасности для спецификаций FIDO2 и WebAuthn W3C» (пресс-релиз). 10 апреля 2018 года . Проверено 11 мая 2018 г.
- ^ «Оставьте пароли в прошлом: FIDO2 теперь доступен на Trezor Model T» . 6 ноября 2019 года . Проверено 6 ноября 2019 г.
- ^ «eWBM: сканер отпечатков пальцев Goldengate от eWBM первым получил сертификацию FIDO L2» (пресс-релиз). 8 апреля 2019 года . Проверено 15 июня 2019 г.
- ^ «Мир мобильных идентификаторов, Алекс Перала: сканер отпечатков пальцев Goldengate от eWBM первым получил сертификацию FIDO L2» (пресс-релиз). 9 апреля 2019 года . Проверено 15 июня 2019 г.
- ^ Жирардо, Брэд (8 мая 2018 г.). «Представляем поддержку WebAuthn для безопасного входа в Dropbox» . Технический блог Dropbox . Дропбокс . Проверено 11 мая 2018 г.
- ^ «Примечания к выпуску Safari 14» . Документация разработчика Apple . 16 декабря 2022 г. Проверено 16 декабря 2022 г.
- ^ «API веб-аутентификации» . Мозилла . Проверено 16 марта 2019 г.
- ^ Акерманн, Юрий (15 января 2019 г.). «Введение в API WebAuthn» . Середина . Проверено 8 марта 2019 г.
- ^ «Проблемы безопасности, связанные с WebAuthn: не внедряйте ECDAA (пока)» . Блог компании Paragon Initiative Enterprises. 23 августа 2018 года . Проверено 9 октября 2018 г.
- ^ «Алгоритм FIDO ECDAA» . Альянс ФИДО. 27 февраля 2018 года . Проверено 9 октября 2018 г.
- ^ «Удалить ECDAA? · Проблема № 1410 · w3c/webauthn» . Гитхаб . 28 апреля 2020 г. Проверено 3 июня 2020 г.