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

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

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

Расширение ключа

Как показывает рис. 2.21, алгоритм расширения ключей в Whirlpool полностью отличается от алгоритма в AES. Вместо того чтобы применять новый алгоритм создания ключей раунда, Whirlpool использует копию алгоритма шифрования (без предраунда), чтобы создать ключи раунда. Выход каждого раунда в алгоритме шифрования есть ключи для этого раунда. На первый взгляд это напоминает определение, где ключи раунда для алгоритма расширения ключа получаются из него самого. Откуда получается алгоритм расширения? Whirlpool изящно решил эту проблему, используя десять констант раунда ( RC ) как виртуальные ключи раунда для алгоритма расширения ключей. Другими словами, алгоритм расширения ключей применяет константы как ключи раунда. Алгоритм шифрования использует выход каждого раунда алгоритма расширения ключей как ключи раунда. Алгоритм генерирования ключей обрабатывает ключ шифра как исходный текст и зашифровывает его. Обратите внимание, что ключ шифра - также К0 для алгоритма шифрования.

 Расширение ключа шифра Whirlpool

увеличить изображение
Рис. 2.21. Расширение ключа шифра Whirlpool

Константы раунда. Каждая константа раунда RCr является матрицей 8 x 8, где только первая строка имеет значения, отличные от нуля. Остальная часть входов содержит все нули. Значения для первой строки в каждой матрице констант могут быть вычислены, используя преобразование SubBytes ( табл. 2.4).

RC round[строка, столбец] = Subbytes (8 (round -1) + столбец)   если  строка = 0 
RCround [строка, столбец] = 0   если строка ^ 0

Другими словами, RC1 использует первые восемь входов в таблице преобразования SubBytes ( табл. 2.4); RC2 использует вторые восемь входов, и т. д. рис. 2.22 показывает пример RC3, где первая строка - третьи восемь входов в таблице SubBytes.

Константы для третьего раунда

Рис. 2.22. Константы для третьего раунда

Итоги шифра Whirlpool.

В табл. 2.5 приведены основные характеристики шифра Whirlpool.

Таблица 2.5. Основные характеристики шифра Whirlpool
Размер блока: 512 бит
Размер ключа шифра: 512 бит
Число раундов: 10
Расширение ключа: использование шифра непосредственно с константами раунда в качестве ключей раунда
Подстановка: Преобразование SubBytes
Перестановка: Преобразование ShiftColumns
Смешивание: Преобразование MixRows
Константы раунда: кубические корни первых восьмидесяти простых чисел

Анализ

Хотя Whirlpool не был всесторонне изучен или проверен, он базируется на устойчивой схеме Миагучи-Пренеля - (Miyaguchi-Preneel), а для функции сжатия использует шифр, который основан на AES, относительно которой было доказано, что эта криптографическая система - очень стойкая к атакам. Кроме того, размер дайджеста сообщения тот же, что и в SHA-512. Поэтому, как ожидается, Whirlpool будет очень сильной функцией криптографического хэширования. Однако необходимы серьезные испытания и исследования, чтобы подтвердить это. Единственный установленный недостаток - Whirlpool, который использует шифр как функцию сжатия, не может быть так же эффективен, как SHA-512, особенно когда он реализуется на аппаратных средствах.

2.4. Рекомендованная литература

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

Книги

Несколько книг дают хороший обзор функций криптографического хэширования - [Sti06], [Sta06], [Sch99], [Mao04], [KPS02], [PHS03] и [MOV97] .

Сайты

Нижеследующие сайты дают больше информации о темах, рассмотренных в этой лекции.

2.5. Итоги

  • Все функции криптографического хэширования должны создавать дайджест фиксированного размера из сообщения переменного размера. Создание такой функции лучше всего может быть достигнуто применением итерации. Функция сжатия неоднократно используется, чтобы создать дайджест. Такая схема называется итеративной хэш-функцией.

  • Схема Меркеля-Дамгарда (Merkle-Damgard) - итеративная функция криптографического хэширования, устойчивая к коллизиям, если при этом функция сжатия устойчива к коллизиям. Эта схема сегодня - основа для многих функций криптографического хэширования.

  • Есть тенденция использовать два различных подхода в проектировании функции сжатия. В первом подходе функция сжатия сделана на пустом месте, т. е. разработана только для этой цели. Во втором подходе блочный шифр с симметричными ключами служит функцией сжатия.

  • Множество функций криптографического хэширования использует функции сжатия, которые сделаны на "пустом месте". Эти функции сжатия специально разработаны для этой цели, которую они обслуживают. Некоторые примеры: группа Дайджестов Сообщения - MD ; группа Алгоритмов Безопасного хэширования - SHA, RIPEMD и HAVAL.

  • Итеративная функция криптографического хэширования может использовать блочный шифр с симметричными ключами вместо функции сжатия. Были предложены несколько схем этого подхода, включая схему Рабина, схему Девиса-Мейера, схема Матиса-Мейера-Осеаса и Миагучи-Пренеля.

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

  • Другая перспективная функция криптографического хэширования - Whirlpool, которая одобрена NESSIE. Whirlpool - итеративная функция криптографического хэширования, основанная на схеме Миагучи-Пренеля, которая использует блочный шифр с симметричными ключами вместо функции сжатия. Блочный шифр - измененный и специализированный для этой цели шифр AES.

2.6. Набор для практики

Обзорные вопросы

  1. Определите функцию криптографического хэширования.
  2. Определите итеративную функцию криптографического хэширования.
  3. Опишите идею схемы Меркеля-Дамгарда и объяснить, почему эта идея важна для разработки функции криптографического хэширования.
  4. Перечислите представителей семейства хэш-функций, которые используют шифр как функцию сжатия.
  5. Перечислите некоторые схемы, который были разработаны, чтобы использовать блочный шифр как функцию сжатия.
  6. Перечислите главные особенности функции криптографического хэширования SHA-512. Какой типа функции сжатия используется в SHA-512?
  7. Перечислите некоторые особенности функции криптографического хэширования. Какая функция сжатия используется в Whirlpool?
  8. Сравните контрастные особенности SHA-512 и функций криптографического хэширования Whirlpool.

Упражнения

  1. В SHA-512 покажите значение поля длины в шестнадцатеричной форме для следующих длин сообщения:
    • 1000 битов
    • 10 000 битов
    • 1000 000 битов
  2. В Whirlpool покажите значение поля длины в шестнадцатеричной форме для следующих длин сообщения:
    • 1000 битов
    • 10 000 битов
    • 1000 000 битов
  3. Каково дополнение для SHA-512, если длина сообщения:
    • 5120 битов
    • 5121 бит
    • 6143 бита
  4. Каково дополнение для Whirlpool, если длина сообщения:
    • 5120 битов
    • 5121 бит
    • 6143 бита
  5. В каждом из следующих случаев покажите, что если два сообщения имеют одни и те же последние блоки, то их последний блок после дополнения поля длины один и тот же:
    • хэш-функция - SHA-512
    • хэш-функция - Whirlpool
  6. Вычислите G0 в табл. 2.2, используя седьмое простое число ( 17 ).
  7. Сравните функцию сжатия SHA-512 без последней операции (конечное сложение) с шифром Файстеля на 80 раундов. Показать совпадения и отличия.
  8. Функцию сжатия, используемую в SHA-512 (рис. 2.10), можно представить как шифр с процессом шифрования с 80 раундами, если слова от W0 до W79, представляют как ключи раунда в одной из схем, рссмотренных в этой лекции (Рабина, Дэвиса-Меейра, Мэтиса-Мейера-Осеаса или Миагучи-Пренеля). Что это напоминает? Подсказка: Подумайте об эффекте операции конечного сложения.
  9. Покажите, что SHA-512 может быть субъектом "атаки сведения к середине", если из функции сжатия удалена операция конечного сложения.
  10. Составить таблицу, такую же как табл. 2.5, чтобы сравнить AES и Whirlpool.
  11. Показать, что третья операция не может быть удалена из десятого раунда в шифре Whirlpool, но она должна быть удалена в шифре AES.
  12. Найдите результат операции RotR12 (x), если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468
  13. Найдите результат операции ShL12(x), если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468
  14. Найдите результат операции Rotate(x),если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468
  15. Найдите результат функции Conditional (x,y,z), если
    x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468
     y = 2234 5678 ABCD 2345 34564 5678 ABCD 2468
     z = 3234 5678 ABCD 2345 34564 5678 ABCD 2468
  16. Найдите результат функции Majority (x, y, z), если
    x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468
     y = 2234 5678 ABCD 2345 34564 5678 ABCD 2468
     z = 3234 5678 ABCD 2345 34564 5678 ABCD 2468
  17. Напишите процедуру (в псевдокоде) для вычисления RotRi (x) в SHA-512 (рис. 2.9).
  18. Напишите процедуру (в псевдокоде), чтобы вычислить ShLi (x) в SHA-512 (рис. 2.9).
  19. Напишите процедуру (в псевдокоде) для функции Conditional в SHA-512 (рис. 2.11).
  20. Напишите процедуру (в псевдокоде) для функции Rotate в SHA-512 (рис. 2.11),
  21. Напишите процедуру (в псевдокоде), чтобы вычислить начальный дайджест (значения A0 до H0 ) в SHA-512 (табл. 2.2).
  22. Напишите процедуру (в псевдокоде), чтобы вычислить восемьдесят констант в SHA-512 (табл. 2.3).
  23. Напишите процедуру (в псевдокоде) для алгоритма расширения слова в SHA-512, показанном на рис. 2.9. Рассмотрите два случая:
    • Использование массива 80 элементов, содержащих все слова.
    • Использование массива 16 элементов, содержащего только 16 слов одновременно.
  24. Напишите процедуру (в псевдокоде) для функции сжатия в SHA-512.
  25. Напишите процедуру (в псевдокоде), чтобы изменить блок 512 бит к 8 x8 матрицам состояний (рис. 2.4).
  26. Напишите процедуру (в псевдокоде), чтобы изменить состояний 8 8 матрицу для блоков 512 бит (рис. 2.4).
  27. Напишите процедуру (в псевдокоде) для преобразования SubBytes в шифре Whirlpool (рис. 2.16).
  28. Напишите процедуру (в псевдокоде) для ShiftColumns преобразования в шифре Whirlpool (рис. 2.18).
  29. Напишите процедуру (в псевдокоде) для MixRows преобразования в шифре Whirlpool (рис. 2.19).
  30. Напишите процедуру (в псевдокоде) для AddRoundKey преобразования в шифре Whirlpool (рис. 2.20).
  31. Напишите процедуру (в псевдокоде) для расширения ключа в шифре Whirlpool (рис. 2.21)
  32. Напишите процедуру (в псевдокоде), чтобы создать константы раунда в шифре Whirlpool (рис. 2.20).
  33. Напишите процедуру (в псевдокоде) для шифра Whirlpool.
  34. Напишите процедуру (в псевдокоде) для функции криптографического хэширования Whirlpool.
  35. Используйте Internet (или другие доступные ресурсы), чтобы найти информацию о SHA-1. Затем сравнить функцию сжатия в SHA-1 с такими же функциями в SHA-512. Каковы совпадения? Каковы отличия?
  36. Используйте Internet (или другие доступные ресурсы), чтобы найти информацию о следующих функциях сжатия и сравнить их с SHA-512:
    • SHA-224
    • SHA-256
    • SHA-384
  37. Используйте Internet (или другие доступные ресурсы), чтобы найти информацию о RIPEMD и сравнить ее с SHA-512.
  38. Используйте Internet (или другие доступные ресурсы), чтобы найти информацию о HAVAL и сравнить ее с SHA-512.
< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Евгений Виноградов
Евгений Виноградов

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

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

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

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989