Планета гаджетов / технологий
Содержание
Миллионы логинов и паролей к почтовым и различным социальным сервисам появляются в открытом доступе чуть ли не каждый месяц. Это лучше любого эксперта по информационной безопасности свидетельствует нам о том, что пароль, даже сложный, уже не является актуальным средством защиты.
Меняются предпочтения пользователей в выборе того или иного сервиса. Если раньше выбор падал на наиболее удобный вариант, то теперь — на максимально защищённый.
Для обеспечения безопасности изобрели мультифакторную аутентификацию (MFA) и ее упрощенный вариант – двухфакторную (2FA): первый рубеж защиты – логин и пароль, т.е. то, что знает и помнит пользователь, а второй – это то, что есть только у этого пользователя: SMS, Email, one-time password (OTP/TOTP/HOTP) приложения, криптографические токены, биометрические данные. Наиболее дешёвые и удобные способы — приложение и SMS. Вводим логин и пароль на сайте, после чего получаем на мобильный телефон SMS с кодом. Вводим код, и у нас есть доступ к данным.
С момента появления 2FA прошло уже достаточно много времени, большинство крупных интернет-сервисов широко ее используют. 2FA «шагнула» в финтех: невозможно уже себе представить онлайн платежи без подтверждений и авторизации, например, через SMS.
И, как ни странно, при таком широком распространении 2FA у пользователей до сих пор крадут и компрометируют учетные записи. Попробуем разобраться в недостатках методов 2FA и их уязвимостях.
Сегодняшние 2FA-решения не в состоянии надежно защитить пользователя, зачастую сложны в применении, дороги и не универсальны.
В 2007 году PayPal попыталась внедрить 2FA с отправкой OTP через SMS. Несмотря на то, что на тот момент этот способ был прогрессивным и достаточно безопасным, темпы его внедрения были катастрофично низки. Большинство пользователей просто проигнорировало возможность увеличить безопасность своих данных.
Исследуя возможности по внедрению биометрических технологий, PayPal совместно с Validity Sensors, первыми озвучили мысль о том, что пора создать отраслевой стандарт, который бы поддерживал все аппаратные средства аутентификации. В 2013 году был основан FIDO (Fast IDentity Online) — альянс, ставящий себе задачей именно создание такого стандарта. Множество крупных компаний, таких как Google, ARM, Bank of America, Master Card, Visa, Microsoft, Samsung, LG, Dell и RSA стали его членами.
На данный момент, основные цели, которые FIDO ставит перед собой — это простые в использовании, безопасные, приватные и стандартизированные решения.
Результатом деятельности FIDO пока стали два стандарта: U2F (Universal Second Factor) и UAF (Universal Authentication Framework для биометрической аутентификации).
U2F — это открытый, бездрайверный протокол, изначально разрабатываемый компаниями Google и Yubico и использующий для двухфакторной аутентификации специальные USB, NFC, Bluetooth LE устройства или SIM-карту (спецификации еще в разработке), которые хранят ключи и самостоятельно выполняют криптографические операции.
На данный момент поддержка U2F реализована в браузерах Chrome и Edge, а также в OS Windows 10.
Протокол основан на challenge-response аутентификации с помощью электронной цифровой подписи.
С точки зрения пользователя работа с протоколом достаточно тривиальна. Пользователь вводит логин и пароль, вставляет в компьютер USB (или использует Bluetooth или NFC) U2F устройство (нажимает на нем кнопку, вводит пин-код, проходит биометрическую проверку или не делает ничего) и успешно проходит аутентификацию.
Взаимодействие с U2F-клиентом (например, браузером или Windows 10) проходит следующим образом:
Рассмотрим работу протокола подробнее.
Пользователь вводит логин и пароль, сервер проверяет учетные данные и, если они верны, генерирует случайный challenge и отправляет его клиентскому ПО, которое, в свою очередь, передает его U2F-устройству. U2F-устройство ожидает участия пользователя для подтверждения дальнейших операций (как говорилось выше, например, нажатия кнопки на устройстве) и затем, возвращает клиентскому ПО подписанный challenge, который передается дальше на сервер для сверки подписи.
Для защиты от фишинга клиентское ПО добавляет к challenge origin URL, TLS channel ID перед отправкой U2F устройству, а сервер, после получения подписи, сверяет полученные данные.
Чтобы не подписывать все подряд одной парой ключей (что, естественно приведет от компрометации одного аккаунта какого-либо сервиса до компрометации сразу всех аккаунтов, использующих данное U2F-устройство), при регистрации сервер передает вместе с challenge параметры application ID и random seed, на основе которых U2F-устройство и генерирует уникальную пару Registering Dependent Keys. Причем ее способ генерации не описан в протоколе и полностью отдан на усмотрение изготовителя устройства.
За счет того, что пара ключей уникальна для каждой регистрации, становится возможным использовать совместно одно U2F-устройство для множества аккаунтов.
Для того, чтобы защитить U2F-устройство от клонирования, стандарт предусматривает в нем встроенный счетчик. Каждая подпись и регистрация увеличивает состояние счетчика на единицу. Состояние счетчика подписывается и возвращается зависимой стороне вместе с response. Если U2F-устройство будет клонировано, то состояние счетчика клонированного устройства будет меньше, чем состояние счетчика оригинального устройства, что вызовет ошибку во время верификации.
Для того, чтобы избежать небезопасных реализаций, каждое U2F-устройство имеет встроенный сертификат, гарантирующий клиентскому ПО и серверу, что оно является аппаратным и сертифицировано альянсом FIDO.
В ситуации, когда пользователь находится вдали от своего устройства, вредоносное программное обеспечение может попытаться атаковать устройство. Для защиты от этого U2F-стандарт требует, чтобы все операции подписания challenge активировались пользователем. Т.е. пользователь обязан подтвердить свое решение на двухфакторную аутентификацию. Как уже говорилось выше, это может быть простое нажатие на кнопку, ввод пин-кода, снятие отпечатка пальца или что-то другое.
Заключение
U2F — это хорошо продуманная, сильная, открытая и стандартизированная технология. Из крупных внедрений U2F можно отметить сервисы Google, Github, Dropbox, а также государственные сайты Великобритании.
Важно помнить, что U2F, как и любая другая технология двухфакторной аутентификации, должна использоваться именно как второй фактор.
Максим Советкин окончил механико-математический факультет Белорусского государственного университета, работает в Itransition уже более семи лет. Сегодня он – ведущий системный инженер, отвечает за проектирование, развитие и поддержку корпоративной ИТ-инфраструктуры.