А,В,Соколов, 0,М, Степанюк - Скачать документы
А,В,Соколов, 0,М, Степанюк - Скачать документы
А,В,Соколов, 0,М, Степанюк - Скачать документы
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 />
от длины ключа и длины блока