Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Лекция 2:

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

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

2.2. SHA-512

версия SHA (Secure Hash Algorithm) - алгоритм безопасного хэширования с 512-битовым дайджестом сообщения. Эта версия похожа на другие алгоритмы этого семейства, которые основаны на схеме Меркеля-Дамгарда. Мы выбрали для рассмотрения особую версию. Она самая поздняя, обладает более полной структурой, чем другие, и наиболее длинным дайджестом сообщения. Если понять эту версию, нетрудно будет усвоить структуру других версий.

Введение

SHA-512 создает дайджест из сообщения, содержащего много блоков. Каждый блок имеет длину 1024 бита, как это показано на рис. 2.6.

Создание дайджеста сообщения SHA-512

Рис. 2.6. Создание дайджеста сообщения SHA-512

Дайджест вначале устанавливается на определенное заранее значение 512 битов. Алгоритм смешивает это начальное значение с первым блоком сообщения, чтобы создать первый промежуточный дайджест сообщения 512 битов. Этот дайджест затем смешивается со вторым блоком, чтобы создать второй промежуточный дайджест. Наконец, (N - l) -ый дайджест смешивается с N -ым блоком - они создают N -ый дайджест. Когда последний блок обработан, результирующий дайджест - это дайджест полного сообщения.

Подготовка сообщения

SHA-512 требует, чтобы длина первоначального сообщения была меньше, чем 2128 битов. Если длина сообщения равна или больше, чем 2128, оно не будет обработано SHA-512. Это обычно не проблема, потому что 2128 битов превосходят возможную сегодня полную емкость хранения любой системы.

SHA-512 создает дайджест сообщения на 512 битов из сообщения меньшего, чем 2128.

Пример 2.1

Этот пример показывает, что ограничение длины сообщения SHA-512 - не серьезная проблема. Предположим, что мы должны передать сообщение длиною 2128 бита в секунду. Какое время потребуется для системы коммуникаций со скоростью передачи данных 264 бита в секунду, чтобы передать это сообщение?

Решение

Системы коммуникаций, которая может передать 264 бита в секунду, пока еще не существует. Даже если бы она была, потребовалось бы много лет, чтобы передать это сообщение. Отсюда ясно, что мы не должны волноваться по поводу ограничения длины сообщения для SHA-512.

Пример 2.2

Этот пример также касается длины сообщения в SHA-512. Сколько страниц занимает сообщение 2128 бит?

Предположим, что символ имеет длину 32 или 26 бит. Каждая страница - меньше, чем 2048, или приблизительно 212, символов. Тогда 2128 битов требуют по крайней мере 2128/218, или 2110 страниц. И снова ясно, что мы не должны волноваться об ограничении на длину сообщения.

Поле длины и заполнение

Прежде чем дайджест сообщения может быть создан, SHA-512 требует сложения поля длины - это целое число без знака на 128 битов, которое определяет длину сообщения в битах, - с сообщением. Это длина первоначального сообщения перед заполнением. Поле целого числа без знака 128 битов можно определить как число между 0 и 2128 - 1, которое является максимальной длиной сообщения, принятого в SHA-512. Поле длины определяет длину первоначального сообщения перед его сложением или заполнением (рис. 2.7).

Заполнение и поле длины в SHA-512

Рис. 2.7. Заполнение и поле длины в SHA-512

Перед сложением поля длины мы должны дополнить первоначальное сообщение, чтобы сделать длину кратной 1024. Для поля длины резервируется 128 битов, как показано на рис. 2.7. Длина области заполнения может быть рассчитана следующим образом. Пусть |M| - длина первоначального сообщения и |P| - длина поля заполнения.

( M  +  P  + 128) = 0 mod 1024 ->   P   = (- M   - 128) mod 1024

Формат заполнения - это одна 1, сопровождаемая необходимым числом нулей (0).

Пример 2.3

Какое число битов заполнения необходимо, если длина первоначального сообщения - 2590 битов?

Решение

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

P = (-2590 -128) mod 1024 = -2718 mod  1024 = 354

Заполнение состоит из одной 1, сопровождаемой 353 нулями.

Пример 2.4

Нужно ли заполнение, если длина первоначального сообщения уже кратна 1024 битам?

Решение

Да, нужно, потому что мы должны добавить поле длины. Заполнение необходимо, чтобы сделать и новый блок кратным 1024 битам.

Пример 2.5

Каково минимальное и максимальное число битов заполнения, которые можно добавить к сообщению?

Решение

Минимальная длина заполнения - 0, и это случается, когда (-M - 128) mod 1024 = 0 ; тогда |M| = -128 mod 1024 = 896 mod 1024 бит. Другими словами, последний блок в первоначальном сообщении - 896 битов. Мы добавляем поле длины на 128 битов, чтобы сделать блок полным.

Максимальная длина заполнения - 1023, и это случается, когда (- M - 128) = 1023 mod 1024. Это означает, что длина первоначального сообщения - M = (-128 - 1023) mod 1024 или M = 897 mod 1024. В этом случае мы не можем просто добавить область длины, потому что длина последнего блока будет превышать на один бит число 1024. Так что мы нуждаемся в заполнении 127 битами, чтобы закончить этот блок и создать второй блок заполнения 896 битов. Теперь можно добавить поле длины, чтобы сделать этот блок полным.

Слова

SHA-512 оперирует словами; он - ориентируемый на слово. Слово определено длиной 64 бита. Это означает, что после того как заполнение и поле длины добавляются к сообщению, каждый блок сообщения состоит из шестнадцати слов по 64 бита. Дайджест сообщения также образуется из слов по 64 бита, но дайджест сообщения - только восемь слов, и слова обозначают A, B, C, D, E, F, G и H, как показано на рис. 2.8.

Блок сообщения и дайджест в виде отдельных слов

Рис. 2.8. Блок сообщения и дайджест в виде отдельных слов
SHA-512 - алгоритм, ориентированный на слово. Каждый блок - 16 слов; в дайджесте - только 8 слов.
Расширение слова

Перед обработкой каждый блок сообщения должен быть расширен. Блок образован из 1024 битов, или шестнадцати слов по 64 бита. Как мы увидим позже, в фазе обработки нам нужно 80 слов. Так что блок с 16-ю словами должен быть расширен до 80 слов от W0 до W79. рис. 2.9 показывает процесс расширения слова. Блок на 1024 бита порождает первые слова; остальная часть слов получается от уже сделанных слов согласно операциям, которые показаны на рисунке.

 Расширение слова в SHA -52

увеличить изображение
Рис. 2.9. Расширение слова в SHA -52

Пример 2.6

Показать, как получить W60.

Решение

Каждое слово в диапазоне W16 до W79 получено в результате обработки четырех слов, созданных предварительно на предыдущих шагах. W60 получено как

W_{60} = W_{44} \oplus  RotShift _{1-8-7} (W_{45}) \oplus   W_{53} \oplus  RotShift _{19 -61-6}(W_{58})
Инициализация дайджеста сообщения

Алгоритм использует восемь констант для инициализации дайджеста сообщения. Мы обозначаем их от A0 до H0, что соответствует обозначению слов, используемых для дайджеста. табл. 2.2 показывает значение этих констант.

Таблица 2.2. Значение констант при инициализации дайджеста сообщения SHA-512
Буфер Значение (шестнадцатеричное) Буфер Значение (шестнадцатеричное)
A0 6A09E667F3BCC908 E0 510E527FADE682D1
B0 3B67AE8584CAA73B F0 9B05688C2B3E6C1F
C0 3C6EF372EF94F828 G0 1F83D9ABFB41BD6B
D0 A54FE53A5F1D36F1 H0 5BEOCD19137E2179

Читатель может задаться вопросом, откуда взяты эти значения. Они рассчитаны из первых восьми простых чисел (2, 3, 5, 7, 11, 13, 17 и 19). Каждое значение - дробная часть квадратного корня соответствующего простого числа после преобразования к двоичной форме и сохранения только первых 64 битов. Например, восьмое простое число - 19 имеет квадратный корень (191/.2) = 4,35889894354. Преобразовывая число к двоичной форме только с 64 битами в дробной части, мы имеем

(100.0101 1011 1110... 1001)2 -> (4,5BEOCD19137E2179)16

SHA-512 сохраняет дробную часть (5BEOCD19137E2179)16 как целое число без знака.

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????