Макгаффин (шифр)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
MacGuffin
[[Изображение:
MacGuffinDiagram.png
|
200px|
изображение]]
Создатель:

Брюс Шнайер, Мэтт Блэйз

Создан:

1994 год

Опубликован:

1994.12.14

Размер ключа:

128 бит

Размер блока:

64 бит

Число раундов:

32

Тип:

Сеть Фейстеля

В криптографии, Макгаффин — симметричный блочный шифр, построенный на основе сети Фейстеля. Алгоритм придуман Брюсом Шнайером и Мэттом Блэйзом в 1994 году в рамках Fast Software Encryption. И в том же году Винсент Рэймен и Барт Пренель показали его уязвимость к дифференциальному криптоанализу, также имеющуюся у похожего шифра DES. Предназначался для исследования такой структуры шифров, как несбалансированная сеть Фейстеля[1].

Введение[править | править вики-текст]

Традиционно, шифры, использующие сеть Фейстеля, делят входной блок на равные части — левую(целевой блок) и правую(управляющий блок). При каждом раунде блоки меняются местами. Макгаффин базируется на структуре, в которой целевой блок меньшей длины, чем управляющий. Шифр оперирует входными блоками длиной 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]:

Таблица 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 бит, Макгаффин использует итерированную версию своей функции шифрования блоков[5].

Криптоанализ[править | править вики-текст]

Как и DES, Макгаффин поддаётся дифференциальному криптоанализу, суть которого в анализе вероятностей получения определённой разности значений функции Фейстеля при заданной разности аргументов. Оптимальная 4-раундовая характеристика имеет вероятность , в то время, как 2-раундовая DES . Таким образом, 32 раунда Макгаффина менее устойчивы, чем 16 DES[6].

Примечания[править | править вики-текст]

Литература[править | править вики-текст]