В криптографії, MacGuffin — симетричний блочний шифр, побудований на основі мережі Фейстеля.

MacGuffin
Розробники Брюс Шнайєр, Метт Блейз
Уперше оприлюднений 14 грудня 1994
Деталі шифру
Розмір ключа 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 з раундовим ключем, створеним з основного за допомогою алгоритму ключового розкладуключевого расписания[en]. Отримані 48 біт розбиваються на 8 частин і стають вхідними параметрами шести S-блоків. У свою чергу, кожен S-блок перетворює 6 вхідних бітів в 2 вихідних. 16-бітовий результат S-блоків складається по модулю 2 з крайнім зліва вхідним блоком, і результат стає крайнім праворуч регістром вхідного блоку наступного раунду. Три крайні праворуч регістра поточного раунду зміщуються без змін на одну позицію вліво. Таким чином формується вхідний блок для наступного раунду.[4]

S-блоки та перестановки ред.

Нелінійність процесу шифрування і раундових ключів забезпечується переважно восьми S-блоками, S1…S8. На вхід вибираються біти з поданих 16-бітних регістрів a, b і c. Порядок вибору визначається за таблицею 1 (біт з позицією 0 найменш значущий)[5]:

Таблиця 1.
Перестановка вхідних біт
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].

Примітки ред.

Література ред.