Одноразовый пароль на основе HMAC
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Одноразовый пароль на основе HMAC ( HOTP ) — это алгоритм одноразового пароля (OTP), основанный на HMAC . Это краеугольный камень Инициативы открытой аутентификации (OATH).
HOTP был опубликован как информационный документ IETF RFC 4226 в декабре 2005 года, в котором документирован алгоритм вместе с реализацией Java. С тех пор алгоритм был принят многими компаниями по всему миру (см. ниже). Алгоритм HOTP — это свободно доступный открытый стандарт .
Алгоритм
[ редактировать ]Алгоритм HOTP предоставляет метод аутентификации путем симметричного создания удобочитаемых паролей или значений , каждое из которых используется только для одной попытки аутентификации. Одноразовое свойство напрямую связано с однократным использованием каждого значения счетчика.
Стороны, намеревающиеся использовать HOTP, должны установить некоторые параметры ; обычно они указываются аутентификатором и либо принимаются, либо нет аутентифицированным:
- Криптографический хеширования метод H (по умолчанию SHA-1 ).
- Секретный ключ K , который представляет собой произвольную строку байтов и должен оставаться закрытым.
- Счетчик C . , который считает количество итераций
- Длина значения HOTP d (6–10, по умолчанию — 6, рекомендуется 6–8).
полученное на основе секретного ключа K и счетчика C. Обе стороны вычисляют значение HOTP , Затем аутентификатор сравнивает свое локально сгенерированное значение со значением, предоставленным аутентифицированным.
Аутентификатор и аутентифицированный увеличивают счетчик C независимо друг от друга, причем последний может увеличиваться раньше первого, поэтому разумным является протокол ресинхронизации. RFC 4226 на самом деле не требует этого, но содержит рекомендации. При этом аутентификатор просто неоднократно пытается выполнить проверку перед своим счетчиком через окно размера s . Счетчик аутентификатора продолжает движение вперед от значения, при котором проверка прошла успешно, и не требует никаких действий со стороны аутентифицированного лица.
Рекомендуется постоянно ограничивать проверку значений HOTP, чтобы устранить их относительно небольшой размер и, следовательно, уязвимость к атакам методом перебора. Предлагается блокировать проверку после небольшого количества неудачных попыток или чтобы каждая неудачная попытка влекла за собой дополнительную (линейно возрастающую) задержку.
Шестизначные коды обычно предоставляются проприетарными аппаратными токенами от ряда поставщиков, сообщающих значение d по умолчанию . Усечение извлекает 31 бит или десятичные цифры, что означает, что d может быть не более 10, при этом 10-я цифра добавляет меньше вариаций и принимает значения 0, 1 и 2 (т. е. 0,3 цифры).
После проверки аутентификатор может аутентифицировать себя, просто сгенерировав следующее значение HOTP и вернув его, а затем аутентифицированный может сгенерировать собственное значение HOTP для его проверки. Обратите внимание, что на этом этапе процесса счетчики гарантированно будут синхронизированы.
Значение HOTP — это удобочитаемый результат проектирования, десятичное число d (без пропуска ведущих нулей):
- Значение HOTP = HOTP ( K , C ) mod 10 д .
То есть значение представляет собой d наименее значащую десятичную цифру HOTP.
HOTP — это усечение HMAC счетчика C (по ключу K и хеш-функции H ):
- HOTP ( K , C ) = усечь (HMAC H ( K , C )),
где счетчик C должен использоваться с прямым порядком байтов .
Усечение сначала берет 4 младших бита MAC и использует их в качестве смещения байта i :
- truncate( MAC ) = Extract31( MAC , MAC [(19 × 8 + 4): (19 × 8 + 7)]),
где «:» используется для извлечения битов от начального номера бита до конечного номера бита включительно, где эти номера бит имеют начало от 0. Использование «19» в приведенной выше формуле относится к размеру выходных данных хэш-функции. При значении по умолчанию SHA-1 выходной размер составляет 20 байт , поэтому последний байт — это байт 19 (0-начало).
Этот индекс 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] Андроид , [6] айфон , [7] Ежевика , [8] условия , [9] macOS , [10] и Windows Мобайл [8] ).
Прием
[ редактировать ]Этот раздел необходимо обновить . ( август 2023 г. ) |
Хотя первые отзывы некоторых компьютерных изданий в 2004 и 2005 годах были негативными, [11] [12] [13] после того, как IETF принял HOTP в качестве RFC 4226 в декабре 2005 года, различные поставщики начали производить HOTP-совместимые токены и/или целые решения для аутентификации.
Согласно статье «Дорожная карта: замена паролей с помощью OTP-аутентификации» [2] о строгой аутентификации, опубликованной Burton Group (подразделение Gartner, Inc. ) в 2010 году: « Gartner ожидает, что форм-фактор аппаратного OTP продолжит испытывать умеренный рост, в то время как OTP для смартфонов будут расти и станут аппаратной платформой по умолчанию время."
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Фрэнк, Хорнарт; Дэвид, Наккеш; Михир, Белларе; Охад, Ранен (декабрь 2005 г.). «HOTP: алгоритм одноразового пароля на основе HMAC» . www.tools.ietf.org . дои : 10.17487/RFC4226 .
- ^ Jump up to: а б Диодати, Марк (2010). «Дорожная карта: замена паролей с помощью OTP-аутентификации» . Группа Бертон . Архивировано из оригинала 21 июля 2011 г. Проверено 10 февраля 2011 г.
- ^ «Токены аутентификации безопасности — доверить» . Доверить . 2011. Архивировано из оригинала 5 апреля 2013 г. Проверено 5 марта 2010 г.
- ^ «Токены sCrib для пароля — Smart Crib» . Умная кроватка . 2013. Архивировано из оригинала 20 марта 2013 г.
- ^ «DS3 запускает мидлет-приложение OathToken» . Решения для систем безопасности данных . 24 февраля 2006 г. Архивировано из оригинала 29 декабря 2013 года.
- ^ «СтронгАут» . 2010. Архивировано из оригинала 18 мая 2010 г.
- ^ Коббс, Арчи Л. (2010). «Жетон Клятвы» . Арчи Л. Коббс .
- ^ Jump up to: а б «Мягкие токены ActivIdentity» . АктивИдентити . 2010. Архивировано из оригинала 17 сентября 2010 г.
- ^ Уитбек, Шон (2011). «Генератор OTP для N900» . Шон Уитбек .
- ^ «СекуриТокен» . Программное обеспечение Feel Good . 2011. Архивировано из оригинала 25 апреля 2012 г.
- ^ Кернс, Дэйв (6 декабря 2004 г.). «Копать глубже в OATH выглядит не очень хорошо» . Сетевой мир .
- ^ Уиллоуби, Марк (21 марта 2005 г.). «Нет соглашения об аутентификации присяги» . Компьютерный мир . Архивировано из оригинала 11 октября 2012 г. Проверено 7 октября 2010 г.
- ^ Калиски, Берт (19 мая 2005 г.). «Алгоритмическая гибкость и OATH» . Компьютерный мир . Архивировано из оригинала 11 октября 2012 г. Проверено 7 октября 2010 г.