Time-based One-time Password algorithm

TOTP (Time-based One-Time Password Algorithm, RFC 6238[1]) — OATH-алгоритм створення одноразових паролів для захищеної аутентифікації, є поліпшенням HOTP (HMAC-Based One-Time Password Algorithm). Є алгоритмом односторонньої аутентифікації — сервер засвідчується в справжності клієнта. Головна відмінність TOTP від HOTP це генерація пароля на основі часу, тобто час є параметром[2]. При цьому зазвичай використовується не точне зазначення часу, а поточний інтервал з встановленими заздалегідь межами (наприклад, 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)[2][3].

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

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

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

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

  • T {\displaystyle T} — дискретне значення часу, що використовується в якості параметра. (Вимірюється в одиницях X {\displaystyle X} , 4 байти)
  • X {\displaystyle X} — інтервал часу, протягом якого дійсний пароль. (За замовчуванням 30 сек.)
  • T 0 {\displaystyle T_{0}} — початковий час, необхідний для синхронізації сторін. (За замовчуванням — час від початку UNIX ери)
  • K {\displaystyle K} — спільний секрет.
  • C u r r e n t T i m e {\displaystyle CurrentTime} — поточний час.

Тоді[1][6]

T = ( C u r r e n t T i m e T 0 ) / X {\displaystyle T=(CurrentTime-T_{0})/X}
HOTP ( K , T ) = T r u n c a t e ( H M A C - S H A - 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)}

де

  • 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 ) = T r u n c a t e ( H M A C - S H A - 256 ( K , T ) ) {\displaystyle \operatorname {TOTP} (K,T)=Truncate(\operatorname {HMAC-SHA-256} (K,T))}
  • TOTP ( K , T ) = T r u n c a t e ( H M A C - S H A - 512 ( K , T ) ) {\displaystyle \operatorname {TOTP} (K,T)=Truncate(\operatorname {HMAC-SHA-512} (K,T))}

і т. д.[1]

Надійність алгоритму

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

Прослуховуючи трафік клієнта, зловмисник може перехопити посланий логін і одноразовий пароль (або хеш від нього). Потім йому досить блокувати комп'ютер «жертви» і відправити аутентифікаційні дані від власного імені. Якщо він встигне це зробити за проміжок часу X {\displaystyle X} , то йому вдасться отримати доступ. Саме тому X {\displaystyle X} варто робити невеликим. Але якщо час дії пароля зробити дуже маленьким, то у разі невеликої розсинхронізації клієнт не зможе отримати доступ[5].

Також існує вразливість пов'язана з синхронізацією таймерів сервера і клієнта, так як існує ризик розсинхронізації інформації про час на сервері і в програмному та/або апаратному забезпеченні користувача. Оскільки TOTP використовує в якості параметра, то при не збігу значень всі спроби користувача на аутентифікацію завершаться невдачею. У цьому випадку помилковий допуск чужого також буде неможливий. Варто відзначити, що ймовірність такої ситуації вкрай мала[5].

Дивись також

Примітки

Джерела

  • 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.
  • D. M'Raihi, M. Bellare, F. Hoornaert et al. HOTP: An HMAC-Based One-Time Password Algorithm — IETF, 2005. — 37 p. — doi:10.17487/RFC4226
    d:Track:Q27105682d:Track:Q22678443d:Track:Q1932841d:Track:Q217082d:Track:Q27105706d:Track:Q3018520
  • Давлетханов М. Концепция одноразовых паролей в построении системы аутентификации // ByteСША: 2006. — вып. 7-8 (95), июль-август. — ISSN 0360-5280; 1082-7838
    d:Track:Q1018709d:Track:Q30d:Track:Q21694596d:Track:Q21694594
  • Park J. H., Rodrigues J. J. P. C., Vaidya B. 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. ProceedingsBerlin, Heidelberg, New York, NY, London [etc.]: Springer Berlin Heidelberg, 2009. — P. 672–681. — (Lecture Notes in Computer Science; Vol. 5576) — ISBN 978-3-642-02616-4, 978-3-642-02617-1 — ISSN 0302-9743; 1611-3349 — doi:10.1007/978-3-642-02617-1_68
    d:Track:Q21694586d:Track:Q21694587d:Track:Q21694585d:Track:Q924044d:Track:Q21694588d:Track:Q21694589d:Track:Q21587985
  • D. M'Raihi, S. Machani, M. Pei et al. TOTP: Time-Based One-Time Password AlgorithmIETF, 2011. — 16 p. — doi:10.17487/RFC6238
    d:Track:Q22678443d:Track:Q26882441d:Track:Q26882437d:Track:Q217082d:Track:Q26882439d:Track:Q26882440

Посилання

  • OTP Oath HOTP TOTP PSKS DSKPP. Архів оригіналу за 24 січня 2013.