что такое защитный код fido
Защитный ключ Fido на телефоне андроид: что это такое
06.06.2020 9,444 Просмотры
Мы живем в такое время, когда необходимо всегда заботиться о персональной безопасности. Но, а так как мы живем во время цифровых технологий, то прежде всего нужно позаботиться о безопасности наших данных в сети, на нашем смартфоне, онлайн-банкинге, электронной почте и так далее. И в сегодняшней статье речь пойдёт о защитном ключе Fido, а также двухфакторной аутентификации, как более безопасный способ защиты ваших данных.
Что же такое FIDO, двухфакторная аутентификация, как это работает на устройствах
Учитывая тот факт, насколько технологии прошли вперёд, что теперь практически у каждого есть возможность носить у себя в кармане смартфон, который сопоставим с мощными компьютерами и носителями важной информации. Сейчас можно любой смартфон сделать своим ключом для двухфакторной аутентификации. И если вы хотите максимально защититься, тогда используете её абсолютно для всех своих личных аккаунтов в сети.
Самыми популярными, а также самыми уязвимыми мишенями становятся сервисы Google, которые неоднократно подвергаются хакерским атакам. Но, чтобы защитить своих клиентов, разработчики сделали специальные способы защиты в виде ключей в несколько шагов. И если пользователь захочет войти в свои аккаунты, тогда он обязательно должны пройти все эти шаги.
Для кого доступны эти возможности
Как правило, все эти мери безопасности были придуманы для более уязвимых людей, а именно для:
Но, сейчас все эти функции доступны для каждого, поэтому никогда не будет лишним сделать свой аккаунт неприступной крепостью.
Как настроить
Если вы решились проделать все эти действия, тогда вам следует перейти в настройки своего телефона, к безопасности, аккаунт Google, а потом к двухфакторной аутентификации. Затем просто добавьте электронный ключ и дело в шляпе.
FIDO: биометрическая технология, которая защитит ваши пароли
Наиболее популярным способом обеспечить защиту профиля пользователя на сайте сегодня является двухфакторная аутентификация: вы вводите пароль, и на ваш телефон приходит смс с кодом, который нужно ввести в еще одно поле. Однако даже эта технология сегодня не считается идеальной.
На помощь приходят биометрические технологии — в частности, технология, называемая FIDO.
Как работает FIDO
Природа паролей побуждает нас быть ленивыми. Длинные, сложные пароли (самые безопасные) для нас сложнее всего создать и запомнить. Поэтому многие берут какой-то простой пароль, немного его «дорабатывают» и пользуются — это огромная проблема, потому что у хакеров давно есть списки популярных паролей. И хакеры автоматизируют атаки путем «заполнения учетных данных», пытаясь найти, что именно вы добавили к вашему «стандартному» паролю.
FIDO работает на основе распознавания лиц и отпечатков пальцев — это умеют многие современные смартфоны.
«Пароль — это то, что вы знаете. Устройство — это то, что у вас есть. Биометрия — это то, чем вы являетесь. Мы движемся к тому, что пароль всегда будет при вас — и нужда в его запоминании просто отпадет», — сказал Стивен Кокс, главный архитектор безопасности SecureAuth.
FIDO, или Fast Identity Online, стандартизирует использование аппаратных устройств (сканер отпечатков пальцев, камеры) для создания уникальной «биометрической карточки», которая и позволит пользователю регистрироваться и заходить на сайты.
Подделать отпечатки пальцев или лицо намного сложнее и дороже — так что, по мнению Эндрю Шикиара, исполнительного директора FIDO Alliance, «… в течение следующих пяти лет у каждой крупной потребительской интернет-услуги будет альтернативная регистрация без пароля».
FIDO также выгоден и компаниям, поскольку устраняет опасения по поводу утечек данных (в частности, конфиденциальной информации клиентов). Похищенные «биометрические карточки» не позволят хакерам войти в систему, потому что их надо не просто ввести, но и подтвердить.
Вот один из способов входа на основе FIDO без паролей. Вы открываете страницу входа в систему на своем ноутбуке, вводите имя пользователя, нажмите кнопку, а затем пользуетесь биометрической аутентификацией ноутбука, например, Touch ID от Apple или Windows Hello. Если ваша система не оснащена нужными устройствами, вы можете подключить по Bluetooth телефон — и точно так же использовать FIDO.
Технология готова — готовы ли мы?
Большим преимуществом этого подхода является то, что устройство безопасности FIDO (телефон, ноутбук, иной гаджет) не будут работать с фальшивыми сайтами, потому что ключи безопасности регистрируются только для сайтов-оригиналов.
«Вместо того, чтобы «грузить» пользователя проверкой сайта, мы переложили ее на систему», — отметил Марк Ришер, руководитель отдела аутентификации в Google, в своем блоге.
В компании уже более 10 000 сотрудников перешли на подобный способ, что сократило число взломов их аккаунтов практически до нуля.
Однако у некоторых экспертов есть опасения: а захотят ли люди разрешать использование своих данных? Одно дело — цифры и буквы, а другое — отпечатки пальцев и снимки лица.
«Имена пользователей и пароли по-прежнему будут наиболее распространенным вариантом. Пока есть выбор и пока популярна тема «тотального контроля» на основе биометрических данных, люди будут работать по старинке», — отмечают они.
Добавьте «Правду.Ру» в свои источники в Яндекс.Новости или News.Google, либо Яндекс.Дзен
Быстрые новости в Telegram-канале Правды.Ру. Не забудьте подписаться, чтоб быть в курсе событий.
Как использовать смартфон Android в качестве электронного ключа безопасности для аккаунта Google
Двухфакторная аутентификация (или двухшаговая аутентификация) – это функция безопасности, которую нужно использовать в аккаунтах всех сервисов, которые мы хотим защитить.
Аккаунты Google являются очень привлекательной мишенью для хакеров, которые хотят завладеть пользовательскими данными. Технологический гигант разработал несколько методов для защиты ваших данных, включая несколько способов для предотвращения попыток взлома аккаунта.
Как известно, лучшим и менее подверженным компрометации способом для защиты аккаунта является использование физического ключа безопасности.
Однако, приобретение и постоянное использование физического ключа создает дополнительные неудобства для пользователей. Поэтому Google применила альтернативный подход и теперь позволяет превратить свои смартфоны в электронные ключи безопасности.
Смартфон Android в роли электронного ключа безопасности
Другими словами, смартфон Android или iPhone выступает в роли ключа безопасности и позволяет пользователям разрешать или отклонять попытки авторизации в свои аккаунты.
Google рекомендует использовать данную опцию в рамках программы «Дополнительная защита», которая будет полезна «журналистам, правозащитникам, бизнесменам, политикам и тем пользователям, которые чаще других подвергаются целенаправленным атакам».
Тем не менее, данную возможность может использовать любой владелец персонального аккаунта Google или рабочего аккаунта Google Cloud.
Чтобы использовать смартфон Android в качестве электронного ключа безопасности, мобильное устройство и ПК должны отвечать следующим требованиям:
Конечно, существуют и другие способы для защиты аккаунтов Google, например двухфакторная аутентификация с помощью кодов проверки, которые отправляются на мобильный телефон. Однако, в случае компрометации мобильного устройства хакеры могут перехватить проверочный код.
Ключи безопасности используют шифрование с открытым ключом для проверки вашей личности и URL-адрес страницы входа, чтобы злоумышленник не получил доступ к вашему аккаунту, даже если ему известны логин и пароль. В отличие от методов двухфакторной аутентификации (2FA), которые пытаются выполнить дополнительную проверку авторизации, ключи безопасности соответствуют стандартам FIDO для обеспечения надежной защиты против автоматизированных ботов, массовых фишинг-атак и целенаправленных мошеннических атак.
Как настроить электронный ключ безопасности для Android смартфона
Смартфоны Android уже имеет встроенный ключ безопасности, поэтому нужно только настроить использование аккаунта Google со смартфоном для двухфакторной аутентификации.
Во-первых убедитесь, что ваш смартфон добавлен в аккаунт Google, который вы хотите защитить, и в нем включена двухэтапная аутентификация.
Затем на ПК или мобильном устройстве нужно войти в аккаунт Google. Выберите опцию «Добавить электронный ключ» на странице управления аккаунтом по следующему пути:
Затем вам нужно выбрать устройство, которые вы хотите использовать в качестве ключа безопасности. Вот почему смартфон должен быть привязан к аккаунту Google, в противном случае вы просто не увидите его в списке телефонов, которые можно настроить как электронный ключ.
После завершения настройки, вы получите следующее сообщение:
Готово! Электронный ключ добавлен
Электронные ключи устройства [имя устройства] добавлены в аккаунт.
Теперь для входа в аккаунт с помощью двухэтапной аутентификации вам понадобится пароль и устройство [имя устройства].
Убедитесь, что включены Bluetooth и определение местоположения
В следующий раз при попытке входа в аккаунт Google, вы должны будете подтвердить это действие на своем мобильном телефоне.
После подтверждения входа, вы получите доступ к своему аккаунту.
Руководствуясь данной инструкцией, всегда можете изменить данные параметры, удалять устройства и добавлять новые устройства в качестве электронных ключей. Не забывайте, что ваш компьютер должен иметь Bluetooth-модуль, иначе данные о попытке авторизации не будут отправлены на ваш смартфон. Кроме того, вы должны включить службы геолокации на своем смартфоне.
FIDO2 — Пароли must die
Думаю, все вы неоднократно слышали о том что «пароли мертвы», «пароли вымирают», «новая технология убьет пароли» и тому подобное.
Мы в FIDO Alliance как раз-таки пришли сообщить вам о том, что пароли все-таки вымрут… в аутентификации.
Прежде чем мы начнем разговор о массовом уничтожении многословных гадов, давайте вернемся к нашему самому популярному протоколу FIDO U2F о коем я писал ранее.
То есть сценарий аутентификации с U2F таков:
Регистрация:
— Пользователь регистрируется, используя логин и пароль
— Сервер хеширует пароль с использованием scrypt, argon2, bcrypt и сохраняет в БД
— Пользователь добавляет свое устройство, храня на сервере публичный ключ и id пары ключей на устройстве
Аутентификация:
— Пользователь вводит логин и пароль
— Сервер хеширует пароль и сравнивает с хешем в базе данных
— Сервер генерирует случайный «вызов» и отправляет клиенту вместе с ID
— Клиент передает вызов, id, token binding, и origin сессии U2F токену
— Аутентификатор все это подписывает приватным ключом и отправляет клиенту, а тот серверу
— Профит
На сегодняшний день мультифакторная аутентификация с использованием U2F является самым легким, фишинг устойчивым и безопасным методом аутентификации. Но даже у этого метода есть свои недостатки.
Пароли все еще можно украсть на всех стадиях аутентификации:
— Можно украсть с помощью кейлоггера;
— Можно украсть при проблемах с TLS(см Heartbleed);
— Можно украсть если сервер уязвим к инъекции кода, или при ошибках в коде(см Twitter)
— Можно украсть если пароли слабо хешированы или не были хешированы вовсе.
Пока есть пароль, его можно украсть
А что если убрать пароль вообще?
Собственно, так подумали мы в FIDO Alliance (мы не имеем ничего общего с гипертекстовым фидонетом, хотя потенциально можем быть там использованы) и сделали FIDO2
Для тех, кто о нас не слышал, FIDO Alliance — это консорциум, разрабатывающий открытые стандарты безопасной аутентификации. Выше на картинке вы можете видеть наших членов совета, которые собственно и разрабатывают стандарты.
FIDO2 — это наш последний проект, который мы разрабатывали более трех лет. Он состоит из двух частей:
— WebAuthn — JS API для менеджмента учетных записей на публичных ключах. Это W3C стандарт, так что будет обязателен для всех браузеров. Собственно Chrome, Firefox и Edge уже публично заявили о работе над его поддержкой.
— CTAP2 — Client-to-Authenticator 2 — это стандарт, описывающий CBOR протокол для общения с аутентификатором по USB, NFC и BLE.
Пользователь
Для пользователя это просто:
— Пользователь вводит имя
— Проходит верификацию
— Профит!
Протокол
FIDO2 — это член семейства вызов-ответ протоколов FIDO. В протоколе есть шесть основных механизмов безопасности:
1. Вызов-ответ
Первый механизм это вызов-ответ. Сервер генерирует случайный вызов и отправляет его клиенту. Клиент передает данный вызов аутентификатору, который подписывает вызов и возвращает его клиенту, а тот в свою очередь серверу. Сервер, зная вызов, подпись и публичный ключ, может подтвердить подпись и таким образом аутентифицировать клиента.
2. Фишинг-защита
Второй механизм это сессионно-зависимая транзакция. Когда клиент получает вызов от сервера, он добавляет к вызову информацию о сессии: origin (прим: example.com), token binding. Эта информация подписывается аутентификатором и возвращается серверу. Сервер декодирует ответ и смотрит или в источником был он сам, и если пользователь подвергся фишинг атаке то сервер сможет увидеть что источником был на пример attacker.com а не example.com и таким образом предотвратить атаку.
3. Защита от атаки повторного воспроизведения
Чтобы защитить от атаки повторного воспроизведения, в транзакции присутствует счетчик, который увеличивается на единицу при каждой операции. Если сервер получил ответ со счетчиком, значение которого меньше или равно последнему сохраненному значению, то сервер может точно сказать что это атака повторного воспроизведения.
4. Приватность
Четвертый механизм защиты это регистрационно-уникальные пары ключей. При каждой регистрации аутентификатор генерирует случайную пару ключей со случайным идентификатором. Таким образом даже если вы и ваш партнер будете использовать один аутентификатор для обоих аккаунтов, то сервер не сможет узнать этого.
При аутентификации идентификатор пары ключей передается аутентификатору, и тот, используя origin и идентификатор, найдет вашу пару ключей в своей защищенной БД и вернет подпись.
Альтернатива к передаче идентификатора это использование резидентных ключей (RK, resident keys). При аутентификации аутентификатор вернет подписи для всех RK пар ключей. Клиент предоставляет пользователю выбор пары и вернет подпись серверу. Более подробно RK я распишу ниже.
5. Аттестация
Пятый механизм это аттестация. Иногда сайту нужно узнать тип устройства у пользователя. Так например в США все государственные учреждения обязаны использовать только FIPS (Federal Information Processing Standards) сертифицированные устройства. Подобные требования есть во Франции, Израиле, России и других странах. Для всего этого и существует аттестация.
При производстве аутентификаторов, на каждые сто тысяч устройств компания генерирует «сертификат партии» и ключи к нему и устанавливает их на каждое устройство. При регистрации устройство подписывает всю информацию приватным ключом партийного сертификата и возвращает сертификат вместо публичного ключа. В сертификате содержится информация о аутентификаторе, и его AAGUID(Authenticator Attestation GUID). Также при получении FIDO сертификации компания выпускает специальный документ метадаты, или просто метадату, и помещает в наше хранилище метадаты доступное всем. В метадате содержится информация о аутентификаторе, включая его криптографические характеристики, биометрические характеристики если он поддерживает биометрику, алгоритмы, уровни безопасности, базовое описание и много другой информации. а основе имеющейся информации сервер может судить о том, стоит ли ему принимать аутентификатор или нет.
Аттестация бывает разная. Существует полная версия аттестации, в которой сервер возвращает сертификат. Есть само-аттестация, при которой устройство не поддерживает сертификаты, а вместо этого возвращает публичный ключ только что сгенерированной пары.
Также пользователь может сам настроить метод, с помощью которого он хочет вернуть аттестацию. Так например пользователь может вообще запретить возвращать аттестацию и клиент просто удалит её, вернув регистрационный ответ без аттестации. Об этом я расскажу позже.
6. Тест на наличие пользователя
Одно из фундаментальных требований FIDO это тест на наличие пользователя. В данном случае имеется в виду, что аутентификатор обязан удостоверится в присутствии пользователя… Это может быть сделано по-разному: простое нажатие на кнопку, отпечаток, пин-код и другое.
WebAuthn
В этой секции мы рассмотрим JS API для работы с FIDO2.
Credential Management API
WebAuthn это дополнения к Credential Management API для менеджмента учетных записей публичных ключей. CredMan API это API(неожиданно!) для менеджмента учетных данных пользователя или если выразиться проще: это API для доступа к автозаполнению в браузере.
Далее мы рассмотрим пример создания учетных данных:
А вот пример запроса учетных данных и последующего использования их для аутентификации:
Create public-key credential
Для создания Public-Key Credential мы будем использовать navigator.credentials.create метод, передав ему CreateCredential объект типа «publicKey».
Думаю, код говорит сам за себя, но отмечу при этом несколько моментов:
— challenge и user.id должны быть буферами
— pubKeyCredParams — это список алгоритмов, которые поддерживает сервер. В данный момент сертифицированные сервера FIDO2 обязаны поддерживать: RSA-PSS 2048 с SHA256/384/512, RSA-PKCS1_3 с SHA256/384/512/1, EC с SHA256/384/512, а также кривые secp256/384/521p1(NIST) и secp256k1, и EdDSA ED25519.
— attestation — это собственно вид аттестации, возвращаемой клиентом. Есть три возможные значения: none, direct, indirect. Direct это, собственно, классическая аттестация. None это полное отсутствие аттестации, при котором клиент просто удалит всю аттестационную секцию и заменит AAGUID в ответе на 0x00000000000000000000000000000000. Indirect это аттестация через privacy-ca. По-умолчанию attestation установлена на none. То есть если вы хотите аттестацию, то надо это чётко указать в параметрах. При этом необходимо учитывать, что пользователь все равно может вам отказать в аттестации и вернуть ‘none’ если он того захочет.
Вот пример пример того как пользователь может контролировать аттестацию в Firefox Nightly
В ответ вы получите аттестационный объект:
Здесь вы можете видеть:
— id/rawId — это идентификатор пары ключей на устройстве или credId. id это base64url закодированная версия буфера rawId.
— response.clientDataJSON — это буфер CollectedDataJSON, JSON объекта содержащего сессионную информацию и сам вызов. Пример декодированного clientDataJSON:
— attestationObject — это CBOR объект, содержащий аттестацию, информацию об аутентификаторе, флаги, счётчик и публичный ключ.
— authData — это сырой буфер, содержащий хеш источника или rpIdHash, флаги, счетчик, идентификатор пары ключей, блок с аттестационной информацией и информацию от расширений.
— fmt — это формат аттестации. В данный момент WebAuthn поддерживает «packed», «fido-u2f», «android», «tpm» и «safety-net» аттестации.
— attStmt — это собственно информация по аттестации. Подпись, сертификаты и так далее.
Для верификации подписи мы высчитываем хеш clientDataJSON и получаем clientDataHash. Затем мы объединяем authData и clientDataHash и получаем signatureBase. И в конце мы подтверждаем подпись с помощью attStmt.sig, сертификата или публичного ключа пользователя и signatureBase.
Get assertion
Для того чтобы получить аутентификационую подпись мы будем использовать navigator.credentials.create метод, передав ему объект типа «publicKey».
var randomChallengeBuffer = new Uint8Array(32);
window.crypto.getRandomValues(randomChallengeBuffer);
allowCredentials — это список разрешенных учетных записей, которые идентифицируются идентификатором пары ключей на устройстве (credId). Для двухфакторной аутентификации вы всегда обязаны передавать allowCredentials c credId в запросе. Если во время создания учетной записи мы установили флаг authenticatorSelection.requireResidentialKey, то в дальнейшем обязаны не добавлять поле allowCredentials.
В ответ получаем вот такой объект:
Как вы видите, структура очень похожа, но есть несколько различий:
— clientDataJSON.type теперь типа «webauthn.get»
— attestationObject отсутствует
— authenticatorData это authData, но теперь без authenticatorAttestation секции
— signature это подпись
— userHandle — это идентификатор пользователя, который вы передали во время регистрации в поле user.id
Вычисление подписи работает так же, как и при создании учетной записи.
UPD: Демо webauthn.org (Нужен U2F токен)
На этом я закончу первую часть из цикла статей. В следующей части мы разберем протокол общения клиента и аутентификатора CTAP2(Client-to-Authenticator 2).
Большая благодарность Павлу Замятину за редактуру и орфографию.
Что такое двухфакторная аутентификация и протокол FIDO U2F
Авторизуйтесь
Что такое двухфакторная аутентификация и протокол FIDO U2F
Миллионы логинов и паролей к почтовым и различным социальным сервисам появляются в открытом доступе чуть ли не каждый месяц. Это лучше любого эксперта по информационной безопасности свидетельствует нам о том, что пароль, даже сложный, уже не является актуальным средством защиты.
Меняются предпочтения пользователей в выборе того или иного сервиса. Если раньше выбор падал на наиболее удобный вариант, то теперь — на максимально защищённый.
Для обеспечения безопасности изобрели мультифакторную аутентификацию (MFA) и ее упрощенный вариант – двухфакторную (2FA): первый рубеж защиты – логин и пароль, т.е. то, что знает и помнит пользователь, а второй – это то, что есть только у этого пользователя: SMS, Email, one-time password (OTP/TOTP/HOTP) приложения, криптографические токены, биометрические данные. Наиболее дешёвые и удобные способы — приложение и SMS. Вводим логин и пароль на сайте, после чего получаем на мобильный телефон SMS с кодом. Вводим код, и у нас есть доступ к данным.
Мир 2FA сегодня
С момента появления 2FA прошло уже достаточно много времени, большинство крупных интернет-сервисов широко ее используют. 2FA «шагнула» в финтех: невозможно уже себе представить онлайн платежи без подтверждений и авторизации, например, через SMS.
И, как ни странно, при таком широком распространении 2FA у пользователей до сих пор крадут и компрометируют учетные записи. Попробуем разобраться в недостатках методов 2FA и их уязвимостях.
Сегодняшние 2FA-решения не в состоянии надежно защитить пользователя, зачастую сложны в применении, дороги и не универсальны.
FIDO U2F
В 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?
U2F — это открытый, бездрайверный протокол, изначально разрабатываемый компаниями Google и Yubico и использующий для двухфакторной аутентификации специальные USB, NFC, Bluetooth LE устройства или SIM-карту (спецификации еще в разработке), которые хранят ключи и самостоятельно выполняют криптографические операции.
На данный момент поддержка U2F реализована в браузерах Chrome и Edge, а также в OS Windows 10.
Протокол основан на challenge-response аутентификации с помощью электронной цифровой подписи.
Со стороны пользователя
С точки зрения пользователя работа с протоколом достаточно тривиальна. Пользователь вводит логин и пароль, вставляет в компьютер USB (или использует Bluetooth или NFC) U2F устройство (нажимает на нем кнопку, вводит пин-код, проходит биометрическую проверку или не делает ничего) и успешно проходит аутентификацию.
Углубление в протокол 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 уже более семи лет. Сегодня он – ведущий системный инженер, отвечает за проектирование, развитие и поддержку корпоративной ИТ-инфраструктуры.