MacGuffin (шифр)
В криптографії, MacGuffin — симетричний блочний шифр, побудований на основі мережі Фейстеля.
Алгоритм блокового шифрування | |
---|---|
MacGuffinDiagram.png | |
Назва: | MacGuffin |
Розробник: | Брюс Шнайєр, Метт Блейз |
Створений: | 1994 рік |
Опублікований: | 1994.12.14 |
Розмір ключа: | 128 біт |
Розмір блоку: | 64 біт |
Число раундів: | 32 |
Тип: | Мережа Фейстеля |
Алгоритм придуманий Брюсом Шнайєром і Меттом Блейзом в 1994 році в рамках Fast Software EncryptionFast Software Encryption. І в тому ж році Вінсент Реймен і Барт Пренель показали його вразливість до диференціального криптоаналізу, також наявну в схожого шифру DES. Призначався для дослідження такої структури шифрів, як незбалансована мережа Фейстеля[1].
Введення
Традиційно, шифри, що використовують мережу Фейстеля, ділять вхідний блок на рівні частини — ліву (цільовий блок) і праву (керуючий блок). При кожному раунді блоки міняються місцями. MacGuffin базується на структурі, в якій цільовий блок меншої довжини, ніж керуючий. Шифр оперує вхідними блоками довжиною 64 біта, де цільова частина довжиною 16 біт, а керуюча 48. Використовується 128 бітний ключ. Однак, кількість раундів і розмір ключа можуть змінюватись[2].
Архітектура
Велика частина дизайну запозичена у DES. Вхідний не зашифрований текст розділений на 4 16 бітних слова. S-блоки запозичені у DES. Використовується 8, кожен повертає результат з 4-х біт, приймаючи 6 біт на вході. Але враховуються тільки 2 біта (сумарний результат повинен бути 16 біт). Вихід S-блоку не стає на позиції бітів, які використовуються для входу самого блоку, протягом наступних 4-х раундів. Шифр призначений для реалізації в устаткуванні або програмному забезпеченні. Перестановки вибрані так, щоб мінімізувати кількість операцій зсуву і маски.[3]
Опис алгоритму
Ключовим елементом у структурі шифру є незбалансована мережа Фейстеля. Вхідні блоки поділені на чотири регістри, по два байти кожен. У новому раунді три останніх правих блока об'єднуються в контрольний блок і складаються по модулю 2 з раундовим ключем, створеним з основного за допомогою алгоритму ключового розкладуключевого расписания. Отримані 48 біт розбиваються на 8 частин і стають вхідними параметрами шести S-блоків. У свою чергу, кожен S-блок перетворює 6 вхідних бітів в 2 вихідних. 16-бітовий результат S-блоків складається по модулю 2 з крайнім зліва вхідним блоком, і результат стає крайнім праворуч регістром вхідного блоку наступного раунду. Три крайні праворуч регістра поточного раунду зміщуються без змін на одну позицію вліво. Таким чином формується вхідний блок для наступного раунду.[4]
S-блоки та перестановки
Нелінійність процесу шифрування і раундових ключів забезпечується переважно восьми S-блоками, S1…S8. На вхід вибираються біти з поданих 16-бітних регістрів a, b і c. Порядок вибору визначається за таблицею 1 (біт з позицією 0 найменш значущий)[5]:
S-блоки | вхідні біти | |||||
---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | |
S1 | a2 | a5 | b6 | b9 | c11 | c13 |
S2 | a1 | a4 | b7 | b10 | c8 | c14 |
S3 | a3 | a6 | b8 | b13 | c0 | c15 |
S4 | a12 | a14 | b1 | b2 | c4 | c10 |
S5 | a0 | a10 | b3 | b14 | c6 | c12 |
S6 | a7 | a8 | b12 | b15 | c1 | c5 |
S7 | a9 | a15 | b5 | b11 | c2 | c7 |
S8 | a11 | a13 | b0 | b4 | c3 | c9 |
Ключовий розклад
У кожному раунді шифру використовується секретний ключовий параметр, який додаванням за модулем 2 впливає на входи S-блоків. Відповідно, при кожному раунді запитується 48 біт. Для конвертації 128 біт ключа в послідовність з 48 біт, MacGuffin використовує итеріровану версію своєї функції шифрування блоків[5].
Криптоаналіз
Як і DES, MacGuffin піддається диференціальному криптоаналізу, суть якого в аналізі ймовірностей отримання певної різниці значень функції Фейстеля при заданій різниці аргументів. Оптимальна 4-раундова характеристика має вірогідність у той час, як 2-раундова DES . Таким чином, 32 раунду MacGuffin менш стійкі, ніж 16 DES[6].
Примітки
- Unbalanced Feistel networks and block cipher design, 1996, с. 123.
- The MacGuffin block cipher algorithm, 1994, с. 97.
- The MacGuffin block cipher algorithm, 1994, с. 98.
- The MacGuffin block cipher algorithm, 1994, с. 99.
- The MacGuffin block cipher algorithm, 1994, с. 100.
- Cryptanalysis of McGuffin, 1995, с. 354.