
- •Курсова робота
- •Календарний план
- •І. Опис предметної галузі
- •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.