Токен (авторизации)
Токен авторизации (англ. Security token) — это периферийное устройство, используемое для получения доступа к электронному ограниченному ресурсу. Токен применяется дополнительно к паролю или вместо него[1]. Примеры токенов включают в себя беспроводные ключ-карты для открытия дверей, банковские токены для цифровой идентификации при входе в онлайн-банк или для подтверждения транзакций, таких как перевод средств.
Описание
Токены могут использоваться для хранения информации, например, паролей, криптографических ключей для создания цифровых подписей или биометрических данных. Некоторые модели обладают корпусом с защитой от вскрытия, другие могут иметь небольшие клавиатуры для ввода PIN-кода или простую кнопку для запуска процедуры генерации с возможностью отображения сгенерированного кода на дисплее. Подключаемые токены используют различные интерфейсы, такие как USB, NFC, RFID или Bluetooth. Существуют модели с аудиовыходом для пользователей с нарушениями зрения.
Типы паролей
Все токены содержат некоторую секретную информацию для подтверждения личности. Существует четыре основных способа применения данной информации:
- Токен со статическим паролем
- Устройство содержит физически скрытый пароль, который транслируется при каждой аутентификации. Уязвим к атакам повторного воспроизведения.
- Токен с синхронно изменяемым паролем
- С помощью таймера на токене генерируются различные комбинации значений пароля по криптографическому алгоритму. Часы токена и сервера аутентификации должны быть синхронизированы.
- Токен с асинхронным паролем
- Одноразовый пароль формируется без использования часов, например, посредством одноразового блока данных или криптографического алгоритма.
- Токен с механизмом вызов-ответ
- Использование криптографии с открытым ключом позволяет доказать обладание приватным ключом, не раскрывая его. Сервер шифрует некоторый вызов открытым ключом; устройство доказывает, что владеет соответствующим приватным ключом, расшифровав вызов.
Пароли, синхронизированные по времени, изменяются каждые фиксированные интервалы времени,инапример, раз в минуту. Для работы такой схемы необходимо, чтобы часы токена клиента и сервера аутентификации были синхронизированы. Для автономных токенов синхронизация производится до передачи устройства клиенту; в других случаях синхронизация выполняется при подключении токена к устройству ввода. Основная проблема таких токенов заключается в возможности рассинхронизации[2]. Некоторые системы, например SecurID, позволяют пользователю самостоятельно повторно синхронизировать сервер с токеном — часто для этого требуется ввести несколько последовательных кодов. Большинство токенов не имеют сменных батарей и работают не более 5 лет, после чего требуют замены, что увеличивает стоимость эксплуатации[3].
Другой вид одноразовых паролей применяет сложные математические алгоритмы, например, хеш-цепочки, для генерации последовательности уникальных одноразовых паролей из общего секретного ключа. Каждый пароль уникален и не зависит от предыдущих. Открытый стандарт OATH используется для таких алгоритмов; другие протоколы могут быть защищены патентами США. Каждый пароль непредсказуем и не связан с предыдущими, что делает невозможным угадывание следующего пароля даже при знании всех предыдущих.
Физические типы токенов
Токены могут содержать микросхемы с различным уровнем сложности — от простейших до сложных, включая несколько методов аутентификации.
Простейшие токены не требуют подключения к компьютеру: у них есть собственный дисплей, а пользователь вводит отображаемое на экране число вручную. Другие используют беспроводные технологии передачи ключа для передачи последовательности на локальный клиент или на ближайшую точку доступа[4].
Широко распространённые альтернативы — мобильные устройства, которые взаимодействуют по внешнему каналу связи.
Есть токены, которые подключаются непосредственно к компьютеру и могут требовать ввода PIN-кода. В зависимости от типа токена, операционная система либо считывает с него ключ и выполняет криптографическую операцию, либо инициирует выполнение этой операции встроенным ПО токена.
Похожее применение — аппаратный ключ, требуемый некоторыми программами для подтверждения права на использование ПО. Донгл подключается к устройству ввода, и программа обращается к нему для проверки авторизации использования.
Коммерческие токены выпускаются различными производителями, которые реализуют собственные решения различных функций безопасности. Токены, соответствующие определённым стандартам, сертифицируются в США как совместимые со стандартом FIPS 140[5]. Токены без сертификации могут не соответствовать принятым стандартам, не проходить независимую оценку и не обеспечивать достаточный уровень криптографической защиты.
Автономные токены не имеют ни физического, ни логического соединения с клиентским компьютером. Обычно такие устройства не требуют специального устройства для ввода — в них имеется встроенный дисплей, а сгенерированные данные пользователь вводит вручную с клавиатуры или клавиатуры токена. Автономные токены — самый распространённый тип в двухфакторной аутентификации для онлайн-идентификации[6].
Подключаемые токены требуют физического подключения к компьютеру, с которым пользователь проходит аутентификацию. При подключении токен автоматически передаёт компьютеру аутентификационные данные, избавляя пользователя от ручного ввода. Однако для работы требуется наличие соответствующего устройства для ввода. Наиболее распространённые виды — смарт-карты и USB-токены (также называются «ключи безопасности»), требующие ридера смарт-карт или USB-порта соответственно. С 2015 года набирают популярность токены FIDO2, поддерживаемые FIDO Alliance и большинством современных браузеров.
Существуют также токены для слота PC Card; более удобны карточки типа II, так как они тоньше карточек типа III.
Аудиоразъём — сравнительно удобный способ подключения аксессуаров к мобильным телефонам. Наиболее известное устройство — Square, используемое для считывания кредитных карт на мобильных устройствах.
Отдельные токены используют специальные интерфейсы, например, криптоключ KSD-64 для Агентства национальной безопасности США. Токены могут использоваться как фото-идентификационные карты. Мобильные телефоны и КПК также могут функционировать как токены при соответствующем программном обеспечении.
Многие подключаемые токены используют технологию смарт-карт. Смарт-карты очень дешевы и содержат надёжные механизмы защиты. Однако их вычислительная производительность ограничена из-за минимального энергопотребления и тонкого корпуса.
USB-токены на основе смарт-карт содержат внутри смарт-карту, объединяя функции USB-устройств и смарт-карт. Такие токены обеспечивают широкий спектр решений и не требуют отдельного ридера. Операционная система распознает такое устройство как подключённый по USB ридер со встроенной смарт-картой[7].
Бесконтактные токены устанавливают логическое соединение с компьютером без физического контакта. Это делает их удобнее по сравнению с подключаемыми или автономными устройствами. Такие токены часто применяются в системах бесключевого доступа и электронных платёжных системах, например, Mobil Speedpass, использующий RFID для передачи данных аутентификации. При этом исследователи из Университета Джонса Хопкинса и RSA Laboratories выявили, что RFID-токены можно сравнительно легко взломать и клонировать[8].
К недостаткам таких устройств относятся короткий срок службы батарей (5–6 лет), что меньше, чем у USB-токенов (более 10 лет), однако часть моделей позволяет смену батарей.
Протоколы Bluetooth Low Energy обеспечивают длительный срок службы аккумулятора при обмене данными по беспроводной связи.
- Передача идентификатора Bluetooth — наименее защищённый уровень аутентификации.
- Двунаправленный обмен данными используется для более сложных процедур аутентификации.
Использование контролируемой мощности передачи даёт возможность оценивать расстояние. В некоторых стандартах токен может использоваться в режиме электронного «поводка»: при значительном удалении от пользователя связь прерывается[9].
Часто Bluetooth-токены совмещаются с USB-токенами, работая как в автономном, так и в подключаемом режиме. Связь по Bluetooth работает на расстоянии до 10 метров. Если Bluetooth недоступен, токен можно подключить по USB. Встречаются и гибридные решения с возможностью хранения идентификационных данных и обработки входящих запросов[10]. Также существуют BLE-токены для хранения отпечатков и последующего предъявления идентификационных данных по Bluetooth[11].
В режиме USB необходим физический контроль токена при механическом соединении с портом. Bluetooth-режим позволяет реализовать автоматическую блокировку при удалении пользователя.
Токены NFC, комбинируемые с Bluetooth, могут работать в разных режимах — как подключённые, так и автономные. Аутентификация по NFC возможна на расстоянии до 30 обеспечивает обмен на короткие дистанции, а Bluetooth используется для передачи большего объёма данных. При отсутствии соединения по Bluetooth NFC-токен может передавать локально сохранённую информацию считывателю.
Некоторые решения единого входа (SSO), например корпоративные SSO, применяют токен для хранения ПО, обеспечивающего автоматическую аутентификацию и ввод паролей. Поскольку пароли хранятся на токене, пользователи могут выбирать более надёжные пароли или получать их автоматически. Как правило, на токене хранится хеш пароля, чтобы минимизировать риск компрометации[12].
Программируемые токены предлагаются как «аппаратная альтернатива» мобильным приложениям вроде Google Authenticator. Их можно использовать как замену мобильных приложений или как резервный вариант.
Уязвимости
Классическая уязвимость любого контейнера паролей — кража или потеря устройства. Для минимизации риска используются механические замки, электронный поводок, датчик движения, сигнализация. Украденные токены становятся бесполезны при использовании двухфакторной аутентификации — обычно необходимо ввести персональный PIN-код наряду с данными токена.
Любая система, допускающая аутентификацию через недоверенную сеть подвержена атакам типа "человек посередине". Злоумышленник выступает как посредник между пользователем и системой, перехватывает данные токена и использует их для успешной аутентификации. В 2006 году бизнес-клиенты Citibank, использовавшие аппаратные токены, стали жертвами масштабной фишинговой атаки[13][14].
В 2012 году исследовательская группа Prosecco из INRIA разработала эффективный метод извлечения секретного ключа из криптографических устройств, поддерживающих стандарт PKCS #11[15][16]. Данные результаты отражены в техническом отчёте INRIA RR-7944, ID hal-00691958[17], а также представлены на конференции CRYPTO 2012[18].
Цифровая подпись
Надёжность цифровой подписи основана на том, что она создаётся приватным ключом, известным только владельцу. Токены, поддерживающие надёжное создание и хранение приватных ключей непосредственно на устройстве, обеспечивают защиту цифровых подписей и могут служить для аутентификации пользователя, поскольку приватный ключ подтверждает его личность.
Для корректной идентификации пользователя токен должен иметь уникальный идентификационный номер. Не все модели токенов соответствуют требованиям национального законодательства для квалифицированных подписей. Устройства без клавиатуры или иного интерфейса в ряде сценариев (например, подтверждение банковской транзакции по номеру счёта) использовать невозможно.
Примечания
Литература
Ссылки
- OATH, Open Authentication Initiative (сайт организации OATH)


