Утверждение, что пароль не самый надежный способ защиты, вряд ли кто-то подвергнет сомнению. Кто же спорит: пароль — это не всегда удобно. И небезопасно. Их трудно запомнить, из-за чего люди порой выбирают самые неудачные и используют их снова и снова. Пароли также легко поддаются фишингу, причем злоумышленники постоянно придумывают всё более изощренные виды атак. Альтернативы паролям есть, и наиболее перспективную из них мы рассмотрим. И это WebAuthn.
Что такое WebAuthn
WebAuthn — сетевой стандарт, который обеспечивает быструю и беспарольную аутентификацию пользователя. Основан на технологии FIDO (от англ. Fast Identity Online) — технология онлайн-аутентификации личности пользователя.
Важное условие: устройство должно поддерживать этот сетевой стандарт.
Изначально WebAuthn разрабатывался с прицелом на абсолютное исключение паролей из системы аутентификации. Однако на практике речь до определенного времени шла об его использовании только в качестве второго компонента двухэтапной (двухфакторной) аутентификации, то есть в дополнение к паролю.
В целом же, это решение уже довольно давно используется рядом IT-гигантов и в настоящее время встроено в большинство современных браузеров.
По сути, WebAuthn представляет собой API управления учетными данными. Он позволяет веб-приложениям аутентифицировать пользователей без использования паролей — например, с помощью биометрии или флешки. Всю работу делает криптография с открытым ключом.
С WebAuthn вы можете использовать один аутентификатор (например, Yubikey) на любом сайте, поддерживающем стандарт. Таким образом, вам не нужно иметь пароли для каждого сайта, который вы посещаете, а только надежный аутентификатор, который работает с WebAuthn (о том, как это устроено, чуть ниже).
В дополнение к удобству, WebAuthn обеспечивает конфиденциальность, поскольку ни один сайт не может определить по аутентификатору, для каких других сайтов вы его использовали. Злоумышленники также не могут перехватить и успешно воспроизвести запрос аутентификации, поэтому вредоносные сайты не могут использовать ключ для атак на подлинные сайты, что исключает атаки типа «человек посередине». WebAuthn также позволяет вам выбрать собственный аутентификатор на свое устройство (смартфон, компьютер) или внешний аутентификатор (например, USB-ключ безопасности).
Как работает WebAuthn
Аутентификация посредством WebAuthn выполняется посредством трех компонентов: сайта (верификатора), браузера пользователя и собственно аутентификатора, в роли которого может выступать, например, биометрия или ключ безопасности на флешке. В упрощенном виде это выглядит так: при попытке авторизации с помощью отпечатка пальца или ключа встроенный скрипт WebAuthn сигнализирует верификатору, что у пользователя есть корректный аутентификатор, то есть необходимые данные для подтверждения того, что он (пользователь) — это он. В результате успешной аутентификации пользователь авторизуется в системе верификатора.
Немного терминологии
Изучая документацию по WebAuthn, вы увидите, что там полно аббревиатур. Давайте посмотрим, что они означают:
FIDO — это сокращение от Fast IDentity Online. Альянс FIDO – это открытая ассоциация, в которую входят сотни компаний. FIDO работает над созданием стандартов аутентификации, которые помогут сократить (а в перспективе и вообще исключить) использование паролей в мире.
FIDO2 — это общий термин для спецификаций консорциума World Wide Web (W3C) и Альянса FIDO. Он включает в себя как WebAuthentication (беспарольный веб-API для аутентификации в браузерах, который уже является стандартом консорциума W3C), так и протокол CTAP.
CTAP расшифровывается как Client To Authenticator Protocol. В нем описывается, как аутентификаторы могут реализовать двухфакторную и беспарольную аутентификацию. Эти ключи могут быть встроенными в такие устройства, как телефоны и ноутбуки (аутентификаторы на устройстве или платформе), или они могут быть внешними (роуминговые или ключи безопасности), то есть подключаться через NFC, USB и/или BLE.
CTAP2 — это новый протокол, который позволяет использовать аутентификаторы нового типа, то есть не только для двухфакторной, но и для беспарольной или многофакторной аутентификации.
CTAP1, который раньше назывался FIDO U2F. Он позволяет использовать более старые средства аутентификации, такие как ключи безопасности, для второго фактора, то есть в качестве дополнительной защиты после ввода пароля.
О вариантах доступа
С сокращениями разобрались, идем дальше. Старые протоколы FIDO U2F и ключи безопасности обеспечивают надежный и устойчивый к фишингу второй фактор (то есть дополнительное подтверждение, помимо пароля), но мы же говорим о беспарольном доступе. Только представьте, насколько плавной и бесшовной должна стать работа с многочисленными сервисами, когда на любой из них можно будет зайти по отпечатку пальца или подключив флешку с ключом безопасности.
И эти новые протоколы будут требовать еще более строгую аутентификацию, чем по протоколу U2F, когда вы вводите ключ безопасности для аутентификации. С FIDO2 сайты могут требовать проверки пользователя на разных уровнях, что обеспечивает многофакторную аутентификацию на одном устройстве.
Типичный пример многофакторной аутентификации: сочетание фактора обладания (у вас есть аутентификатор) с фактором знания (вы знаете PIN-код) и внутренними факторами (кто вы, то есть биометрические данные: совпадения отпечатков пальцев, черт лица). Разумеется, для пользователей всё упростится, и им нужно будет вводить только PIN-код, привязанный к ключу безопасности. А биометрические данные на устройстве будут просто считываться (например, сканерами отпечатков пальцев или Face ID).
Не всё так просто
Всё это красиво и замечательно, но… самая большая проблема с отказом от паролей заключается в том, что пароль — это до сих пор наиболее простая и доступная вещь для реализации. Пароли, какими мы их знаем, известны уже более 60 лет: всё началось в Массачусетском технологическом институте с операционной системой CTSS в 1961 году. Именно в этой системе впервые стали использоваться пароли. А появлявшиеся с тех пор технологии, разработчики которых обещали пароли устранить, раз за разом терпели неудачу. И понятно, почему: всегда есть платформы, службы или системы, которые не поддерживают технологию беспарольного доступа. Очень немногие компании готовы платить за замену серверов, операционных систем, приложений и всего остального, просто чтобы получить что-то иное. В двух словах: пароли дешевые, а всё остальное дорого.
Еще одна проблема на пути к беспарольной аутентификации заключается в том, что, хотя технически WebAuthn работает, у каждого веб-ресурса свой способ настройки. То, как называются параметры безопасности и где они находятся, сильно отличается от одного сайта к другому. В каждом новом браузере или операционной системе пользователю приходится заново разбираться с нужными для аутентификации параметрами. Даже те немногие сайты, которые уже поддерживают полноценную работу WebAuthn без пароля, не имеют общих стандартов для их предоставления, поэтому нам нужно «щелкать» отдельные ссылки для такой авторизации.
Тем не менее говорят, что мы на пороге универсальной поддержки WebAuthn. Причем все основные операционные системы и браузеры его поддерживают уже давно: по данным на первую половину 2020 года этот показатель уже равнялся 83%, а сейчас приближается к 95%. Существуют десятки различных ключей безопасности, совместимых с FIDO2, от таких компаний, как Yubico, Feitian, Google, Kensington. Разработчики даже встроили поддержку этих ключей в операционные системы (iOS, Android, Windows, macOS). Еще чуть-чуть и останется просто пойти и получить ключ безопасности FIDO2, который мы могли бы использовать везде, но…
Суровая реальность
Начав использовать ключи WebAuthn, вы обнаружите, что большинство крупных веб-приложений не использует их… в качестве замены пароля. Приложения довольно активно поддерживают WebAuthn в качестве второго фактора, обратно совместимого с FIDO U2F, но даже эта поддержка остается далеко не универсальной. Вот несколько примеров:
Gmail: поддерживает, но, увы, только как ключ безопасности U2F после пароля. Правда, как говорили советские деятели, есть определенные подвижки: появились новости, что в Google наконец-то начали тестировать WebAuthn так, как он был задуман.
Провайдеры сотовой связи: нет, только PIN-коды и SMS.
Финансовые организации: нет, некоторые поддерживают общий TOTP (Time-based One-time Password Algorithm), многие же до сих пор используют аппаратные токены TOTP.
Онлайн-кошельки для криптовалюты: да, но, увы, только как ключ безопасности U2F после пароля. Кроме того, они могут блокировать аутентификатор платформы FIDO2 и разрешают использовать только ключи безопасности USB.
DNS/хостинг-провайдеры: да, но только как второй фактор в режиме U2F.
Соцсети: да, но только как второй фактор в режиме U2F. К тому же настройки бывают спрятаны довольно глубоко (например, в Twitter).
Zoom: нет, можно добавить только второй фактор TOTP, правда, настройки снова не очевидны.
Dropbox: да, но как второй фактор в режиме U2F.
Apple iCloud: собственная многофакторная аутентификация, но это совсем другая технология.
Итак, что мы имеем с гуся? С обычного — жир и шкварки. С нашего — ровно один случай беспарольной аутентификации, да и то пока лишь в тестовом режиме. А в большинстве случаев WebAuthn — это по-прежнему второй фактор.
У финансов свои нюансы
И возникает логичный вопрос: а что, разве тем же банкам не нужна безопасная аутентификация? О безопасности банки, безусловно, заботятся, но вот в чём дело: они не продвигают инструменты, управляемые конечным пользователем, поскольку эти инструменты могут стать источником потенциальных проблем. А любые проблемы в этой сфере приводят к гневу клиентов, что влечет за собой многомиллионные затраты на колл-центры и, конечно, является причиной оттока тех самых клиентов. Даже у маленьких банков десятки тысяч пользователей, у крупных — десятки миллионов.
Вот почему специалисты по банковской безопасности так много внимания уделяют невидимым внутренним инструментам обнаружения мошенничества и управления рисками. А не слишком удобную, но зато исправно работающую авторизацию, клиенты потерпят. Так что не стоит ждать, что финансовый сектор быстро примет беспарольный WebAuthn. Этого не произойдет до тех пор, пока браузеры и операционные системы не будут поддерживать его повсеместно, а также до тех пор, пока взаимодействие с пользователем не станет последовательным и безупречным.
Так всё-таки быть или не быть?
На самом деле протоколы WebAuthn работают, базовая технология великолепна, и вы можете и должны использовать WebAuthn в качестве аутентификатора везде, где это важно для вас. Но в подавляющем большинстве случаев пока только в качестве аутентификатора второго фактора.
Тем не менее начало гугловских тестов в Хроме и Андроиде настраивает на оптимистический лад: значит, там верят в технологию и всё-таки собираются сделать ее универсальной заменой пресловутой «двухфакторке». Но придется подождать.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
Комментарии (18)
MUTbKA98
16.11.2022 11:44Мне непонятен пассаж про невозможность трекинга пользователей в этом режиме? Это как? У него всяко есть какой-то ID, который он подтвержает с помощью этой системы, ну а далее по списку, как и с емылами или номерами телефонов.
uranik
18.11.2022 13:22Имеется в виду что на разных сайтах нельзя будет определить, что один и тот же пользователь зарегистрировался с этим токеном, т.к. u2f токен не передаёт сайту свои id и ключи.
fire64
16.11.2022 11:49По факту лучше стандартной пары логин:пароль с двухфакторной идентификацией по СМС ничего лучшего не придумали.
Потому что пользователь может всегда в любом месте ввести эти данные и войти. А что ему с этим токенном делать? Большинству пользователей эта технология непонятна.
GoldGoblin
16.11.2022 12:06+1Из личного опыта: Сегодня слетела авторизация в почте mail.ru пришла смс с кодом для двухфакторной идентификации но я ошибся в воде 1 цифры.... В результате следующее смс сообщение вы сможете получить через 600 минут!
0x131315
17.11.2022 19:55+2Поэтому везде где можно включаю TOTP: это набор из секретного ключа, на основе которого генерятся одноразовые пароли, и список из десятка резервных одноразовых ключей, на случай если потеряешь секретный ключ.
При любых проблемах с авторизацией просто используешь резервный ключ.
И что замечательно: нет зависимости от смс и прочих внешних идентификаторов, которые легко потерять, но сложно сменить или восстановить. Телефонный номер в любой момент может стать недоступен или быть продан другому человеку, и никакие законы тут никак не спасут от злого умысла, технических ошибок или человеческого фактора.
0x131315
17.11.2022 19:55+1Телефонный номер в любой момент может стать недоступен или быть продан другому человеку, и никакие законы тут никак не спасут от злого умысла, технических ошибок или человеческого фактора. Это плохой идентификатор.
Восстановить его потом бывает очень сложно, или даже нереально вообще.
0x131315
17.11.2022 19:49Осталось только ответить на вопрос: а какая доля взломов происходит именно из-за паролей?
uranik
18.11.2022 13:27На mail.ru через этот webauth можно без пароля заходить. Так что не только как второй фактор можно использовать.
volchenkodmitriy
Спасибо за статью! Мне кажется у старого доброго пароля есть одно очень важное преимущество при всех его недостатках - легкость замены в случае компрометации, это почти ничего не стоит и требует минимум времени.
K0styan
А есть ещё и такой аспект - есть три фактора, позволяющих аутентифицировать пользователя:
то, что он (и только он) знает;
то, чем он (и только он) владеет;
то, кем он (и только он) является.
Второе - это как раз токены, телефоны-как-приёмники-SMS и т.п. Третье - это биометрия, в широком смысле. А вот первое - это как ни крути, какая-то разновидность пароля, PIN-кода и т.п. И если мы хотим задействовать больше одного фактора, что-то просить юзера именно запомнить придётся.
13werwolf13
всё выше сказанное хорошо только сферически и в вакууме. на практике пароли забываются или компрометируются, токены теряются, sms вобще не является надёжным каналом связи, а отпечатка пальца и карты сетчатки глаза легко лишиться раз и навсегда (хотя например днк у человека не поменять, но днк как средство аутентификации пока существует только в мечтах и фантастических произведениях).
Andchir
"отпечатка пальца и карты сетчатки глаза легко лишиться раз и навсегда" - я думаю слово "легко" тут лишнее. Или вы про время сейчас (не мирное)?
vin2809
Так и ДНК тоже не является атрибутом идентифицирующим объект. Вопрос в том, КТО предоставляет этот атрибут на идентификацию...
Идеальный пароль (токен) не существует вообще. Все способы защиты это все варианты вида "защита от дурака".
Cessium
Да. Токен, мобильный телефон, брелок, карта идентификации, имеют в качестве недостатка сходный элемент - их физическое существование. И как следствие, проблема такого устройства будет всегда заключаться в порче, утере или возможном дублировании итема, вне зависимости от причин и намерений.
Надежность системы с парольной ключевой информацией уязвима, в первую же очередь, к человеческому фактору - от несоблюдения требований к ключ-фразе, до банальной цифровой негигиеничности. Учитывая некоторые текущие особенности и реалии, можно еще вспомнить об
волшебномсредстве "Утюг бытовой раскаленный", но это фу-фу-фу и мы осуждаем :)Казалось бы, идеальным методом могли бы быть биометрические методы подтверждения личности, однако текущая картина в области законодательства в этой области (Да, мне прям очень хочется в используемые ПДн добавлять биометрию и тем самым навлекать на себя риски в этом вопросе, /s ), и их возможные граничные случаи (палец можно приложить с применением силы, сетчатка аналогично, FaceID-подобные технологии и их взаимодействие с близнецами и пр.) также могут быть истолкованы неоднозначно.
Особо следует отметить определенный прогресс в устойчивости к методам с силовым принуждением к подтверждению личности, доступный массовому пользователю, такие как песочницы, использование методов "двойного дна", гарантированно уничтожаемые накопители, и др.
Таким образом, перспективные способы аутентификации призваны обеспечить крайне сложную модель - (здесь концептуально и могу быть неточным) - это может быть устройство с высокой степенью надежности, с возможностью физической неотчуждаемости от конкретного пользователя, которое в сочетании с используемыми сервисами(например, банк) в состоянии предоставить по явному, (а возможно и не-явному) желанию пользователя более одного уровня представления информации. Скорее всего, в перспективе научного (а особенно био- и IT-прогресса) мы увидим нечто похожее, доступное массовому пользователю уже достаточно скоро, ну а пока - сочетание из нескольких методов - наше всё (и я не думаю, что такой гипотетический девайс изменит ситуацию достаточно сильно и достаточно быстро).
0x131315
Надежная защита это хорошо. Но нужно помнить историю трукрипта: надежную защиту очень не любят, очень.