адності та нелінійності перетворення таких кроків потрібно вдвічі менше порівняно з мережею Файстеля. Кожен раунд полягає в побітового складання по модулю 2 поточного стану шифруемого блоку і ключового елемента раунду, за яким слідує складне нелінійне перетворення блоку, сконструйоване з трьох більш простих перетворень, докладно розглянутих у наступному розділі. Схема алгоритму Rijndael наведена нижче на малюнку 1 (б).
Рис. 1. Схема перетворення даних при шифруванні по алгоритмам ГОСТ28147-89 (а) і Rijndael (б) відповідно, де:
T , T ' - вихідний і зашифрований блоки відповідно;
ki - ключовий елемент раунду;
Xi - стан процесу шифрування після i -того раунду;
f ( X , k ) - функція шифрування алгоритму ГОСТ28147-89;
NLT , NLT ' - регулярне нелінійне перетворення і нелінійне преобра-
тання останнього раунду алгоритму Rijndael відповідно;
R - число раундів в алгоритмі Rijndael (10, 12 або 14).
. Порівняння раундів шифрування
В алгоритмі ГОСТ28147-89 використовується порівняно нескладна функція шифрування, що складається з адитивної операції комбінування вхідного напівблоки з ключовим елементом раунду - складання їх по модулю 232, підстановки, виконуваної незалежно у восьми 4-бітових групах, і бітової перестановки - обертання на 11 біт в сторону старших розрядів. Схема раунду шифрування за ГОСТ зображена на малюнку 2 (а).
У Rijndael шіфруемий блок і його проміжні стани в ході перетворення представляються у вигляді матриці байтів 4 _ n , де n =4,6,8 залежно від розміру блоку. Функція нелінійного перетворення в алгоритмі Rijndael складається з трьох наступних елементарних перетворень, виконуваних послідовно:
· байтовая підстановка - кожен байт перетворюється блоку замінюється новим значенням та вилученими з загального для всіх байтів матриці вектора заміни;
· побайтову циклічний зсув в рядках матриці: перший рядок залишається незмінною, другий рядок циклічно зсувається вліво на один байт, третя і четверта рядок циклічно зсуваються вліво відповідно на 2 і 3 байти для n =4 або 6, і на 3 і 4 байта для n =8;
· матричне множення - отримана на попередньому кроці матриця множиться зліва на наступну матрицю-ціркулянт розміру 4_4:
При цьому операції з елементами матриць (додавання і множення) виконуються в кінцевому полі GF (28), породжуваному непріводімим над GF (2) поліномом
( x )= x 8 + x 4 + x 3 + x + 1.
У цьому кінцевому полі додавання байтів виконується як побітовое підсумовування по модулю 2, а множення - кілька більш складним способом. Схема раунду алгоритму Rijndael зображена на малюнку 2 (б).
Рис. 2. Схема перетворення даних для одного раунду шифрування по алгоритмам ГОСТ28147-89 (а) і Rijndael (б) відповідно,
де:
X ( H , L ), X ( H , L ') - преутворений блок (або його старша і молодша частини відповідно) на вході і на виході раунду;
k - ключовий елемент раунду;
S [] - функція підстановки, групами по 4 біта для ГОСТу і байтами для алгоритму Rijndael;
R _ 11 - операція циклічного зсуву (обертання) 32-бітового слова на 11 біт в сторону старших розрядів; _ -операція построчного обертання матриці алгоритму Rijndael;
M _ - множення матриці даних зліва на матрицю M в алгоритмі Rijndael.
Якщо в алгоритмі ГОСТ28147-89 перестановку полублоков віднести до раунду шифрування, як це показано на малюнку 2 (а), то можна помітити, що в обох алгоритмах всі раунди шифрування ідентичні один одному, за винятком останнього раунду , в якому відсутня частина операцій. Такий підхід дозволяє отримати найбільш компактну реалізацію, як апаратну, так і програмну. В останньому раунді ГОСТу відсутня операція перестановки полублоков шифруемого блоку, в останньому раунді алгоритму Rijndael - множення зліва на матрицю M ...