Федеральне агентство з освіти
Державна освітня установа
вищої професійної освіти
Далекосхідний державний технічний університет
(ДВПИ ім. В. В. Куйбишева)
Кафедра конструювання та виробництва радіоапаратури
Пояснювальна записка до курсової роботи
з дисципліни
«Інформаційна безпека та захист інформації»
на тему:
АЛГОРИТМ шифрування / Хешування Двійковий файл НА ОСНОВІ МЕРЕЖІ Фейстель: ПРИНЦИП РОБОТИ, РЕАЛІЗАЦІЯ, ШВИДКІСТЬ РОБОТИ
Виконав
студент групи Р-7791
Павловський М.І.
2010
ЗМІСТ
ВСТУП
1 ОПИС СХЕМИ шифрування
2 ОПИС СХЕМИ Розшифрування
3 скріншоти ПРАЦЮЮЧОЇ ПРОГРАМИ
4 ШВИДКІСТЬ РОБОТИ АЛГОРИТМІВ
ВИСНОВОК
ВСТУП
Шифрування є найбільш широко використовуваним криптографічним методом збереження конфіденційності інформації, він захищає дані від несанкціонованого ознайомлення з ними.
Криптографія - наука про захист інформації з використанням математичних методів. Існує і наука, протилежна криптографії і присвячена методам розтину захищеної інформації - криптоаналіз. Сукупність криптографії та криптоаналізу прийнято називати криптології. Криптографічні методи можуть бути класифіковані різним чином, але найбільш часто вони поділяються залежно від кількості ключів, які використовуються у відповідному криптоалгоритму:
Безключове - в них не використовуються які-небудь ключі.
Одноключевой - в них використовується якийсь додатковий ключовий параметр - зазвичай це секретний ключ.
Двохключеву, які використовують у своїх обчисленнях два ключі: секретний і відкритий.
У цій роботі необхідно розробити алгоритм шифрування, заснований на мережі Фейстеля.
Мережа Фейстеля увазі розбиття оброблюваного блоку даних на кілька субблоків (найчастіше - на два), один з яких обробляється якоїсь функцією f () і накладається на один або кілька інших субблоків. На рис.1 наведена найбільш часто зустрічається структура алгоритмів на основі мережі Фейстеля.
Рисунок 1 - Структура алгоритмів на основі мережі Фейстеля
Додатковий аргумент функції f (), позначений на рис. 1 як Ki, називається ключем раунду. Накладення обробленого субблока на необроблений найчастіше виконується за допомогою логічної операції «виключає або» - XOR (як показано на рис. 1). Досить часто замість XOR тут використовується додавання по модулю 2n, де n - розмір субблока в бітах. Після накладення субблоки міняються місцями, тобто в наступному раунді алгоритму обробляється вже інше субблок даних.
1 ОПИС СХЕМИ шифрування
Рисунок 2 - Схема шифрування
Зробимо докладний опис вищенаведеної схеми.
Прочитуємо з файлу два блоки по одному байту (left і right).
Потім беремо правий блок і виконуємо перестановку бітів в даному блоці за наступним принципом: 1 біт - 5 біт, 2 біт - 7 біт, 3 біт - 6 біт, 4 біт - 8 біт.
Ключ, позначений буквою K, являє собою масив з 4 елементів по одному байту, кожен з яких використовується в одній з чотирьох ітерацій.
Потім виконуємо додавання по модулі 256 ключа і числа, отриманого після перестановки в правому блоці. Складання відбувається за наступною формулою:
(1)
Потім з результатом c, отриманими після додавання за модулем 256, виробляємо операцію XOR (виключає «або») з лівим блоком (left), ліченим з файлу.
(2)
Наступна операція - це циклічний зсув на 2 біти вліво, тобто перші 2 біта числа d стануть останніми. Дана операція реалізується з допомогою двох побитной зрушень:
(3)
Тепер ми маємо змінений лівий блок (left) і початковий правий блок (right). Міняємо ці блоки місцями, тобто правий стане лівим, а змінений лівий правим.
Проводимо 4 такі ітерації і записуємо отримані блоки в зашифрований файл: спочатку отриманий лівий блок, а потім отриманий правий блок.
Таким алгоритмом шифруємо весь файл. Якщо файл складається з непарного числа байт, то в останньому блоці замість правого блоку беремо нуль і в кінець зашифрованого файлу також записуємо ще один нуль, щоб правильно розшифрувати отриманий файл.
3 ОПИС СХЕМИ Розшифрування
Рисунок 3 - Схема розшифрування
Зробимо докладний опис вищенаведеної схеми.
Прочитуємо із зашифрованого файлу два блоки по одному байту (left і right).
Беремо правий блок і виробляємо з ним операцію циклічного зсуву на 2 біти вправо, тобто останні 2 біти числа right стануть першими. Дана операція реалізується з допомогою двох побитной зрушень:
(4)
Потім беремо лівий блок і виконуємо перестановку бітів в даному блоці за наступним принципом: 1 біт - 5 біт, 2 біт - 7 біт, 3 біт - 6 біт, 4 біт - 8 біт.
Ключ, позначений буквою K, являє собою масив з 4 елементів по одному байту, кожен з яких використовується в одній з чотирьох ітерацій.
Потім виконуємо додавання по модулі 256 ключа і числа, отриманого після перестановки в лівому блоці. Складання відбувається за наступною формулою:
(5)
Потім з результатом c, отриманими після додавання за модулем 256, виробляємо операцію XOR (виключає «або») з правим блоком над яким виробили циклічний зсув d.
(6)
Тепер ми маємо змінений правий блок (right) і початковий лівий блок (left). Міняємо ці блоки місцями, тобто лівий стане правим, а змінений правий лівим.
Проводимо 4 такі ітерації і записуємо отримані блоки в зашифрований файл: спочатку отриманий лівий блок, а потім отриманий правий блок.
Таким алгоритмом розшифровуємо весь файл. Якщо файл складається з непарного числа байт, значить, при шифруванні останній блок був неповний, і при расшифровании ми не запишемо у файл для розшифрування праву частину останнього повного блоку, а раніше записаний нуль відкинемо.
3 скріншоти ПРАЦЮЮЧОЇ ПРОГРАМИ
Рисунок 4 - Вікно програми при відкритті (програма готова до роботи)
Малюнок 5 - Шифрування файлу
На даному етапі ми вибрали файл для шифрування. Шлях до даного файлу записаний у першому textBox 'е. Прогрес бар показує процес шифрування: скільки байт оброблено у відсотках.
Малюнок 6 - Шифрування завершено
Шифрування файлу завершено. Виведена швидкість шифрування в мегабайтах в секунду. Прогрес бар повністю заповнений (100%). Також виведений хеш файлу для шифрування для подальшого порівняння з хешем розшифрованого файлу.
Малюнок 7 - Розшифрування файлу
На даному етапі ми вибрали файл для розшифрування (файл, який вийшов в результаті шифрування). Шлях до даного файлу записаний у другому textBox 'е. Прогрес бар показує процес розшифрування: скільки байт оброблено у відсотках.
Рисунок 8 - Розшифрування завершено
Розшифрування файлу завершено. Виведена швидкість розшифрування в мегабайтах в секунду (майже збігається зі швидкістю при шифруванні). Прогрес бар повністю заповнений (100%). Також виведений хеш розшифрованого файлу. Він дорівнює хешу вихідного файлу, значить розшифрування виконано вірно.
4 ШВИДКІСТЬ РОБОТИ АЛГОРИТМІВ
Швидкість роботи для алгоритмів шифрування і розшифрування розраховується аналогічно за такою формулою:
, (7)
де
- Швидкість шифрування / розшифрування в мегабитах в секунду;
- Розмір файлу в мегабайтах;
- Час на момент закінчення шифрування / розшифрування;
- Час на момент початку шифрування / розшифрування;
- Час шифрування / розшифрування, виражене в секундах;
У цій роботі при шифруванні і расшифровании файлу довжиною 14,2 МБ була отримана швидкість, приблизно рівна 0,16 МБ / сек.
Тестування проводилося на комп'ютері з наступною конфігурацією:
Об'єм оперативної пам'яті: 1 ГБ;
Частота процесора: 2,66 ГГц.
ВИСНОВОК
На мережі Фейстеля засновано більшість сучасних алгоритмів шифрування - завдяки безлічі переваг подібної структури, серед яких варто відзначити наступні:
Алгоритми на основі мережі Фейстеля можуть бути сконструйовані таким чином, що для зашифрування і розшифрування можуть використовуватися один і той самий код алгоритму - різниця між цими операціями може полягати лише в порядку застосування ключів Ki; така властивість алгоритму найбільш корисно при його апаратної реалізації або на платформах з обмеженими ресурсами;
Алгоритми на основі мережі Фейстеля є найбільш вивченими - таким алгоритмам присвячена величезна кількість криптоаналітичних досліджень, що є безперечною перевагою, як при розробці алгоритму, так і при його аналізі.