Time-based One-time Password Algorithm

Multi tool use
Multi tool use




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




Содержание






  • 1 История


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


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


  • 4 См. также


  • 5 Примечания


  • 6 Источники


  • 7 Ссылки





История |


С 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)[2][3].


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


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



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


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




  • T{displaystyle T}T — дискретное значение времени, используемое в качестве параметра. (Измеряется в единицах X{displaystyle X}X, 8 байтов)


  • X{displaystyle X}X — интервал времени, в течение которого действителен пароль. (По умолчанию 30 сек.)


  • T0{displaystyle T_{0}}T_{0} — начальное время, необходимое для синхронизации сторон. (По умолчанию — время от начала UNIX эры)


  • K{displaystyle K}K — разделяемый секрет.


  • CurrentTime{displaystyle CurrentTime}CurrentTime — текущее время.


Тогда[1][6]


T=(CurrentTime−T0)/X{displaystyle T=(CurrentTime-T_{0})/X}T=(CurrentTime-T_{0})/X

HOTP⁡(K,T)=Truncate(HMAC-SHA-1⁡(K,T)){displaystyle operatorname {HOTP} (K,T)=Truncate(operatorname {HMAC-SHA-1} (K,T))}{displaystyle operatorname {HOTP} (K,T)=Truncate(operatorname {HMAC-SHA-1} (K,T))}

TOTP=HOTP⁡(K,T){displaystyle operatorname {TOTP} =operatorname {HOTP} (K,T)}{displaystyle operatorname {TOTP} =operatorname {HOTP} (K,T)}

где




  • HMAC-SHA-1(K,T) -генерация 20-ти байт на основе секретного ключа и времени с помощью хеш-функции SHA-1.

  • Truncate — функция выбора определенным способом 4 байт:


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


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



  • TOTP⁡(K,T)=Truncate(HMAC-SHA-256⁡(K,T)){displaystyle operatorname {TOTP} (K,T)=Truncate(operatorname {HMAC-SHA-256} (K,T))}{displaystyle operatorname {TOTP} (K,T)=Truncate(operatorname {HMAC-SHA-256} (K,T))}

  • TOTP⁡(K,T)=Truncate(HMAC-SHA-512⁡(K,T)){displaystyle operatorname {TOTP} (K,T)=Truncate(operatorname {HMAC-SHA-512} (K,T))}{displaystyle operatorname {TOTP} (K,T)=Truncate(operatorname {HMAC-SHA-512} (K,T))}


и т. д.[1]



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


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


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


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



См. также |



  • HOTP

  • OTP

  • OCRA



Примечания |





  1. 1234 M'Raïhi, Machani, Pei et al., 2011.


  2. 1234 Nathan Willis, 2010.


  3. Vaidya, Park, Rodrigue, 2009.


  4. OATH Submits TOTP: Time-Based One Time Password Specification to IETF.


  5. 1234 Давлетханов, 2006.


  6. 12 M'Raïhi, Bellare, Hoornaert et al., 2005.




Источники |



  • Nathan Willis. OATH: yesterday, today, and tomorrow (англ.) // LWN.net : электронный журнал. — 2010.

  • Joann Killeen, Madison Alexander. OATH Submits TOTP: Time-Based One Time Password Specification to IETF (англ.). Архивировано 23 января 2013 года.

  • M'Raïhi D., Bellare M., Hoornaert F. et al. HOTP: An HMAC-Based One-Time Password Algorithm — Internet Engineering Task Force, 2005. — 37 p. — doi:10.17487/RFC4226
    <a href="https://wikidata.org/wiki/Track:Q27105682"></a><a href="https://wikidata.org/wiki/Track:Q22678443"></a><a href="https://wikidata.org/wiki/Track:Q1932841"></a><a href="https://wikidata.org/wiki/Track:Q217082"></a><a href="https://wikidata.org/wiki/Track:Q27105706"></a><a href="https://wikidata.org/wiki/Track:Q3018520"></a>

  • Давлетханов М. Концепция одноразовых паролей в построении системы аутентификации // Byte — 2006. — вып. 7-8 (95), июль-август. — ISSN 0360-5280
    <a href="https://wikidata.org/wiki/Track:Q1018709"></a><a href="https://wikidata.org/wiki/Track:Q21694596"></a><a href="https://wikidata.org/wiki/Track:Q21694594"></a>

  • Vaidya B., Park J. H., Rodrigues J. J. P. C. HOTP-Based User Authentication Scheme in Home Networks // Advances in Information Security and Assurance: Third International Conference and Workshops, ISA 2009, Seoul, Korea, June 25-27, 2009. Proceedings — Springer Berlin Heidelberg. — P. 672–681. — (Lecture Notes in Computer Science; Vol. 5576) — ISBN 978-3-642-02616-4, 978-3-642-02617-1 — ISSN 0302-9743
    <a href="https://wikidata.org/wiki/Track:Q21694586"></a><a href="https://wikidata.org/wiki/Track:Q21694587"></a><a href="https://wikidata.org/wiki/Track:Q21694585"></a><a href="https://wikidata.org/wiki/Track:Q924044"></a><a href="https://wikidata.org/wiki/Track:Q21694588"></a><a href="https://wikidata.org/wiki/Track:Q21694589"></a><a href="https://wikidata.org/wiki/Track:Q21587985"></a>

  • M'Raïhi D., Machani S., Pei M. et al. TOTP: Time-Based One-Time Password Algorithm — Internet Engineering Task Force, 2011. — 16 p. — doi:10.17487/RFC6238
    <a href="https://wikidata.org/wiki/Track:Q22678443"></a><a href="https://wikidata.org/wiki/Track:Q26882441"></a><a href="https://wikidata.org/wiki/Track:Q26882437"></a><a href="https://wikidata.org/wiki/Track:Q217082"></a><a href="https://wikidata.org/wiki/Track:Q26882439"></a><a href="https://wikidata.org/wiki/Track:Q26882440"></a>



Ссылки |


  • OTP Oath HOTP TOTP PSKS DSKPP (неопр.) (недоступная ссылка). Архивировано 24 января 2013 года.









kANhoiz1Zc6K,k7,uC,d,zr yq,tfIoFT,3zeQ B5 ID4DD64M XgMKro74CdlO5XAL5
Zu ZBN,9 TQxKluwtCCP8973,afwmm3LQsNei8Fb vLet,IA9RHYKoqT1AjOwe6FXukjnK,iKWzs18

Popular posts from this blog

Центральная группа войск

Дои, Мисаки

Бедствия войны