Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота.doc
Скачиваний:
184
Добавлен:
23.02.2016
Размер:
1.68 Mб
Скачать

Перетворення SubBytes

Перетворення SubBytes полягає в заміні кожного байта {xy} форми (де x і y позначають шістнадцяткові цифри) на інший відповідно до таблиці 2.3.

Таблиця 2.3 – Таблиця підстановок

Наприклад, байт {fe} заміниться на {bb}.

Перетворення ShiftRows

Перетворення ShiftRows полягає в циклічному зсуві вліво рядків форми. Перетворення схематично представлено на рисунку 2.1. Перший рядок залишається незмінним. У другій відбувається здвиг на 1 байт, тобто перший байт переноситься в кінець. У третій – здвиг на 2 байта, у четвертій – на 3.

Рисунок 2.1 – Перетворення ShiftRows

Перетворення MixColumns

Перетворення MixColumns полягає в множенні квадратної матриці 4-го порядку на кожен стовпчик форми:

Множення здійснюється в полі Галуа GF (28).

Над кожним стовпцем операція проводиться окремо, як показано на риcунку 2.2.

Рисунок 2.2 – Перетворення MixColumns

Перетворення AddRoundKey

В перетворенні AddRoundKey 32-бітові слова раундового ключа додаються до стовпців форми за допомогою побітової операції XOR:

Тут wi- це стовпці ключа.

Над кожним стовпцем операція проводиться окремо, як показано на рисунку 2.3.

Рисунок 2.3 – Перетворення AddRoundKey

Процедура розширення ключа ExpandKey

В алгоритмі AES генеруються раундові ключі на основі ключа шифрування з допомогою процедури ExpandKey. Процедура ExpandKey створює Nb * (Nr + 1) слів: алгоритму потрібно початковий ключ розміром Nb, плюс кожен з Nr раундів вимагає ключ з Nb слів. Нижче наведено псевдокод процедури ExpandKey:

// Процедура вираховує ключі раундів

// key — ключ

// out — результат

// Nk — кількість слів в ключі

ExpandKey(byte key[4*Nk], word out[Nb*(Nr+1)], int Nk)

begin

i = 0

while (i < Nk)

out[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3])

i = i + 1

end while

i = Nk

while (i < Nb * (Nr+1))

word temp = out[i-1]

if (i mod Nk = 0)

temp = SubWord(RotWord(temp)) xor Rcon(i/Nk)

else if ((Nk > 6) and (i mod Nk == 4))

temp = SubWord(temp)

end if

out[i] = out[i-Nk] xor temp

i = i + 1

end while

end

Тут використані наступні функції:

SubWordздійснює заміну кожного байта в слові відповідно до таблиці підстановки, представленої в таблиці 2.3.

RotWordздійснює циклічний зсув байтів у слові вліво, як показано на рисунку 2.4.

Рисунок 2.4 – Процедура RotWord

Rcon (i) формує слово [02i-1, 00, 00, 00].

Дешифрування

При дешифруванні всі перетворення проводяться в зворотному порядку. Використовуються такі зворотні перетворення замість відповідних шифрувальних:

  • InvSubBytes - Підстановка байтів за допомогою зворотної таблиці підстановки.

  • InvShiftRows - Циклічний зсув рядків у формі на різні величини.

  • InvMixColumns - Змішування даних усередині кожного стовпця форми.

Процедури ExpandKeyіAddRoundKeyзалишаються незмінними. Ключі раунду використовуються в зворотному порядку.

Перетворення InvShiftRows

Це перетворення протилежне перетворенню ShiftRows. Перший рядок форми залишається незмінною. Другий рядок циклічно зсувається вправо на 1 байт. Третя – на 2, четверта – на 3.

Схематично перетворення показано на рисунку 2.5.

Рисунок 2.5 – Процедура InvShiftRows

Перетворення InvSubBytes

Це перетворення протилежне перетворенню SubBytes. Підстановка байтів відбувається аналогічно за допомогою зворотної таблиці підстановок, представленої в таблиці 2.4.

Таблиця 2.4 – Зворотна таблиця підстановок

Перетворення InvMixColumns

Це перетворення протилежне перетворенню MixColumns. InvMixColumns перетворює в формі кожен стовпець окремо. Перетворення відбувається за такою формулою:

Тут множення також проводиться в полі Галуа GF (28).

2.4 Висновок

Розглядаючи даний розділ, серед методів захисту інформації, яка зберігається на комп’ютері у вигляді файлів з важливою текстовою інформацією, найдоцільніше використовувати криптологію, а саме її розділи криптографію та криптоаналіз. Цілі цих напрямів прямо протилежні. Дослідженням проблеми захисту інформації шляхом пошуку і дослідженням математичних методів для перетворення інформації займається кpиптографія (kryptos - таємний, logos - наука). Як розшифрувати інформацію, не знаючи ключа, вивчає криптоаналіз. В даній курсовій роботі використовується перший підхід, так як розробляється криптографічний алгоритм.

В результаті дослідження різних алгоритмів шифрування, та розгляду їх програмних реалізацій було вибрано алгоритм AES, тому що він широко поширений серед програм, які шифрують конфіденційну інформацію. Він також використовується,як державний стандартний алгоритм кодування в США. В результаті перегляду програмних засобів, в яких реалізований алгоритм, було детально описано структуру цього алгоритму.