otp
RUEN
Главная » Блоги » otp
В массовых информационных системах для проверки подлинности клиентов перед серверами чаще всего используется парольная аутентификация. Пароль – это классический секрет, c обработкой которого может справиться обычный человек. Пароль достаточно легко запомнить, для его хранения не нужны дополнительные устройства, пароль легко ввести практически в любой программно-аппаратной среде. Но парольная аутентификация обладает и существенными недостатками. Во-первых, пользователь не способен запомнить сильный высокоэнтропийный секрет. Пароль – это всегда слабый секрет, и у противника появляется возможности угадать его. Во-вторых, парольная аутентификация теряет надежность в агрессивной среде, т. е. там, где противник может перехватывать вводимые пользователем данные. Аутентификация может быть усилена, если пользователь применяет специальные устройства, которые способны хранить сильные секреты и проводить с ними криптографические вычисления. Выходом является упрощение криптографических вычислений и выдача их результата в виде короткого пароля с малым сроком действия. Такой пароль принято называть одноразовым (one-time password, OTP). Даже если одноразовый пароль будет скомпрометирован, компрометация затронет только конкретный сеанс пользователя или даже определенный промежуток этого сеанса. Средства формирования одноразовых паролей получили широкое распространение в связи с массовой аутентификацией в сети Интернет. Основные шаги по стандартизации были сделаны международным комитетом OATH (Open AuTHentication). Под эгидой этого комитета были разработаны 3 основных стандарта: RFC 4226, RFC 6238 и RFC 6287. В стандартах определены алгоритмы HOTP, TOTP и OCRA. Алгоритмы строят пароль по общему для клиента и сервера ключу и дополнительным уникальным данным: монотонному счетчику, отметке времени, случайному запросу. Алгоритмы по сути определяют 3 типа систем аутентификации: на основе событий, на основе времени и на основе запросов. В системах первого типа пароль меняется при возникновении определенных событий. Как правило, таким событием для клиента является любая попытка аутентификации, а для сервера – успешная попытка. В системе S/KEY, которая используется для аутентификации в операционных системах Linux, одноразовый пароль является результатом многократного хэширования мастер-пароля X0. Клиент хэширует мастер-пароль n раз c помощью функции h и отправляет полученное значение Xn = hn(X0) серверу. В первой попытке аутентификации клиент предъявляет одноразовый пароль Xn-1 = hn–1(X0). Сервер признает его правильным и меняет Xn на Xn-1, если h(Xn-1) = Xn. В следующей попытке клиент предъявляет X n-2, а сервер меняет Xn-1 на Xn-2, и т. д. Противнику, который перехватывает текущий одноразовый пароль Xi, для успешной аутентификации требуется найти предыдущий пароль Xi-1, а для этого обратить h. Задача обращения будет вычислительно трудной, если h – криптографически стойкая функция хэширования.![]() В системах на основе событий противник может предъявлять серверу пароли до тех пор, пока целевое событие не произошло и, таким образом, возникают предпосылки для перебора паролей. Для защиты от перебора сервер должен предусмотреть блокировку ввода пароля на некоторое время или до возникновения определенного события, например, разблокировки. События для клиента и сервера могут различаться, их пароли могут разойтись, и поэтому система аутентификации нуждается в дополнительных механизмах синхронизации. В системах на основе алгоритма HOTP клиент и сервер хранят счетчики попыток аутентификации. Синхронизация состоит в том, что сервер проверяет пароль не только на текущем значении счетчика, но и на d будущих значениях. Фактически сервер проверяет будущие пароли, которые могут оказаться текущими относительно клиента. Если i-й будущий пароль отказался подходящим, то сервер восстанавливает синхронизацию, увеличивая счетчик не на 1, а на i + 1. Синхронизация будет полностью потеряна, если клиент выполнил более d попыток аутентификации, о которых не известно серверу. В системах на основе времени одноразовый пароль обновляется каждые t секунд (на практике t = 30 или 60). Устройство должно быть снаряжено достаточно точным таймером, что может привести к значительному его удорожанию. С другой стороны, системы на основе времени имеют ряд преимуществ относительно систем на основе событий. Во-первых, возможности противника по перебору паролей ограничены – он должен успеть подобрать пароль в течение t секунд. Во-вторых, опасность рассинхронизации не столь велика, как в предыдущем случае. Для синхронизации клиенту и серверу достаточно согласовать показания времени. В системах на основе запросов одноразовый пароль строится на основании случайного запроса сервера. Фактически одноразовый пароль превращается в ответ протокола «запрос – ответ». Таймер не нужен, но дополнительно к интерфейсу вывода пароля должен быть предусмотрен интерфейс ввода запроса. Проблемы с синхронизацией отсутствуют, но противник может перебирать пароли относительно текущего запроса сколь угодно долго. Подведем итоги:
|
Новости 29.04.2023 TIBO 2023 читать дальше 02. Программный комплекс ЭАДП читать дальше 27.12.2022 С Новым годом! читать дальше 21.11.2022 Программный инструментарий читать дальше 13.09.2022 XIII Международная научная конференция читать дальше 05.09.2022 Компьютерный анализ данных и моделирование читать дальше 21.02.2022 Вакансии читать дальше 17.12.2021 Избрание директора НИИ ППМИ Ю.С. Харина академиком НАН Беларуси читать дальше 22.11.2021 Награждение сотрудников НИИ ППМИ читать дальше |
OATH-парадокс | Power Security
OATH, унифицируя строгую аутентификацию и продвигая идею полной совместимости OPT-генераторов (one-time password, генераторы одноразовых паролей) и серверов аутентификации, породила парадокс: OATH-сертифицированный OTP-генератор зачастую работает только с переделённым сервером аутентификации и наоборот: OATH-сертифицированный сервер аутентификации поддерживает только определенный перечень генератор одноразовых паролей. Как объяснить эту ситуация?
Начнем с начала. Фундаментально описывая платформу строгой аутентификации на базе одноразовых паролей необходимо упомянуть 2 базовых компонента: сервер аутентификации (или проверки, в английском Authentication или Validation) и устройство аутентификации (аутентификатор)— генератор одноразовых паролей. В обоих случаях, когда речь идет об одноразовых паролях на основе события (HOTP) или на основе времени (TOTP), оба основных компонента (сервер и генератор) должны использовать общий секрет — симметричный ключ, который задействован при расчете одного и того же одноразового пароля по тому или иному алгоритму для конкретного пользователя. Именно уникальность этого симметричного ключа, что видно при анализе обоих алгоритмов, и определяет уникальность каждого генератора. Как правило, этот параметр определяется и жестко прошивается производителем. Таким образом, возникает необходимость в транспортировке и загрузке этого секретного значения до/в сервер аутентификации (на самом деле, для каждого генератора загружается не только этот секрет, но и начальное состояние счетчика событий и некоторые другие параметры, то есть речь идет о конфиге).
Это требует отправки покупателю не только самих генераторов, но и ключей (конфигов) – делается этот как правило, в зашифрованном виде. Эти ключи загружаются (или импортируются) в сервер аутентификации и связаны с серийным номером генератора одноразовых паролей. Далее выполняется привязка серийного номера (а значит и секретного значения) к тому или иному пользователю. В конечном счете это и позволяет «понять» серверу, какой именно секрет использовать при расчёте (в процессе проверки) одноразового пароля, полученным от определенного логина (пользователя).
Вот тут-то, хе-хе, и начинается самое интересное: каждый производитель использует свой собственный формат конфигурационного файла, что делает крайне затруднительным поддержку одним сервером аутентификации всех производителей генераторов. Для решения это задачи OATH разработала RFC 6063, описывающий PSKC-формат (Portable Symmetric Key Container, перемещаемый контейнер симметричного ключа) — формат конфигурационного файла, что и обеспечит сквозную совместимость серверов аутентификации и генераторов одноразовых паролей разных вендоров (при условии правильной реализации импорта и экспорта XML-конфигов, выполненных в этом формате). По своей сути это просто контейнер, опционально зашифрованный, который содержит симметричный ключ и мета-данные.
Цель OATH — это стандартизация и унификация процессов строгой аутентификации, продвижение и разработка алгоритмов и стандартов для устройств аутентификации (аутентификаторов) и интерфейсов, что позволят разрабатывать и использовать открытые архитектуры. Для решения описанного выше парадокса (оба компонента: сервер и генератор — OATH-совместимы, но не могут работать друг с другом) была разработана программа Сертификации (OATH Certification Program), для подтверждения совместимости и возможности совместной работы продуктов и решений, реализующих OATH-алгоритмы. Идея заключается в следующем: заказчик может выбрать сервер аутентификации и аутентификаторы (генераторы одноразовых паролей) разных производителей и при этом быть уверенным в их корректной работе.
Сейчас, оба компонента: сервер аутентификации и аутентификаторы (генераторы одноразовых паролей) для прохождения сертификации должны поддерживать стандарт PSKC. Имеется в виду следующее: производитель должен предоставлять конфиги в зашифрованном PSKC-формате, а разработчик сервера аутентификации должен реализовать возможность загрузки (импорта) этого формата. Однако, что интересно, OATH-сертифицированные серверы аутентфиикации могут прекрасно работать с OATH-генераторами, которые не сертифицированы сами по себе. На самом деле, на рынке масса производителей генераторов одноразовых паролей, которые реализуют тот или иной OATH-алгоритм (HOTP RFC 4226 – по событию, TOTP RFC 6238 – по времени), но при этом используют проприетарные форматы конфигурационных файлов. Вопрос в том, почему?
Кроме того, большинство генераторов поддерживают PSKC-формат только для формальной OATH-сертификации, оставаясь привязанными к определенному (того же производителя) серверу аутентификации. Складывается ощущение, что производители комплексных решений не хотят продавать свои генераторы отдельно от софта.
Вот вам и парадокс: генераторы одноразовых паролей с PSKC-поддержкой могут быть проданы только вместе с определенным сервером аутентификации, а сервер аутентификации, поддерживающий PSKC, все еще должен реализовывать «уникальные» парсеры для каждого типа OATH-генераторов, что значительно затрудняет их «отдельную» продажу. Складывается ощущение, что разработка стандарта PSKC и его обязательная реализация для прохождения OATH-сертификации ни к чему не привела, и это не принесло какого-либо эффекта в повышении совместимости серверов аутентификации и генераторов одноразовых паролей разных производителей.
rfc-6238 · Темы GitHub · GitHub
Вот 40 публичных репозиториев соответствует этой теме…
Спомки-Лабс / otphp
Звезда 1,1кNextcloud / twofactor_totp
Звезда 251Бастиан Янсен / otp-java
Звезда 120ЛэнсДжин / jsotp
МинаОТП / MinaOTP-Shell
Звезда 60jltorrem / отпго
Звезда 56Рейк / login_otp
Спонсор Звезда 52Атласский / 1 раз
Звезда 34МинаОТП / МинаОТП
Звезда 33наим94а / отп
Звезда 23ЛэнсДжин / точка
Звезда 19алгоритмическое пространство / криптой
Звезда 12Йонфризен / отп
Звезда 10Греймич / php-totp
Звезда 10педросансао / php-otp
Звезда 10ксаренард / простойотп
Звезда 9ксандкар / эрланг-totp
Звезда 600-матовый / минитотп
Звезда 6экамвалия / высший
Робино / тотп-кт
Звезда 6Улучшить эту страницу
Добавьте описание, изображение и ссылки на
rfc-6238
страницу темы, чтобы разработчикам было легче узнать о ней.
Курировать эту тему
Добавьте эту тему в свой репозиторий
Чтобы связать ваш репозиторий с rfc-6238 тему, перейдите на целевую страницу репозитория и выберите «управление темами».
Узнать больше
Объяснение алгоритма TOTP — Protectimus Solutions
Опубликовано Максимом Олейником, 24 июня 2020 г. | 2 комментария
Алгоритм одноразового пароля на основе времени (TOTP) находится в центре внимания этого поста. Но прежде чем мы углубимся в смысл TOTP, мы хотели бы упомянуть организацию, которая способствует существованию алгоритмов одноразовых паролей — OATH или Open AuTHentication. OATH — это результат сотрудничества самых разных специалистов, которые поставили перед собой задачу создать по-настоящему безопасную и универсальную сеть для всех. Мы в Protectimus гордимся тем, что являемся частью этих совместных усилий.
В этой статье мы узнаем, что такое OATH TOTP. Подробнее рассмотрим реализацию алгоритма TOTP и работу режима TOTP. Наконец, мы предоставим полный список токенов Protectimus TOTP, предназначенных для аутентификации токенов на основе времени, чтобы помочь вам выбрать тот, который подходит вам лучше всего.
Заказать программируемые и классические токены TOTP можно здесь
Содержание:
- Что такое TOTP
- Фон TOTP — HOTP
- TOTP vs HOTP
- Проблема синхронизации TOTP
- Токены TOTP Protectimus
Мы уже ответили на вопрос «что означает TOTP?» вопрос выше. Но что такое TOTP-аутентификация? Несложный ответ — это метод двухфакторной проверки, который использует время в качестве переменной. Давайте немного расширим это и разберем, как на самом деле работает аутентификация TOTP.
Алгоритм TOTP (RFC 6238) подразумевает, что OTP является произведением двух параметров, зашифрованных вместе. Это общее значение, которое является общим секретным ключом или начальным числом; и переменная, в данном случае – время работы. Эти параметры зашифрованы с помощью хеш-функции.
Вот пример алгоритма TOTP для иллюстрации:
- Пользователь хочет войти в защищенное приложение или веб-сайт TOTP 2FA. Для запуска OTP-аутентификации пользователю и TOTP-серверу необходимо изначально совместно использовать статический параметр (секретный ключ).
- Когда клиент входит на защищенный веб-сайт, он должен подтвердить, что владеет секретным ключом. Таким образом, их токен TOTP объединяет начальное значение и текущий временной шаг и генерирует значение HASH, запуская предопределенную функцию HASH. По сути, это значение является кодом одноразового пароля, который пользователь видит на токене.
- Поскольку секретный ключ, функция HASH и временной шаг одинаковы для обеих сторон, сервер выполняет те же вычисления, что и генератор OTP пользователя.
- Пользователь вводит OTP, и если он совпадает со значением сервера, доступ предоставляется.
Если результаты вычислений не совпадают, доступ, естественно, запрещается.
Чтобы немного пояснить приведенный выше пример, отметим, что упомянутое начальное число представляет собой строку случайных символов, обычно длиной 16–32 символа. «Совместное использование» ключа обычно подразумевает сканирование QR-кода, который показывает семя, сгенерированное сервером, с приложением TOTP клиента. Кроме того, ключ уже запрограммирован в их TOTP-устройстве. Временной шаг рассчитывается с использованием времени UNIX, которое начинается 1 января 19 года.70, Всемирное координированное время. Временные шаги должны составлять 30 или 60 секунд, поэтому значение времени, используемое для TOTP, представляет собой количество секунд, прошедших с 00:00 1 января 1970 года, деленное на 30 или 60. Наконец, упомянутая функция HASH является криптографической математической функцией. который просто меняет одно значение на другое и обычно сокращает результат до 6-8 символов. Этот результат мы назвали значением HASH выше.
Все это указано в TOTP RFC.
Предыстория алгоритма TOTP — HOTPOATH активно работает над безопасным 2FA с 2004 года. Первый алгоритм, созданный организацией, — это HOTP — одноразовый пароль на основе HMAC, представленный в 2005 году. Этот метод использует счетчик как переменная и начальное значение в качестве общего значения для создания одноразового пароля.
Создание одноразового пароля является событием для счетчика в HOTP, поэтому каждый новый пароль увеличивает счетчик на 1. Этот алгоритм мы подробно описали в этой статье.
Метод на основе счетчика имеет ряд недостатков, их мы коснемся далее. Поэтому в 2008 году OATH представила TOTP как расширение родительского алгоритма, следующий шаг эволюции MFA.
| Читайте также: Объяснение алгоритма OCRA
TOTP против HOTP HOTP намного менее надежен, чем алгоритм одноразового пароля на основе времени. Если OTP-токен HOTP попадает в руки хакера, преступник может записать OTP и использовать их в любое время. Пропуски HOTP не имеют срока действия, хакер просто должен использовать его быстрее, чем владелец.
Еще одним недостатком HOTP является рассинхронизация токена сервера, если кнопка на устройстве нажата слишком много раз. Помните, счетчик увеличивается с каждым новым OTP? Сервер не имеет возможности отслеживать, сколько раз была нажата кнопка токена, поскольку физические токены полностью отключены. Это учтено в алгоритме, но если кто-то слишком много раз нажимает кнопку непреднамеренно (ребенок играет с ней) или намеренно (преступник), токен становится бесполезным.
HOTP также более уязвим для атак грубой силы и других способов угадать следующий OTP. Хакеру придется получить доступ к токену и записать несколько одноразовых паролей, подбор пароля потребует серьезных вычислений и нескольких часов. Но это все еще возможно.
В битве между HOTP и TOTP защита TOTP определенно выиграет. Срок действия TOTP-паролей ограничен. Если пароль, предоставленный генератором TOTP RFC6238, не используется в течение 30, а иногда и 60 секунд, срок его действия просто истекает, и его нельзя использовать для входа в систему. Таким образом, запись одноразовых паролей не принесет хакеру никакой пользы. Кнопку токена можно нажимать столько раз, сколько душе угодно, это не нарушит синхронизацию токена и сервера.
У токенов TOTP есть своя проблема — временной дрейф. Но мы уже решили это в программируемых токенах Protectimus Slim NFC. Давайте поговорим об этом дальше.
| Читайте также: Недостатки безопасности 2FA, о которых вы должны знать
Проблема синхронизации TOTPАппаратный токен TOTP полностью отключен от сети, нет подключения к сети. Это делает его непроницаемым для большинства известных хакерских атак. Но алгоритм TOTP зависит от времени, поэтому токены снабжены своего рода часами — осциллятором. Без возможности синхронизации времени в конечном итоге происходит дрейф. Но время на сервере всегда точное.
Расхождение составляет в среднем 2 минуты в год. И да, у алгоритма есть окно синхронизации, позволяющее это сделать. Но токены OTP имеют батареи с длительным сроком службы. Таким образом, через несколько лет дрейф неизбежно переполняет окно синхронизации и становится проблемой. В конце концов, сервер и устройство TOTP начинают генерировать разные значения.
У нас есть очень подробная запись в блоге об этой проблеме и о том, как нам удалось ее решить. Поэтому не будем вдаваться в подробности и скажем лишь, что с мая 2019 г.В устройствах Protectimus Slim NFC исправлена проблема с синхронизацией.
| Читайте также: Токены TOTP Protectimus Slim NFC: FAQ
Токены Protectimus TOTPАлгоритм OTP на основе времени — широко применяемое решение MFA, есть даже режим TOTP Google Authenticator. Protectimus может предложить вам три токена, разработанных в соответствии со спецификацией OTP RFC на основе времени.
Жетон | Описание |
Protectimus Slim NFC
|
|
Protectimus ДВА |
|
Protectimus SMART OTP |
|