Time-based One-time Password Algorithm

Time-based One-time Password Algorithm

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

Содержание

История

С 2004 года OATH (The Initiative for open authentication) трудилась над проектом одноразовых паролей (OTP). Первым результатом был HOTP (the Hash-based Message Authentication Code (HMAC) OTP algorithm), опубликованный в декабре 2005 года. Он был представлен как проект IETF (The Internet Engineering Task Force).[1][2]

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

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

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

По сути TOTP является HOTP с параметром времени вместо счетчика [5]. Обозначим:

  • T - дискретное значение времени, используемое в качестве параметра
  • X - интервал времени, в течение которого действителен пароль
  • T_0 - начальное время (для синхронизации сервера и клиента)

Тогда[5][6]

 T = Trunc(Current Time - T_0)/X

 HOTP(K,T)=Trancate(HMAC - SHA-1(K,T))

 TOTP = HOTP(K, T)

где

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

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

  •  TOTP(K,T)=Trancate(HMAC - SHA-256(K,T))
  •  TOTP(K,T)=Trancate(HMAC - SHA-512(K,T))

и т.д.[5]

Реализации

  • Компания Google реализовала версию TOTP в Google Authenticator;
  • Amazon Web Services также поддерживает TOTP для входа AWS консоль [7];
  • Dropbox использовала TOTP для доступа к серверу[8] ;
  • LastPass поддерживает TOTP использованием Google Authenticator;
  • библиотека liboath для создания как TOTP, так и HOTP паролей.[9]

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

Концепция одноразовых паролей делает системы, использующие эти алгоритмы, высоконадежными.[4] TOTP достаточно устойчив к криптографическим атакам, однако вероятности взлома есть, например такой вариант атаки:

Поскольку пароль действителен в течение некоторого отрезка времени, теоретически злоумышленник может этим воспользоваться, "прослушивая" трафик клиента и перехватывать посланный логин и одноразовый пароль (или хеш от него). Затем ему достаточно блокировать компьютер "жертвы" и отправить аутентификационные данные от собственного имени. Если он успеет это сделать за промежуток времени X, то ему удастся получит доступ. Именно поэтому X стоит делать небольшим, однако и совсем маленьким не стоит, так как в случаи небольшой рассинхронизации клиент не сможет получить доступ.[4]

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

HOTP, TOTP, OCRA просты в реализации, но существует менее десятка продуктов с открытым кодом, которые реализуют какой-либо из них - что ставит их на один уровень с S/KEY и другими более старыми стандартами OTP.[1]

См. также

Примечания

Источники

Литература

  • Lambert M. Surhone, Mariam T. Tennoe, Susan F. Henssonow Time-based One-Time Password Algorithm. — 2010. — 116 с. — ISBN 978-6-1329-8615-3

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Time-based One-time Password Algorithm" в других словарях:

  • One-time password — A one time password (OTP) is a password that is valid for only one login session or transaction. OTPs avoid a number of shortcomings that are associated with traditional (static) passwords. The most important shortcoming that is addressed by OTPs …   Wikipedia

  • Password cracking — is the process of recovering passwords from data that has been stored in or transmitted by a computer system. A common approach is to repeatedly try guesses for the password. The purpose of password cracking might be to help a user recover a… …   Wikipedia

  • Password — For other uses, see Password (disambiguation). A password is a secret word or string of characters that is used for authentication, to prove identity or gain access to a resource (example: an access code is a type of password). The password… …   Wikipedia

  • One-time pad — Excerpt from a one time pad In cryptography, the one time pad (OTP) is a type of encryption, which has been proven to be impossible to crack if used correctly. Each bit or character from the plaintext is encrypted by a modular addition with a bit …   Wikipedia

  • Password (video games) — In many video games of the 8 and 16 bit eras, after a level was beaten and/or when all continues were used, the game would display a password, that when entered in the game would allow the player to return back to this part in the game. This way …   Wikipedia

  • Security token — Several types of security tokens with a penny for scale …   Wikipedia

  • HOTP — (HMAC Based One Time Password Algorithm)  алгоритм защищенной аутентификации с использованием одноразового пароля (One Time Password, OTP). Основан на HMAC (SHA 1). Является алгоритмом односторонней аутентификации, а именно: сервер… …   Википедия

  • HOTP — is an HMAC based One Time Password algorithm. It is a cornerstone of Initiative For Open Authentication (OATH).HOTP was published as an Information IETF RFC in December 2005, documenting the algorithm along with a Java implementation. See also *… …   Wikipedia

  • SecurID — RSA SecurID Логотип RSA SecurID …   Википедия

  • crypt (Unix) — In Unix computing, crypt is the name of both a utility program and a C programming function. Though both are used for encrypting data, they are otherwise essentially unrelated. To distinguish between the two, writers often refer to the utility… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»