MESH (шифр)

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

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

Структура шифру[ред. | ред. код]

Кожен раунд в 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]

Примітки[ред. | ред. код]

Література[ред. | ред. код]