HOTP — различия между версиями
Andrey (обсуждение | вклад) |
Andrey (обсуждение | вклад) |
||
Строка 8: | Строка 8: | ||
==Математическая подоплека== | ==Математическая подоплека== | ||
+ | ===Общее=== | ||
В основе генерации одноразовых паролей лежит HMAC-функция (RFC 2104), на вход которой подается два значения: симметричный ключ и текущее состояние счетчика. Отсюда, кстати, и название алгоритма HOTP — HMAC-Based One-Time Password. В качестве основы HMAC взят алгоритм SHA-1 (RFC 3174), то есть речь идет о HMAC-SHA-1 с длиной результата 160 бит. | В основе генерации одноразовых паролей лежит HMAC-функция (RFC 2104), на вход которой подается два значения: симметричный ключ и текущее состояние счетчика. Отсюда, кстати, и название алгоритма HOTP — HMAC-Based One-Time Password. В качестве основы HMAC взят алгоритм SHA-1 (RFC 3174), то есть речь идет о HMAC-SHA-1 с длиной результата 160 бит. | ||
Версия 16:15, 2 мая 2012
HOTP: общее описание
HOTP — OATH-алгоритм генерации одноразовых паролей по событию (event-base) описан как RFC 4226. Как сказано выше в качестве параметра, отвечающего за динамику, используется событие, то есть сам факт генерации одноразового пароля: каждый раз при нажатии на кнопку генерации, счетчик событий увеличивает свое значение на единицу и именно это значение динамическое значение используется как основной параметр при расчете одноразового пароля.
Вторым параметром, используемым при расчете одноразового пароля, является симметричный ключ (symmetric key), который должен быть уникальным для каждого генератора и существует требование на его минимальную длину – 128 бит. Канонически, именно это значение определяет уникальность генератора одноразовых паролей. При этом стоит отметить, что дополнительный уровень энтропии вносится за счет случайного значения начального состояния счётчика событии, который вместе с симметричным ключом «прошивается в генератор и записывается в конфигурационный файл (по OATH-рекомендациям это должен быть формат PSKC, описанный в RFC 6030).
Математическая подоплека
Общее
В основе генерации одноразовых паролей лежит HMAC-функция (RFC 2104), на вход которой подается два значения: симметричный ключ и текущее состояние счетчика. Отсюда, кстати, и название алгоритма HOTP — HMAC-Based One-Time Password. В качестве основы HMAC взят алгоритм SHA-1 (RFC 3174), то есть речь идет о HMAC-SHA-1 с длиной результата 160 бит.
Так как конечный пользователь будет испытывать катастрофические затруднения при наборе одноразового пароля длиной 160 бит, алгоритм предусматривает обрезку оригинального результата (160 бит) до приемлемой длины: одноразовый пароль имеет формат цифрового значения с длиной не менее 6 символов (цифр). Таким образом, функция генерации одноразового пароля по событию записывается следующим образом:
где:
К — симметричный ключ
С —текущее состояние счетчика
Truncate — функция обрезки, позволяющая преобразовать 160-битное значение функции HMAC-SHA-1, в упомянутый выше юзер-френдли числовой формат (с длиной 6 или более символов)