Криптографические хэш-функции

Содержание

Слайд 2

Семейство алгоритмов SHA Семейство алгоритмов SHA (Secure Hash Algorithm) включает в

Семейство алгоритмов SHA

Семейство алгоритмов SHA (Secure Hash Algorithm) включает в себя

5 алгоритмов вычисления хэш-функции: SHA–1, SHA–224, SHA–256, SHA–384, SHA–512.
Четыре последние хэш-функции объединяются в подсемейство SHA–2. Алгоритм SHA–1 разработан Агентством национальной безопасности США (NSA) в 1995 году.
Алгоритмы подсемейства SHA–2 также разработаны Агентством национальной безопасности США и опубликованы Национальным институтом стандартов и технологий в федеральном стандарте обработки информации FIPS PUB 180–2 в августе 2002 года.
Эти алгоритмы используются в SSL, SSH, и т.д…, при передаче файлов по сети (BitTorrent).

Однонаправленные хэш-функции

Слайд 3

Между собой алгоритмы отличаются криптостойкостью, которая обеспечивается для хэшируемых данных, а

Между собой алгоритмы отличаются криптостойкостью, которая обеспечивается для хэшируемых данных, а

также размерами блоков и слов данных, используемых при хэшировании. Основные отличия алгоритмов можно представить в виде таблицы :
Слайд 4

При описании алгоритма под термином слово понимается 32-битная последовательность (SHA-1, SHA-224,

При описании алгоритма под термином слово понимается 32-битная последовательность (SHA-1, SHA-224,

SHA-256), а под термином байт – 8-битная последовательность.
Последовательность бит может быть интерпретирована естественным образом как последовательность байт, где каждая последовательная группа из 8 бит представляет собой 1 байт. Внутри байта биты располагаются следующим образом: сначала (слева) перечисляются более значимые биты (старшие биты, соответствующие более высокой степени двойки), а в конце (справа) оказываются наименее значимые биты (младшие). Такой порядок расположения бит (или байт) называется big-endian (порядок от старшего к младшему).
Слайд 5

Про циклический сдвиг пример и операции пример

Про циклический сдвиг пример и операции пример

Слайд 6

Слайд 7

Описание алгоритма.

Описание алгоритма.

Слайд 8

Слайд 9

Дальнейшие шаги специфичны для каждого алгоритма Алгоритм SHA–1

Дальнейшие шаги специфичны для каждого алгоритма

Алгоритм SHA–1

Слайд 10

Слайд 11

Слайд 12

Шаг 5. Результат. Результатом вычисления хэш-функции от всего сообщения является: ǁ

Шаг 5. Результат.
Результатом вычисления хэш-функции от всего сообщения является:
ǁ

— конкатенация- операция склеивания объектов линейной структуры, обычно строк.
Конкатенация — бинарная операция, определённая на словах данного алфавита. Обозначения:
Примеры значений хэш-функции (в 16-ричном виде):
SHA1 ("") = da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709
SHA1 ("abc") = a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d
SHA1 ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") = 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1
Слайд 13

Алгоритм SHA–256

Алгоритм SHA–256

Слайд 14

Слайд 15

Слайд 16

Примеры значений хэш-функции (в 16-ричном виде): SHA256 ("") = e3b0c442 98fc1c14

Примеры значений хэш-функции (в 16-ричном виде):
SHA256 ("") = e3b0c442 98fc1c14

9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855
SHA256 ("abc") = ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad
SHA256 ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") = 248d6a61 d20638b8 e5c02693 0c3e6039 a33ce459 64ff2167 f6ecedd4 19db06c1
Слайд 17

MD4 - это однонаправленная хэш-функция, изобретенная Роном Ривестом. MD обозначает Message

MD4 - это однонаправленная хэш-функция, изобретенная Роном Ривестом. MD обозначает Message

Digest (краткое изложение сообщения), алгоритм для входного сообщения выдает 128-битовое хэш-значение, или краткое изложение сообщения.
Ривест описал цели, преследуемые им при разработке алгоритма:
Безопасность. Вычислительно невозможно найти два сообщения с одинаковым хэш-значением. Вскрытие грубой силой является самым эффективным.
Прямая безопасность. Безопасность MD4 не основывается на каких-либо допущениях, например, предположении о трудности разложения на множители.
Скорость. MD4 подходит для высокоскоростных программных реализаций. Она основана на простом наборе битовых манипуляций с 32-битовыми операндами.

MD4

Слайд 18

Простота и компактность. MD4 проста, насколько это возможна, и не содержит

Простота и компактность. MD4 проста, насколько это возможна, и не содержит

больших структур данных или сложных программных модулей.
Удачна архитектура. MD4 оптимизирована для микропроцессорной архитектуры (особенно для микропроцессоров Intel), для более крупных и быстрых компьютеров можно выполнить любые необходимые изменения.
После первого появления алгоритма Берт ден Боер и Антон Босселаерс (Antoon Bosselaers) достигли успеха при криптоанализе последних двух из трех этапов алгоритма. Ральфу Мерклу совершенно независимо удалось вскрыть первые два этапа. Хотя все эти вскрытия не были распространены на полный алгоритм, Ривест усилил свою разработку. В результате появилась MD5.
Слайд 19

MD5 англ. Message Digest 5 – 128-битный алгоритм хеширования, разработанный профессором

MD5

англ. Message Digest 5 – 128-битный алгоритм хеширования, разработанный профессором Рональдом

Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 г. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины. Является улучшенной в плане безопасности версией MD4. Используется для проверки подлинности опубликованных сообщений посредством сравнения дайджеста сообщения с опубликованным хэшем. Эту операцию называют «проверкой хэша». Алгоритм MD5 разработан таким образом, чтобы быть достаточно быстрым для выполнения на 32-разрядном процессоре. Алгоритм не требует больших таблиц подстановок и может быть закодирован весьма компактно

Алгоритм вычисления хеша.

Слайд 20

1. Выравнивание потока. В конец исходного сообщения, длиной L, дописывают единичный

1. Выравнивание потока.
В конец исходного сообщения, длиной L, дописывают единичный

бит, затем необходимое число нулевых бит так, чтобы новый размер L' был сравним с 448 по модулю 512 (L’ mod 512 = 448).
2. Добавление длины сообщения.
К модифицированному сообщению дописывают 64-битное представление длины данных (количество бит в сообщении). Т.е. длина сообщения T становится кратной 512 (T mod 512 = 0). Если длина исходного сообщения превосходит 264 - 1, то дописывают только младшие 64 бита. Кроме этого, для указанного 64-битного представления длины вначале записываются младшие 32 бита, а затем старшие 32 бита.
Слайд 21

Последовательность байт может быть интерпретирована как последовательность 32-битных слов, где каждая

Последовательность байт может быть интерпретирована как последовательность 32-битных слов, где каждая

последовательная группа из 4 байт представляет собой 1 слово. Внутри слова байты располагаются следующим образом: сначала идут наименее значимые байты, затем – наиболее. Такой порядок расположения бит (или байт) называется little-endian (порядок от младшего к старшему).
Например, пусть есть последовательность бит (выделена полужирным шрифтом):
Слайд 22

3. Инициализация буфера. Для вычислений инициализируются 4 переменных размером по 32

3. Инициализация буфера.
Для вычислений инициализируются 4 переменных размером по 32 бита

и задаются начальные значения (шестнадцатеричное представление):
A = 67 45 23 01;
B = EF CD AB 89;
C = 98 BA DC FE;
D = 10 32 54 76.
В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором
4. Вычисление хеша в цикле.
Исходное сообщение разбивается на блоки T, длиной 512 бит. Для каждого блока в цикле выполняется процедура, приведенная на рис. Результат обработки всех блоков исходного сообщения в виде объединения 32-битных значений переменных ABCD и будет являться хешем.
Слайд 23

Шаг основного цикла вычисления хеша

Шаг основного цикла вычисления хеша

Слайд 24

В каждом раунде над переменными ABCD и блоком исходного текста Т

В каждом раунде над переменными ABCD и блоком исходного текста Т

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

3) ki - целая часть константы, определяемой по формуле ki =

3) ki - целая часть константы, определяемой по формуле
ki = 232

* | sin(i + 16 * (r - 1)) |,
где i – номер итерации цикла (i = 1..16);
r – номер раунда (r = 1..4).
Аргумент функции sin измеряется в радианах.
4) ⊞ – сложение по модулю 232.
5) <<< si – циклический сдвиг влево на si разрядов.
Используемая 32-битовая часть блока исходного сообщения tj и величина циклического сдвига влево si зависят от номера итерации и приведены в следующей таблице.

Условные обозначения.
1) RF - раундовая функция, определяемая по следующей таблице.
2) tj - j-ая 32-битовая часть блока исходного сообщения Т с обратным порядком следования байт;

Слайд 26

Величины, используемые на шаге цикла раунда Раундовые функции RF

Величины, используемые на шаге цикла раунда

Раундовые функции RF