Помощь в учёбе, очень быстро...
Работаем вместе до победы

Алгоритм развертки ключа

РефератПомощь в написанииУзнать стоимостьмоей работы

Где X — определенное равенством (7.22) преобразование наложения ключа ki, a S — нелинейная перестановка на множестве F228, определенная равенством (7.23). При этом, у каждого шифра используется собственная нелинейная перестановка 7г: F8 —> F8. Пусть к € F56 — ключ, представленный в виде конкатенации к = fciHfo, где значения к, /сг € F28 являются начальными элементами последовательности… Читать ещё >

Алгоритм развертки ключа (реферат, курсовая, диплом, контрольная)

Алгоритм развертки ключа блочного шифра «Кузнечик» является его изюминкой и представляет собой 8-ми раундовую сеть Фейстеля, реализованную на блоке длиной 256 бит.

Для произвольного с € F<228 и а — аа2 € F^56 определим отображение F (c, а) : F^28 х F^56 -" F^56 равенством.

Алгоритм развертки ключа.

где R — раундовос преобразование, определенное в (7.25).

Пусть к € F^56 — ключ, представленный в виде конкатенации к = fciHfo, где значения к, /сг € F^28 являются начальными элементами последовательности раундовух ключей к,…, /сщ. Алгоритм развертки ключа определяется равенством.

Алгоритм развертки ключа.

для всех г — 1,…, 4. Последовательность констант сь…, сз2, используемых в данном равенстве, определяется в [3J.

Равенство (7.26) позволяет получить из одной пары раундовых ключей другую, следующую за ней пару. Сравнивая данное равенство с соотношениями (7.5), легко видеть, что равенство (7.26) есть сеть Фейстеля, раундовыми ключами в которой служат константы ci,. •, С32.

Сравнение алгоритма «Кузнечик» с алгоритмом AES

Представляет интерес провести сравнение между новым российским алгоритмом шифрования «Кузнечик» и алгоритмом шифрования Rijndael, принятым в качестве стандарта AES. Такое сравнение корректно, поскольку оба блочных шифра обладают одинаковой длиной блока 128 бит и допускают использование ключей длины 256 бит.

Согласно данному нами описанию, принципиальное различие данных шифров заключается в алгоритме развертки ключа. Алгоритм развертки AES представляет простую собой процедуру, см. стр. 235, в которой раундовые ключи формируются как конкатенации 32-х битных «слов», вырабатываемых при помощи рекуррентной процедуры. Алгоритм «Кузнечик» использует для развертки ключа последовательное применение преобразования F, см. стр. 243, которое представляет собой сеть Фейстеля. При этом каждое применение преобразования F позволяет выработать сразу пару раундовых ключей.

Алгоритмы зашифрования обоих шифров очень похожи и могут быть представлены в виде последовательного применения г раундовых преобразований R (ki, a), i = где г = 14 для алгоритма AES и г = 9 для алгоритма «Кузнечик».

Преобразование R (ki, a) имеет вид.

Алгоритм развертки ключа.

где X — определенное равенством (7.22) преобразование наложения ключа ki, a S — нелинейная перестановка на множестве F228, определенная равенством (7.23). При этом, у каждого шифра используется собственная нелинейная перестановка 7г: F8 —> F8.

Преобразование L для обоих шифров может быть представлено в виде умножения вектора a ? F228 на квадратную матрицу С. Действительно, для алгоритма AES представим вектор а € F228 в виде конкатенации а = ai|| • • • ац, где аь…, aie принадлежат полю F2s, порожденному многочленом д (х) = ж8 + х4 + х3 + х + 1.

Комбинируя преобразования ShiftRows и MixColumns, мы можем записать матрицу С в виде.

Алгоритм развертки ключа.

где константы ао,…, аз € F2" и определены в (7.19). Можно заметить, что последовательность элементов в строках матрицы С совпадает с последовательностью элементов матрицы, введенной нами в равенстве (7.20). При этом позиции, на которых располагаются константы ао,…, аз, переставлены в соответствии с перестановкой ShiftRows, заданной равенством (7.18).

Аналогично, для алгоритма «Кузнечик» запишем вектор а Е F228 в виде конкатенации а = ai|| • • • ||ai6, где а,…, aie принадлежат полю F2s, порожденному многочленом д (х) = ж8+а:76-|-ж-Ь1. Запишем отображение A (a): F228 —> F8, определенное равенством (7.24), в общем виде, то есть.

Алгоритм развертки ключа.

и не будем забывать, что операции сложения и умножения выполняются в поле F28. Отображение Л, задающее один такт работы линейного регистра сдвига, принимает вид Алгоритм развертки ключа.

Тогда после первого такта работы линейного регистра сдвига его заполнение принимает вид.

Алгоритм развертки ключа.

после второго.

Алгоритм развертки ключа.

или, комбинируя слагаемые при ai,…, ai6,.

Алгоритм развертки ключа.

Аналогично после третьего такта работы заполнение линейного регистра сдвига принимает вид.

Алгоритм развертки ключа.

или, комбинируя слагаемые при ai,…, aie,.

Алгоритм развертки ключа.

где? = Ai5 + A?6.

Выполнив 16 тактов работы линейного регистра сдвига, мы получим, что каждая ячейка его заполнения L (a) может быть выражена в виде линейной комбинации элементов ai,…, aie с некоторыми коэффициентами. Эти коэффициенты могут быть представлены как значения некоторых многочленов, принимающих значения на величинах Ai,…, Ai6. Таким образом, мы можем представить линейное преобразование L алгоритма «Кузнечик» в виде умножения матрицы на вектор:

Алгоритм развертки ключа.

где матрица С принимает вид:

Алгоритм развертки ключа.

Как видно из полученного представления, алгоритм «Кузнечик» обладает плотной матрицей ?, то есть матрицей, не содержащей большого числа нулей11. Матрица алгоритма AES является разреженной, то есть в основном состоящей из нулей. Повидимому, такое различие в матрицах линейного преобразования и привело к тому, что число раундов алгоритма «Кузнечик» существенно меньше, чем в алгоритме AES.

Упражнение 7.5.2. Воспользовавшись введенным нами ранее понятием сопровождающей матрицы, см. раздел 6.1.1, предъявите алгоритм быстрого вычисления используемой в алгоритме «Кузнечик» матрицы С.

Упражнение 7.5.3. Предложите алгоритм быстрой реализации линейного преобразования L алгоритма «Кузнечик», использующего умножение на матрицу С.

Показать весь текст
Заполнить форму текущей работой