Внутрішній стан базового перетворення
| g0,0
| g0,1
| g0,2
| g0,3
| g0,4
| g0,5
| g0,6
| g0,7
| g1,0
| g1,1
| g1,2
| g1,3
| g1,4
| g1,5
| g1,6
| g1,7
| g2,0
| g2,1
| g2,2
| g2,3
| g2,4
| g2,5
| g2,6
| g2,7
| g3,0
| g3,1
| g3,2
| g3,3
| g3,4
| g3,5
| g3,6
| g3,7
| g4,0
| g4,1
| g4,2
| g4,3
| g4,4
| g4,5
| g4,6
| g4,7
| g5,0
| g5,1
| g5,2
| g5,3
| g5,4
| g5,5
| g5,6
| g5,7
| g6,0
| g6,1
| g6,2
| g6,3
| g6,4
| g6,5
| g6,6
| g6,7
| g7,0
| g7,1
| g7,2
| g7,3
| g7,4
| g7,5
| g7,6
| g7,7
|
Рис. 4.3 Заповнення внутрішнього стану
4.3.4 Алгоритм зашифрування в базовому режимі
Структура перетворення. Базове перетворення зашифрування визначено у такому вигляді [3-4]:
, ( 4.23)
Де:
– розмір внутрішнього стану блокового шифру у бітах;
– ключ зашифрування;
– довжина ключа шифрування у бітах;
– функція додавання циклового ключа ( ) за модулем 264;
– шар нелінійного бієктивного відображення, який виконує обробку векторів, що задані над (байтова підстановка);
– перестановка елементів внутрішнього стану (циклічний зсув рядків вправо при матричному поданні);
– лінійне перетворення, що здійснюється засобом множення матриці лінійного перетворення на матрицю внутрішнього стану над скінченним полем;
– функція додавання циклового ключа ( ) за модулем 2 , яа реалізує інволютивне перетворення.
В функціях , і вхідний аргумент та вихідне значення , розглядаються як матриці розміром байтів згідно таблиці 4.3.
Функції і мають два вхідних аргументи (внутрішній стан шифру) і (цикловий ключ -ї ітерації) та вихідне значення , , при цьому вхідні аргументи та вихідне значення розглядаються як матриці розміром байтів.
Функція додавання циклового ключа за модулем 264. здійснює додавання за модулем 264 стовпців матриці внутрішнього стану і стовпців матриці циклового ключа , при цьому результат також є матрицею розміром байтів, тобто внутрішнім станом після додавання ключа. При чому при додаванні найменш значущі байти мають менший індекс, тобто використовується формат little endian[ ].
Шар нелінійного бієктивного відображення. Функція виконує заміну кожного елементу матриці внутрішнього стану на , де - засобом застосування випадкової підстановки[4].
Наприклад, нехай , тоді .
Перестановка елементів. Функція виконує циклічний зсув вправо рядків матриці стану . Кількість елементів зсуву залежить від номеру рядку , розміру блоку , та обчислюється за формулою .
Наприклад, 5-й рядок матриці стану шифру з 256-бітовим блоком зсувається вправо на 2 елемента.
Лінійне перетворення. При обчисленні результату функції кожен елемент матриці внутрішнього стану розглядається як елемент скінченного поля , що утворене незвідним поліномом = x8 + x4 + x3 + x2 + 1, або 0х11d у шістнадцятковому поданні.
Кожен елемент результуючої матриці стану отримується як результат множення векторів довжини 8 над скінченним полем згідно формули [ ]
, (4.24)
де – вектор, що утворює циркулянтну матрицю МДР - коду і складається з послідовності байтових констант у шістнадцятковому поданні, які інтерпретуються як елементи поля , при цьому циклічний зсув виконується відносно елементів вектора над скінченним полем[ ] ;
– –й стовпець матриці стану .
Функція додавання циклового ключа за модулем 2. Функція має два вхідних аргументи: (внутрішній стан шифру) і (цикловий ключ -ї ітерації), кожен з яких поданий як матриця розміром байтів.
здійснює побітове додавання (за модулем 2) стовпців матриці внутрішнього стану і стовпців матриці циклового ключа , при цьому результат також є матрицею розміром байтів (внутрішнім станом після додавання).
4.3.5 алгоритм розшифрування в базовому режимі.
Базове перетворення розшифрування. Базове перетворення розшифрування визначено наступним чином:
, (4.25)
де:
– розмір внутрішнього стану блокового шифру (у бітах);
– ключ шифрування;
– довжина ключа шифрування (у бітах);
– функція віднімання циклового ключа ( ) за модулем 264 (зворотна до );
– зворотне лінійне перетворення (множення матриці зворотного лінійного перетворення на матрицю внутрішнього стану над скінченним полем);
– зворотна перестановка елементів внутрішнього стану (циклічний зсув рядків вліво при матричному поданні);
– шар зворотного нелінійного бієктивного відображення, який виконує обробку векторів, заданих над (зворотна байтова підстановка);
– інволютивна функція додавання циклового ключа ( ) за модулем 2 (однакова для зашифрування і розшифрування).
Як і при зашифруванні при розшифруванні , в функціях , і вхідний аргумент та вихідне значення , розглядаються як матриці розміром байтів.
Функція має два вхідних аргументи (внутрішній стан шифру) і (цикловий ключ -ї ітерації) та вихідне значення , при цьому вхідні аргументи та вихідне значення розглядаються як матриці розміром байтів.
Функція віднімання циклового ключа за модулем 264. є зворотною до і здійснює віднімання за модулем 264 стовпців матриці циклового ключа від стовпців матриці внутрішнього стану , при цьому результат також є матрицею розміром байтів (внутрішнім станом після віднімання[3-4].
При виконанні віднімання найменш значущі байти мають менший індекс, тобто використовується формат little endian[ ].
Шар зворотного нелінійного бієктивного відображення. Функція виконує заміну кожного елементу матриці внутрішнього стану на , де - підстановки, які наведені у додатку А[ ].
Наприклад, нехай , тоді .
Зворотна перестановка елементів. Функція виконує циклічний зсув вліво рядків матриці стану . Кількість елементів зсуву залежить від номеру рядку розміру блоку , та обчислюється за формулою |