Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОК5 2017.doc.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.31 Mб
Скачать
  1. Представлення вхідних даних в алгоритмі aes:

Основним елементом, яким оперує алгоритм AES, є байт, який обробляється як єдине ціле. Для формування байтів 128 бітів блоку відкритого тексту, вихідного блоку шифротекста і ключа шифру діляться на групи з 8-ми поруч стоять біт так, щоб в цілому вийшов масив байт.

Задавати значення байта зручно в шістнадцятковій системі обчислення. Для цього байт ділиться на дві групи з 4-х біт: група старших біт в байті представляється першим шістнадцятковим символом, а група молодших біт - другим. Наприклад, для байта 10101100 отримаємо 10101100 = 1010 1100 = АС.

Позначимо:

in0, in1, ..., in15 - 16 байт блоку відкритого тексту;

k0, k1, ..., k15 - 16 байт ключа шифру;

оut0, out1, ..., out15 - 16 байтів шифротексту;

Вхідними даними для операцій шифрування є масив з 16 байт in0, in1, ..., in15. Перед початком шифрування байти цього масиву розміщуються послідовно в стовпці матриці InputBlock (зверху вниз). Проміжна матриця під час роботи алгоритму називається матрицею станів State або просто станом. Кінцеве значення матриці стану OutputBlock є виходом алгоритму і перетворюється в послідовність байтів шифротекста оut0, out1, ..., out15.

Аналогічно формується матриця InputKey з 16 байтів k0, k1, ..., k15 ключа шифру.

Розмірність всіх матриць – 4×4.

Схематично таке уявлення даних виглядає так:

InputBlock State OutputBlock

InputKey

Матриця, яка надходить на вхід кожного раунду називається матрицею InputState, а на виході раунду утворюється матриця OutputState. Очевидно, на вході першого раунду InputState = InputBlock, а на виході останнього раунду OutputState = OutputBlock.

Чотири байта в кожному стовпці матриці станів або ключа можна розглядати як одне 32-х бітове слово. Тому матриця станів – це масив з 4 слів w0, w1, w2, w3, де

Приклад:

Представимо у вигляді матриці InputBlock текст

СКЛАДНІСТЬЗАДАЧІ = (21 14 15 00 05 17 11 21 22 30 09 00 05 00 27 11) 10 =

= (15 0Е 0F 00 05 11 0B 15 16 1E 09 00 05 00 1B 0B) 16

InputBlock = .

  1. Формування раундових ключів

Раундові ключі виробляються з ключа шифру K за допомогою процедури розширення ключа, в результаті чого формується масив раундових ключів, з якого потім безпосередньо вибирається необхідний раундовий ключ.

Кожен раундовий ключ має довжину 128 біт (або 4 слова wі, wі+1, w2і+2, wі+3). Перші чотири слова w0, w1, w2, w3 збігаються з ключем шифру і є ключем з номером 0, наступні чотири слова w4, w5, w6, w7 – раундовим ключем для першого повного раунду тощо.

Нові слова wі+4, wі+5, wі+6, wі+7 наступного раундового ключа визначаються з слів wі, wі+1, wі+2, wі+3 попереднього ключа на основі рівнянь:

Перше слово wі+4 в кожному раундовому ключі змінюється по-іншому:

.

Функція g складається з послідовного виконання трьох кроків, які відображають слово в слово:

  1. циклічний зсув чотирьохбайтового слова вліво на один байт (операція RotWord);

  2. заміна кожного байта слова, отриманого на кроці 1, відповідно до таблиці SubBytes, що використовується шифруванні (операція SubWord);

  3. сумування по mod 2 байтів, отриманих на кроці 2, з раундовою константою Rcon [i] = (RC [i], 0,0,0), несекретною і унікальною для кожного раундового ключа Ki. Ненульовий лівий байт цієї константи змінюється за законом рекурсії: RC [1] =1, RC [i] = 2  RC [i – 1], i =1,2, ... 10.

Мета сумування з раундовими константами – зруйнувати симетрію, що може виникнути на різних етапах розгортання ключа і привести до появи слабких ключів, як в алгоритмі DES.

Схематичне представлення роботи алгоритму розширення ключа:

Приклад:

Ключ шифру OF 15 71 C9 47 D9 E8 59 0C B7 AD DF AF 7F 67 98

Раундові ключі

Функція g(w)

w0

w1

w2

w3

0F 15 71 C9

47 D9 E8 59

0C B7 AD DF

AF 7F 67 98

RotWord(w3)= 7F 67 98 AF=x1

SubWord(x1)= D2 85 46 79=y1

Rcons[1]=01 00 00 00

y1+ Rcons[1]=D3 85 46 79=z1

w4

w5

w6

w7

w0+z1 = DC 90 37 B0

w4+w1= 9B 49 DF E9

w5+w2= 97 FE 72 3F

w6+w3= 38 81 15 A7

RotWord(w7)= 81 15 A7 38=x2

SubWord(x4) = 0C 59 5C 07=y2

Rcons[2]=02 00 00 00

y2+ Rcons[2]=0E 59 5C 07=z2

w8

w9

w10

w11

w4+z2 = D2 C9 6B B7

w8+w5= 49 80 B4 5E

w9+w6= DE 7E C6 61

w10+w7= E6 FF D3 C6

RotWord(w11)= FF D3 C6 E6=x3

SubWord(x2) = 16 66 B4 8E =y3

Rcons[3]=04 00 00 00

y3+ Rcons[3]=12 66 B4 8E =z3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]