Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора крипта экзамен.docx
Скачиваний:
36
Добавлен:
22.09.2019
Размер:
724.74 Кб
Скачать

41. Шифр Rijndael. Алгоритм выработки ключей.

Как процессу шифрования, так и процессу расшифрования предшествует операция формирования раундовых ключей. Раундовые ключи получаются из ключа шифрования посредством алгоритма выработки ключей. Генерация фактически нескольких ключей по начальному ключу обеспечивает лучшее перемешивание битов по сравнению с использованием одного ключа. Алгоритм содержит два компонента: расширение ключа (KeyExpansion) и выбор раундового ключа (RoundKeySelection).

Основополагающие принципы алгоритма:

- общее число битов раундовых ключей равно длине блока, умноженной на число раундов, плюс 1;

- ключ шифрования расширяется в расширенный ключ (ExpandedKey);

- раундовые ключи берутся из расширенного ключа следующим образом: первый раундовый ключ содержит первые Nb слов, второй – следующие Nb слов и т.д.

На высокоуровневом псевдокоде процедура KeyExpansion выглядит так:

procedureKeyExpansion;

begin

Копирование исходного ключа в первые строки w

Для каждой оставшейся строки w

begin

Создание новой строки по двум предыдущим

end;

end;

Где w-это массив раундовых ключей.

Подпрограмма RotWord принимает массив из 4 байтов и циклически сдвигает их на 1 позицию влево. Подпрограмма SubWord выполняет побайтовую замену заданной строки таблицы ключей w[] в соответствии с таблицей замен Sbox.

Замена выполняется следующим образом: входной байт, который замещается, разбивается на пару (х,у), задающую индексы в таблице замен Sbox. Чтобы найти замену, входной байт разбивается на левые 4 бита и правые 4 бита. Т.е индекс х получается сдвигом байта на 4 бита вправо оператором shr, а индекс у – выполнением логического оператора and со значением 00001111.

Подпрограмма KeyExpansion использует массив Rcon[], называемый таблицей итеративных констант. Каждая из этих констант содержит 4 байта, соответствующие строке таблицы ключей. В AES-подпрограмме KeyExpansion используется 11 итеративных констант, следовательно массив Rcon[] можно определить как массив размером 11 х 4, состоящий из элементов типа byte, а затем заполнить его константами. Левый байт каждой итеративной константы — это степень числа 2 в поле GF(28).

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

42. ХЭШ – функции

Хэш-функция должна обладать двумя основными свойствами:

1.Для данного значения h(M) должно быть невозможно найти аргумент М. Такая функция называется стойкой в смысле обращения или стойкой в сильном смысле.

2.Для данного аргумента М должно быть невозможно найти другой аргумент М такой, что h(M)=h(M’). Такая хэш функция называется стойкой в смысле вычисления коллизий или стойкой в слабом смысле.

Хэш-функция может использоваться:

1.Для создания сжатого образа сообщения, применяемого в механизме цифровой подписи

2.Для защиты пароля

3.Для построения кода аутентификации сообщений

4.Для контроля соответствия порядка вычислений, проводимых в некотором процессе

В первом и третьем случае необходимы функции стойкие в смысле коллизи а в остальных стойкими при обращении.

Схема вычисления значения h(M) хэш-функции h для сообщения М обычно включает в себя:

1.Алгоритм вычисления шаговой функции хэширования g

2.Итеративную процедуру вычисления хэш-функции h

Хэш-функции MD2, MD4 и MD5

Хэш-функции в этих алгоритмах преобразуют входное сообщение произвольной длины в сжатый 128-битный образ. Эти алгоритмы могут использоваться в совокупности с RSA.

Основные операции, которые используются в этих алгоритмах:

1.Сложение по модулю 232.

2.Циклический сдвиг.

3.Логические операции , , .

Алгоритм MD2 ориентирован на 8-разрядный процессор, отличается от MD4 и MD5 способом дополнения сообщения(с