В
криптографии
,
MESH
—
блочный шифр
, являющийся модификацией
IDEA
. Разработан
,
Винсентом Рэйменом
,
Бартом Пренелем
и
в 2002 году. В отличие от IDEA, MESH имеет более сложную раундовую структуру. Иной алгоритм генерации
ключей
позволяет MESH избегать проблемы слабых ключей
.
Структура шифра
Каждый
раунд
в IDEA и MESH состоит из операций сложения и умножения. Последовательность таких вычислений в пределах одного раунда образует MA-бокс. Все MA-боксы в MESH используют минимум три чередующихся уровня сложений и умножений (по схеме «зиг-заг»), в то время, как в IDEA таковых только два. Это делает MESH более стойким против
дифференциальной
и
линейной
криптоатак. Также, с целью избежать проблемы слабых ключей, в MESH используются два следующих принципа:
-
Каждый подключ зависит от почти всех подключей, более точно — как минимум от шести предыдущих ключей нелинейно
-
Используются фиксированные константы. Без них, например, ключ из всех нулей перешел бы в подключи, каждый из которых равнялся бы нулю в любом раунде
Как и в IDEA, MESH использует следующие операции:
-
умножение
по модулю
, причем вместо нуля используется
(
)
-
циклический сдвиг
влево на
бит (
)
-
сложение по модулю
(
)
-
побитовое
исключающее ИЛИ
(
)
Операции расположены в порядке уменьшения приоритета.
В вычислениях запись
обозначает 16-битное слово. Индексы описываются далее.
MESH описывается в трех вариациях по размерам блока: 64, 96, 128 бит. Размер ключа при этом берется вдвое больший
.
MESH-64
В данной вариации размер блока составляет 64 бит, ключ — 128 бит.
Шифрование
проходит в 8,5 раунда. Половина раунда относится к выходным преобразованиям
.
Раундовые преобразования
Обозначим входную информацию для
-го раунда:
Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На четных и нечетных раундах перемешивание происходит по-разному:
Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
МА-вычисления описываются следующими формулами:
Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
Согласно схеме, для получения зашифрованного сообщения необходимо после восьмого раунда провести перемешивание по нечетной схеме
Генерация ключей
Для генерации ключей используется 128-битный пользовательский ключ, а также 16-битные константы
:
,
, они вычисляются в
Поле Галуа
по модулю многочлена
. Пользовательский ключ разбивается на 8 16-битных слов
.
Вычисление подключей происходит следующим образом
:
где
.
Расшифровка
Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
- подключи полных раундов;
- подключи выходных преобразований.
Тогда подключи расшифровки задаются следующим образом
:
-
, - первый раунд расшифровки;
-
, -
-й
четный
раунд,
;
-
, -
-й
нечетный
раунд,
;
-
, - выходные преобразования.
MESH-96
В данной вариации размер блока составляет 96 бит, ключ — 192 бит. Шифрование проходит в 10,5 раунда. Половина раунда относится к выходным преобразованиям
.
Раундовые преобразования
Обозначим входную информацию для
-го раунда:
Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На четных и нечетных раундах перемешивание происходит по-разному:
Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
МА-вычисления описываются следующими формулами:
Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
Для получения зашифрованного сообщения необходимо после 10-го раунда провести перемешивание по нечетной схеме
Генерация ключей
Для генерации ключей используется 192-битный пользовательский ключ, а также 16-битные константы, такие же, как и для MESH-64.
Вычисление подключей происходит следующим образом
:
где
.
Расшифровка
Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
— подключи полных раундов;
- подключи выходных преобразований.
Тогда подключи расшифровки задаются следующим образом
:
-
, — первый раунд расшифровки;
-
, —
-й
чётный
раунд,
;
-
, —
-й
нечётный
раунд,
;
-
, — выходные преобразования.
MESH-128
В данной вариации размер блока составляет 128 бит, ключ — 256 бит. Шифрование проходит в 12,5 раунда. Половина раунда относится к выходным преобразованиям
.
Раундовые преобразования
Обозначим входную информацию для
-го раунда:
Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На чётных и нечётных раундах перемешивание происходит по-разному:
Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
МА-вычисления описываются следующими формулами:
Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
Для получения зашифрованного сообщения необходимо после 12-го раунда провести перемешивание по нечетной схеме
Генерация ключей
Для генерации ключей используется 256-битный пользовательский ключ, а также 16-битные константы, такие же, как для MESH-64 и для MESH-96.
Вычисление подключей происходит следующим образом
:
где
.
Расшифровка
Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
— подключи полных раундов;
— подключи выходных преобразований.
Тогда подключи расшифровки задаются следующим образом
:
-
, - первый раунд расшифровки;
-
, -
-й
чётный
раунд,
;
-
, -
-й
нечётный
раунд,
;
-
, — выходные преобразования.
Криптоанализ
Ниже приводится таблица, содержащая расчетную информацию по возможным криптоатакам. В ней рассматриваются урезанные алгоритмы, количество раундов можно увидеть в соответствующей колонке. За данные принимаются выбранные
подобранные открытые тексты
, указывается необходимое количество таковых (в блоках). Время оценивается в количестве вычислений. Память отражает количество ячеек памяти, необходимых для хранения каких-либо данных во время криптоатаки. Как видно из таблицы, все варианты MESH более сложны для взлома представленными криптоатаками, чем IDEA, на котором он основан
.
Таблица 1. Обобщение сложностей криптоатак на IDEA и MESH
Шифр
|
Криптоанализ
|
Раундов
|
Данные
|
Память
|
Время
|
IDEA
(8,5 раундов)
|
Интегральный
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MESH-64
(8,5 раундов)
|
Интегральный
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MESH-96
(10,5 раундов)
|
Интегральный
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MESH-128
(12,5 раундов)
|
Интегральный
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Примечания
-
, p. 1-2.
-
, p. 124.
-
, p. 125.
-
, p. 125-126.
-
, p. 3.
-
, p. 4.
-
, p. 127.
-
, p. 127-129.
-
, p. 129.
-
, p. 129-130.
-
, p. 130.
-
, p. 130-132.
-
, p. 132.
-
, p. 132-133.
-
, p. 10-11.
-
, p. 178-180.
-
, p. 179.
Литература
-
J. Nakahara, Jr.; V. Rijmen; B. Preneel; J. Vandewalle.
(англ.)
. — 2002.
-
J. Nakahara, Jr.
(англ.)
. — 2003. — Июнь. —
ISBN 90-5682-407-4
.