В криптографії, MESH — блочний шифр, що є модифікацією IDEA. Розроблений Жоржем Накахара, Вінсентом Рейменом, Бартом Пренелем і Джусом Вандевалле в 2002 році. На відміну від IDEA, MESH має більш складну раундову структуру. Інший алгоритм генерації ключів дозволяє MESH уникати проблеми слабких ключів [1].

MESH
Розробники Накахара, Реймен, Пренель, Вандевалле
Уперше оприлюднений 2002
Раундів 8.5, 10.5, 12.5
Тип Підстановлювально-переустановлена мережа

Структура шифру ред.

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

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

Як і в IDEA, MESH використовує такі операції:

  • Множення по модулю  , при чому замість нуля використовується   ( )
  • Бітовий зсув вліво на   бит ( )
  • Складання по модулю   ( )
  • Побітова Виключна диз'юнкція ( )

Операції розташовані в порядку зменшення пріоритету. В обчисленнях запис   позначає 16-ти бітове слово. Індекси описуються далі.

MESH описується в трьох варіаціях за розмірами блоку: 64, 96, 128 біт. Розмір ключа при цьому береться вдвічі більший [2].

MESH-64 ред.

У даній варіації розмір блоку становить 64 біт, ключ — 128 біт. Шифрування проходить в 8.5 раундів. Половина раунду відноситься до вихідних перетворень [3].

Раундові перетворення ред.

Позначимо вхідну інформацію для   -го раунду:
 

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

  • Для непарних раундів:

 .

  • Для парних раундів:

 .

Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
 

МА-обчислення описуються наступними формулами:
 
 

Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
 

Згідно зі схемою, для отримання зашифрованого повідомлення, необхідно після восьмого раунду провести перемішування по непарній схемі  [4]

Генерація ключів ред.

Для генерації ключів використовується 128-бітний, призначений для користувача ключ, а також 16-бітові константи  :  ,  , вони обчислюються в Полі Галуа   по модулю багаточлена  . Призначений для користувача ключ, розбивається на 8 16-бітових слів  .

Обчислення підключів відбувається наступним чином: [5]:
 
 
 
где  .

Розшифровка ред.

Для розшифровки MESH, як і IDEA, використовують вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
  — підключі повних раундів;
  — підключі вихідних перетворень.

Тоді підключі розшифровки задаються наступним чином [6]: [6]:

  •  , — первий раунд розшифровки;
  •  , —  парний раунд,  ;
  •  , —  непарний раунд,  ;
  •  , — вихідні перетворення.

MESH-96 ред.

У даній варіації розмір блоку становить 96 біт, ключ — 192 біт. Шифрування проходить в 10.5 раундів. Половина раунду відноситься до вихідних перетворень [7].

Раундові перетворення ред.

Позначимо вхідну інформацію для   -го раунду:
 

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

  • Для непарних раундів:

 

  • Для парних раундів:

  Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
 

МА-обчислення описуються наступними формулами:
 
 
 

Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
 

Для отримання зашифрованого повідомлення, необхідно після 10-го раунду провести перемішування за непарною схемою   [8]

Генерація ключів ред.

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

Обчислення подключів відбувається наступним чином: [9]:
 
 
 
 
 
где  .

Розшифровка ред.

Для розшифровки MESH, як і IDEA, використовує вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
  — підключі повних раундів;
  — підключі вихідних перетворень.

Тоді підключі розшифровки задаються наступним чином [10]:

  •  , — перший раунд розшифровки;
  •  , —  парний раунд,  ;
  •  , —  непарний раунд,  ;
  •  , — вихідні перетворення.

MESH-128 ред.

У даній варіації розмір блоку становить 128 біт, ключ — 256 біт. Шифрування проходить в 12.5 раундів. Половина раунду відноситься до вихідних перетворень [11].

Ранундові перетворення ред.

Позначимо вхідну інформацію для   -го раунду:
  Кожен раунд складається з двох частин: перемішування вхідних даних із підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:

  • Для непарних раундів:

 
 

  • Для парних раундів:

 
 

Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
 
.

МА-обчислення описуються наступними формулами:


 
 
 
 
 
 
 
 

Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
 

Для отримання зашифрованого повідомлення необхідно після 12-го раунду провести перемішування за непарною схемою   [12]

Генерація ключів ред.

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

Обчислення подключів відбувається наступним чином: [13]:
 
 
 
где  .

Розшифровка ред.

Для розшифровки MESH, як і IDEA, використовує вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
  — підключі повних раундів;
  — підключі вихідних перетворень.

[14]:

  •  , — перший раунд розшифровки;
  •  , —  парний раунд,  ;
  •  , —  непарний раунд,  ;
  •  , — вихідні перетворення.

Криптоаналіз ред.

Нижче наводиться таблиця, яка містить розрахункову інформацію щодо можливих криптоатак. У ній розглядаються урізані алгоритми, кількість раундів можна побачити у відповідній колонці. За дані приймаються вибрані підібрані відкриті тексти, вказується необхідна кількість таких (в блоках). Час оцінюється в кількості обчислень. Пам'ять відображає кількість елементів пам'яті, необхідних для зберігання будь-яких даних під час криптоатаки. Як видно з таблиці, всі варіанти MESH більш складні для злому представленими криптоатаками, ніж IDEA, на якому він базується [15] [16].

Таблиця 1. Узагальнення складнощів криптоатак на IDEA і MESH[17]
Шифр Криптоаналіз #Раундів Дані Пам'ять Час
IDEA
(8.5 раундів)
Інтегральний        
Усічений диф.[en]        
Неможливий диф.[en]        
Неможливий диф.[en]        
MESH-64
(8.5 раундів)
Інтегральний        
Усічений диф.[en]        
Неможливий диф.[en]        
Неможливий диф.[en]        
MESH-96
(10.5 раундів)
Інтегральний        
Усічений диф.[en]        
Неможливий диф.[en]        
Неможливий диф.[en]        
MESH-128
(12.5 раундів)
Інтегральний        
Усічений диф.[en]        
Неможливий диф.[en]        
Неможливий диф.[en]        

Примітки ред.

Література ред.