Одноразовый пароль на основе времени ( TOTP ) - это компьютерный алгоритм, который генерирует одноразовый пароль (OTP), который использует текущее время как источник уникальности. Расширение основанного на HMAC алгоритма одноразового пароля (HOTP), он был принят как стандарт RFC 6238 Internet Engineering Task Force (IETF) [1]
TOTP является краеугольным камнем инициативы Open Authentication (OATH) и используется в ряде систем двухфакторной аутентификации (2FA).
История
В сотрудничестве с несколькими членами OATH был разработан проект TOTP с целью создания отраслевого стандарта. Он дополняет одноразовый стандарт HOTP, основанный на событиях, и предлагает организациям конечных пользователей и предприятиям больший выбор в выборе технологий, которые наилучшим образом соответствуют требованиям их приложений и руководящим принципам безопасности . В 2008 году OATH представила IETF черновую версию спецификации. Эта версия включает в себя все отзывы и комментарии, полученные авторами от технического сообщества на основе предыдущих версий, представленных в IETF. [2] В мае 2011 года TOTP официально стал RFC 6238. [1]
Алгоритм
Чтобы установить аутентификацию TOTP, аутентифицируемый и аутентификатор должны предварительно установить параметры HOTP и следующие параметры TOTP:
- T 0 , время Unix, с которого начинается отсчет временных шагов (по умолчанию 0),
- T X , интервал, который будет использоваться для вычисления значения счетчика C T (по умолчанию 30 секунд).
И аутентификатор, и аутентифицируемый вычисляют значение TOTP, затем аутентификатор проверяет, соответствует ли значение TOTP, предоставленное аутентифицируемым, локально сгенерированному значению TOTP. Некоторые аутентификаторы допускают значения, которые должны были быть сгенерированы до или после текущего времени, чтобы учесть небольшие отклонения часов , задержку в сети и пользовательские задержки.
TOTP использует алгоритм HOTP, заменяя счетчик неубывающим значением в зависимости от текущего времени:
Значение TOTP ( K ) = значение HOTP ( K , C T ),
вычисление значения счетчика
где
- C T - это количество длительностей T X между T 0 и T ,
- T - текущее время в секундах с определенной эпохи ,
- T 0 - это эпоха, указанная в секундах с эпохи Unix (например, если используется время Unix , то T 0 равно 0),
- T X - это длительность однократной продолжительности (например, 30 секунд).
Время Unix строго не увеличивается. Когда в UTC вставляется дополнительная секунда , время Unix повторяется на одну секунду. Но одна дополнительная секунда не приводит к уменьшению целой части времени Unix, и C T также не уменьшается, пока T X кратно одной секунде. [ оригинальное исследование? ]
Безопасность
Значения TOTP можно использовать для фишинга, как и пароли , хотя для этого злоумышленники должны проксировать учетные данные в режиме реального времени. [3]
Злоумышленник, укравший общий секрет, может по желанию сгенерировать новые допустимые значения TOTP. Это может быть особой проблемой, если злоумышленник взломает большую базу данных аутентификации. [4]
Из-за задержки , как сетевой, так и человеческой, и несинхронизированных часов , одноразовый пароль должен проверяться в течение определенного диапазона раз между аутентификатором и аутентифицируемым. Здесь время субдискретизируется до большей продолжительности (например, 30 секунд), чтобы обеспечить достоверность между сторонами. Для работы последующих аутентификаций часы аутентифицируемого и аутентификатора должны быть примерно синхронизированы (аутентификатор обычно принимает одноразовые пароли, сгенерированные из временных меток, которые отличаются на ± 1 интервал времени от временной метки аутентифицируемого). [1] Значения TOTP обычно действительны более 30 секунд, поэтому учитываются временные задержки клиента и сервера. [1]
Смотрите также
Рекомендации
- ^ a b c d "RFC 6238 - TOTP: алгоритм одноразового пароля на основе времени" . Архивировано 11 июля 2011 года . Проверено 13 июля 2011 года .
- ^ Александр, Мэдисон. «OATH отправляет в IETF спецификацию TOTP: временного одноразового пароля» . Открытая аутентификация . Архивировано 23 января 2013 года . Проверено 22 февраля 2010 года .
- ^ Умавинг, Джови (21 января 2019 г.). «Была ли двухфакторная аутентификация побеждена? Взгляд на последнюю проблему 2FA» . Malwarebytes Labs . Архивировано 25 сентября 2020 года . Дата обращения 9 августа 2020 .
- ^ Зеттер, Ким. «RSA соглашается заменить токены безопасности после признания компрометации» . ПРОВОДНОЙ . Архивировано 12 ноября 2020 года . Проверено 17 февраля 2017 года .
Внешние ссылки
- RFC 6238
- Пошаговая реализация Python в Jupyter Notebook
- Проектирование двухфакторной аутентификации Docker Hub (раздел «Использование аутентификации с использованием одноразового пароля (TOTP)»).