русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Стандарт вычисления аутентифицирующей комбинации HMAC


Дата добавления: 2015-08-31; просмотров: 809; Нарушение авторских прав


Функция HMAC описана в RFC 2104 и предполагает использование ключа длиной L байт и некоторой произвольной однонаправленной хэш-функции HASH, выходное значение которой также составляет L байт.

Для любой используемой хэш-функции предполагается, что она имеет единственный аргумент TEXT произвольной длины, разбиваемый на блоки по B байт (L < B), и некоторую инициализирующую последовательность INIT также длиной B байт. Таким образом, синтаксис хэш-функции принимает вид:

HASH(INIT, TEXT)

Значение аутентифицирующей комбинации вычисляется исходя из секретного ключа аутентификации AUTH и непосредственно данных DATA произвольной длины по следующему правилу:

HMAC = HASH(KEY1, HASH(KEY2, DATA))

Поясним это выражение.

Рекомендуемая длина ключа AUTH составляет L байт. Допускается и длина в диапазоне от L до B байт. Если же ключ длиннее B байт, то к нему применяется хэш-функция HASH и в качестве ключа уже используется полученная новая комбинация длиной L байт.

Далее ключ AUTH дополняется нулями до длины B байт, таким образом, получается некоторое значение TEMP, которое используется для вычисления инициализирующих комбинаций:

KEY1 = TEMP xor 0x5C(повторено B раз)

KEY2 = TEMP xor 0x36(повторено B раз)

Смысл применения инициирующей комбинации заключается в следующем.

Любая хэш-функция имеет свое внутреннее состояние. В начале работы функции ее состояние всегда одинаково и описано в стандарте на нее (см. ниже описание соответствующих алгоритмов). Чтобы усилить стойкость хеширования, перед поступлением на вход собственно данных, выполняется хеширование некоей инициализирующей последовательности, которое изменяет начальное состояние функции и вносит дополнительный элемент разнообразия. Таким образом, запись

HASH(INIT, TEXT)

в реальности преобразуется следующим образом:



HASH_INIT(INIT),

HASH(TEXT),

где HASH_INIT – хэш-функция со стандартным начальным состоянием.

В заключении отметим, что полное обозначение процедуры вычисления аутентифицирующей комбинации складывается из названия алгоритма и используемой хэш-функции. Например, HMAC-MD5 или HMAC-SHA1. При этом предполагается, что длина комбинации определяется хэш-функцией (в данном случае 128 и 160 бит, соответственно). Иногда используются не все разряды результата, как правило, отбрасываются младшие биты. В этом случае в обозначение кода алгоритма аутентификации добавляют количество используемых разрядов. Например, наиболее часто используемыми являются алгоритмы HMAC-MD5-80 и HMAC-SHA1-96.

 

 



<== предыдущая лекция | следующая лекция ==>
Общая характеристика | Хэш-функция MD5


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.136 сек.