27.05.2014 Views

А,В,Соколов, 0,М, Степанюк - Скачать документы

А,В,Соколов, 0,М, Степанюк - Скачать документы

А,В,Соколов, 0,М, Степанюк - Скачать документы

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

344<br />

аО,0<br />

а1,С<br />

а2,0<br />

аЗ.О<br />

аО,1 аО,2 аО,3 аО,4<br />

а1,1 а1,2 а1,3 а1,4<br />

а2,1 а2,2 а2,3 а2,4<br />

аЗ,1 аЗ,2 аЗ,3 аЗ,4<br />

Состояние (<strong>М</strong>в - 6)<br />

аО,5<br />

а1,5<br />

а2,5<br />

аЗ,5<br />

Ключ<br />

шифрования (NK - 4)<br />

Рис. 4.9. Пример представления состояния (Nb=6) и ключа<br />

шифрования (Nk=4) в виде массивов<br />

<strong>В</strong>ходные данные для шифра, например, открытый текст, обозначаются как байты<br />

состояния в порядке аО,0, al,0, аЗ,0, аО,1, al,l, аЗД ,а4,1 ... После завершения действия<br />

шифра выходные данные получаются из байтов состояния в том же порядке.<br />

<strong>А</strong>лгоритм состоит из некоторого количества раундов — цикловых преобразований<br />

в диапазоне от 10 до 14. Это зависит от размера блока и длины ключа, в которых<br />

последовательно выполняются следующие операции:<br />

Q замена байт — ByteSub;<br />

Q сдвиг строк — ShiftRow;<br />

Q замешивание столбцов — MixColumn;<br />

Q добавление циклового ключа — AddRoundKey.<br />

Число циклов обозначается Nr и зависит от значений Nb и Nk (рис. 4.10).<br />

Преобразование ByteSub представляет собой нелинейную замену байт, выполняемую<br />

независимо с каждым байтом состояния. Порядок замены определяется инвертируемыми<br />

S-блоками (таблицами замены), которые построены как композиции двух<br />

преобразований:<br />

Q получение обратного элемента относительно умножения в поле GF(28);<br />

О применение афинного преобразования (над GF(2)).<br />

Применение преобразования ByteSub к состоянию представлено на рис. 4.11.<br />

Преобразование сдвига строк ShiftRow заключается в том, что последние три строки<br />

состояния циклически сдвигаются на различное число байт. При этом первая строка<br />

состояния остается без изменения, вторая — сдвигается на С1 байт, третья строка сдвигается<br />

на С2 байт, а четвертая — на СЗ байт. Значения сдвигов С1, С2 и СЗ различны и<br />

зависят от длины блока Nb. <strong>В</strong>еличины этих сдвигов в байтах представлены в табл. 4.3<br />

Таблица 4.3. <strong>В</strong>еличина сдвига строк для разной длины блоков<br />

Длина блока, байт<br />

4<br />

6<br />

8<br />

С,<br />

1<br />

1<br />

1<br />

Значение сдвига, байт<br />

С 2<br />

2<br />

2<br />

3<br />

Сз<br />

3<br />

3<br />

4<br />

<strong>М</strong>к = 4<br />

<strong>М</strong>к = 6<br />

<strong>М</strong>к = 8<br />

10<br />

12<br />

14<br />

12<br />

12<br />

14<br />

14<br />

14<br />

14<br />

Рис. 4.10. Число циклов в зависимости<br />

от длины ключа и длины блока

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!