- •Курсова робота
- •Календарний план
- •І. Опис предметної галузі
- •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 Висновок
- •Висновки
- •Література
- •Додаток а
- •Додаток б
- •Умови запуску програми
- •Робота з програмою
Розшифрування
Рисунок 3.8 – Псевдокод для InverseCipher
Алгоритм вибору раундового ключа
На кожній ітерації і раундовий ключ для операції AddRoundKey вибирається із масива , починаючи із елементадо.
3.2 Опис алгоритмів захисту
Шифрування здійснюється за алгоритмом, наведеним на риcунку 3.9.
Рисунок 3.9 – Алгоритм шифрування
Алгоритм дешифрування представлений на Риc. 3.10.
Рисунок 3.10 – Алгоритм дешифрування
3.3 Програмна реалізація
3.3.1 Обгрунтування програмної платформи
Гіпертекстова інформаційна система складається з безлічі інформаційних вузлів, безлічі гіпертекстових зв'язків, визначених на цих вузлах і інструментах маніпулювання вузлами і зв'язками. Технологія World Wide Web - це технологія ведення гіпертекстових розподілених систем в Internet, і, отже, вона повинна відповідати загальним визначенням таких систем. Це означає, що всі перераховані вище компоненти гіпертекстової системи повинні бути і в Web. Web, як гіпертекстову систему, можна розглядати з двох точок зору. По-перше, як сукупність відображуваних сторінок, пов'язаних гіпертекстовими переходами. По-друге, як безліч елементарних інформаційних об'єктів, що становлять відображені сторінки. В останньому випадку безліч гіпертекстових переходів сторінки - це такий же інформаційний фрагмент, як і вбудована в текст картинка. При другому підході гіпертекстова мережа визначається на безлічі елементарних інформаційних об'єктів самими HTML-сторінками, які і відіграють роль гіпертекстових зв'язків. Цей підхід більш продуктивний з точки зору побудови відображуваних сторінок "на льоту" з готових компонентів. При генерації сторінок в Web виникає дилема, пов'язана з архітектурою "клієнт-сервер".
У 1995 році фахівці компанії Netscape створили механізм управління сторінками на клієнтській стороні, розробивши мову програмування JavaScript. Таким чином, JavaScript - це мова керування сценаріями перегляду гіпертекстових сторінок Web на стороні клієнта. Якщо бути більш точним, то JavaScript - це не лише мова програмування на стороні клієнта. Liveware, прародитель JavaScript, є засобом підстановки на стороні сервера Netscape. Однак найбільшу популярність JavaScript забезпечило програмування на стороні клієнта. Основна ідея JavaScript складається в можливості зміни значень атрибутів HTML-контейнерів і властивостей середовища відображення в процесі перегляду HTML-сторінки користувачем. При цьому перезавантаження сторінки не відбувається. На практиці це виражається в тому, що можна, наприклад, змінити колір фону сторінки або інтегровану в документ картинку, відкрити нове вікно або видати попередження. В рамках даної роботи буде використовуватись назва JavaScript.
3.3.2 Структура програмних модулів
Загальна структура модулів програми представлена на рисунку 3.11.
Рисунок 3.11 – Загальна структура модулів
Розширена структура модулів програми відображена на рисунку 3.12.
Рисунок 3.12 – Розширена структура модулів
3.3.3 Опис програмних кодів
aes.html– головна сторінка, на якій представлений зовнішній вигляд програми.
text– вхідний текст в програмі.
pass– введений ключ.
ciph– зашифрований текст.
aes.js– сторінка JavaScript в якій реалізована основна логіка роботи програми
aes.nk – число 32-ух бітних слів, складових шифроключа. Nk = 4.
aes.nb– число стовпців (32-ух бітних слів), що становлять State. Nb = 4.
aes.nr– число раундів, яке є функцією Nk і Nb. Nr = 10.
aes.encrypt– кодує довільний рядок байтів з довільним паролем. Повертає рядок з закодованими даними. Цей алгоритм використовує AES 128 оскільки MD5 повертає 128 - бітові хеші.
data– масив байт даних.
password – масив байт ключа.
aes.keyexpasion– перетворює ключ в "ключ-специфікацію". Цей "ключ-специфікація" пройдений на aes.cipher і aes.invcipher.
w– array [4, aes.nb * (aes.nr + 1)] of byte. Це масив ключів для раундів.
key – array [aes.nk * 4] of byte.
aes.rcon– масив, який складається з бітів 32-х розрядного слова і є постійним для даного раунду. Попередньо розрахований Rcon [] можна побачити в Табл. 3.2.
aes.cipher– aes.cipher перетворює 16-байтовий вхід у 16-байтовий вихід. Тобто це процедура шифрування вхідного тексту досліджуваним і розробленим алгоритмом.
input– array[16] of byte. Масив копіюється в масив state.
output– array[16] of byte. Масив копіюється з масиву state.
aes.input2state– процедура, яка копіює масив input в масив state.
state– проміжний результат шифрування, який може бути
представлений як прямокутний масив байтів має 4 рядки і Nb колонок.
aes.addroundkey– трансформація при шифруванні і зворотному шифруванні, при якій RoundKey XOR'иться з State. Довжина RoundKey дорівнює розміру State (якщо Nb = 4, то довжина RoundKey дорівнює 128 біт або 16 байт).
aes.apply– трансформації при шифруванні, які обробляють State, використовуючи нелінійну таблицю заміщення байтів (S-box), застосовуючи її незалежно до кожного байту State.
aes.sbox– повертає елементи з таблиці S-Box. Аргумент повинен бути в діапазоні 0..255. нелінійна таблиця замін, що використовується в декількох трансформаціях заміни байт і в процедурі Key Expansion для взаємно однозначної заміни значення байта.
b– кожний байт b, з яких складається S-box.
aes.shiftrows– у процедурі байти в кожному рядку State циклічно зсуваються вліво. Розмір зміщення байтів кожного рядка залежить від його номера.
aes.mixcolumns– у процедурі кожна колонка стану перемножується з фіксованим многочленом c(x).
toprow–вектор toprow допомагає aes.mixcolumns змішувати колонки AES використовує дві величини toprow: [02, 03, 01, 01] – для шифрування; [0e, 0b, 0d, 09] – для дешифрування.
aes.scalarmul– перемноження масиву стану з фіксованим многочленом
aes.state2output– процедура, яка копіює масив state в масив output.
aes.decrypt– розкодовує довільний рядок байтів з довільним паролем. Повертає рядок з розкодованими даними.
aes.invcipher– процедура обернена aes.cipher. Вона займається розшифруванням зашифрованого тексту досліджуваним і розробленим алгоритмом.
aes.invshiftrows– трансформація при розшифруванні, яка є зворотною по відношенню до aes.shiftrows.
aes.invsbox – процедура, яка є зворотною до aes.sbox.