Одноразовый пароль на основе HMAC (HOTP) - это алгоритм одноразового пароля (OTP), основанный на кодах аутентификации сообщений на основе хэшей (HMAC). Это краеугольный камень Инициативы открытой аутентификации (OATH).
HOTP был опубликован в качестве информационного документа IETF RFC 4226 в декабре 2005 г., в котором алгоритм документировался вместе с реализацией Java. С тех пор алгоритм был принят многими компаниями по всему миру (см. Ниже). Алгоритм HOTP - это свободно доступный открытый стандарт .
Алгоритм
Алгоритм HOTP обеспечивает метод аутентификации путем симметричной генерации удобочитаемых паролей или значений , каждое из которых используется только для одной попытки аутентификации. Одноразовое свойство напрямую связано с однократным использованием каждого значения счетчика.
Стороны, намеревающиеся использовать HOTP, должны установить некоторые параметры ; обычно они указываются аутентификатором и либо принимаются, либо не аутентифицируются:
- Криптографической хэш - метод, Н ( по умолчанию SHA-1 )
- Секретный ключ , K , который является произвольной строкой байт, и должен оставаться закрытыми
- Счетчик , С , который подсчитывает число итераций
- Длина значения HOTP, d (6–10, по умолчанию 6, рекомендуется 6–8).
Обе стороны вычислить значение HOTP , полученный из секретного ключа K и счетчика C . Затем аутентификатор сравнивает свое локально сгенерированное значение со значением, предоставленным аутентифицированным.
Аутентификатор и аутентифицированный увеличивают счетчик C независимо друг от друга, причем последний может увеличиваться впереди первого, поэтому протокол ресинхронизации является разумным. RFC 4226 на самом деле этого не требует, но дает рекомендации. Это просто заставляет аутентификатор несколько раз пробовать проверку перед своим счетчиком через окно размера s . Счетчик аутентификатора продолжает движение вперед от значения, при котором проверка успешна, и не требует никаких действий со стороны аутентифицированного.
Рекомендуется использовать постоянное регулирование проверки значений HOTP для устранения их относительно небольшого размера и, следовательно, уязвимости для атак методом грубой силы. Предлагается блокировать проверку после небольшого количества неудачных попыток или чтобы каждая неудачная попытка вызывала дополнительную (линейно увеличивающуюся) задержку.
Шестизначные коды обычно предоставляются проприетарными аппаратными токенами от ряда поставщиков, в которых указано значение d по умолчанию . При усечении извлекается 31 бит или≈ 9,3 десятичных цифры, что означает, что самое большее d может быть 10, при этом 10-я цифра обеспечивает меньшее дополнительное изменение, принимая значения 0, 1 и 2 (т. Е. 0,3 цифры).
После проверки аутентификатор может аутентифицировать себя, просто генерируя следующее значение HOTP, возвращая его, а затем аутентифицированный может сгенерировать свое собственное значение HOTP для его проверки. Обратите внимание, что на этом этапе процесса гарантируется синхронизация счетчиков.
Значение HOTP представляет собой удобочитаемый результат проекта, десятичное число из d- цифр (без пропусков ведущих нулей):
- Значение HOTP = HOTP ( K , C ) mod 10 d
То есть значение представляет собой d наименее значащих десятичных разрядов HOTP.
HOTP - это усечение хеш-кода аутентификации сообщения (HMAC) счетчика C (под ключом K и хеш-функцией H).
- HOTP ( K , C ) = усечь (HMAC H ( K , C ))
Усечение сначала берет 4 младшие биты MAC и использует их в качестве смещения байта, я .
- усечь ( MAC ) = extract31 ( MAC , MAC [(19 × 8) + 4: (19 × 8) + 7] × 8)
Этот индекс i используется для выбора 31 бита из MAC , начиная с бита i * 8 + 1 .
- extract31 ( MAC , i ) = MAC [ i × 8 + 1: i × 8 + (4 × 8) - 1]
31 бит - это на один бит меньше 4-байтового слова. Таким образом, значение может быть помещено внутри такого слова без использования знакового бита (старшего значащего бита). Это сделано для того, чтобы определенно избежать модульной арифметики с отрицательными числами, так как это имеет много разных определений и реализаций. [1]
Жетоны
Как аппаратные, так и программные токены доступны от различных поставщиков, для некоторых из них см. Ссылки ниже. Аппаратные токены, реализующие OATH HOTP, как правило, значительно дешевле, чем их конкуренты, основанные на запатентованных алгоритмах. [2] С 2010 года аппаратные токены OATH HOTP можно приобрести по предельной цене. [3] Некоторые продукты могут использоваться как надежные пароли, так и OATH HOTP. [4]
Программные токены доступны (почти) для всех основных платформ мобильных устройств и смартфонов ( J2ME , [5] Android , [6] iPhone , [7] BlackBerry , [8] Maemo , [9] macOS , [10] и Windows Mobile [8] ] ).
Прием
Несмотря на то, что в 2004 и 2005 годах некоторые компьютерные СМИ принимали отрицательные отзывы, [11] [12] [13] после того, как IETF приняла HOTP как RFC 4226 в декабре 2005 года, различные поставщики начали производить токены, совместимые с HOTP, и / или полную аутентификацию. решения.
Согласно документу о строгой аутентификации (озаглавленному «Дорожная карта: замена паролей аутентификацией OTP»), опубликованному Burton Group (подразделение Gartner, Inc. ) в 2010 году, « Gartner ожидает, что форм-фактор аппаратного OTP сохранится. для умеренного роста, в то время как количество одноразовых паролей для смартфонов со временем будет расти и станет аппаратной платформой по умолчанию » [2]
Смотрите также
Рекомендации
- ^ Франк, Хорнарт; Дэвид, Наккаш; Михир, Белларе; Охад, Ранен. «HOTP: алгоритм одноразового пароля на основе HMAC» . tools.ietf.org .
- ^ а б Диодати, Марк (2010). «Дорожная карта: замена паролей аутентификацией OTP» . Бертон Групп .
- ^ «Жетоны аутентификации безопасности - Доверие» . Доверьте . 2011 г.
- ^ «Password sCrib Tokens - Smart Crib» . Умная кроватка . 2013. Архивировано из оригинала на 2013-03-20.
- ^ «DS3 запускает приложение-мидлет OathToken» . Решения для систем безопасности данных . 24 февраля 2006 г. Архивировано из оригинального 29 декабря 2013 года.
- ^ «StrongAuth» . 2010. Архивировано из оригинала на 2010-05-18.
- ^ Коббс, Арчи Л. (2010). «Жетон OATH» . Арчи Л. Коббс .
- ^ а б «Мягкие токены ActivIdentity» . ActivIdentity . 2010. Архивировано из оригинала на 2010-09-17.
- ^ Уитбек, Шон (2011). «Генератор ОТП для N900» . Шон Уитбек .
- ^ «SecuriToken» . Программное обеспечение Feel Good . 2011. Архивировано из оригинала на 2012-04-25.
- ^ Кернс, Дэйв (2004-12-06). «Углубляться в OATH не так уж и хорошо» . Сетевой мир .
- ^ Уиллоби, Марк (21 марта 2005 г.). «Нет соглашения об аутентификации Oath» . Компьютерный мир .
- ^ Калиски, Берт (2005-05-19). «Гибкость алгоритмов и OATH» . Компьютерный мир .
Внешние ссылки
- RFC4226: HOTP: алгоритм одноразового пароля на основе HMAC
- RFC 6287: OCRA: алгоритм запроса-ответа OATH на основе HMAC
- Инициатива по открытой аутентификации
- Пошаговая реализация Python в Jupyter Notebook