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

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

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

Перестановка

Другое преобразование производит сдвиг в раунде. Этот сдвиг переставляет байты. В отличие от DES, в котором делается поразрядная перестановка, преобразование сдвига делается на уровне байта; порядок битов в байте не меняется.

\tt\parindent0pt

\ 

SubBytes (S)

\{ 

for (r = 0 to 3) 

\ \ \ for (c = 0 to 3)

\ \ \ S_{r,c}=subbyte(S_{r,c})

\} 

\ 

subbyte (byte)

\{ 

\ \ $a \gets  byte^{-1}$\ \ \ \  //Multiplicative inverse in $GF(2^{8})$ with inverse


\ \ \ \ \ \ \ \ // of 00 to be 00

\ \ ByteToMatrix (a,b)

\ \ For (i= 0 to 7)

\ \ \{ 

\ \ \ \ c_{i} \gets  b_{i} \oplus  b_{(i+4)}\mod 8 \oplus  b_{(i+5) }\mod 8 \oplus  b_{(i+6)}\mod 8 \oplus  b_{(i+7)}\mod 8

\ \ \ \ d_{i} \gets  c_{i} \oplus  ByteToMatrix (0 \times 63)

\ \ \ \} 

\ \ MatrixToByte (d,d)

\ \ byte \gets  d

\}
9.1. Программа на псевдокоде для преобразования SubBytes
ShiftRows

При шифровании применяется преобразование, называемое ShiftRows, со смещением влево. Число сдвигов зависит от номера строки (0, 1, 2 или 3) матрицы состояний. Это означает, что строка 0 не сдвигается и последняя строка сдвигается на три байта. Рисунок 9.9 показывает преобразование смещения.

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

Рис. 9.9. Преобразование ShiftRows

Обратите внимание, что преобразование ShiftRows работает одновременно только с одной строкой.

InvShiftRows

При дешифровании применяется преобразование, называемое InvShiftRows, со смещением вправо. Число сдвигов равно номеру строки (0, 1, 2 и 3) в матрицы состояний.

ShiftRows- и InvShiftRows- преобразования инверсны друг другу.
Алгоритм

Алгоритм 9.2 для преобразования ShiftRows очень прост. Однако чтобы подчеркнуть, что преобразование делается одновременно только с одной строкой, мы используем процедуру, называемую shiftrow, которая сдвигает байт в единственной строке. Мы вызываем эту процедуру три раза.

Процедура shiftrow сначала копирует строку во временную матрицу строки (матрица t), а потом сдвигает строку.

Пример 9.4

Рисунок 9.10 показывает, как, используя преобразование ShiftRows, преобразуется матрица состояний. Рисунок также иллюстрирует, как преобразование InvShiftRows создает первоначальную матрицу состояний.

\tt\parindent0pt

\ 

\{ 

\ \ for (r = 1 to 3)                                       

\ \ shiftrow ($S_{r}$, r)\ \ \ \ \ // $s_{r}$ $r$-тая строка\} 

\ 

\ \ shiftrow (row, n)\ \     // n – число байтов, на которое должен 

\ \ \ \ \ \ \ \ \ \ // быть сделан сдвиг

\ 

\ \ \{ 

\ \ \ CopyRow (row, t) for (c = 0 to 3)      // t – временная строка

\ \ \ for (c = 0 to 3)

\ \ \ \ \ \ \ \ row_{(c-n)\mod 4} \gets  t_{c}

\ \ \}
9.2. Программа на псевдокоде для преобразования ShiftRows
 Пример преобразования ShiftRow в примере 9.4.

Рис. 9.10. Пример преобразования ShiftRow в примере 9.4.
< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Дмитрий Плешаков
Дмитрий Плешаков

Здравствуйте. На данныйц момент я изучаю курс Математика криптографии и теория шифрования. Стоимость обучения на данном курсе указана 1 руб., но, при этом доступ к лекциям указан платный. Не могли бы Вы прояснить данный момент, и, если доступ платный, какова стоимость лекций и общая стоимость курса.

Заранее благодарен.

Сергей Христовский
Сергей Христовский
Россия, Омск
Александр Шумаев
Александр Шумаев
Россия