- •Лабораторна робота № 2 Перестановочний шифр
- •Лабораторна робота №3 Криптоаналіз шифрів моноалфавітної заміни
- •Лабораторна робота №4 Організація стегоканалу в bmp-файлі
- •Лабораторна робота №5 Алгоритм шифрування cast-128
- •Конструкція блокового шифру на основі мереж Фейстеля
- •Алгоритмічний опис
- •Математичний опис
- •Функції, що використовуються в мережах Фейстеля
- •Блок-блок-s-блок (s-box)
- •Циклічний зсув
- •Додавання по модулю n
- •Множення по модулю n
- •Приклад реалізації мовою Си
- •Переваги й недоліки
- •Модифікації мережі Фейстеля
Алгоритмічний опис
блок відкритого тексту ділиться на 2 рівні частини
у кожному раунді обчислюється ( — номер раунду)
,
де f — деяка функція, а Ki − 1 — ключ i-го раунду.
Результатом виконання n раундів є . Але звичайно в n-ом раунді перестановка Ln й Rn не виконується, що дозволяє використати ту ж процедуру й для розшифрування, просто інвертувавши порядок використання раундової ключової інформації:
,
Невеликою зміною можна домогтися й повної ідентичності процедур шифрування й дешифрування.
Одна з переваг такої моделі — оборотність алгоритму незалежно від використовуваної функції f, і вона може бути як завгодно складною.
Математичний опис
Інволюція — взаємо-однозначне перетворення, застосування якого двічі приводить до вихідного значення.
Нехай X — вхідний блок, а A — деяке инволютивное перетворення, Y — вихід.
При однократному застосуванні перетворення: Y = AX, при повторному: .
Нехай вхідний блок X=(L, R) складається із двох підблоков (L й R) рівної довжини. Визначимо два перетворення (шифрування ключем K) і T(L,R) = (R,L) (перестановка подблоков). Введемо позначення:
Доведемо їх инволютивность:
Нескладно помітити, що перетворення G міняє тільки лівий подблок L, залишаючи правий R незмінним. Тому далі будемо розглядати тільки подблок L. Після того як перетворення G буде двічі застосоване до 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 раундів шифрування буде . Можна помітити, що на останньому етапі не обов'язково виконувати перестановку T.
Розшифрування виконується із застосуванням всіх перетворень у зворотному порядку. У силу інволютивності кожного з перетворень зворотний порядок дає вихідний результат:
.
Функції, що використовуються в мережах Фейстеля
Принципова схема розрядн-3-розрядного S-блоку
Принципова схема 8-розрядного P-блоку
Блок-блок-s-блок (s-box)
Блок підстановок (S-блок) складається з дешифратора, що перетворює n-розрядний двійковий сигнал в однорозрядний сигнал за підстановкою 2n, системи комутаторів внутрішніх з'єднань (усього з'єднань 2n!) і шифраторів, що переводить сигнал з однорозрядного 2n-ого в n-розрядний двійковий. Аналіз n-розрядного S-блоку, при великому n украй складний, однак реалізувати такий блок на практиці дуже складно, тому що число можливих з'єднань украй велике (2n!). На практиці блок підстановок використається як частина більше складних систем.
У загальному випадку S-блок може мати незбіжне число входів/виходів, у цьому випадку в системі комутації від кожного виходу дешифратора може йти не одне з'єднання, а 2 або більше або не йти зовсім. Те ж саме справедливо й для входів шифратора.
В електроніці можна безпосередньо застосовувати наведену праворуч схему, у програмуванні ж генерують таблиці заміни. Обоє цих підходу є еквівалентними, тобто файл, зашифрований на комп'ютері, можна розшифрувати на електронному пристрої й навпаки.
Таблиця заміни для наведеного розрядн-3-розрядного Блок-блок-S-блоку |
||||||||
№ комбінації |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Вхід |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
Вихід |
010 |
110 |
000 |
001 |
011 |
100 |
111 |
101 |
P-блок (P-box)
Блок перестановок усього лише змінює положення цифр й є лінійним пристроєм. Цей блок може мати дуже велику кількість входів-виходів, однак у силу лінійності систему не можна вважати криптостійкою. Криптоаналіз ключа для n-розрядного P-блоку проводиться шляхом подачі на вхід n-1 різних повідомлень, кожне з яких складається з n-1 нуля («0») і 1 одиниці («1»).
