Сучасні методи шифрування. Симетричні методи шифрування.

Алгоритм шифрування DES

 

Необхідність створення комерційних методів шифрування та впровадження у виробництво ЕОМ призвели до появи програмних методів шифрування. Після появи разових шифроблокнотів та розробки теорії К. Шеннона це був цілком прогнозований напрям розвитку криптографії, обумовлений інтенсивним розвитком електроніки та теорії цифрової обробки сигналів.

При цьому використання обчислювальної техніки відкривало ряд нових можливостей, пов’язаних з особливостями представлення та обробки сигналів у ЕОМ.

По-перше, це значне підвищення швидкодії пристроїв шифрування та розшифрування, що дозволило використовувати нові, значно стійкіші шифри.

По-друге, це представлення літер у цифровому двійковому коді, що призвело до появи нових алгоритмів обробки інформації при шифруванні. І хоча основні методи шифрування – заміна та перестановка залишилися, змінилися алгоритми їх реалізації.

На цей аспект застосування ЕОМ у криптографії звернемо особливу увагу.

Зрозуміло, що повідомлення у відкритому вигляді має записуватися літерами. Але ЕОМ літер у тому вигляді, до якого звикли люди, не розуміє, оскільки обчислювальна техніка оперує лише цифрами. Для представлення літер у ЕОМ використовуються спеціальні цифрові коди, наприклад, код ASCII.

Згідно з ним кожна літера представлена на клавіатурі у вигляді 7-розрядного коду числа.

Приклад ASCII коду показано у табл. 5.4.

 

 

Таблиця 5.4.

 

Літера Код Літера Код
A N
B O
C P
D Q
E R
F S
G T
H U
I V
J W
K X
L Y
M Z

 

Фактично це числа від 1 до 26 у двійковому коді, а наявність 1 у старшому розряді вказує на те, що це абетка для великих (прописних) літер.

Таким чином будь-яка літера має свій еквівалент у вигляді числа, яке можна записати як у двійковому, так і у десятковому коді (тобто, системі числення).

Розглянемо, наприклад, як запишеться слово HELLO в ASCII коді. Отже, послідовність одиниць та нулів у відповідності до таблиці 5.4 для слова HELLO матиме вигляд:

 

10010001000101100110010011001001111.

 

Зверніть увагу, ця послідовність не має проміжків і якщо розрядність поділу кодів для літер не визначена, виявити яка одиниця чи нуль відноситься до певної літери досить важко.

Це і надає можливість використання нових алгоритмів реалізації методів шифрування при використанні цифрової техніки.

Найбільш простий спосіб зашифрувати повідомлення, в цьому випадку слово HELLO, можна, наприклад, змінивши 1 на 0 у першому та четвертому розрядах кожної літери.

Для зручності сприйняття розіб’ємо суцільний потік на літери та отримаємо:

 

Відкритий текст = 1001000 1000101 1001100 1001100 1001111.

Закритий текст = 1001101 1001100 1000101 1000101 1000110.

 

В результаті використання метода заміни отримали закритий текст, що літерами запишеться як МLEEF.

Можна скористатися і методом перестановки, помінявши місцям цифри у першому та другому, четвертому та п’ятому розрядах кожної літери. Тоді матимемо:

 

Відкритий текст = 1001000 1000101 1001100 1001100 1001111.

Закритий текст = 1010000 1000110 1010100 1010100 1010111.

 

В результаті використання метода перестановки отримали криптограму MFTTW.

Зверніть увагу, що при такій перестановці у закритому тексті немає жодної літери, яка б співпадала з літерами відкритого тексту.

Але при класичній перестановці криптограма мала містити всі літери відкритого повідомлення, а цього у шифровці немає.

Таким чином, ми отримали нову якість шифрування, пов’язану з особливостями запису літер у двійковому коді.

Можна скористатися і правилами логіки Буля, що діє для двійкової системи числення, наприклад, операцією “ВИКЛЮЧНЕ АБО” та математично позначається як .

Для цього користуючись ключовим словом DAVID, записаним у тому ж ASCII коді, та цією операцією (вона ще зветься “Складання за модулем два”), спробуємо зашифрувати наше повідомлення HELLO. Нагадаємо, що ця операція виконується за правилами:

 

1 + 1 = 0; 1 + 0 = 1; 0 + 0 = 0

 

Отримаємо наступну шифровку

 

Відкритий текст = 1001000 1000101 1001100 1001100 1001111.

Ключове слово = 1000100 1000001 1010110 1001001 1000100.

Закритий текст = 0001100 0000100 0011010 0000101 0001011.

 

Як бачите, ми отримали цифрову послідовність, що взагалі ніяк не зв’язана з кодом літер у таблиці 5.4.

З розвитком комп’ютерної техніки та її впровадження у всі галузі господарства і в побут цифрових способів криптозахисту широке розповсюдження отримали так званні блокові шифри. Найбільш яскравими серед них є шифри, що використовують алгоритм шифрування DES. В Радянському Союзі цей алгоритм визначався Державним стандартом ГОСТ 28147-89.

Таке шифрування полягає у розбитті безперервного цифрового потоку на блоки фіксованої довжини у 64 біта. Далі блок розділяють на навпілблоки по 32 біт, проводять їх “обтиснення”, тобто складним способом заміняють цифри, додають лівий навпілблок до правого, створивши новий навпілблок.

Ці операції звуть “раунд”. Далі операції повторюються з новими замінами. Всього передбачено 16 раундів. Процес шифрування нагадує замішування тіста.

Розшифрування ведеться у зворотному порядку. Параметри функції “обтиснення” можуть змінюватися та визначаються ключем, який відомий відправнику та отримувачу.

Це дуже стійке шифрування. Його стійкість настільки значна, що АНБ США змусило обмежити довжину ключа, що використовується при цьому алгоритмі, довжиною у 56 біт.

Цей алгоритм був розроблений у США Хорстом Файстелем. Він розробляв цей алгоритм протягом 10 років і закінчив розробку у дослідній лабораторії компанії ІВМ на початку 70-х років минулого сторіччя. Цікава деталь, спочатку цей спосіб шифрування отримав назву Люцифер.