Московский государственный университет имени М.В.Ломоносова
Опубликован: 19.11.2003 | Доступ: свободный | Студентов: 12375 / 4860 | Оценка: 4.36 / 4.13 | Длительность: 13:09:00
ISBN: 978-5-9556-0102-1
Лекция 9:

Хэш-функции и аутентификация сообщений. Часть 2

< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Аннотация: Рассматриваются сильные хэш-функции SHA-1, SHA-2 и ГОСТ 34.11. Представлены основные понятия, относящиеся к обеспечению целостности сообщений и вычислению МАС с помощью алгоритмов симметричного шифрования, хэш-функций и алгоритма НМАС.

Хэш-функция SHA-1

Безопасный хэш-алгоритм (Secure Hash Algorithm) был разработан национальным институтом стандартов и технологии (NIST) и опубликован в качестве федерального информационного стандарта (FIPS PUB 180) в 1993 году. SHA-1, как и MD5, основан на алгоритме MD4.

Логика выполнения SHA-1

Алгоритм получает на входе сообщение максимальной длины 264 бит и создает в качестве выхода дайджест сообщения длиной 160 бит.

Алгоритм состоит из следующих шагов:

Логика выполнения SHA-1

Рис. 9.1. Логика выполнения SHA-1

Шаг 1: добавление недостающих битов

Сообщение добавляется таким образом, чтобы его длина была кратна 448 по модулю 512 ( длина \equiv  448 \mod 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-битного блока

Рис. 9.2. Обработка очередного 512-битного блока

Каждый цикл получает на входе текущий 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

Где

A, B, C, D, E - пять слов из буфера.
t - номер цикла, 0 <= t <= 79.
ft - элементарная логическая функция.
CLSs - циклический левый сдвиг 32-битного аргумента на s битов.
Wt - 32-битное слово, полученное из текущего входного 512-битного блока.
Kt - дополнительная константа.
+ - сложение по модулю 232.
Логика выполнения отдельного цикла

Рис. 9.3. Логика выполнения отдельного цикла

Каждая элементарная функция получает на входе три 32-битных слова и создает на выходе одно 32-битное слово. Элементарная функция выполняет набор побитных логических операций, т.е. n-ый бит выхода является функцией от n-ых битов трех входов. Функции следующие:

Номер цикла ft (B, C, D)
(0 <= t <= 19) (B \wedge  C) \vee  (\neg  B \wedge  D)
(20 <= t <= 39) B \oplus  C \oplus  D
(40 <= t <= 59) (B \wedge  C) \vee  (B \wedge  D) \vee  (C \wedge  D)
(60 <= t <= 79) B \oplus  C \oplus  D

На самом деле используются только три различные функции. Для 0 <= t <= 19 функция является условной: if B then C else D. Для 20 <= t <= 39 и 60 <= t <= 79 функция создает бит четности. Для 40 <= t <= 59 функция является истинной, если два или три аргумента истинны.

32-битные слова Wt получаются из очередного 512-битного блока сообщения следующим образом.

Получение входных значений каждого цикла из очередного блока

Рис. 9.4. Получение входных значений каждого цикла из очередного блока

Первые 16 значений Wt берутся непосредственно из 16 слов текущего блока. Оставшиеся значения определяются следующим образом:

W_{t} = W_{t-16} \oplus  W_{t-14} \oplus  W_{t-8} \oplus  W_{t-3}

В первых 16 циклах вход состоит из 32-битного слова данного блока. Для оставшихся 64 циклов вход состоит из XOR нескольких слов из блока сообщения.

Алгоритм SHA-1 можно суммировать следующим образом:

SHA_{0} = IV
\\
SHA_{q+1} = \Sigma 32 \ (SHA_{q} , ABCDE_{q} )
\\
SHA = SHA_{L-1}

Где

IV - начальное значение буфера ABCDE.
ABCDEq - результат обработки q-того блока сообщения.
L - число блоков в сообщении, включая поля добавления и длины.
\Sigma 32 - сумма по модулю 232, выполняемая отдельно для каждого слова буфера.
SHA - значение дайджеста сообщения.
Сравнение SHA-1 и MD5

Оба алгоритма, SHA-1 и MD5, произошли от MD4, поэтому имеют много общего.

Можно суммировать ключевые различия между алгоритмами.

MD5 SHA-1
Длина дайджеста 128 бит 160 бит
Размер блока обработки 512 бит 512 бит
Число итераций 64 (4 цикла по 16 итераций в каждом) 80
Число элементарных логических функций 4 3
Число дополнительных констант 64 4

Сравним оба алгоритма в соответствии с теми целями, которые были определены для алгоритма MD4:

  1. Безопасность: наиболее очевидное и наиболее важное различие состоит в том, что дайджест SHA-1 на 32 бита длиннее, чем дайджест MD5. Если предположить, что оба алгоритма не содержат каких-либо структурированных данных, которые уязвимы для криптоаналитических атак, то SHA-1 является более стойким алгоритмом. Используя лобовую атаку, труднее создать произвольное сообщение, имеющее данный дайджест, если требуется порядка 2160 операций, как в случае алгоритма SHA-1, чем порядка 2128 операций, как в случае алгоритма MD5. Используя лобовую атаку, труднее создать два сообщения, имеющие одинаковый дайджест, если требуется порядка 280 как в случае алгоритма SHA-1, чем порядка 264 операций как в случае алгоритма MD5.
  2. Скорость: так как оба алгоритма выполняют сложение по модулю 232, они рассчитаны на 32-битную архитектуру. SHA-1 содержит больше шагов (80 вместо 64) и выполняется на 160-битном буфере по сравнению со 128-битным буфером MD5. Таким образом, SHA-1 должен выполняться приблизительно на 25% медленнее, чем MD5 на той же аппаратуре.
  3. Простота и компактность: оба алгоритма просты и в описании, и в реализации, не требуют больших программ или подстановочных таблиц. Тем не менее, SHA-1 применяет одношаговую структуру по сравнению с четырьмя структурами, используемыми в MD5. Более того, обработка слов в буфере одинаковая для всех шагов SHA-1, в то время как в MD5 структура слов специфична для каждого шага.
  4. Архитектуры little-endian и big-endian: MD5 использует little-endian схему для интерпретации сообщения как последовательности 32-битных слов, в то время как SHA-1 задействует схему big-endian. Каких-либо преимуществ в этих подходах не существует.
< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова