АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Преобразование раунда

Читайте также:
  1. XVIII Преобразование те карст в созерцанием
  2. Билинейное Z – преобразование.
  3. Вопрос –18 Преобразование мо.
  4. Вопрос. Z – преобразование.
  5. Вопрос. Быстрое преобразование Фурье.
  6. Вопрос. Дискретное преобразование Фурье ДПФ (DFT)
  7. Вопрос. Прямое преобразование (переход от сигнала к спектру).
  8. Детерминированное моделирование и преобразование факторных систем
  9. Мышление – психологический процесс познания, связанный с открытием субъективно нового знания, с решением задач, с творческим преобразованием действительности.
  10. Отсроченное преобразование
  11. Пётр I: борьба за преобразование традиционного общества в России
  12. Последовательность преобразований отдельного раунда

Преобразование раунда состоит из четырех различных преобразований. В нотации на псевдо С это можно записать следующим образом:

Round (State, RoundKey){ ByteSub (State); ShiftRow (State); MixColumn (State); AddRoundKey (State, RoundKey); }

Заключительный раунд алгоритма немного отличается и выглядит следующим образом:

FinalRound (State, RoundKey){ ByteSub (State); ShiftRow (State); AddRoundKey (State, RoundKey);}

Как мы видим, заключительный раунд эквивалентен остальным, за исключением того, что отсутствует слой MixColumn.

Преобразование ByteSub

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

  1. Во-первых, берется мультипликативная инверсия в GF (28) с определенным выше представлением. '00' отображается сам в себя.
  2. Затем применяется афинное (в GF (2)) преобразование, определяемое следующим образом:

Применение описанного S-box ко всем байтам состояния обозначается как

ByteSub (State)

На рисунке 6.2 показан результат применения преобразования ByteSub к State.


Рис. 6.2. Применение ByteSub для каждого байта в State

 

Инверсия ByteSub есть применение байтовой подстановки в соответствии с инверсной таблицей. Это получается инверсией афинного отображения и мультипликативной инверсией в GF (28).

Преобразование ShiftRow

В ShiftRow строки состояния циклически сдвигаются на различные значения. Нулевая строка не сдвигается. Строка 1 сдвигается на С1 байтов, строка 2 на С2 байтов, строка 3 на С3 байтов. Величины С1, С2 и С3 зависят от Nb. Значения приведены в следующей таблице.

Таблица 6.2. Величина сдвига в зависимости от длины блока
Nb С1 С2 С3
       
       
       

Операция сдвига строк на указанные значения обозначается как

ShiftRow (State)

Инверсией для ShiftRow является циклический сдвиг трех нижних строк соответственно на Nb - С1, Nb - С2 и Nb - С3 байт, чтобы байт в позиции j в строке i перемещался в позицию (j + Nb - Ci) mod Nb.

Преобразование MixColumn

В MixColumn столбцы состояния рассматриваются как полиномы в GF (28) и умножаются по модулю х4 + 1 на фиксированный полином:

c(x) = '03' x3 + '01' x2 + '01' x + '02'

Данный полином является взаимнопростым с х4 + 1 и, следовательно, инвертируем. Как было описано выше, это может быть записано в виде умножения матрицы. Пусть b(x) = c(x) a(x)

Применение данной операции ко всем столбцам состояния обозначается как

MixColumn (State)

Инверсия MixColumn является аналогичным MixColumn. Каждый столбец преобразуется умножением его на полином d(x), определяемый следующим образом:

('03' x3 + '01' x2 + '01' x + '02') d(x) = '01'

В результате получаем

d(x) = '0B' x3 + '0D' x2 + '09' x + '0E'

Сложение с ключом раунда

Выполняется операция побитового XOR ключа раунда с текущим состоянием. Длина ключа раунда равна длине блока Nb. Данное преобразование обозначается как

AddRoundKey (State, RoundKey)

AddRoundKey является инверсией самого себя.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)