Симетричні блокові шифри на основі мережі Фейстеля

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Захист інформації в комп’ютерних системах

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ І СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Лабораторна робота №5 на тему: “Симетричні блокові шифри на основі мережі Фейстеля” з дисципліни: “Захист інформації в комп'ютерних мережах” Мета роботи: ознайомитися з методом побудови алгоритмів симетричного блокового шифрування на прикладі мережі Фейстеля. Теоретичні відомості Конструкція блокового шифру на основі мереж Фейстеля Розглянемо випадок, коли ми хочемо зашифрувати деяку інформацію, представлену у двійковому вигляді в комп'ютерній пам'яті (наприклад, файл) або електроніці, як послідовність нулів й одиниць. Вся інформація розбивається на блоки фіксованої довжини. У випадку, якщо довжина вхідного блоку менше, ніж розмір, що шифрується заданим алгоритмом, то блок подовжується яким-небудь способом. Як правило довжина блоку є ступенем двійки, наприклад: 64 біта, 128 біт. Далі будемо розглядати операції, що відбуваються тільки з одним блоком, тому що з іншими в процесі шифрування виконуються ті ж самі операції. Обраний блок ділиться на два рівних подблока — «лівий» (L0) і «правий» (R0). «Лівий подблок» L0 видозмінюється функцією f(L0,K0) залежно від раундового ключа K0, після чого він додається по модулі 2 з «правим підблоком» R0. Результат додавання присвоюється новому лівому підблоку L1, що буде половиною вхідних даних для наступного раунду, а «лівий подблок» L0 присвоюється без змін новому правому підблоку1 (див. схему), що буде іншою половиною. Після чого операція повторюється N-1 раз, при цьому при переході від одного етапу до іншого міняються раундові ключі (K0 на K1 і т.д.) за яким-небудь математичним правилом, де N — кількість раундів у заданому алгоритмі. Розшифрування інформації відбувається так само, як і шифрування, з тією лише відмінністю, що ключі йдуть у зворотному порядку, тобто не від першого до N-ному, а від N-го до першого. / /  Шифрування Розшифрування   Алгоритмічний опис блок відкритого тексту ділиться на 2 рівні частини (L0, R0 ) у кожному раунді обчислюється ( i=1…n - номер раунду) Li = Ri-1 + f (Li-1, Ki-1) Ri = Li-1 де f — деяка функція, а Ki − 1 — ключ i-го раунду. Результатом виконання n раундів є (Ln, Rn ). Але звичайно в n-ом раунді перестановка Ln й Rn не виконується, що дозволяє використати ту ж процедуру й для розшифрування, просто інвертувавши порядок використання раундової ключової інформації: Li-1 = Ri + f (Li, Ki-1) Ri-1 = Li . Невеликою зміною можна домогтися й повної ідентичності процедур шифрування й дешифрування. Одна з переваг такої моделі — оборотність алгоритму незалежно від використовуваної функції f, і вона може бути як завгодно складною Математичний опис Інволюція — взаємо-однозначне перетворення, застосування якого двічі приводить до вихідного значення. Нехай X — вхідний блок, а A - деяке інволютиве перетворення, Y - вихід. При однократному застосуванні перетворення: Y = AX, при повторному: AY = A2X = AAX = XɣX . Нехай вхідний блок X=(L, R) складається із двох підблоков (L й R) рівної довжини. Визначимо два перетворення G (X,K) = (L + F(K,R), R) (шифрування ключем K) і T(L,R) = (R,L) (перестановка подблоков). Введемо позначення: X′ = (L′, R′) =GX , X″= (L″, R″) = G2X. Доведемо їх інволютивність: Нескладно помітити, що перетворення G міняє тільки лівий подблок L, залишаючи правий R незмінним. Тому далі будемо розглядати тільки подблок L. Після того як перетворення G буде двічі застосоване до L одержимо: L″= L′+ F(K, R′) = L′+ F(K, R) = L + F(K, R)+F(K,R) = L . У такий спосіб G2X = X, отже G - інволюція. T2X = T2(L,R) = T(R,L) = (L,R) = X. Розглянемо сам процес шифрування. Визначимо X як вхідне значення. Нехай Gi — перетворення із ключем Ki, а Yi — вихідне значення після i-го раунду. Тоді перетворення на i+1-му раунді можна записати у вигляді Yi + 1 = TGiYi, крім першого, де Y1 = TG1X. Отже, вихідне значення після m раундів шифрування буде Ym = TGmYm-1 = TGmTGm-1 … TG1X. Можна помітити, що на останньому етапі не обов'язково виконувати перестановку T. Розшифрування виконується із застосуванням всіх перетворень у зворотному порядку. У силу інволютивності кожного з перетворень зворотний порядок дає вихідний результат: X = G1TG2T … Gm-1TGmT(Ym) = G1TG2T … Gm-1T(Ym-1) = … = G1T(Y1) = X. Хід роботи Для розробки програми використано середовище Eclipce. / Рис. 1. Результат виконання програми Висновок: В даній лабораторній роботі я ознайомився з методом побудови алгоритмів симетричного блокового шифрування на прикладі мережі Фейстеля. Лістинг програми public class Lab5 { private static int rounds = 7; public static void main(String[] args) { int[] a = new int[2]; a[0] = (int) 'o'; a[1] = (int) 'o'; System.out.println(a[0] + ", " + a[1]); feist(a, false); System.out.println(a[0] + ", " + a[1]); feist(a, true); } public static void feist(int[] a, boolean reverse) { int round = reverse ? rounds : 1; int l = a[0]; int r = a[1]; for (int i = 0; i < rounds; i++) { if (i < rounds - 1) { int t = l; l = r ^ f(l, round); r = t; } else { r = r ^ f(l, round); } round += reverse ? -1 : 1; } a[0] = l; a[1] = r; System.out.println("l = " + l); System.out.println("r = " + r); } private static int f(int b, int k) { return b + k; } }
Антиботан аватар за замовчуванням

14.12.2016 01:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!