FIDO2. Разбираемся со стандартами и будущим беспарольной аутентификации

Содержание статьи

  • Беспарольная эволюция
  • Зоопарк FIDO
  • Архитектура FIDO2
  • Церемония регистрации
  • Церемония аутентификации
  • Атаки на FIDO2
  • Выводы

В этой статье мы с тобой прос­ледим исто­рию идей бес­пароль­ной аутен­тифика­ции. Раз­берем­ся в том, что такое FIDO2, как работа­ют про­токо­лы WebAuthn и CTAP, а так­же обсу­дим их внут­ренние механиз­мы защиты и сущес­тву­ющие ата­ки. Меж­ду делом рас­кро­ем заговор мас­совой утеч­ки биомет­ричес­ких дан­ных, пос­мотрим, при чем здесь Passkeys, и попыта­емся понять, нас­коль­ко близ­ко бес­пароль­ное будущее.

Идея отка­зать­ся от паролей — чуть ли не ровес­ница самих паролей. Одна­ко пер­вые серь­езные обсужде­ния этой темы начались при­мер­но в 2004 году, ког­да Билл Гей­тс на кон­ферен­ции по безопас­ности RSA за­явил: «Нет никаких сом­нений, что со вре­менем люди будут полагать­ся на пароли все мень­ше и мень­ше. …[пароли] прос­то не отве­чают задаче защитить что‑либо дей­стви­тель­но цен­ное». Затем был друж­ный хор голосов из IBM, Google и про­чих ком­паний, про­пове­дующих ско­рую кон­чину паролей. Но с того выс­тупле­ния Гей­тса прош­ло уже двад­цать лет, а воз и ныне там — пароли по‑преж­нему живы.

Пе­ред тем как мы дви­нем­ся даль­ше, осве­жим нес­коль­ко базовых понятий:

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

Нас в кон­тек­сте этой статьи инте­ресу­ет имен­но аутен­тифика­ция. Де‑фак­то стан­дартом для нее ста­ла ком­бинация логин — пароль. Но что же не так с пароля­ми?

  • Лю­ди час­то не сле­дуют рекомен­даци­ям безопас­ности: исполь­зуют сно­ва и сно­ва один и тот же пароль или дела­ют пароли слиш­ком лег­кими для перебо­ра. По дан­ным ис­сле­дова­ния за 2022 год, каж­дый поль­зователь име­ет в сред­нем четыре готовых пароля, при­чем у каж­дого треть­его это вари­ации одно­го и того же пароля.
  • Па­роли дол­жны безопас­но хра­нить­ся, как на сто­роне поль­зовате­ля, так и на сто­роне сер­висов. По дан­ным LastPass, сов­ремен­ный поль­зователь име­ет в сред­нем 191 учет­ную запись, что намека­ет на пот­ребность в ме­нед­жере паролей, но люди исполь­зуют бумаж­ки и таб­лицы. С ком­пани­ями не луч­ше — вспом­нить хотя бы исто­рию о том, как в Facebook пароли хра­нились в откры­том виде.
  • Пос­коль­ку пароли ста­ли стан­дар­тным средс­твом аутен­тифика­ции, у зло­умыш­ленни­ков уже накопил­ся опыт и методы их под­бора (сло­вари, пра­вила, ути­литы), которы­ми может вос­поль­зовать­ся даже скрипт‑кид­ди. А добавив сюда воз­можнос­ти соци­аль­ной инже­нерии, зло­умыш­ленни­ки получа­ют прос­то огромную повер­хность ата­ки. По дан­ным раз­ных ис­сле­дова­ний, от 80 до 90% всех атак вклю­чают исполь­зование ском­про­мети­рован­ных учет­ных дан­ных.

Да и вооб­ще, что говорить, ког­да Фер­нандо Кор­бато, впер­вые реали­зовав­ший механизм паролей в 1961 году, за­являл, что он не пред­назна­чал­ся для веба и на текущий день прев­ратил­ся в кош­мар.

 

Беспарольная эволюция

С пароля­ми все ясно, воз­можно, они дей­стви­тель­но ста­ли боль­ше рис­ком, чем защитой, но что пред­лага­ется вза­мен?

Все началось в 1980-х, ког­да ком­пания Security Dynamics Technologies (сей­час RSA Security) соз­дала пер­вый аппа­рат­ный токен, генери­рующий одно­разо­вые пароли (OTP). В 1998 году ком­пания AT&T получи­ла па­тент на двух­фактор­ную аутен­тифика­цию, сов­местив пароль с OTP-кодом. В 2000-х получи­ла рас­простра­нение сис­тема SSO. В 2011 году в Motorola выпус­тили пер­вый смар­тфон со ска­нером отпе­чат­ка паль­цев, а еще через два года то же сде­лали и в Apple, снаб­див iPhone дат­чиком Touch ID.

Security Dynamics SecurID (OTP) и Motorola ATRIX 4G (ска­нер отпе­чат­ка)

Та­ким обра­зом, эво­люция аутен­тифика­ции соз­дала все­го три фак­тора: фак­торы зна­ния (что‑то, что ты зна­ешь), фак­торы вла­дения (что‑то, что ты име­ешь) и фак­торы свой­ства (что‑то, что харак­теризу­ет тебя). Поэто­му фун­дамен­таль­но у нас есть сле­дующие аль­тер­нативы:

  • ми­ними­зиро­вать недос­татки пароль­ной аутен­тифика­ции (SSO, OAuth, OpenID);
  • ком­биниро­вать фак­торы зна­ния с дру­гими фак­торами (2FA, MFA);
  • не исполь­зовать фак­торы зна­ния (бес­пароль­ная аутен­тифика­ция).

Ес­ли наша задача — отка­зать­ся от паролей, то под­ходит толь­ко пос­ледний вари­ант. Будем исхо­дить из того, что бес­пароль­ная аутен­тифика­ция (БА) — это аутен­тифика­ция, которая не исполь­зует фак­тор зна­ния (пароль, сек­ретный воп­рос, пасс‑фра­за). То есть нам оста­ется выбор одно­го из двух фак­торов. Тем вре­менем мно­гофак­торная аутен­тифика­ция (MFA) пред­полага­ет исполь­зование двух и более раз­личных фак­торов. Так что БА и MFA — это раз­ные вещи, которые не сле­дует путать.

Раз­вею самое боль­шое заб­лужде­ние о БА. Любое исполь­зование биомет­рии — это локаль­ное решение про­изво­дите­ля аутен­тифика­тора, но даже в этом слу­чае ник­то никуда твои отпе­чат­ки или их про­изводные не посыла­ет и ничего ими не под­писыва­ет, это каса­ется и FIDO2, о котором пой­дет речь ниже. Мно­гие пута­ют исполь­зование биомет­рии и БА, что порож­дает мас­совую исте­рию по поводу утеч­ки биомет­ричес­ких дан­ных.

 

Зоопарк FIDO

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

С 2004 года были обра­зова­ны OATH, OIDF, OASIS, IDSA, OIX и дру­гие. Количес­тво орга­низа­ций и про­токо­лов рос­ло, ком­пании про­бова­ли соз­давать про­дук­ты, но ни к какому обще­му решению не приш­ли. Поэто­му в июле 2012 года PayPal, Lenovo и еще четыре ком­пании осно­вали аль­янс FIDO (Fast IDentity Online), мис­сией которо­го ста­ло «сок­ратить все­общую зависи­мость от паролей». Воп­реки рас­хожему мне­нию, Google и Microsoft не были сре­ди осно­вате­лей, а при­соеди­нились толь­ко в 2013 году. Сей­час в аль­янс FIDO вхо­дит нес­коль­ко сотен ком­паний.

На пер­вых порах ново­испе­чен­ный аль­янс объ­еди­нил два незави­симых про­екта. Во‑пер­вых, это Universal Authentication Framework (UAF), раз­работан­ный в PayPal и Validity Sensors, — про­токол, который пред­полага­ет исполь­зование биомет­ричес­ких дан­ных для аутен­тифика­ции поль­зовате­ля без пароля на сто­роне мобиль­ных устрой­ств. Во‑вто­рых, это Universal Second Factor (U2F), соз­данный в Google и Yubico. Этот про­токол пред­полага­ет исполь­зование внеш­него токена безопас­ности как вто­рого фак­тора аутен­тифика­ции, в допол­нение к паролю. В резуль­тате появи­лись две спе­цифи­кации: UAF 1.0 (8 декаб­ря 2014 года) и U2F 1.0 (9 октября 2014 года), которые мож­но условно наз­вать про­ектом FIDO 1.0.

Кон­цепт выг­лядел отлично, но ему не хва­тало уни­фика­ции, поэто­му в сен­тябре 2015 года аль­янс FIDO объ­еди­нил две спе­цифи­кации и выпус­тил пред­ложение FIDO 2.0, которое было отправ­лено в W3C. На этой осно­ве в W3C в мае 2016 года выпус­тили про­токол WebAuthn, а аль­янс FIDO пос­ле нес­коль­ких дорабо­ток в июле 2017 года зарели­зил про­токол U2F 1.2 (он же CTAP 1.0). Эту связ­ку уже мож­но наз­вать пол­ноцен­ным про­ектом FIDO 2.0.

info

W3C (World Wide Web Consortium) — это меж­дународ­ная орга­низа­ция по стан­дарти­зации веба. Есть и дру­гие подоб­ные орга­низа­ции, нап­ример WHATWG (под­держи­вает HTML) и ECMA (под­держи­вает JavaScript). Стан­дарты, выпущен­ные эти­ми орга­низа­циями, не обя­затель­ные, но общеприз­нанные.

W3C и FIDO регуляр­но выпус­кают новые ите­рации сво­их спе­цифи­каций. Так, на сегод­няшний день стан­дартом явля­ется WebAuthn (Level 2) от 2021 года и CTAP 2.1 от 2022 года, но сущес­тву­ет и новая вер­сия, которая пока на эта­пе пред­ложения.

Эво­люция про­ектов и про­токо­лов аль­янса FIDO

На сегод­няшний день FIDO2 — это наибо­лее рас­простра­нен­ное решение аль­янса FIDO, хотя U2F так­же еще исполь­зует­ся некото­рыми веб‑сер­висами как метод 2FA, а UAF при­меня­ется в мобиль­ных при­ложе­ниях как метод под­твержде­ния дей­ствия, нап­ример тран­закции в бан­ков­ском при­ложе­нии.

Ито­го нуж­но запом­нить, что FIDO — это аль­янс, FIDO1 и FIDO2 — это про­екты, а не про­токо­лы; UAF, U2F, CTAP и WebAuthn всех вер­сий — это про­токо­лы, у которых есть одно­имен­ные спе­цифи­кации.

 

Архитектура FIDO2

FIDO2 позици­они­рует­ся как безопас­ный метод аутен­тифика­ции, пос­тро­енный на крип­тогра­фии пуб­лично­го клю­ча, и сос­тоит из двух час­тей — про­токо­лов WebAuthn и CTAP. Зачем два про­токо­ла? Так FIDO было лег­че фор­мализо­вать свое тво­рение: W3C выпус­кает толь­ко стан­дарты для веба, а на сто­роне устрой­ств ничего не реша­ет. Поэто­му и получил­ся такой полус­тандар­тный стан­дарт, за который отве­чают одновре­мен­но неком­мерчес­кий кон­сорци­ум (W3C) и ассо­циация ком­мерчес­ких орга­низа­ций (аль­янс FIDO).

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

Так­же FIDO2 не пок­рыва­ет Passkeys, которые сей­час начина­ют пред­лагать на некото­рых круп­ных сай­тах. Дело в том, что в пер­вых спе­цифи­каци­ях FIDO2 такого понятия не сущес­тво­вало, а поз­же сло­вом Passkeys для удобс­тва начали называть те самые крип­тогра­фичес­кие клю­чи. На прак­тике Passkeys — это одна из реали­заций клю­ча на осно­ве крип­тогра­фии, которая может исполь­зовать­ся в FIDO2 и обла­дает дру­гими полез­ными фун­кци­ями, нап­ример син­хро­низа­цией меж­ду устрой­ства­ми. Но сто­ит пом­нить, что ни WebAuthn, ни CTAP не рег­ламен­тиру­ют Passkeys. Это в дан­ный момент прос­то самое рас­простра­нен­ное решение.

Ос­новные учас­тни­ки вза­имо­дей­ствия — это:

  • поль­зователь;
  • аутен­тифика­тор (Authenticator);
  • ус­трой­ство поль­зовате­ля;
  • JS-кли­ент устрой­ства поль­зовате­ля (кли­ент);
  • от­ветс­твен­ная сто­рона (Relying Party — RP).

Про­токол WebAuthn отве­чает за вза­имо­дей­ствие меж­ду JS-кли­ентом и RP, его мож­но условно наз­вать кли­ент­ским API. В боль­шинс­тве слу­чаев JS-кли­ент — это бра­узер поль­зовате­ля, но он может быть и натив­ным при­ложе­нием для Android или iOS. Для прос­тоты будем счи­тать понятия JS-кли­ент и бра­узер, а так­же веб‑сайт и RP рав­нознач­ными.

Про­токол CTAP регули­рует отно­шения меж­ду аутен­тифика­тором и устрой­ством поль­зовате­ля, его мож­но условно наз­вать API аутен­тифика­тора. Аутен­тифика­тор может быть встро­енным, нап­ример Face ID, или внеш­ним, нап­ример аппа­рат­ный токен YubiKey, но мы не будем делать меж­ду ними раз­личий.

Дан­ные CTAP может переда­вать через USB, NFC или BLE (Bluetooth Low Energy). Самые вни­матель­ные навер­няка заметят, что у нас остался про­бел во вза­имо­дей­ствии меж­ду устрой­ством поль­зовате­ля и JS-кли­ентом. К сожале­нию, каж­дая плат­форма (ОС) реша­ет этот воп­рос по‑сво­ему, здесь чет­ких стан­дартов нет.

Кон­цепту­аль­но архи­тек­тура FIDO2 при­веде­на на рисун­ке ниже, а ком­понен­ты раз­ных цве­тов зависят от раз­ных команд или даже вен­доров.

Ар­хитек­тура FIDO2 

Церемония регистрации

Нет‑нет, речь сей­час пой­дет не о заг­се. В FIDO2 сущес­тву­ет две церемо­нии: церемо­ния регис­тра­ции и церемо­ния аутен­тифика­ции. Давай нач­нем с пер­вой. Сра­зу ого­ворим­ся, что для чита­емос­ти я буду исполь­зовать зна­комые всем фор­маты дан­ных вмес­то бай­товых (Uint8Arrays), которые на самом деле отправ­ляют­ся в полях вызовов.

Источник: xakep.ru

Ответить

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