Загальні принципи утворення блокових симетричних шифрів
Алгоритм з симетричним криптографічним ключем
Загальні принципи утворення блокових симетричних шифрів
Як зазначено в параграфі 2.1, шифр з використанням одноразового блокнота за-безпечує ідеальну надійність. Однак він використовує ключ, довжина якого повинна бу-ти не меншою, ніж довжина повідомлення, яке шифрують. Цей факт серйозно обмежує сферу застосування такого симетричного шифру. Тому запропоновано низку блокових симетричних шифрів, які шифрують повідомлення, розбиваючи їх на частини (блоки). Блокові симетричні шифри вже не забезпечують абсолютної надійності, як шифр одно-разового блокнота, проте дають змогу суттєво зменшити довжини ключів, які викорис-товують.
Одним із найпоширеніших способів заданих блокових шифрів є використання так званих мереж Фейстела (за іменем дослідника, що працював свого часу у фірмі IBM, одного з авторів стандарту DES). Мережа Фейстела - це загальний метод перетворення множини даних за допомогою деякої функції (її називають F- функцією); F-функцію, яка є головним будівельним блоком мережі Фейстела, завжди вибирають нелінійною і практично у всіх випадках необоротною.
Формально F- функцію можна записати у вигляді відображення
де N - довжина перетворюваного блока даних (повинна бути парною), k - довжина ви-користовуваного блока ключової інформації К.
Нехай тепер X - блок даних. Запишемо його у вигляді двох під блоків однакової довжини: X = (А, В). Тоді один цикл (ітерацію) мережі Фейстела визначають так:
що показано на рис. 2.1.
Мережа Фейстела складається з певної фіксованої кількості циклів, яку визна-чають з міркувань стійкості шифру, що його розробляють. У цьому разі в останньому циклі переставляння місцями половин блоків даних не виконують, бо це не впливає на стійкість шифру. Така структура шифрів має низку переваг, а саме:
процедури шифрування й розшифрування збігаються, лише базову інформацію під час розшифрування використовують у зворотному порядку;
для дешифрування можна використовувати ті ж блоки, що й під час шифрування.
Недоліком мережі Фейстела є те, що в кожному циклі змінюється лише половина блока тексту, яку опрацьовують. Це призводить до потреби збільшувати кількість цик-лів для досягнення бажаної стійкості.
Стосовно вибору F- функції якихось чітких рекомендацій нема, проте, як зви-чайно, ця функція є послідовністю залежних від ключа нелінійних замін, переставлянь і зсувів.
Інший підхід до побудови блокових шифрів - використання оборотних, залежних від ключа перетворень. У цьому випадку на кожній ітерації змінюється весь блок і, відповідно, загальна кількість ітерацій може бути зменшена. Кожна ітерація є послідов-ністю перетворень (так званих шарів), кожне з яких виконує свою функцію. Звичайно використовують шар нелінійної оборотної заміни, шар лінійного перемішування й один або два шари підмішування ключа. Недоліком цього підходу є те, що для процедур шифрування й дешифрування в загальному випадку не можна використовувати одні й ті ж блоки, а це збільшує апаратні або програмні затрати на реалізацію.
Стандарт шифрування даних DES
Стандарт шифрування даних DES (Data Encryption Standard), розроблений фір-мою IBM близько 1970 р., передбачає шифрування блоків, складених з 64 бітів, що відповідає восьми літерам коду ASCII. Ключі складаються також з 64 бітів, у цьому разі 8 бітів є бітами парності. Тобто під час вибору ключа можна задати лише 56 бітів, решта 8 бітів будуть утворені автоматично. DES ухвалений у США як стандарт для захисту комерційної та урядової інформації, не пов'язаної з національною безпекою. Не були опубліковані ніякі праці, що дають необхідні математичні обґрунтування цього методу. Реалізація DES надзвичайно швидка (близько 1 Гбайт/с), його широко викорис-товують на практиці.
Шифрування й дешифрування за допомогою DES складається з 16 циклів. Під час кожного циклу виконуються ті самі обчислення, однак на підставі результатів об-числень із попереднього циклу й спеціального циклового під ключа, що утворюється з головного 64-бітового ключа. Додатково перед першим і після останнього циклу біти даних переставляються фіксованим способом.
Для отримання під ключа на початку усувають 8 бітів парності, що містяться в ключі. Тоді з решти 56 бітів утворюються 16 під ключів, кожний з яких складається з 48 бітів. Таким способом утворений i-й під ключ Ki, використовують під час i-го циклу. У цьому разі підключ складається з наперед визначених бітів початкового ключа. Для кожного підключа ці біти є іншими, розташованими в іншій послідовності, утвореній за допомогою циклічного зсуву.
На початку шифрування біти явного тексту переставляють (табл. 2.1, переста-новка IP); їх пересилають за допомогою "з'єднань" на відповідні місця, що досягається апаратною реалізацією. Числа в табл. 2.1 для перестановки IP означають таке: перший біт вхідних даних переставляють на 58-ме місце, другий - на 50-те місце, ..., восьмий - на друге місце, дев'ятий - на 60-те місце, ..., 64-й - на сьоме місце. Ця операція не має жодної криптографічної мети. Зазначимо, що відповідна програмна реалізація потребує довгих обчислень, оскільки кожний біт окремо повинен бути скопійований на місце призначення.
Наприкінці шифрування отримані біти переставляють за допомогою перестанов-ки, що є оберненою до початкової (так звана кінцева перестановка IP-1) (див. табл. 2.1).
Вхідні дані (i+1)-го (i=0,1,...,15) циклу (64 біти) розбивають на дві 32-бітові
послідовності: послідовність Li = (xi,0,xi,1,…xi,31), що складається з перших 32 бітів даних, отриманих в і-му циклі, та послідовність, отриману з решти
32 бітів даних на виході i-го циклу. (Дані на виході нульового циклу - це просто вхідні 64-бітові дані алгоритму, до яких застосована перестановка IP). У цьому разі виконуються такі співвідношення:
де значення функції/відшукують так (рис.2.2).
Через так звану перестановку з розширенням із 32-бітової послідовності Ri,