Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по методам и средствам ЗИ.doc
Скачиваний:
29
Добавлен:
23.09.2019
Размер:
831.49 Кб
Скачать

Нелинейное преобразование

Нелинейное преобразование F матрицы данных состоит из трех шагов: замены байтов матрицы на новые значения, циклического сдвига строк матрицы влево, умножения матрицы данных слева на постоянную матрицу-циркулянт M:

Последовательная схема преобразования данных показана на рисунках 8.6, 8.7, 8.8.

Побайтовая замена.

a00

a01

a02

a03

S - box

b00

b01

b02

b03

a10

a 11

a12

a13

b10

b11

b12

b13

a20

a21

a22

a23

b20

b21

b22

b23

a30

a31

a32

a33

b30

b31

b32

b33

Рис.8.6. Схема побайтовой замены матрицы

В ходе побайтовой замены каждый байт матрицы данных заменяется на новое значение того же размера, индексируя общий для всех байтов вектор замен S 8-в-8 бит:

aij = S[bij], 1 ≤ i ≤ 4, 1 ≤ j n,

где n - число столбцов матрицы данных - 4, 6 или 8.

Сдвиг строк в двумерном массиве на различные смещения.

В ходе данной операции каждая строка матрицы данных, кроме первой, циклически сдвигается влево на определенное число позиций, зависящее от номера строки и от размера блока данных:

a00

a01

a02

a 03

нет сдвига

a00

a01

a02

a03

a10

a11

a12

a13

циклический сдвиг на1

a11

a12

a13

a10

a20

a21

a22

a 23

циклический сдвиг на 2

a22

a23

a20

a21

a30

a31

a32

a 33

циклический сдвиг на 3

a33

a30

a31

a32

Рис.8.7. Cдвиг строк в двумерном массиве на различные смещения.

Умножение на постоянную матрицу.

Н

02 03 01 01

01 02 03 01

01 01 02 03

03 01 01 02

а этом шаге матрица данных слева умножается на постоянную матрицу -циркулянт M:

М =

При выполнении матричного умножения операции сложения и умножения элементов обеих матриц выполняются в конечном поле GF(28). Матрица M является циркулянтом: каждая ее строка получается циклическим сдвигом предыдущей строки вправо на один элемент. Элементы матрицы выбраны таким образом, чтобы свести к минимуму трудоемкость операции умножения: в ней присутствуют лишь небольшие по значению числа 01, 02 и 03, половина элементов - единичные, т.е. реального умножения выполнять для них не требуется. Этим самым обеспечивается высокая эффективность возможных реализаций этой операции.

a00

a01

a02

a03

М

b00

b01

b02

b03

a10

a11

a12

a 13

b10

b11

b12

b13

a20

a21

a22

a23

b20

b21

b22

b23

a30

a31

a32

a33

b30

b31

b32

b33

Рис. 8.8. Умножение на матрицу -циркулянт