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

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

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Функция сжатия

SHA-512 создает 512 битов дайджест-сообщения (восемь слов на 64 бита) из сообщения, которое состоит из множества блоков, где каждый блок содержит 1024 бита. Обработка каждого блока данных в SHA-512 включает 80 раундов. рис. 2.10 показывает общую схему сжатия функции. В каждом раунде содержание восьми предыдущих буферов - это одно слово из расширенного блока ( Wi ), и одна константа на 64 бита ( Ki ), смешанные вместе. Они обработаны затем, чтобы создать новое множество из восьми буферов. В начале обработки значения восьми буферов сохранены как восемь временных переменных. В конце обработки (после того как сделан шаг 79) эти значения добавляются к значениям, созданным на шаге 79. Мы вызываем эту последнюю операцию финальным сложением, как это показано на рисунке.

Функция сжатия в SHA-512

увеличить изображение
Рис. 2.10. Функция сжатия в SHA-512
Структура каждого раунда
Структура каждого раунда SHA-512

увеличить изображение
Рис. 2.11. Структура каждого раунда SHA-512

В каждом раунде создаются восемь новых, по сравнению с предыдущим раундом, значений буферов по 64 бита. На рис. 2.11 мы видим, что шесть буферов - точные копии предыдущего раунда, как это показано ниже:

A -> B     B -> C    C  -> D    E -> F   F -> G    G -> H

Два новых буфера, A и E, получают соответствующие значения от некоторых сложных функций, которые включают в себя некоторые значения предыдущих буферов, соответствующее слово для этого раунда (Wi) и константу для этого раунда (Ki). Рис. 2.11 показывает структуру каждого раунда.

Здесь есть два смесителя, три функции и несколько операторов. Каждый смеситель обрабатывает две функции. Описание функций и операторов приведено ниже.

  1. То, что мы называем мажоритарной функцией, является поразрядной функцией. Она использует три соответствующих бита в трех буферах ( A, B и C ) и вычисляет
    ( A_{j} \ AND \ B_{j}) \oplus  (B_{j} \ AND \ C_{j}) ) \oplus  (C_{j} \ AND \ A_{j})

    Результат - это значение, которое имеет большинство из трех бит. Если два или три бита равны единице (1) , то результат имеет значение бит 1; иначе он равен 0.

    Функция, которую мы называем условной функцией ( Conditional ) - также поразрядная функция. Она использует три бита, которые содержатся в трех буферах ( E, F и G ), и вычисляет

    (E_{j } \ AND \ F_{j}) \oplus  (NOT \ E_{j } \ AND \ G_{j})

    Результат подчиняется логике "Если E, то F ; иначе G ".

  2. Функция "циклическое перемещение" (Rotate) обрабатывает три значения одного и того же буфера ( A или E ) и применяет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ с результатом мажоритарной функции.
    Rotate (A): RotR_{28 }(A) \oplus  RotR_{34} (A) \oplus  RotR_{29}(A) 
\\
Rotate (E): RotR_{28 }(A) \oplus  RotR_{34} (E) \oplus  RotR_{29}(E)
  3. Функция "циклическое перемещение вправо" (RotRi (x) ) - та же самая, которую мы использовали в процессе расширения слова.
  4. Оператор сложения, применяемый в процессе, - сложение по модулю 264. Он означает результат сложения двух или больше буферов, содержащих всегда слово на 64 бита.
  5. Есть 80 констант, K0 к K79, каждая по 64 бита, как показано в табл. 2.3 в шестнадцатеричной форме (четыре в каждой строке таблицы). Аналогично начальным значениям для восьми буферов, эти значения вычислены из первых 80 простых чисел ( 2, 3..., 409 ).
Таблица 2.3. Восемьдесят констант, используемых для восьмидесяти раундов в SHA-512
428A2F98D728AE22 7137449123EF65CD B5COFBCFEC4D3B2F E9B5DBA58189DBBC
3956C25BF348B538 59F111F1B605D019 923F82A4AF194F9B AB1C5ED5DA6D8118
D807AA98A3030242 12835B0145706FBE 243185BE4EE4B28C 550 C7DC3D5FFB4E2
72BE5D74F27B896F 80DEB1FE3B1696B1 9BDC06A725C71235 C19 BF1 74CF 692694
E49B69C19EF14AD2 EFBE4786384F25E3 OFC19DC68B8CD5B5 240 CA1CC77AC9C65
2DE92C6F592B0275 4A7484AA6EA6E483 5CBOA9DCBD41FBD4 76F 9 8 8DA831 153B5
983E5152EE66DFAB A831C66D2DB43210 B00327C898FB213F BF5 97FC7 BEEF0EE4
C6EOOBF33DA88FC2 D5A79147930AA725 06CA6351E003826F 142 92 967 0AOE6E70
27B70A8546D22FFC 2E1B21385C26C926 4D2C6DFC5AC42AED 533 80 D1 39D95B3DF
650A73548BAF63DE 766AOABB3C77B2A8 81C2C92E47EDAEE6 92722 C8 514 823 53B
A2BFE8A14CF10364 A81A664BBC423001 C24B8B70DOF89791 C76C5 1A 30 6 54BE30
D192E819D6EF5218 D69906245565A910 F40E35855771202A 106AA 07 032BBD1B8
19A4C116B8D2DOC8 1E376C085141AB53 2748774CDF8EEB99 34BOBCB 5E 19B4 8A8
391COCB3C5C95A63 4ED8AA4AE3418ACB 5B9CCA4F7763E373 682 E 6FF 3D6B2B8A3
748F82EE5DEFB2FC 78A5636F43172F60 84C87814A1FOAB72 8CC7 020 81A 6439EC
90BEFFFA23631E28 A4506CEBDE82BDE9 BEF9A3F7B2C67915 C671 78F 2E372532B
CA273ECEEA26619C D186B8C721COC207 EADA7DD6CDEOEB1E F57D 4F7 FEE6E178
06F067AA72176FBA OA637DC5A2C898A6 113F9804BEF90DAE 1B71 0B3 5131C471B
28DB77F523047D84 32CAAB7B40C72493 3C9EBEOA15C9BEBC 431D 67C 49C100D4C
4CC5D4BECB3E42B6 4597F299CFC657E2 5FCB6FAB3AD6FAEC 6C44 198 C4A475 817

Каждое значение - дробная часть кубического корня из соответствующего простого числа после преобразования этого числа к двоичной форме, сохраняются только первые 64 бита. Например, 80-е простое число - ( 409 ). Кубический корень (409) 1/3 = 7,42291412044. Преобразовывая это число к двоичному виду только с 64 битами в дробной части, мы получаем

(111,0110 1100 0100 0100...0111) 2 -> (7,6C44198C4A475817).

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

Пример 2.7

Мы применяем мажоритарную функцию к значениям буферов A, B и C. Если крайние левые шестнадцатеричные цифры этих буферов - 0x7, 0xA и 0xE соответственно, то какая цифра будет крайней левой частью результата?

Решение

Цифры в двоичной форме - 0111, 1010 и 1110.

  • Первые биты - 0, 1 и 1. Мажоритарная функция равна 1. Мы можем доказать это, используя определение мажоритарной функции:
    (0 \ AND \ 1) \oplus  (1 \ AND \ 1) \oplus  C (1 \ AND  \ 0) = 0  \oplus  1 \oplus  0 = 1
  • Вторые биты - 1, 0 и 1. Мажоритарная функция равна 1 .
  • Третьи биты - 1, 1 и 1. Мажоритарная функция равна 1.
  • Четвертые биты - 1, 0 и 0. Мажоритарная функция равна 0. Результат - 1110, или 0xE в шестнадцатеричной форме.

Пример 2.8

Мы применяем условную функцию ( Conditional ) для буферов E, F и G. Если крайние левые шестнадцатеричные цифры этих буферов - 0x9, 0xE и 0xF соответственно, то какая цифра будет крайней левой частью результата?

Решение

Цифры в двоичной форме - 1001, 1110 и 1111.

  • Первые биты - 1,1 и 1. Следовательно, E1 = 1, результат - F1, который равен 1. Чтобы доказать результат, мы можем также использовать определение функции Condition:
    (1 \ AND \ 1) \oplus  (NOT \ 1 \ AND \ 1) = 1 \oplus  0 = 1
  • Вторые биты - 0, 0 и 1. Следовательно, E2 - 0, результат - F3, который равен 1.
  • Третьи биты образовывают дугу 0, 1 и 1. Следовательно, E3 - 0, результат - G3, который равен 1.
  • Четвертые биты - 1, 0 и 1. Следовательно, E4 - 1, результат - F4, который равен 0. Результат - 1110, или 0x1 в шестнадцатеричной форме.
Анализ

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

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

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

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

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