TOTP — различия между версиями

Материал из Power Security Support Wiki
Перейти к: навигация, поиск
Строка 13: Строка 13:
  
 
Текущее значение дискретное время (T) получается следующим образом. Определяются два системных параметра:
 
Текущее значение дискретное время (T) получается следующим образом. Определяются два системных параметра:
**X — временной шаг (по умолчанию 30 секунд)  
+
*X — временной шаг (по умолчанию 30 секунд)  
  
**T0 — начальное время (по умолчанию 0)
+
*T0 — начальное время (по умолчанию 0)
  
 
далее все просто:
 
далее все просто:
  
<centre>T = (Current Unix time - T0) / X, </centre>
+
<center>T = (Current Unix time - T0) / X, </center>
  
 
при этом T округляется в меньшую сторону, то есть если T0=0, X= 30, а текущее время — 59, то T=1, если же текущее время — 60, то T=2
 
при этом T округляется в меньшую сторону, то есть если T0=0, X= 30, а текущее время — 59, то T=1, если же текущее время — 60, то T=2

Версия 23:08, 2 мая 2012

TOTP: основное

TOTP — OATH-алгоритм генерации одноразовых паролей (OTP, one-time password) на основе времени (time-base). То есть, время является тем параметром, которой отвечает за динамику. Этот алгоритм — развитие OATH HOTP, с концептуальными изменениями: вместо состояния счетчика событий используется текущее дискретное время. Оно (время), как событие в HOTP, вместе с симметричным ключом (уникальным для каждого генератора, и определяющего уникальность самого генератора) используются как аргументы HMAC.

OATH TOTP стандартизован в виде RFC 6238

Чуть-чуть математики

В отличие от алгоритма OATH HOTP, OATH TOTP может быть реализован на базе HMAC-SHA-256 и HMAC-SHA-512, а не только HMAC-SHA-1.


Время

Текущее значение дискретное время (T) получается следующим образом. Определяются два системных параметра:

  • X — временной шаг (по умолчанию 30 секунд)
  • T0 — начальное время (по умолчанию 0)

далее все просто:

T = (Current Unix time - T0) / X,

при этом T округляется в меньшую сторону, то есть если T0=0, X= 30, а текущее время — 59, то T=1, если же текущее время — 60, то T=2