Ця операція позначається як.
Перераховані операції виконуються в кожному раунді у зазначеній послідовності, за винятком останнього раунду алгоритму, в якому не виконується операція. Крім того, перед першим раундом виконується вхідний відбілювання даних шляхом накладення на шіфруемий блок операцією XOR нульового підключа.
Варто відзначити, що всі перераховані операції є зворотними самим собі, відповідно, розшифрування виконується за допомогою тих же операцій в тому ж порядку, що і при зашіфровиваніем. Змінюється тільки порядок використання підключай на зворотний.
Кількість раундів алгоритму залежить від розміру ключа шифрування і визначається наступним чином:
де N - розмір ключа в 32-бітових фрагментах.
1.2.4 Алгоритм Lucifer
Прийнятий у США стандарт шифрування DES був заснований на алгоритмі Lucifer, розробленому на початку 1970-х рр. Алгоритм Lucifer і його історія є досить цікавими і заслуговують окремого рассмотренія.часто називають «першим алгоритмом шифрування для цивільних застосувань». Насправді Lucifer являє собою не один алгоритм, а ціле сімейство пов'язаних між собою (розроблених в рамках однойменної дослідницької програми з комп'ютерної криптографії фірми IBM [28]), але створених в різний час, алгоритмів блокового симетричного шифрування даних.
За словами Брюса Шнайера [28], «існує, щонайменше, два різних алгоритму з таким ім'ям, що ... призвело до помітної плутанини». Розглянемо по черзі різні варіанти алгоритму Lucifer.
Варіант № 1
Вихідний варіант алгоритму Lucifer був розроблений колективом фахівців з компанії IBM під керівництвом Хорста Фейстеля (Horst Feistel). Цей варіант алгоритму був запатентований компанією IBM в 1971 р (патент виданий в 1974 р), його докладний опис можна знайти в патенті США №3798359.
Цей варіант алгоритму шифрує дані блоками по 48 бітів, використовуючи при цьому 48-бітний ключ шифрування.
Алгоритм є підстановлювальний-перестановною мережею. У процесі шифрування виконується 16 раундів перетворень (це рекомендоване автором алгоритму кількість раундів), в кожному з яких над оброблюваним блоком даних проводяться наступні дії (рис. 1.8):
. Забезпечення зворотного зв'язку. Виконується логічна операція «виключає або» () між кожним бітом оброблюваного блоку і попереднім значенням того ж біта у випадку, якщо аналогічний біт ключа раунду має одиничне значення; в іншому випадку операція не виконується. Попередні значення кожного оброблюваного біта зберігаються в регістрі блоку зворотного зв'язку. У першому раунді алгоритму блок зворотного зв'язку операцію не виконує, а тільки запам'ятовує біти оброблюваного блоку для наступного раунду.
Рис. 1.8 - Узагальнена схема варіанта № 1
. Щоперемішує перетворення. Виконується нелінійне перетворення даних, отриманих в результаті попередньої операції, шляхом табличній заміни, залежної від значення конкретного біта ключа раунду. Причому така залежність є досить простою: якщо значення керуючого біта дорівнює 1, виконується таблична заміна So, в іншому випадку використовується таблиця Si.
Кожен Нібл даних замінюється незалежно від інших даних; таким чином, таблиці замінюють 4-бітове вхідне значення також на 4-бітове вихідна.
Варто сказати, що в патенті не приведені конкретні значення таблиць замін; як приклад наведена наступна таблиця:
, 5,4,0,7,6,10,1,9,14,3,12,8,15,13,11.
Це означає, що вхідне значення 0 замінюється значенням 2, значення 1 замінюється на 5 і т. д. до значення 15, яке замінюється на 11.
. Рассеивающее перетворення, що складається в простому перенаправлення вхідних бітів таким чином, що значення всіх вхідних бітів міняються місцями за певним законом. Ця операція виконується абсолютно незалежно від значення ключа шифрування.
. Накладення ключа. Виконується шляхом побітового застосування операції до результату попередньої операції і відповідним бітам ключа раунду.
Як видно з наведеного опису, в кожному раунді шифрування потрібно 108 бітів ключової інформації:
· 48 бітів для блоку зворотного зв'язку;
· 12 бітів для блоку перемішування;
· 48 бітів для блоку накладення ключа.
Для отримання 16108-бітових раундових ключів з вихідного 48-бітного ключа шифрування виконується процедура розширення ключа (рис. 1.9):
. 48-бітний ключ завантажується в 8-бітові р...