Русская Википедия:Time-based One-time Password Algorithm

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

TOTP (Шаблон:Lang-en2, RFC 6238Шаблон:Sfn) — OATH-алгоритм создания одноразовых паролей для защищенной аутентификации, являющийся улучшением HOTP (HMAC-Based One-Time Password Algorithm). Является алгоритмом односторонней аутентификации — сервер удостоверяется в подлинности клиента. Главное отличие TOTP от HOTP — это генерация пароля на основе времени, то есть время является параметромШаблон:Sfn. При этом обычно используется не точное указание времени, а текущий интервал с установленными заранее границами (обычно — 30 секунд).

История

С 2004 года OATH (Шаблон:Нп5) трудилась над проектом одноразовых паролей (OTP). Первым результатом был HOTP (the Hash-based Message Authentication Code (HMAC) OTP algorithm), опубликованный в декабре 2005 года. Он был представлен как проект IETF (The Internet Engineering Task Force)Шаблон:SfnШаблон:Sfn.

Дальнейшая работа OATH шла на улучшение HOTP и в 2008 году был представлен TOTPШаблон:Sfn. Этот алгоритм не использует счетчик для синхронизации клиента и сервера, а генерирует пароль в зависимости от времени, который действителен в течение некоторого интервала. Алгоритм действует так: клиент берет текущее значение таймера и секретный ключ, хеширует их с помощью какой-либо хеш-функции и отправляет серверу, в свою очередь сервер проводит те же вычисления после чего ему остается только сравнить эти значенияШаблон:Sfn. Он может быть реализован не только на хеш-функции SHA-1, в отличие от HOTP, поэтому хеш-функция также является входным параметромШаблон:Sfn.

Позднее был представлен новый алгоритм, расширяющий TOTP ещё больше. Он был представлен в сентябре 2010 года и назван OATH Challenge-Response Algorithms (OCRA). Главное отличие от предыдущих алгоритмов заключается в том, что в проверке подлинности участвует и сервер. Так что клиент может быть также уверен в его подлинностиШаблон:Sfn.

Принцип работы

По сути, TOTP является вариантом HOTP алгоритма, в котором в качестве значения счетчика подставляется величина, зависящая от времениШаблон:Sfn. Обозначим:

  • <math>T</math> — дискретное значение времени, используемое в качестве параметра. (Измеряется в единицах <math>X</math>, 8 байтов)
  • <math>X</math> — интервал времени, в течение которого действителен пароль. (По умолчанию 30 сек.)
  • <math>T_0</math> — начальное время, необходимое для синхронизации сторон. (По умолчанию — время от начала UNIX эры)
  • <math>K</math> — разделяемый секрет.
  • <math>Current Time</math> — текущее время.

ТогдаШаблон:SfnШаблон:Sfn

<math> T = (Current Time - T_0)/X</math>
<math> \operatorname{HOTP}(K,T)=Truncate(\operatorname{HMAC-SHA-1}(K,T))</math>
<math> \operatorname{TOTP} = \operatorname{HOTP}(K, T)</math>

где

обозначим String — результат HMAC-SHA-1(K,T); OffsetBits — младшие 4 бита строки String; Offset = StringToNumber(OffsetBits) и результатом Truncate будет строка из четырёх символов — String[Offset]String[Offset + 3]Шаблон:Sfn

Также стоит отметить что в отличие от HOTP, который основан только на SHA-1, TOTP может также использовать HMAC-SHA-256, HMAC-SHA-512 и другие HMAC-хеш-функциях:

  • <math> \operatorname{TOTP}(K,T)=Truncate(\operatorname{HMAC-SHA-256}(K,T))</math>
  • <math> \operatorname{TOTP}(K,T)=Truncate(\operatorname{HMAC-SHA-512}(K,T))</math>

и т. д.Шаблон:Sfn

Надежность алгоритма

Концепция одноразовых паролей вкупе с современными криптографическими методами может использоваться для реализации надежных систем удаленной аутентификацииШаблон:Sfn. TOTP достаточно устойчив к криптографическим атакам, однако вероятности взлома есть, например возможен такой вариант атаки «человек посередине»:

Прослушивая трафик клиента, злоумышленник может перехватить посланный логин и одноразовый пароль (или хеш от него). Затем ему достаточно блокировать компьютер «жертвы» и отправить аутентификационные данные от собственного имени. Если он успеет это сделать за промежуток времени <math>X</math>, то ему удастся получить доступ. Именно поэтому <math>X</math> стоит делать небольшим. Но если время действия пароля сделать слишком маленьким, то в случае небольшой рассинхронизации клиент не сможет получить доступШаблон:Sfn.

Также существует уязвимость связанная с синхронизацией таймеров сервера и клиента, так как существует риск рассинхронизации информации о времени на сервере и в программном и/или аппаратном обеспечении пользователя. Поскольку TOTP использует в качестве параметра время, то при не совпадении значений все попытки пользователя на аутентификацию завершатся неудачей. В этом случае ложный допуск чужого также будет невозможен. Стоит отметить что вероятность такой ситуации крайне малаШаблон:Sfn.

См. также

Примечания

Шаблон:Примечания

Источники

Ссылки

Шаблон:Добротная статья