- •Курсова робота
- •Календарний план
- •І. Опис предметної галузі
- •1.1 Огляд існуючих технологій
- •Усілякі засоби захисту конфіденційної інформації на комп'ютерах і в мережі за допомогою шифрування
- •Засоби аутентифікації
- •Антивірусний захист
- •Міжмережеве екранування
- •Захист програм від неліцензійного використання
- •Побудова аналогових і цифрових систем відеоспостереження
- •Організація обліку робочого часу та контролю місцезнаходження співробітників
- •1.2 Моделі і структури даних які використовуються в даній галузі
- •1.2.1 Моделі розмежованого доступу
- •1.2.2 Дискреційне управління доступом
- •1.2.3 Мандатне управління доступом
- •Класична мандатна модель Белла-ЛаПадули
- •Модель Біба
- •Модель безпеки військової системи передачі даних
- •Модель Кларка-Вілсона
- •Модель "Китайська стіна"
- •Модель Гогена-Мезігера
- •Сазерлендська модель захисту
- •Модель елементарного захисту
- •Модель гарантовано захищеної системи обробки інформації
- •Суб'єктно-об'єктна модель
- •1.3 Опис проблем захисту інформації
- •1.4 Висновок
- •Іі. Криптографічні Методи захисту інформації
- •2.1 Огляд сучасних методів захисту
- •Криптографія та кpиптоаналіз
- •Вимоги до криптосистем
- •2.2 Огляд існуючих програмних технологій
- •Порівняння можливостей шифрування архіваторів WinRar та WinZip
- •2.3 Опис прототипу Введення
- •Термінологія
- •Шифрування
- •Перетворення SubBytes
- •Дешифрування
- •III. Розробка власного програмного засобу, рішення
- •3.1 Опис власного методу розв’язання задач Визначення і допоміжні процедури
- •Допоміжні процедури
- •Шифрування
- •SubBytes()
- •ShiftRows()
- •MixColumns()
- •AddRoundKey()
- •Алгоритм обробки ключа
- •Алгоритм розширення ключа
- •Розшифрування
- •3.3.2 Структура програмних модулів
- •3.3.3 Опис програмних кодів
- •3.4 Висновок
- •Висновки
- •Література
- •Додаток а
- •Додаток б
- •Умови запуску програми
- •Робота з програмою
ShiftRows()
У процедурі ShiftRows, байти в кожному рядку State циклічно зсуваються вліво. Розмір зміщення байтів кожного рядка залежить від його номера.
Рисунок 3.4 – Схема ShiftRows()
ShiftRows працює з рядками State. При цій трансформації рядки стану циклічно зсуваються на r байт по горизонталі, залежно від номера рядка. Для нульового рядка r = 0, для першого рядка r = 1 і т. д. Таким чином кожна колонка вихідного стану після застосування процедури ShiftRows складається з байтів з кожної колонки початкового стану. Для алгоритму Rijndael патерн зсуву рядків
для 128 - і 192-бітних рядків однаковий. Однак для блоку розміром 256 біт відрізняється від попередніх тим, що 2, 3, і 4-і рядки зміщуються на 1, 3, і 4 байта, відповідно.
MixColumns()
У процедурі MixColumns, кожна колонка стану перемножується з фіксованим многочленом c(x).
Рисунок 3.5 – Схема MixColumns()
У процедурі MixColumns, чотири байти кожної колонки State змішуються, використовуючи для цього оборотну лінійну трансформацію. MixColumns обробляє стани по колонках, трактуючи кожну з них як поліном четвертого степеня. Над цими поліномами проводиться множення в GF(28) по модулю x4 + 1 на фіксований многочлен c (x) = 3x3 + x2 + x + 2. Разом з ShiftRows, MixColumns вносить дифузію в шифр.
AddRoundKey()
В процедурі AddRoundKey, кожен байт стану з’єднується з RoundKey використовуючи XORoperation.
Рисунок 3.6 – Схема AddRoundKey()
В процедурі AddRoundKey, RoundKey кожного раунду об'єднується з State. Для кожного раунду RoundKey виходить з CipherKey використовуючи процедуру KeyExpansion, кожен RoundKey такого ж розміру, що і State. Процедура виробляє побітовий XOR кожного байта State з кожним байтом RoundKey.
Алгоритм обробки ключа
Алгоритм обробки ключа складається з двох процедур:
Алгоритм розширення ключа.
Алгоритм вибору раундового ключа (ключа ітерації).
Алгоритм розширення ключа
AES алгоритм, використовуючи процедуру KeyExpansion () і подаючи в неї Cipher Key, K, отримує ключі для всіх раундів. Всього вона отримує Nb * (Nr + 1) слів: спочатку для алгоритму потрібно набір з Nb слів, і кожному з Nr раундів потрібно Nb ключових набору даних. Отриманий масив ключів для раундів позначається як ,.
Алгоритм KeyExpansion () показаний в псевдокоді на Рис. 3.7. Функція SubWord () бере чотирьохбайтове вхідне слово і застосовує S-box до кожного з чотирьох байтів те, що вийшло подається на вихід. На вхід RotWord () подається слово [a0, a1, a2, a3] яке вона циклічно переставляє і повертає [a1, a2, a3, a0]. Масив слів, постійний для даного раунду, , містить значення [xi – 1,00,00,00], де x = {02}, а xi - 1 є степенем x в(i починається з 1). З малюнка можна побачити, що перші Nk слів розширеного ключа заповнені CipherKey. У кожне наступне слово, w [i], кладеться значення отримане при операції XOR w [i - 1] і, ті XOR'а попереднього і на Nk позицій раніше слів. Для слів, позиція яких кратна Nk, перед XOR'ом до w [i-1] застосовується трасформація, за якою слідує XOR з константою раунду Rcon [i]. Зазначена вище трансформація складається з циклічного зсуву байтів в слові (RotWord ()), за якою йде процедура SubWord () - те ж саме, що і SubBytes (), тільки вхідні і вихідні дані будуть розміром в слово. Важливо зауважити, що процедура KeyExpansion () для 256 бітного CipherKey трохи відрізняється від тих, які застосовуються для 128 і 192 бітових шифроключей. Якщо Nk = 8 і i - 4 кратне Nk, то SubWord () застосовується до w [i - 1] до XOR'а.
Рисунок 3.7 – Псевдокод для KeyExpansion