Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Одноразовый пароль на основе времени ( 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]

См. Также [ править ]

  • Botan (библиотека программирования)
  • FreeOTP
  • Google Authenticator
  • multiOTP

Ссылки [ править ]

  1. ^ a b c d "RFC 6238 - TOTP: алгоритм одноразового пароля на основе времени" . Архивировано 11 июля 2011 года . Проверено 13 июля 2011 года .
  2. ^ Александр, Мэдисон. «OATH отправляет в IETF спецификацию TOTP: временного одноразового пароля» . Открытая аутентификация . Архивировано 23 января 2013 года . Проверено 22 февраля 2010 года .
  3. ^ Umawing, Jovi (21 января 2019). «Была ли двухфакторная аутентификация побеждена? Взгляд на последнюю проблему 2FA» . Malwarebytes Labs . Архивировано 25 сентября 2020 года . Дата обращения 9 августа 2020 .
  4. ^ Зеттер, Ким. «RSA соглашается заменить токены безопасности после признания компрометации» . ПРОВОДНОЙ . Архивировано 12 ноября 2020 года . Проверено 17 февраля 2017 года .

Внешние ссылки [ править ]

  • Пошаговая реализация Python в Jupyter Notebook
  • Проектирование двухфакторной аутентификации Docker Hub (раздел «Использование аутентификации с использованием одноразового пароля (TOTP)»).