MESH (шифр)
| MESH | |
|---|---|
| Создатель | Накахара, Рэймен, Пренель, Вандевалле |
| Опубликован | 2002 |
| Размер ключа | 128, 192, 256 бит |
| Размер блока | 64, 96, 128 бит |
| Число раундов | 8,5, 10,5, 12,5 |
| Тип | основан на IDEA, модификация Сети Фейстеля |
В криптографии, MESH — блочный шифр, являющийся модификацией IDEA. Разработан Жорже Накахарой, Винсентом Рэйменом, Бартом Пренелем и Йоосом Вандевалле в 2002 году. В отличие от IDEA, MESH имеет более сложную раундовую структуру. Иной алгоритм генерации ключей позволяет MESH избегать проблемы слабых ключей[1].
Структура шифра
Каждый раунд в IDEA и MESH состоит из операций сложения и умножения. Последовательность таких вычислений в пределах одного раунда образует MA-бокс. Все MA-боксы в MESH используют минимум три чередующихся уровня сложений и умножений (по схеме «зиг-заг»), в то время, как в IDEA таковых только два. Это делает MESH более стойким против дифференциальной и линейной криптоатак. Также, с целью избежать проблемы слабых ключей, в MESH используются два следующих принципа:
- Каждый подключ зависит от почти всех подключей, более точно — как минимум от шести предыдущих ключей нелинейно
- Используются фиксированные константы. Без них, например, ключ из всех нулей перешел бы в подключи, каждый из которых равнялся бы нулю в любом раунде
Как и в IDEA, MESH использует следующие операции:
- умножение по модулю [math]\displaystyle{ 2^{16} + 1 }[/math], причем вместо нуля используется [math]\displaystyle{ 2^{16} }[/math] ([math]\displaystyle{ \odot }[/math])
- циклический сдвиг влево на [math]\displaystyle{ n }[/math] бит ([math]\displaystyle{ \lll\ n }[/math])
- сложение по модулю [math]\displaystyle{ 2^{16} }[/math] ([math]\displaystyle{ \boxplus }[/math])
- побитовое исключающее ИЛИ ([math]\displaystyle{ \oplus }[/math])
Операции расположены в порядке уменьшения приоритета. В вычислениях запись [math]\displaystyle{ A_{k}^{(i)} }[/math] обозначает 16-битное слово. Индексы описываются далее.
MESH описывается в трех вариациях по размерам блока: 64, 96, 128 бит. Размер ключа при этом берется вдвое больший[2].
MESH-64
В данной вариации размер блока составляет 64 бит, ключ — 128 бит. Шифрование проходит в 8,5 раунда. Половина раунда относится к выходным преобразованиям[3].
Раундовые преобразования
Обозначим входную информацию для [math]\displaystyle{ i }[/math]-го раунда:
[math]\displaystyle{ X^{(i)}\ =\ (X_1^{(i)},\ X_2^{(i)},\ X_3^{(i)},\ X_4^{(i)}),\ i=1...9 }[/math]
Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На четных и нечетных раундах перемешивание происходит по-разному:
- Для нечетных раундов:
[math]\displaystyle{ (Y_1^{(i)},\ Y_2^{(i)},\ Y_3^{(i)},\ Y_4^{(i)})\ =\ (X_1^{(i)}\ \odot\ Z_1^{(i)},\ X_2^{(i)}\ \boxplus\ Z_2^{(i)},\ X_3^{(i)}\ \boxplus\ Z_3^{(i)},\ X_4^{(i)}\ \odot\ Z_4^{(i)}) }[/math]
- Для четных раундов:
[math]\displaystyle{ (Y_1^{(i)},\ Y_2^{(i)},\ Y_3^{(i)},\ Y_4^{(i)})\ =\ (X_1^{(i)}\ \boxplus\ Z_1^{(i)},\ X_2^{(i)}\ \odot\ Z_2^{(i)},\ X_3^{(i)}\ \odot\ Z_3^{(i)},\ X_4^{(i)}\ \boxplus\ Z_4^{(i)}) }[/math]
Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
[math]\displaystyle{ (Y_5^{(i)},\ Y_6^{(i)})\ =\ (Y_1^{(i)}\ \oplus\ Y_3^{(i)},\ Y_2^{(i)}\ \oplus\ Y_4^{(i)}) }[/math]
МА-вычисления описываются следующими формулами:
[math]\displaystyle{ Y_7^{(i)}\ =\ ((Y_5^{(i)}\ \odot\ Z_5^{(i)}\ \boxplus\ Y_6^{(i)})\ \odot\ Z_6^{(i)}\ \boxplus\ (Y_5^{(i)}\ \odot\ Z_5^{(i)}))\ \odot\ Z_7^{(i)} }[/math]
[math]\displaystyle{ Y_8^{(i)}\ = \ Y_7^{(i)}\ \boxplus\ ((Y_5^{(i)}\ \odot\ Z_5^{(i)}\ \boxplus\ Y_6^{(i)})\ \odot\ Z_6^{(i)}) }[/math]
Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
[math]\displaystyle{ X^{(i+1)}\ =\ (Y_1^{(i)}\ \oplus\ Y_8^{(i)},\ Y_3^{(i)}\ \oplus\ Y_8^{(i)},\ Y_2^{(i)}\ \oplus\ Y_7^{(i)},\ Y_4^{(i)}\ \oplus\ Y_7^{(i)}) }[/math]
Согласно схеме, для получения зашифрованного сообщения необходимо после восьмого раунда провести перемешивание по нечетной схеме [math]\displaystyle{ (i=9) }[/math][4]
Генерация ключей
Для генерации ключей используется 128-битный пользовательский ключ, а также 16-битные константы [math]\displaystyle{ c_i }[/math]: [math]\displaystyle{ c_0\ =\ 1 }[/math], [math]\displaystyle{ c_i\ =\ 3*c_{i-1} }[/math], они вычисляются в Поле Галуа [math]\displaystyle{ GF(2^{16}) }[/math] по модулю многочлена [math]\displaystyle{ x^{16}\ +\ x^{5}\ +\ x^{3}\ +\ x^{2}\ +\ 1 }[/math]. Пользовательский ключ разбивается на 8 16-битных слов [math]\displaystyle{ K_i,\ 0\ \leqslant\ i\ \leqslant\ 7 }[/math].
Вычисление подключей происходит следующим образом[5]:
[math]\displaystyle{ Z_{i+1}^{(1)}\ =\ K_i\ \oplus\ c_i,\ 0\ \leqslant\ i\ \leqslant\ 6 }[/math]
[math]\displaystyle{ Z_1^{(2)}\ =\ K_7\ \oplus\ c_7 }[/math]
[math]\displaystyle{ Z_{l(i)}^{(h(i))}\ =\ (((((Z_{l(i-8)}^{(h(i-8))}\ \boxplus\ Z_{l(i-7)}^{(h(i-7))})\ \oplus\ Z_{l(i-6)}^{(h(i-6))})\ \boxplus\ Z_{l(i-3)}^{(h(i-3))})\ \oplus\ Z_{l(i-2)}^{(h(i-2))})\ \boxplus\ Z_{l(i-1)}^{(h(i-1))})\ \lll\ 7\ \oplus\ c_i, }[/math]
где [math]\displaystyle{ 8\ \leqslant\ i\ \leqslant\ 59,\ h(i)\ =\ i\ div\ 7\ +\ 1,\ l(i)\ =\ i\ \bmod\ 7\ +\ 1 }[/math].
Расшифровка
Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
[math]\displaystyle{ (Z_{1}^{(r)},\ ...,\ Z_{7}^{(r)}),\ 1\ \leqslant\ r\ \leqslant\ 8 }[/math] - подключи полных раундов;
[math]\displaystyle{ (Z_{1}^{(9)},\ ...,\ Z_{4}^{(9)}) }[/math] - подключи выходных преобразований.
Тогда подключи расшифровки задаются следующим образом[6]:
- [math]\displaystyle{ ((Z_1^{(9)})^{-1},\ -Z_2^{(9)},\ -Z_3^{(9)},\ (Z_4^{(9)})^{-1},\ Z_5^{(8)},\ Z_6^{(8)},\ Z_7^{(8)}) }[/math], - первый раунд расшифровки;
- [math]\displaystyle{ (-Z_1^{(10-r)},\ (Z_3^{(10-r)})^{-1},\ (Z_2^{(10-r)})^{-1},\ -Z_4^{(10-r)},\ Z_5^{(9-r)},\ Z_6^{(9-r)},\ Z_7^{(9-r)}) }[/math], - [math]\displaystyle{ r }[/math]-й четный раунд, [math]\displaystyle{ r\ \in\ \{2,\ 4,\ 6,\ 8\} }[/math];
- [math]\displaystyle{ ((Z_1^{(9-r)})^{-1},\ -Z_3^{(9-r)},\ -Z_2^{(9-r)},\ (Z_4^{(9-r)})^{-1},\ Z_5^{(8-r)},\ Z_6^{(8-r)},\ Z_7^{(8-r)}) }[/math], - [math]\displaystyle{ r }[/math]-й нечетный раунд, [math]\displaystyle{ r\ \in\ \{3,\ 5,\ 7\} }[/math];
- [math]\displaystyle{ ((Z_1^{(1)})^{-1},\ -Z_2^{(1)},\ -Z_3^{(1)},\ (Z_4^{(1)})^{-1}) }[/math], - выходные преобразования.
MESH-96
В данной вариации размер блока составляет 96 бит, ключ — 192 бит. Шифрование проходит в 10,5 раунда. Половина раунда относится к выходным преобразованиям[7].
Раундовые преобразования
Обозначим входную информацию для [math]\displaystyle{ i }[/math]-го раунда:
[math]\displaystyle{ X^{(i)}\ =\ (X_1^{(i)},\ X_2^{(i)},\ X_3^{(i)},\ X_4^{(i)},\ X_5^{(i)},\ X_6^{(i)}),\ i=1...11 }[/math]
Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На четных и нечетных раундах перемешивание происходит по-разному:
- Для нечетных раундов:
[math]\displaystyle{ (Y_1^{(i)},\ Y_2^{(i)},\ Y_3^{(i)},\ Y_4^{(i)},\ Y_5^{(i)},\ Y_6^{(i)})\ =\ (X_1^{(i)}\ \odot\ Z_1^{(i)},\ X_2^{(i)}\ \boxplus\ Z_2^{(i)},\ X_3^{(i)}\ \odot\ Z_3^{(i)},\ X_4^{(i)}\ \boxplus\ Z_4^{(i)},\ X_5^{(i)}\ \odot\ Z_5^{(i)},\ X_6^{(i)}\ \boxplus\ Z_6^{(i)}) }[/math]
- Для четных раундов:
[math]\displaystyle{ (Y_1^{(i)},\ Y_2^{(i)},\ Y_3^{(i)},\ Y_4^{(i)},\ Y_5^{(i)},\ Y_6^{(i)})\ =\ (X_1^{(i)}\ \boxplus\ Z_1^{(i)},\ X_2^{(i)}\ \odot\ Z_2^{(i)},\ X_3^{(i)}\ \boxplus\ Z_3^{(i)},\ X_4^{(i)}\ \odot\ Z_4^{(i)},\ X_5^{(i)}\ \boxplus\ Z_5^{(i)},\ X_6^{(i)}\ \odot\ Z_6^{(i)}) }[/math]
Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
[math]\displaystyle{ (Y_7^{(i)},\ Y_8^{(i)},\ Y_9^{(i)})\ =\ (Y_1^{(i)}\ \oplus\ Y_4^{(i)},\ Y_2^{(i)}\ \oplus\ Y_5^{(i)},\ Y_3^{(i)}\ \oplus\ Y_6^{(i)}) }[/math]
МА-вычисления описываются следующими формулами:
[math]\displaystyle{ Y_{10}^{(i)}\ =\ (((Y_7^{(i)}\ \odot\ Z_7^{(i)}\ \boxplus\ Y_8^{(i)})\ \odot\ Y_9^{(i)}\ \boxplus\ Z_8^{(i)})\ \odot\ (Y_7^{(i)}\ \odot\ Z_7^{(i)}\ \boxplus\ Y_8^{(i)})\ \boxplus\ Y_7^{(i)}\ \odot\ Z_7^{(i)})\ \odot\ Z_9^{(i)} }[/math]
[math]\displaystyle{ Y_{11}^{(i)}\ =\ Y_{10}^{(i)}\ \boxplus\ ((Y_7^{(i)}\ \odot\ Z_7^{(i)}\ \boxplus\ Y_8^{(i)})\ \odot\ Y_9^{(i)}\ \boxplus\ Z_8^{(i)})\ \odot\ (Y_7^{(i)}\ \odot\ Z_7^{(i)}\ \boxplus\ Y_8^{(i)}) }[/math]
[math]\displaystyle{ Y_{12}^{(i)}\ =\ Y_{11}^{(i)}\ \odot\ ((Y_7^{(i)}\ \odot\ Z_7^{(i)}\ \boxplus\ Y_8^{(i)})\ \odot\ Y_9^{(i)}\ \boxplus\ Z_8^{(i)}) }[/math]
Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
[math]\displaystyle{ X^{(i+1)}\ =\ (Y_1^{(i)}\ \oplus\ Y_{12}^{(i)},\ Y_4^{(i)}\ \oplus\ Y_{12}^{(i)},\ Y_5^{(i)}\ \oplus\ Y_{11}^{(i)},\ Y_2^{(i)}\ \oplus\ Y_{11}^{(i)},\ Y_3^{(i)}\ \oplus\ Y_{10}^{(i)},\ Y_6^{(i)}\ \oplus\ Y_{10}^{(i)}) }[/math]
Для получения зашифрованного сообщения необходимо после 10-го раунда провести перемешивание по нечетной схеме [math]\displaystyle{ (i=9) }[/math][8]
Генерация ключей
Для генерации ключей используется 192-битный пользовательский ключ, а также 16-битные константы, такие же, как и для MESH-64.
Вычисление подключей происходит следующим образом[9]:
[math]\displaystyle{ Z_{i+1}^{(1)}\ =\ K_i\ \oplus\ c_i,\ 0\ \leqslant\ i\ \leqslant\ 8 }[/math]
[math]\displaystyle{ Z_1^{(2)}\ =\ K_9\ \oplus\ c_9 }[/math]
[math]\displaystyle{ Z_2^{(2)}\ =\ K_{10}\ \oplus\ c_{10} }[/math]
[math]\displaystyle{ Z_3^{(2)}\ =\ K_{11}\ \oplus\ c_{11} }[/math]
[math]\displaystyle{ Z_{l(i)}^{(h(i))}\ =\ (((((Z_{l(i-12)}^{(h(i-12))}\ \boxplus\ Z_{l(i-8)}^{(h(i-8))})\ \oplus\ Z_{l(i-6)}^{(h(i-6))})\ \boxplus\ Z_{l(i-4)}^{(h(i-4))})\ \oplus\ Z_{l(i-2)}^{(h(i-2))})\ \boxplus\ Z_{l(i-1)}^{(h(i-1))})\ \lll\ 9\ \oplus\ c_i, }[/math]
где [math]\displaystyle{ 12\ \leqslant\ i\ \leqslant\ 95,\ h(i)\ =\ i\ div\ 9\ +\ 1,\ l(i)\ =\ i\ \bmod\ 9\ +\ 1 }[/math].
Расшифровка
Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
[math]\displaystyle{ (Z_{1}^{(r)},\ ...,\ Z_{9}^{(r)}),\ 1\ \leqslant\ r\ \leqslant\ 10 }[/math] — подключи полных раундов;
[math]\displaystyle{ (Z_{1}^{(11)},\ ...,\ Z_{6}^{(11)}) }[/math] - подключи выходных преобразований.
Тогда подключи расшифровки задаются следующим образом[10]:
- [math]\displaystyle{ ((Z_1^{(11)})^{-1},\ -Z_2^{(11)},\ (Z_3^{(11)})^{-1},\ -Z_4^{(11)},\ (Z_5^{(11)})^{-1},\ -Z_6^{(11)},\ Z_7^{(10)},\ Z_8^{(10)},\ Z_9^{(10)}) }[/math], — первый раунд расшифровки;
- [math]\displaystyle{ (-Z_1^{(12-r)},\ (Z_4^{(12-r)})^{-1},\ -Z_5^{(12-r)},\ (Z_2^{(12-r)})^{-1},\ -Z_3^{(12-r)},\ (Z_6^{(12-r)})^{-1},\ Z_7^{(11-r)},\ Z_8^{(11-r)},\ Z_9^{(11-r)}) }[/math], — [math]\displaystyle{ r }[/math]-й чётный раунд, [math]\displaystyle{ r\ \in\ \{2,\ 4,\ 6,\ 8,\ 10\} }[/math];
- [math]\displaystyle{ ((Z_1^{(11-r)})^{-1},\ -Z_4^{(11-r)},\ (Z_5^{(11-r)})^{-1},\ -Z_2^{(11-r)},\ (Z_3^{(11-r)})^{-1},\ -Z_6^{(11-r)},\ Z_7^{(10-r)},\ Z_8^{(10-r)},\ Z_9^{(10-r)}) }[/math], — [math]\displaystyle{ r }[/math]-й нечётный раунд, [math]\displaystyle{ r\ \in\ \{3,\ 5,\ 7,\ 9\} }[/math];
- [math]\displaystyle{ ((Z_1^{(1)})^{-1},\ -Z_2^{(1)},\ (Z_3^{(1)})^{-1},\ -Z_4^{(1)},\ (Z_5^{(1)})^{-1},\ -Z_6^{(1)}) }[/math], — выходные преобразования.
MESH-128
В данной вариации размер блока составляет 128 бит, ключ — 256 бит. Шифрование проходит в 12,5 раунда. Половина раунда относится к выходным преобразованиям[11].
Раундовые преобразования
Обозначим входную информацию для [math]\displaystyle{ i }[/math]-го раунда:
[math]\displaystyle{ X^{(i)}\ =\ (X_1^{(i)},\ X_2^{(i)},\ X_3^{(i)},\ X_4^{(i)},\ X_5^{(i)},\ X_6^{(i)},\ X_7^{(i)},\ X_8^{(i)}),\ i=1...13 }[/math]
Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На чётных и нечётных раундах перемешивание происходит по-разному:
- Для нечётных раундов:
[math]\displaystyle{ (Y_1^{(i)},\ Y_2^{(i)},\ Y_3^{(i)},\ Y_4^{(i)},\ Y_5^{(i)},\ Y_6^{(i)},\ Y_7^{(i)},\ Y_8^{(i)})\ = }[/math]
[math]\displaystyle{ \ \ \ \ \ \ \ \ \ \ \ \ \ (X_1^{(i)}\ \odot\ Z_1^{(i)},\ X_2^{(i)}\ \boxplus\ Z_2^{(i)},\ X_3^{(i)}\ \odot\ Z_3^{(i)},\ X_4^{(i)}\ \boxplus\ Z_4^{(i)},\ X_5^{(i)}\ \odot\ Z_5^{(i)},\ X_6^{(i)}\ \boxplus\ Z_6^{(i)},\ X_7^{(i)}\ \odot\ Z_7^{(i)},\ X_8^{(i)}\ \boxplus\ Z_8^{(i)}) }[/math]
- Для чётных раундов:
[math]\displaystyle{ (Y_1^{(i)},\ Y_2^{(i)},\ Y_3^{(i)},\ Y_4^{(i)},\ Y_5^{(i)},\ Y_6^{(i)},\ Y_7^{(i)},\ Y_8^{(i)})\ = }[/math]
[math]\displaystyle{ \ \ \ \ \ \ \ \ \ \ \ \ \ (X_1^{(i)}\ \boxplus\ Z_1^{(i)},\ X_2^{(i)}\ \odot\ Z_2^{(i)},\ X_3^{(i)}\ \boxplus\ Z_3^{(i)},\ X_4^{(i)}\ \odot\ Z_4^{(i)},\ X_5^{(i)}\ \boxplus\ Z_5^{(i)},\ X_6^{(i)}\ \odot\ Z_6^{(i)},\ X_7^{(i)}\ \boxplus\ Z_7^{(i)},\ X_8^{(i)}\ \odot\ Z_8^{(i)}) }[/math]
Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
[math]\displaystyle{ (Y_9^{(i)},\ Y_{10}^{(i)},\ Y_{11}^{(i)},\ Y_{12}^{(i)})\ =\ (Y_1^{(i)}\ \oplus\ Y_5^{(i)},\ Y_2^{(i)}\ \oplus\ Y_6^{(i)},\ Y_3^{(i)}\ \oplus\ Y_7^{(i)},\ Y_4^{(i)}\ \oplus\ Y_8^{(i)}) }[/math]
МА-вычисления описываются следующими формулами:
[math]\displaystyle{ Y_{13}^{(i)}\ =\ Y_{9}^{(i)}\ \odot\ Z_{9}^{(i)},\ \ \ \ \ Y_{14}^{(i)}\ =\ Y_{13}^{(i)}\ \boxplus\ Y_{10}^{(i)}, }[/math]
[math]\displaystyle{ Y_{15}^{(i)}\ =\ Y_{14}^{(i)}\ \odot\ Y_{11}^{(i)},\ \ \ \ \ Y_{16}^{(i)}\ =\ Y_{15}^{(i)}\ \boxplus\ Y_{12}^{(i)}, }[/math]
[math]\displaystyle{ Y_{17}^{(i)}\ =\ Y_{16}^{(i)}\ \odot\ Z_{10}^{(i)},\ \ \ \ \ Y_{18}^{(i)}\ =\ Y_{15}^{(i)}\ \boxplus\ Y_{17}^{(i)}, }[/math]
[math]\displaystyle{ Y_{19}^{(i)}\ =\ Y_{14}^{(i)}\ \odot\ Y_{18}^{(i)},\ \ \ \ \ Y_{20}^{(i)}\ =\ Y_{13}^{(i)}\ \boxplus\ Y_{19}^{(i)}, }[/math]
[math]\displaystyle{ Y_{21}^{(i)}\ =\ Y_{20}^{(i)}\ \odot\ Z_{11}^{(i)},\ \ \ \ \ Y_{22}^{(i)}\ =\ Y_{19}^{(i)}\ \boxplus\ Y_{21}^{(i)}, }[/math]
[math]\displaystyle{ Y_{23}^{(i)}\ =\ Y_{18}^{(i)}\ \odot\ Y_{22}^{(i)},\ \ \ \ \ Y_{24}^{(i)}\ =\ Y_{17}^{(i)}\ \boxplus\ Y_{23}^{(i)}, }[/math]
[math]\displaystyle{ Y_{25}^{(i)}\ =\ Y_{24}^{(i)}\ \odot\ Z_{12}^{(i)},\ \ \ \ \ Y_{26}^{(i)}\ =\ Y_{23}^{(i)}\ \boxplus\ Y_{25}^{(i)}, }[/math]
[math]\displaystyle{ Y_{27}^{(i)}\ =\ Y_{22}^{(i)}\ \odot\ Y_{26}^{(i)},\ \ \ \ \ Y_{28}^{(i)}\ =\ Y_{21}^{(i)}\ \boxplus\ Y_{27}^{(i)}. }[/math]
Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
[math]\displaystyle{ X^{(i+1)}\ =\ (Y_1^{(i)}\ \oplus\ Y_{25}^{(i)},\ Y_5^{(i)}\ \oplus\ Y_{25}^{(i)},\ Y_6^{(i)}\ \oplus\ Y_{26}^{(i)},\ Y_7^{(i)}\ \oplus\ Y_{27}^{(i)},\ Y_2^{(i)}\ \oplus\ Y_{26}^{(i)},\ Y_3^{(i)}\ \oplus\ Y_{27}^{(i)},\ Y_4^{(i)}\ \oplus\ Y_{28}^{(i)},\ Y_8^{(i)}\ \oplus\ Y_{28}^{(i)}) }[/math]
Для получения зашифрованного сообщения необходимо после 12-го раунда провести перемешивание по нечетной схеме [math]\displaystyle{ (i=9) }[/math][12]
Генерация ключей
Для генерации ключей используется 256-битный пользовательский ключ, а также 16-битные константы, такие же, как для MESH-64 и для MESH-96.
Вычисление подключей происходит следующим образом[13]:
[math]\displaystyle{ Z_{i+1}^{(1)}\ =\ K_i\ \oplus\ c_i,\ 0\ \leqslant\ i\ \leqslant\ 11 }[/math]
[math]\displaystyle{ Z_{j\ \bmod\ 12\ +\ 1}^{(2)}\ =\ K_j\ \oplus\ c_j,\ 12\ \leqslant\ j\ \leqslant\ 15 }[/math]
[math]\displaystyle{ Z_{l(i)}^{(h(i))}\ =\ (((((Z_{l(i-16)}^{(h(i-16))}\ \boxplus\ Z_{l(i-13)}^{(h(i-13))})\ \oplus\ Z_{l(i-12)}^{(h(i-12))})\ \boxplus\ Z_{l(i-8)}^{(h(i-8))})\ \oplus\ Z_{l(i-2)}^{(h(i-2))})\ \boxplus\ Z_{l(i-1)}^{(h(i-1))})\ \lll\ 11\ \oplus\ c_i, }[/math]
где [math]\displaystyle{ 16\ \leqslant\ i\ \leqslant\ 151,\ h(i)\ =\ i\ div\ 12\ +\ 1,\ l(i)\ =\ i\ \bmod\ 12\ +\ 1 }[/math].
Расшифровка
Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
[math]\displaystyle{ (Z_{1}^{(r)},\ ...,\ Z_{12}^{(r)}),\ 1\ \leqslant\ r\ \leqslant\ 12 }[/math] — подключи полных раундов;
[math]\displaystyle{ (Z_{1}^{(13)},\ ...,\ Z_{8}^{(13)}) }[/math] — подключи выходных преобразований.
Тогда подключи расшифровки задаются следующим образом[14]:
- [math]\displaystyle{ ((Z_1^{(13)})^{-1},\ -Z_2^{(13)},\ (Z_3^{(13)})^{-1},\ -Z_4^{(13)},\ -Z_5^{(13)},\ (Z_6^{(13)})^{-1},\ -Z_7^{(13)},\ (Z_8^{(13)})^{-1},\ Z_9^{(12)},\ Z_{10}^{(12)},\ Z_{11}^{(12)},\ Z_{12}^{(12)}) }[/math], - первый раунд расшифровки;
- [math]\displaystyle{ (-Z_1^{(14-r)},\ (Z_5^{(14-r)})^{-1},\ -Z_6^{(14-r)},\ (Z_7^{(14-r)})^{-1},\ (Z_2^{(14-r)})^{-1},\ -Z_3^{(14-r)},\ (Z_4^{(14-r)})^{-1},\ -Z_8^{(14-r)},\ Z_9^{(13-r)},\ Z_{10}^{(13-r)},\ Z_{11}^{(13-r)},\ Z_{12}^{(13-r)}) }[/math], - [math]\displaystyle{ r }[/math]-й чётный раунд, [math]\displaystyle{ r\ \in\ \{2,\ 4,\ 6,\ 8,\ 10,\ 12\} }[/math];
- [math]\displaystyle{ ((Z_1^{(13-r)})^{-1},\ -Z_5^{(13-r)},\ (Z_6^{(13-r)})^{-1},\ -Z_7^{(13-r)},\ -Z_2^{(13-r)},\ (-Z_3^{(13-r)})^{-1},\ -Z_4^{(13-r)},\ (Z_8^{(13-r)})^{-1},\ Z_9^{(12-r)},\ Z_{10}^{(12-r)},\ Z_{11}^{(12-r)},\ Z_{12}^{(12-r)}) }[/math], - [math]\displaystyle{ r }[/math]-й нечётный раунд, [math]\displaystyle{ r\ \in\ \{3,\ 5,\ 7,\ 9,\ 11\} }[/math];
- [math]\displaystyle{ ((Z_1^{(1)})^{-1},\ -Z_2^{(1)},\ (Z_3^{(1)})^{-1},\ -Z_4^{(1)},\ -Z_5^{(1)},\ (Z_6^{(1)})^{-1},\ -Z_7^{(1)},\ (Z_8^{(1)})^{-1}) }[/math], — выходные преобразования.
Криптоанализ
Ниже приводится таблица, содержащая расчетную информацию по возможным криптоатакам. В ней рассматриваются урезанные алгоритмы, количество раундов можно увидеть в соответствующей колонке. За данные принимаются выбранные подобранные открытые тексты, указывается необходимое количество таковых (в блоках). Время оценивается в количестве вычислений. Память отражает количество ячеек памяти, необходимых для хранения каких-либо данных во время криптоатаки. Как видно из таблицы, все варианты MESH более сложны для взлома представленными криптоатаками, чем IDEA, на котором он основан[15][16].
| Шифр | Криптоанализ | Раундов | Данные | Память | Время |
|---|---|---|---|---|---|
| IDEA (8,5 раундов) |
Интегральный | [math]\displaystyle{ 2.5 }[/math] | [math]\displaystyle{ 23 }[/math] | [math]\displaystyle{ 23 }[/math] | [math]\displaystyle{ 2^{64} }[/math] |
| Усеченный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{56} }[/math] | [math]\displaystyle{ 2^{32} }[/math] | [math]\displaystyle{ 2^{67} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{38.5} }[/math] | [math]\displaystyle{ 2^{37} }[/math] | [math]\displaystyle{ 2^{53} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 4 }[/math] | [math]\displaystyle{ 2^{38.5} }[/math] | [math]\displaystyle{ 2^{37} }[/math] | [math]\displaystyle{ 2^{70} }[/math] | |
| MESH-64 (8,5 раундов) |
Интегральный | [math]\displaystyle{ 2.5 }[/math] | [math]\displaystyle{ 2^{50.5} }[/math] | [math]\displaystyle{ 2^{16} }[/math] | [math]\displaystyle{ 2^{76} }[/math] |
| Усеченный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{64} }[/math] | [math]\displaystyle{ 2^{32} }[/math] | [math]\displaystyle{ 2^{78} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{39.5} }[/math] | [math]\displaystyle{ 2^{61} }[/math] | [math]\displaystyle{ 2^{64} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 4 }[/math] | [math]\displaystyle{ 2^{39.5} }[/math] | [math]\displaystyle{ 2^{61} }[/math] | [math]\displaystyle{ 2^{112} }[/math] | |
| MESH-96 (10,5 раундов) |
Интегральный | [math]\displaystyle{ 2.5 }[/math] | [math]\displaystyle{ 2^{50} }[/math] | [math]\displaystyle{ 2^{16} }[/math] | [math]\displaystyle{ 2^{96} }[/math] |
| Усеченный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{96} }[/math] | [math]\displaystyle{ 2^{64} }[/math] | [math]\displaystyle{ 2^{109} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{56} }[/math] | [math]\displaystyle{ 2^{93} }[/math] | [math]\displaystyle{ 2^{96} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 4 }[/math] | [math]\displaystyle{ 2^{56} }[/math] | [math]\displaystyle{ 2^{93} }[/math] | [math]\displaystyle{ 2^{144} }[/math] | |
| MESH-128 (12,5 раундов) |
Интегральный | [math]\displaystyle{ 2.5 }[/math] | [math]\displaystyle{ 2^{50} }[/math] | [math]\displaystyle{ 2^{16} }[/math] | [math]\displaystyle{ 2^{128} }[/math] |
| Усеченный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{128} }[/math] | [math]\displaystyle{ 2^{64} }[/math] | [math]\displaystyle{ 2^{142} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 3.5 }[/math] | [math]\displaystyle{ 2^{65} }[/math] | [math]\displaystyle{ 2^{157} }[/math] | [math]\displaystyle{ 2^{128} }[/math] | |
| Невозможный дифф. | [math]\displaystyle{ 4 }[/math] | [math]\displaystyle{ 2^{65} }[/math] | [math]\displaystyle{ 2^{157} }[/math] | [math]\displaystyle{ 2^{192} }[/math] |
Примечания
- ↑ The MESH Block Ciphers, 2002, p. 1-2.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 124.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 125.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 125-126.
- ↑ The MESH Block Ciphers, 2002, p. 3.
- ↑ The MESH Block Ciphers, 2002, p. 4.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 127.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 127-129.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 129.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 129-130.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 130.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 130-132.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 132.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 132-133.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 10-11.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 178-180.
- ↑ Cryptanalysis And Design Of Block Ciphers, 2003, p. 179.
Литература
- J. Nakahara, Jr.; V. Rijmen; B. Preneel; J. Vandewalle. The MESH Block Ciphers (англ.). — 2002.
- J. Nakahara, Jr. Cryptanalysis And Design Of Block Ciphers (англ.). — 2003. — Июнь. — ISBN 90-5682-407-4.