Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Хэш-функции и аутентификация сообщений. Часть 2
Хэш-функция SHA-1
Безопасный хэш-алгоритм (Secure Hash Algorithm) был разработан национальным институтом стандартов и технологии (NIST) и опубликован в качестве федерального информационного стандарта (FIPS PUB 180) в 1993 году. SHA-1, как и MD5, основан на алгоритме MD4.
Логика выполнения SHA-1
Алгоритм получает на входе сообщение максимальной длины 264 бит и создает в качестве выхода дайджест сообщения длиной 160 бит.
Алгоритм состоит из следующих шагов:
Шаг 1: добавление недостающих битов
Сообщение добавляется таким образом, чтобы его длина была кратна 448 по модулю 512 ( ). Добавление осуществляется всегда, даже если сообщение уже имеет нужную длину. Таким образом, число добавляемых битов находится в диапазоне от 1 до 512.
Добавление состоит из единицы, за которой следует необходимое количество нулей.
Шаг 2: добавление длины
К сообщению добавляется блок из 64 битов. Этот блок трактуется как беззнаковое 64-битное целое и содержит длину исходного сообщения до добавления.
Результатом первых двух шагов является сообщение, длина которого кратна 512 битам. Расширенное сообщение может быть представлено как последовательность 512-битных блоков Y0, Y1, . . . , YL-1, так что общая длина расширенного сообщения есть L * 512 бит. Таким образом, результат кратен шестнадцати 32-битным словам.
Шаг 3: инициализация SHA-1 буфера
Используется 160-битный буфер для хранения промежуточных и окончательных результатов хэш-функции. Буфер может быть представлен как пять 32-битных регистров A, B, C, D и E. Эти регистры инициализируются следующими шестнадцатеричными числами:
A = 67452301 B = EFCDAB89 C = 98BADCFE D = 10325476 E = C3D2E1F0
Шаг 4: обработка сообщения в 512-битных (16-словных) блоках
Основой алгоритма является модуль, состоящий из 80 циклических обработок, обозначенный как HSHA. Все 80 циклических обработок имеют одинаковую структуру.
Каждый цикл получает на входе текущий 512-битный обрабатываемый блок Yq и 160-битное значение буфера ABCDE, и изменяет содержимое этого буфера.
В каждом цикле используется дополнительная константа Кt, которая принимает только четыре различных значения:
0 <= t <= 19 Kt = 5A827999 (целая часть числа [230 x 21/2]) 20 <= t <= 39 Kt = 6ED9EBA1 (целая часть числа [230 x 31/2]) 40 <= t <= 59 Kt = 8F1BBCDC (целая часть числа [230 x 51/2]) 60 <= t <= 79 Kt = CA62C1D6 (целая часть числа [230 x 101/2])
Для получения SHAq+1 выход 80-го цикла складывается со значением SHAq. Сложение по модулю 232 выполняется независимо для каждого из пяти слов в буфере с каждым из соответствующих слов в SHAq.
Шаг 5: выход
После обработки всех 512-битных блоков выходом L-ой стадии является 160-битный дайджест сообщения.
Рассмотрим более детально логику в каждом из 80 циклов обработки одного 512-битного блока. Каждый цикл можно представить в виде:
A, B, C, D, E (CLS5 (A) + ft (B, C, D) + E + Wt + Kt), A, CLS30 (B), C, D
Где
Каждая элементарная функция получает на входе три 32-битных слова и создает на выходе одно 32-битное слово. Элементарная функция выполняет набор побитных логических операций, т.е. n-ый бит выхода является функцией от n-ых битов трех входов. Функции следующие:
На самом деле используются только три различные функции. Для 0 <= t <= 19 функция является условной: if B then C else D. Для 20 <= t <= 39 и 60 <= t <= 79 функция создает бит четности. Для 40 <= t <= 59 функция является истинной, если два или три аргумента истинны.
32-битные слова Wt получаются из очередного 512-битного блока сообщения следующим образом.
Первые 16 значений Wt берутся непосредственно из 16 слов текущего блока. Оставшиеся значения определяются следующим образом:
В первых 16 циклах вход состоит из 32-битного слова данного блока. Для оставшихся 64 циклов вход состоит из XOR нескольких слов из блока сообщения.
Алгоритм SHA-1 можно суммировать следующим образом:
Где
Сравнение SHA-1 и MD5
Оба алгоритма, SHA-1 и MD5, произошли от MD4, поэтому имеют много общего.
Можно суммировать ключевые различия между алгоритмами.
Сравним оба алгоритма в соответствии с теми целями, которые были определены для алгоритма MD4:
- Безопасность: наиболее очевидное и наиболее важное различие состоит в том, что дайджест SHA-1 на 32 бита длиннее, чем дайджест MD5. Если предположить, что оба алгоритма не содержат каких-либо структурированных данных, которые уязвимы для криптоаналитических атак, то SHA-1 является более стойким алгоритмом. Используя лобовую атаку, труднее создать произвольное сообщение, имеющее данный дайджест, если требуется порядка 2160 операций, как в случае алгоритма SHA-1, чем порядка 2128 операций, как в случае алгоритма MD5. Используя лобовую атаку, труднее создать два сообщения, имеющие одинаковый дайджест, если требуется порядка 280 как в случае алгоритма SHA-1, чем порядка 264 операций как в случае алгоритма MD5.
- Скорость: так как оба алгоритма выполняют сложение по модулю 232, они рассчитаны на 32-битную архитектуру. SHA-1 содержит больше шагов (80 вместо 64) и выполняется на 160-битном буфере по сравнению со 128-битным буфером MD5. Таким образом, SHA-1 должен выполняться приблизительно на 25% медленнее, чем MD5 на той же аппаратуре.
- Простота и компактность: оба алгоритма просты и в описании, и в реализации, не требуют больших программ или подстановочных таблиц. Тем не менее, SHA-1 применяет одношаговую структуру по сравнению с четырьмя структурами, используемыми в MD5. Более того, обработка слов в буфере одинаковая для всех шагов SHA-1, в то время как в MD5 структура слов специфична для каждого шага.
- Архитектуры little-endian и big-endian: MD5 использует little-endian схему для интерпретации сообщения как последовательности 32-битных слов, в то время как SHA-1 задействует схему big-endian. Каких-либо преимуществ в этих подходах не существует.