MacGuffin (шифр)

Перейти к навигацииПерейти к поиску
MacGuffin
СоздательБрюс Шнайер, Мэтт Блэйз
Создан1994 год
Опубликован 1994.12.14
Размер ключа 128 бит
Размер блока64 бит
Число раундов 32
ТипСеть Фейстеля

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

Алгоритм придуман Брюсом Шнайером и Мэттом Блэйзом[англ.] в 1994 году в рамках Fast 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]:

Таблица 1.
Перестановка входных бит
S-блоки входные биты
0 1 2 3 4 5
S1a2a5b6b9c11c13
S2a1a4b7b10c8c14
S3a3a6b8b13c0c15
S4a12a14b1b2c4c10
S5a0a10b3b14c6c12
S6a7a8b12b15c1c5
S7a9a15b5b11c2c7
S8a11a13b0b4c3c9

Ключевое расписание

В каждом раунде шифра используется секретный ключевой параметр, который сложением по модулю 2 влияет на входы S-блоков. Соответственно, при каждом раунде запрашивается 48 бит. Для конвертации 128 бит ключа в последовательность из 48 бит, MacGuffin использует итерированную версию своей функции шифрования блоков[5].

Криптоанализ

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

Примечания

Литература