MESH (шифр)

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Карточка блочного шифра

В криптографии, MESH — блочный шифр, являющийся модификацией IDEA. Разработан Жорже Накахарой, Винсентом Рэйменом, Бартом Пренелем и Йоосом Вандевалле в 2002 году. В отличие от IDEA, MESH имеет более сложную раундовую структуру. Иной алгоритм генерации ключей позволяет MESH избегать проблемы слабых ключейШаблон:Sfn.

Структура шифра

Каждый раунд в IDEA и MESH состоит из операций сложения и умножения. Последовательность таких вычислений в пределах одного раунда образует MA-бокс. Все MA-боксы в MESH используют минимум три чередующихся уровня сложений и умножений (по схеме «зиг-заг»), в то время, как в IDEA таковых только два. Это делает MESH более стойким против дифференциальной и линейной криптоатак. Также, с целью избежать проблемы слабых ключей, в MESH используются два следующих принципа:

  • Каждый подключ зависит от почти всех подключей, более точно — как минимум от шести предыдущих ключей нелинейно
  • Используются фиксированные константы. Без них, например, ключ из всех нулей перешел бы в подключи, каждый из которых равнялся бы нулю в любом раунде

Как и в IDEA, MESH использует следующие операции:

Операции расположены в порядке уменьшения приоритета. В вычислениях запись Ak(i) обозначает 16-битное слово. Индексы описываются далее.

MESH описывается в трех вариациях по размерам блока: 64, 96, 128 бит. Размер ключа при этом берется вдвое большийШаблон:Sfn.

MESH-64

В данной вариации размер блока составляет 64 бит, ключ — 128 бит. Шифрование проходит в 8,5 раунда. Половина раунда относится к выходным преобразованиямШаблон:Sfn.

Раундовые преобразования

Обозначим входную информацию для i-го раунда:
X(i) = (X1(i), X2(i), X3(i), X4(i)), i=1...9

Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На четных и нечетных раундах перемешивание происходит по-разному:

  • Для нечетных раундов:

(Y1(i), Y2(i), Y3(i), Y4(i)) = (X1(i)  Z1(i), X2(i)  Z2(i), X3(i)  Z3(i), X4(i)  Z4(i))

  • Для четных раундов:

(Y1(i), Y2(i), Y3(i), Y4(i)) = (X1(i)  Z1(i), X2(i)  Z2(i), X3(i)  Z3(i), X4(i)  Z4(i))

Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
(Y5(i), Y6(i)) = (Y1(i)  Y3(i), Y2(i)  Y4(i))

МА-вычисления описываются следующими формулами:
Y7(i) = ((Y5(i)  Z5(i)  Y6(i))  Z6(i)  (Y5(i)  Z5(i)))  Z7(i)
Y8(i) = Y7(i)  ((Y5(i)  Z5(i)  Y6(i))  Z6(i))

Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
X(i+1) = (Y1(i)  Y8(i), Y3(i)  Y8(i), Y2(i)  Y7(i), Y4(i)  Y7(i))

Согласно схеме, для получения зашифрованного сообщения необходимо после восьмого раунда провести перемешивание по нечетной схеме (i=9)Шаблон:Sfn

Генерация ключей

Для генерации ключей используется 128-битный пользовательский ключ, а также 16-битные константы ci: c0 = 1, ci = 3*ci1, они вычисляются в Поле Галуа GF(216) по модулю многочлена x16 + x5 + x3 + x2 + 1. Пользовательский ключ разбивается на 8 16-битных слов Ki, 0  i  7.

Вычисление подключей происходит следующим образомШаблон:Sfn:
Zi+1(1) = Ki  ci, 0  i  6
Z1(2) = K7  c7
Zl(i)(h(i)) = (((((Zl(i8)(h(i8))  Zl(i7)(h(i7)))  Zl(i6)(h(i6)))  Zl(i3)(h(i3)))  Zl(i2)(h(i2)))  Zl(i1)(h(i1)))  7  ci,
где 8  i  59, h(i) = i div 7 + 1, l(i) = i mod 7 + 1.

Расшифровка

Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
(Z1(r), ..., Z7(r)), 1  r  8 - подключи полных раундов;
(Z1(9), ..., Z4(9)) - подключи выходных преобразований.

Тогда подключи расшифровки задаются следующим образомШаблон:Sfn:

  • ((Z1(9))1, Z2(9), Z3(9), (Z4(9))1, Z5(8), Z6(8), Z7(8)), - первый раунд расшифровки;
  • (Z1(10r), (Z3(10r))1, (Z2(10r))1, Z4(10r), Z5(9r), Z6(9r), Z7(9r)), - rчетный раунд, r  {2, 4, 6, 8};
  • ((Z1(9r))1, Z3(9r), Z2(9r), (Z4(9r))1, Z5(8r), Z6(8r), Z7(8r)), - rнечетный раунд, r  {3, 5, 7};
  • ((Z1(1))1, Z2(1), Z3(1), (Z4(1))1), - выходные преобразования.

MESH-96

В данной вариации размер блока составляет 96 бит, ключ — 192 бит. Шифрование проходит в 10,5 раунда. Половина раунда относится к выходным преобразованиямШаблон:Sfn.

Раундовые преобразования

Обозначим входную информацию для i-го раунда:
X(i) = (X1(i), X2(i), X3(i), X4(i), X5(i), X6(i)), i=1...11

Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На четных и нечетных раундах перемешивание происходит по-разному:

  • Для нечетных раундов:

(Y1(i), Y2(i), Y3(i), Y4(i), Y5(i), Y6(i)) = (X1(i)  Z1(i), X2(i)  Z2(i), X3(i)  Z3(i), X4(i)  Z4(i), X5(i)  Z5(i), X6(i)  Z6(i))

  • Для четных раундов:

(Y1(i), Y2(i), Y3(i), Y4(i), Y5(i), Y6(i)) = (X1(i)  Z1(i), X2(i)  Z2(i), X3(i)  Z3(i), X4(i)  Z4(i), X5(i)  Z5(i), X6(i)  Z6(i))

Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
(Y7(i), Y8(i), Y9(i)) = (Y1(i)  Y4(i), Y2(i)  Y5(i), Y3(i)  Y6(i))

МА-вычисления описываются следующими формулами:
Y10(i) = (((Y7(i)  Z7(i)  Y8(i))  Y9(i)  Z8(i))  (Y7(i)  Z7(i)  Y8(i))  Y7(i)  Z7(i))  Z9(i)
Y11(i) = Y10(i)  ((Y7(i)  Z7(i)  Y8(i))  Y9(i)  Z8(i))  (Y7(i)  Z7(i)  Y8(i))
Y12(i) = Y11(i)  ((Y7(i)  Z7(i)  Y8(i))  Y9(i)  Z8(i))

Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
X(i+1) = (Y1(i)  Y12(i), Y4(i)  Y12(i), Y5(i)  Y11(i), Y2(i)  Y11(i), Y3(i)  Y10(i), Y6(i)  Y10(i))

Для получения зашифрованного сообщения необходимо после 10-го раунда провести перемешивание по нечетной схеме (i=9)Шаблон:Sfn

Генерация ключей

Для генерации ключей используется 192-битный пользовательский ключ, а также 16-битные константы, такие же, как и для MESH-64.

Вычисление подключей происходит следующим образомШаблон:Sfn:
Zi+1(1) = Ki  ci, 0  i  8
Z1(2) = K9  c9
Z2(2) = K10  c10
Z3(2) = K11  c11
Zl(i)(h(i)) = (((((Zl(i12)(h(i12))  Zl(i8)(h(i8)))  Zl(i6)(h(i6)))  Zl(i4)(h(i4)))  Zl(i2)(h(i2)))  Zl(i1)(h(i1)))  9  ci,
где 12  i  95, h(i) = i div 9 + 1, l(i) = i mod 9 + 1.

Расшифровка

Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
(Z1(r), ..., Z9(r)), 1  r  10 — подключи полных раундов;
(Z1(11), ..., Z6(11)) - подключи выходных преобразований.

Тогда подключи расшифровки задаются следующим образомШаблон:Sfn:

  • ((Z1(11))1, Z2(11), (Z3(11))1, Z4(11), (Z5(11))1, Z6(11), Z7(10), Z8(10), Z9(10)), — первый раунд расшифровки;
  • (Z1(12r), (Z4(12r))1, Z5(12r), (Z2(12r))1, Z3(12r), (Z6(12r))1, Z7(11r), Z8(11r), Z9(11r)), — rчётный раунд, r  {2, 4, 6, 8, 10};
  • ((Z1(11r))1, Z4(11r), (Z5(11r))1, Z2(11r), (Z3(11r))1, Z6(11r), Z7(10r), Z8(10r), Z9(10r)), — rнечётный раунд, r  {3, 5, 7, 9};
  • ((Z1(1))1, Z2(1), (Z3(1))1, Z4(1), (Z5(1))1, Z6(1)), — выходные преобразования.

MESH-128

В данной вариации размер блока составляет 128 бит, ключ — 256 бит. Шифрование проходит в 12,5 раунда. Половина раунда относится к выходным преобразованиямШаблон:Sfn.

Раундовые преобразования

Обозначим входную информацию для i-го раунда:
X(i) = (X1(i), X2(i), X3(i), X4(i), X5(i), X6(i), X7(i), X8(i)), i=1...13

Каждый раунд состоит из двух частей: перемешивание входных данных с подключами и MA-вычисления. На чётных и нечётных раундах перемешивание происходит по-разному:

  • Для нечётных раундов:

(Y1(i), Y2(i), Y3(i), Y4(i), Y5(i), Y6(i), Y7(i), Y8(i)) =
             (X1(i)  Z1(i), X2(i)  Z2(i), X3(i)  Z3(i), X4(i)  Z4(i), X5(i)  Z5(i), X6(i)  Z6(i), X7(i)  Z7(i), X8(i)  Z8(i))

  • Для чётных раундов:

(Y1(i), Y2(i), Y3(i), Y4(i), Y5(i), Y6(i), Y7(i), Y8(i)) =
             (X1(i)  Z1(i), X2(i)  Z2(i), X3(i)  Z3(i), X4(i)  Z4(i), X5(i)  Z5(i), X6(i)  Z6(i), X7(i)  Z7(i), X8(i)  Z8(i))

Преобразования, выполняемые MA-боксами, одинаковы для всех раундов. Входные данные для них получаются следующим образом:
(Y9(i), Y10(i), Y11(i), Y12(i)) = (Y1(i)  Y5(i), Y2(i)  Y6(i), Y3(i)  Y7(i), Y4(i)  Y8(i))

МА-вычисления описываются следующими формулами:
Y13(i) = Y9(i)  Z9(i),     Y14(i) = Y13(i)  Y10(i),
Y15(i) = Y14(i)  Y11(i),     Y16(i) = Y15(i)  Y12(i),
Y17(i) = Y16(i)  Z10(i),     Y18(i) = Y15(i)  Y17(i),
Y19(i) = Y14(i)  Y18(i),     Y20(i) = Y13(i)  Y19(i),
Y21(i) = Y20(i)  Z11(i),     Y22(i) = Y19(i)  Y21(i),
Y23(i) = Y18(i)  Y22(i),     Y24(i) = Y17(i)  Y23(i),
Y25(i) = Y24(i)  Z12(i),     Y26(i) = Y23(i)  Y25(i),
Y27(i) = Y22(i)  Y26(i),     Y28(i) = Y21(i)  Y27(i).

Используя результаты, полученные MA-боксами, находим входные данные для следующего раунда:
X(i+1) = (Y1(i)  Y25(i), Y5(i)  Y25(i), Y6(i)  Y26(i), Y7(i)  Y27(i), Y2(i)  Y26(i), Y3(i)  Y27(i), Y4(i)  Y28(i), Y8(i)  Y28(i))

Для получения зашифрованного сообщения необходимо после 12-го раунда провести перемешивание по нечетной схеме (i=9)Шаблон:Sfn

Генерация ключей

Для генерации ключей используется 256-битный пользовательский ключ, а также 16-битные константы, такие же, как для MESH-64 и для MESH-96.

Вычисление подключей происходит следующим образомШаблон:Sfn:
Zi+1(1) = Ki  ci, 0  i  11
Zj mod 12 + 1(2) = Kj  cj, 12  j  15
Zl(i)(h(i)) = (((((Zl(i16)(h(i16))  Zl(i13)(h(i13)))  Zl(i12)(h(i12)))  Zl(i8)(h(i8)))  Zl(i2)(h(i2)))  Zl(i1)(h(i1)))  11  ci,
где 16  i  151, h(i) = i div 12 + 1, l(i) = i mod 12 + 1.

Расшифровка

Для расшифровки MESH, как и IDEA, использует уже существующую схему, но с измененными раундовыми подключами. Обозначим подключи, использовавшиеся при шифровании, следующим образом:
(Z1(r), ..., Z12(r)), 1  r  12 — подключи полных раундов;
(Z1(13), ..., Z8(13)) — подключи выходных преобразований.

Тогда подключи расшифровки задаются следующим образомШаблон:Sfn:

  • ((Z1(13))1, Z2(13), (Z3(13))1, Z4(13), Z5(13), (Z6(13))1, Z7(13), (Z8(13))1, Z9(12), Z10(12), Z11(12), Z12(12)), - первый раунд расшифровки;
  • (Z1(14r), (Z5(14r))1, Z6(14r), (Z7(14r))1, (Z2(14r))1, Z3(14r), (Z4(14r))1, Z8(14r), Z9(13r), Z10(13r), Z11(13r), Z12(13r)), - rчётный раунд, r  {2, 4, 6, 8, 10, 12};
  • ((Z1(13r))1, Z5(13r), (Z6(13r))1, Z7(13r), Z2(13r), (Z3(13r))1, Z4(13r), (Z8(13r))1, Z9(12r), Z10(12r), Z11(12r), Z12(12r)), - rнечётный раунд, r  {3, 5, 7, 9, 11};
  • ((Z1(1))1, Z2(1), (Z3(1))1, Z4(1), Z5(1), (Z6(1))1, Z7(1), (Z8(1))1), — выходные преобразования.

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

Ниже приводится таблица, содержащая расчетную информацию по возможным криптоатакам. В ней рассматриваются урезанные алгоритмы, количество раундов можно увидеть в соответствующей колонке. За данные принимаются выбранные подобранные открытые тексты, указывается необходимое количество таковых (в блоках). Время оценивается в количестве вычислений. Память отражает количество ячеек памяти, необходимых для хранения каких-либо данных во время криптоатаки. Как видно из таблицы, все варианты MESH более сложны для взлома представленными криптоатаками, чем IDEA, на котором он основанШаблон:SfnШаблон:Sfn.

Таблица 1. Обобщение сложностей криптоатак на IDEA и MESHШаблон:Sfn
Шифр Криптоанализ Раундов Данные Память Время
IDEA
(8,5 раундов)
Интегральный 2.5 23 23 264
Усеченный дифф. 3.5 256 232 267
Невозможный дифф. 3.5 238.5 237 253
Невозможный дифф. 4 238.5 237 270
MESH-64
(8,5 раундов)
Интегральный 2.5 250.5 216 276
Усеченный дифф. 3.5 264 232 278
Невозможный дифф. 3.5 239.5 261 264
Невозможный дифф. 4 239.5 261 2112
MESH-96
(10,5 раундов)
Интегральный 2.5 250 216 296
Усеченный дифф. 3.5 296 264 2109
Невозможный дифф. 3.5 256 293 296
Невозможный дифф. 4 256 293 2144
MESH-128
(12,5 раундов)
Интегральный 2.5 250 216 2128
Усеченный дифф. 3.5 2128 264 2142
Невозможный дифф. 3.5 265 2157 2128
Невозможный дифф. 4 265 2157 2192

Примечания

Шаблон:Примечания

Литература

Шаблон:Симметричные криптоалгоритмы