FIDO (Fast IDentity Online) Альянс был создан в июле 2012 года для решения проблемы поддержки устройств строгой аутентификации в сети Интернет, а также с целью упростить жизнь пользователям, вынужденным создавать и запоминать имена пользователей и пароли. FIDO Альянс планирует изменить текущую ситуацию с аутентификацией путем разработки спецификаций, определяющих набор механизмов, которые вытеснят зависимость от паролей и обеспечат безопасную аутентификацию пользователей интернет-услуг. Новый стандарт по безопасности устройств и плагинов для браузеров позволит любому веб-сайту или облачному приложению взаимодействовать с широким спектром существующих и перспективных устройств для обеспечения безопасной аутентификации пользователей.
Для обеспечения безопасной работы пользователей проект FIDO объединяет аппаратные средства, программное обеспечение и интернет-сервисы.
Если кто не знаком с FIDO, перевод раздела сайта «Как работает FIDO» ниже. А сейчас небольшие комментарии.
Нашей командой разрабатывалось решение по аппаратной аутентификации на web-ресурсах. Решение получилось вполне удачным, оно используется в системах документооборота и в механизмах лицензирования SaaS. Техническая часть проекта FIDO достаточно схожа с нашими разработками и выглядит вполне выполнимой. Однако, из описания на сайте FIDO становится ясно, что четкого понимания что и как делать у них пока нет. Да и сама концепцию вызывает ряд вопросов.
Безопасность
FIDO альянсом предполагается следующий механизм распространения устройств аутентификации. На этапе производства устройства получают идентификационный номер и секрет. Эта информация помещается производителем в FIDO Repository. При регистрации нового пользователя сервис запрашивает идентификационный номер устройства и по этому номеру получает из FIDO Repository данные, необходимые для проверки пользователя при аутентификации. Эти данные кэшируются интернет-сервисом в Validation Cache для снижения нагрузки на FIDO Repository.
К сожалению, о используемых криптоалгоритмах и протоколах пока ничего не сказано. Однако по косвенным признакам (в тексте встречается термин OTP, а также по схеме с Репозиторием) можно предположить, что планируется использовать симметричные алгоритмы. Для меня такое решение выглядит несколько устаревшим. Безопасное распространение симметричных ключей, чем по видимому должен заниматься Репозиторий, выглядит сомнительным. По логике вещей каждое устройство при регистрации на новом интернет сервисе должно бы генерировать новый ключ самостоятельно. То есть, для каждого сервиса свой ключ и никаких глобальных идентификационных номеров. Кроме того, что бы не хранить на сервере какие-либо секретные ключи, думается, разумно использовать ассиметричные алгоритмы.
FIDO предполагает использование двух основных типов устройств для аутентификации. В их терминологии это Identification tokens и Authentication tokens. Первый вариант не требует аутентификации владельца. То есть пока устройство подключено, аутентификация происходит прозрачно для пользователя. Несомненно удобно. Однако, этим механизмом может воспользоваться кто угодно, имеющий доступ к устройству, например жена сможет читать переписку мужа. Думаю, отказываться от второго фактора все-таки нельзя.
Приватность
Как ни печально, но использование глобального идентификатора еще и позволяет построить связь между разными учетными записями по номеру устройства, а это не всем понравится. В настоящее время и так есть серьезные проблемы с приватностью в сети интернет, а такой подход еще и усугубляет эту проблему. Думается, никаких глобальных идентификаторов быть не должно, никакой необходимости в них в общем нет.
Восстановление доступа
В концепции ничего не сказано о механизмах взаимодействия в случае утраты аппаратного устройства. Удобное и безопасное решение этого вопроса весьма важно, так как может вызвать серьезное увеличение нагрузки на техподдержку.
PR
Решение будет очевидно востребовано некоторой частью пользователей, ведущих какую-либо коммерческую деятельность в Интернет. Однако, для широкого, повсеместного применения строгой аутентификации нужно не только обеспечить безопасность, но и предложить решение которое будет удобными и модными. Популяризация разрабатываемого решения может стать одной из самых затратных частей этого проекта. В этом плане весьма обнадеживающе выглядит участие в этом альянсе не только разработчиков, но сервисов, таких как PayPal и Google.
А вот и перевод.
Как работает FIDO
FIDO Authenticators
Пользователи будут иметь FIDO Аутентификатор или токен (любое аппаратное устройство аутентификации, поддерживающее механизмы FIDO — прим. переводчика), который они выбрали, или который им был выдан для пользования каким-либо сервисом. Например, такие устройства как биометрический сканер или USB носители с доступом по паролю. Пользователи могут выбрать такой тип FIDO Аутентификатора, который наилучшим образом отвечает их требованиям.
FIDO Аутентификаторы будет выпускаться в двух основных вариантах.
Identification tokens будут иметь уникальные ID, идентификаторы будут привязываться к аккаунту Интернет пользователя. После привязки к аккаунту, они будут доступны серверу в качестве идентификатора без необходимости каких-либо действий со стороны пользователя. Таким образом, будет обеспечиваться только один фактор аутентификации.
Authentication tokens может потребовать от пользователя выполнить какое-либо действий, чтобы доказать, что он законный владелец токена. Эти действия могут включать в себя ввод пароля, ввод PIN-кода или предоставление биометрических данных. Эти аутентификаторы обеспечат двухфакторную аутентификацию пользователя, используя принцип " что у вас есть" и «что вы знаете” или биометрический фактор „кто вы есть“.
Когда пользователь подключает свой FIDO Authenticator к аккаунту веб-ресурса, устанавливается связь между Аутентификатором, проверяющей стороной и Validation Cache. После создания связи, для проверки абонента используются одноразовые пароли (OTP). Так как пароль OTP используется только один раз, он не может быть использован для атак воспроизведения, если кто-то захватывает сеанс связи с вторжением в систему или слушает интернет-трафик.
Каждый аутентификатор будет иметь встроенный ID и начальное значение, которые позволят однозначно идентифицировать и проверить его подлинность. Криптографические операции будут происходить на борту Аутентификатора. Таким образом, даже если машина заражена вредоносным ПО, FIDO Аутентификатору еще можно доверять.
FIDO Plugin
Браузеры пользователя будут иметь FIDO плагин. Плагин сможет распознавать доступные FIDO Аутентификаторы, которые подключены к системе пользователя. Включая в себя встроенные аутентификаторы и подключаемые по USB.
При подключении пользователя к веб-сайту браузер будет сообщать серверу о доступных FIDO Аутентификаторах в составе информации о браузере. Сайты, поддерживающие технологию FIDO смогут распознать наличие аутентификатора и отвечать соответствующим образом. На основании полученной информации проверяющая сторона (веб-сайт) инициирует механизм аутентификации.
FIDO плагин может распространяться через различные каналы, в том числе:
Browser Add-On — разработчики браузеров могут иметь плагин в качестве дополнения, которое пользователи могут скачать и подключить в свой браузер.
FIDO аутентификаторы — Если пользователь покупает FIDO аутентификатор, имеющий встроенный USB диск, плагин может располагаться на нем.
Вендоры– Вендоры могут распространять плагин с новыми машинами, а также включать плагин в состав обновлений программного обеспечения для существующих машин. Эти обновления позволят использовать FIDO аутентификацию на существующих машинах с подходящими аппаратными возможностями.
Device Specific Module
Специальный модуль устройства (DSM) будет взаимодействовать с плагином для браузера с одной стороны, и с аппаратным FIDO Токеном с другой. DSM преобразует команды плагина в команды, которые являются специфическими для каждого типа токена. Разделения программного обеспечения FIDO на плагин и DSM позволяет создать универсальный плагин для браузера, поддерживающий широкий спектр аппаратных устройств. Кроме того, это позволит поставщикам аппаратных решений сосредоточиться только на разработки той части ПО, которая необходимой для поддержки своих устройств, и не потребует реализовывать весь стек программного обеспечения.
Проверяющая сторона / Website
Как следует из названия, проверяющая сторона использует проверку токена для аутентификации.
Веб-сайт распознает наличия FIDO Токена, определяет привязан ли он к аккаунту и если нет, представляет пользователю возможность привязать новый токен к своему аккаунту.
Например, определив что токен привязан к аккаунту, web-сайт добавит на страницу входа сообщение „Войти с FIDO“. Если токен был определен как сканер отпечатков пальцев, сообщение может быть „проведите пальцем для входа с FIDO“.
В зависимости от политики сервера, предпочтений пользователя и истории аккаунта Identification tokens могут значительно упростить вход в систему. Веб-сайт может просто определить существующего пользователя и показать » Welcome back Debbie!" вместо окна входа, основываясь только на информации от FIDO токена. Конечно, пользователь сможет изменить параметры входа, определив для себя, насколько опасно это может быть для его учетной записи.
Validation Cache
Validation Cache будет проверять зашифрованную информацию и одноразовые пароли получаемые от токенов, что бы быть уверенным в подлинности токена. Проверяющая сторона будет использовать Validation Cache, для проверки информации получаемой от каждого токена.
Стоит отметить, что наличие Validation Cache на сайте проверяющей стороны позволит получать ответ быстрее, избежать задержек с ответом или атак. Validation Cache будет регулярно получать обновления из FIDO Repository о новых устройствах произведенных поставщиками токенов.
FIDO Repository
FIDO Repository это центр обмена информацией о токенах. Производители токенов будут сообщать данные о каждом произведенном FIDO токене в Repository. Хранимая в Repository информация используется для проверки OTP генерируемого токеном. Repository будет регулярно обновлять Validation Cache на каждом сайте, который использует FIDO. Repository будут поддерживать большое количество сайтов и иметь механизмы репликации для обеспечения бесперебойного обслуживания. Веб-сайт сможет использовать более одного Repository.
FIDO Repository будет взаимодействовать с разработчиками, чтобы гарантировать актуальность и доступность базы токенов. Использование FIDO Repository позволит web-сайтам не иметь контактов с каждым поставщиком токенов. При подключении к FIDO Repository информация о всех существующих токенах будет доступна web-сервису.
Примеры использования
Подключение пользователя
Когда пользователь с новым токеном впервые переходит на сайт, который поддерживает технологию FIDO, сайт предположит пользователю привязать FIDO токен к своему аккаунту для повышения уровня безопасности в будущем. Информация о браузере пользователя сообщит сайту, что пользователь имеет FIDO токен, а также сообщит сайту тип токена. Если сайт поддерживает FIDO, он в фоновом режиме опросит плагин о токене. В зависимости от политики, сайт будет предлагать пользователю подключить FIDO токен к своему аккаунту.
Порядок действий может отличаться в зависимости от типа Аутентификатора пользователя, но все типы будут поддерживаться через один и тот же плагин.
Сканер отпечатков: пользователь проводит пальцем по датчику. Аутентификатор выполняет криптооперации, данные поступают в DSM, а затем в плагин браузера.
Защищенные паролем токены: пользователь вводит правильный пароль для токена.
Уникальный идентификатор устройства: Так как это не Authentication tokens, от пользователя требуется только нажать кнопку ОК для подключения идентификатора.
Когда пользователь соглашается подключить токен и аутентифицируется на нем (при необходимости), глобальный ID токена и ID пользователя шифруются и отправляются обратно на сайт. Сайт использует Validation Cache для проверки токена. После проверки токена, сайт привязывает уникальный ID токена к аккаунту пользователя для дальнейшего использования.
Аутентификация пользователя
После того как пользователь привязал свой Токен к аккаунту он может использовать его вместо логина и пароля учетной записи. Ниже приведены три примера, но в перспективе FIDO будет поддерживать более широкий спектр FIDO токенов.
Считыватель отпечатков пальцев
Пользователь переходит на веб-сайте, его аккаунт привязан к токену со считывателем отпечатков пальцев.
Браузер сообщает сайту, что пользователь имеет FIDO токен со считывателем отпечатков для аутентификации, веб-сайт представляет пользователю вариант страницы аутентификации, поддерживающий FIDO. Веб-сайт может показать сообщение «Сканируйте палец для входа FIDO» Пользователь сканирует свои отпечатки. FIDO токен распознает пользователя. Биометрические данные пользователя никогда не покидает считыватель. Глобальный ID и аутентификационные данные шифруются и отправляется обратно на сайт через DSM и плагин.
Сайт проверяет полученные данные через Validation Cache. Веб-сайт определяет пользователя на основании глобального уникального идентификатора и идентификатора пользователя. Таким образом, обеспечивается двухфакторная аутентификацию, так как наличие токена со считывателем у пользователя является первым фактором и прохождение биометрической аутентификации является вторым фактором.
Если пользователь использовал токен со считывателем отпечатков, более чем с одной учетной записью, сайт будет запрашивать у пользователя имя аккаунта, к которому он хочет получить доступ.
Защищенные паролем токены
Пользователь переходит на веб-сайт, его аккаунт связан с защищенным паролем токеном. Это может быть USB токен или установленный на материнской плате модуль(TPM). Браузер сообщает сайту, что пользователь имеет FIDO токен с паролем, веб-сайт настраивает страницу аутентификации по технологии FIDO. Веб-сайт может представить пользователю сообщение «Нажмите здесь для безопасного входа с FIDO».
Когда пользователь нажимает на кнопку «FIDO Логин», плагин отображает локальное окно (не окно браузера) для ввода пароля токена. Этот пароль для локальной аутентификации в FIDO токене. Этот пароль не доступен через веб-браузер и должен быть передан только в токен.
FIDO токен аутентифицирует пользователя. Глобальный ID и аутентификационные данные шифруются и отправляется обратно на сайт через DSM и плагин.
Сайт проверяет полученные данные через Validation Cache. Веб-сайт определяет пользователя на основании глобального уникального идентификатора и идентификатор пользователя. Таким образом, обеспечивается двухфакторная аутентификация, так как наличие токена у пользователя является первым фактором, а знание пароля от токена является вторым фактором. Если пользователь использовал токен, более чем с одной учетной записью, сайт будет запрашивать у пользователя имя аккаунта, к которому он хочет получить доступ.
Идентификаторы
Пользователь переходит на веб-сайт, его аккаунт связан с Identification token. Это может быть встроенное аппаратное средство, дополнительные программные или аппаратные решения, которые не требуют знания PIN кода или пароля, так как они обеспечивают только идентификацию. Браузер сообщает сайту, что пользователь имеет Identification token, доступный для проверки подлинности. Веб-сайт будет запрашивать у плагина идентификационные данные. Обмен данными с сервером происходит в фоновом режиме, без взаимодействия с пользователем. Глобальный ID Identification token шифруются и отправляется обратно на сайт через DSM и плагин.
Сайт проверяет полученные данные через Validation Cache. Веб-сайт определяет пользователя на основании глобального уникального идентификатора. Если есть только одна учетная запись, связанная с идентификатором, то пользователь входит в свою учетную запись без пароля. Данный тип аутентификации является однофакторным, так как для аутентификации достаточно только владеть идентификатором.
Если политика сайта требует двухфакторную аутентификация, то от пользователя может потребоваться ввести свой пароль. В качестве второго фактора, без дополнительного взаимодействия с пользователем, проверяется наличие Identification token.
Новые типы Аутентификаторов
Одной из целей FIDO является расширение спектра устройств. Намерение состоит в том, чтобы все устройства безопасности, которые соответствуют интерфейсу FIDO плагина, должны быть доступны для всех веб-сайтов без изменения кода. Это позволит легко подключать к системе новые типы токенов.
Чтобы добавить новый тип аутентификации разработчик должен создать устройство, DSM и протестировать его с плагином. Затем разработчик должен передать в FIDO Repository данные, необходимые для проверки новых устройств. Repository будет гарантировать, что данные будут доступны всем Validation Cache проверяющих сторон.
Когда новый аутентификатор появляется на сайте в первый раз, сайт будет проверять аутентификатор с помощью Validation Cache. Веб-сайт может попросить пользователя выполнить какие-либо дополнительные действия для аутентификации пользователя, не зная подробностей этих действий, так как взаимодействие происходит через плагин и DSM. Когда пользователь выполнит необходимые действия, идентификационные данные будут подключены к учетной записи пользователя.
Автор: EugeneSukhov