16:55 Алгоритм одноразового пароля на основе HMAC | |
Алгоритм одноразового пароля на основе HMAC (HOTP) - это алгоритм одноразового пароля (OTP), основанный на хэш-кодах аутентификации сообщений (HMAC). Это краеугольный камень Инициативы открытой аутентификации (OATH). HOTP был опубликован как информационный IETF RFC 4226 в декабре 2005 года, в котором описан алгоритм вместе с реализацией Java. С тех пор алгоритм был принят многими компаниями по всему миру. Алгоритм HOTP является свободно доступным открытым стандартом . Алгоритм HOTP обеспечивает метод аутентификации путем симметричной генерации удобочитаемых паролей или значений , каждое из которых используется только для одной попытки аутентификации. Одноразовое свойство напрямую зависит от одноразового использования каждого значения счетчика. Стороны, намеревающиеся использовать HOTP, должны установить некоторые параметры ; как правило, они указываются аутентификатором и принимаются или не принимаются аутентифицированным: Криптографический метод хеширования, H (по умолчанию SHA-1 ) Секретный ключ , K , который является произвольной строкой байт, и должен оставаться закрытыми Длина значения HOTP , d (6–10, по умолчанию 6, и рекомендуется 6–8) Обе стороны вычисляют значение HOTP , затем аутентификатор проверяет свое локально сгенерированное значение по отношению к значению, предоставленному аутентифицированным. Аутентификатор и аутентифицированный инкремент увеличивают счетчик независимо друг от друга, где последний может увеличиваться перед первым, поэтому разумно использовать протокол ресинхронизации. RFC 4226 на самом деле не требует такого, но дает рекомендации. Это просто заставляет аутентификатор неоднократно пытаться выполнить проверку перед счетчиком через окно размера s . Счетчик аутентификатора продолжает отображать значение, при котором проверка успешна, и не требует никаких действий со стороны аутентифицированного. Рекомендуется проводить постоянное ограничение проверки значений HOTP , чтобы устранить их относительно небольшой размер и, таким образом, уязвимость к атакам методом "грубой силы". Предполагается, что проверка блокируется после небольшого числа неудачных попыток или что каждая неудачная попытка вызывает дополнительную (линейно возрастающую) задержку. Шестизначные коды обычно предоставляются проприетарными аппаратными токенами от ряда поставщиков, сообщающими значение по умолчанию d . Усечение извлекает 31 бит или{\ texttyle \ log _ {10} \ left (2 ^ {31} \ right)}≈ 9,3 десятичных знака, то есть самое большее d может быть 10, при этом 10-ая цифра обеспечивает меньшее дополнительное отклонение, принимая значения 0, 1 и 2 (т. Е. 0,3 цифры). После проверки аутентификатор может аутентифицировать себя, просто генерируя следующее значение HOTP , возвращая его, и затем аутентифицированный может генерировать свое собственное значение HOTP для его проверки. Обратите внимание, что счетчики гарантированно синхронизируются на этом этапе процесса. HOTP значение является выходом конструкции для восприятия человека, A d -значное десятичное число (без пропусков ведущих 0s): Значение HOTP = HOTP ( K , C ) мод 10 д То есть, значение является д наименее значимые по основанию 10 цифр 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 + 1 . extract31 ( MAC , i ) = MAC [ i + 1: i + (4 × 8) - 1] Обратите внимание, что 31 бит - это один бит, кратный 4-байтовому слову. Таким образом, значение может быть помещено в такое слово без использования знакового бита (наиболее значимого бита). Это сделано, чтобы определенно избежать модульной арифметики с отрицательными числами, поскольку у этого есть много различных определений и реализаций | |
|
Всього коментарів: 0 | |