MESH (шифр)
В криптографії, MESH — блочний шифр, що є модифікацією IDEA. Розроблений Жоржем Накахара, Вінсентом Рейменом, Бартом Пренелем і Джусом Вандевалле в 2002 році. На відміну від IDEA, MESH має більш складну раундову структуру. Інший алгоритм генерації ключів дозволяє MESH уникати проблеми слабких ключів Шаблон:Sfn.
Структура шифру
Кожен раунд в IDEA і MESH складається з операцій додавання та множення. Послідовність таких обчислень в межах одного раунду утворює MA-бокс. Всі MA-бокси в MESH використовують мінімум три чергових рівнів додавань і множень (за схемою «зигзаг»), в той час, як в IDEA таких тільки два. Це робить MESH більш стійким проти диференціальної і лінійної криптоатак. Також, з метою уникнення проблеми слабких ключів, в MESH використовуються два наступних принципи:
- Кожне підключення залежить від багатьох подключень, точнішео — як мінімум від шести попередніх ключів нелінійно.
- Використовуються фіксовані константи. Без них, наприклад, ключ з усіх нулів перейшов би в підключі, кожна з яких дорівнювала б нулю в будь-якому раунді.
Як і в IDEA, MESH використовує такі операції:
- Множення по модулю , при чому замість нуля використовується ()
- Бітовий зсув вліво на бит ()
- Складання по модулю ()
- Побітова Виключна диз'юнкція ()
Операції розташовані в порядку зменшення пріоритету. В обчисленнях запис позначає 16-ти бітове слово. Індекси описуються далі.
MESH описується в трьох варіаціях за розмірами блоку: 64, 96, 128 біт. Розмір ключа при цьому береться вдвічі більший Шаблон:Sfn.
MESH-64
У даній варіації розмір блоку становить 64 біт, ключ — 128 біт. Шифрування проходить в 8.5 раундів. Половина раунду відноситься до вихідних перетворень Шаблон:Sfn.
Раундові перетворення
Позначимо вхідну інформацію для -го раунду:
Кожен раунд складається з двох частин: перемішування вхідних даних з підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:
- Для непарних раундів:
.
- Для парних раундів:
.
Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
МА-обчислення описуються наступними формулами:
Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
Згідно зі схемою, для отримання зашифрованого повідомлення, необхідно після восьмого раунду провести перемішування по непарній схемі Шаблон:Sfn
Генерація ключів
Для генерації ключів використовується 128-бітний, призначений для користувача ключ, а також 16-бітові константи : , , вони обчислюються в Полі Галуа по модулю багаточлена . Призначений для користувача ключ, розбивається на 8 16-бітових слів .
Обчислення підключів відбувається наступним чином: Шаблон:Sfn:
где .
Розшифровка
Для розшифровки MESH, як і IDEA, використовують вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
— підключі повних раундів;
— підключі вихідних перетворень.
Тоді підключі розшифровки задаються наступним чином Шаблон:Sfn: Шаблон:Sfn:
- , — первий раунд розшифровки;
- , — -й парний раунд, ;
- , — -й непарний раунд, ;
- , — вихідні перетворення.
MESH-96
У даній варіації розмір блоку становить 96 біт, ключ — 192 біт. Шифрування проходить в 10.5 раундів. Половина раунду відноситься до вихідних перетворень Шаблон:Sfn.
Раундові перетворення
Позначимо вхідну інформацію для -го раунду:
Кожен раунд складається з двох частин: перемішування вхідних даних із підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:
- Для непарних раундів:
- Для парних раундів:
Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
МА-обчислення описуються наступними формулами:
Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
Для отримання зашифрованого повідомлення, необхідно після 10-го раунду провести перемішування за непарною схемою Шаблон:Sfn
Генерація ключів
Для генерації ключів використовується 192-бітний, призначений для користувача, ключ, а також 16-бітові константи, такі ж, як і для MESH-64.
Обчислення подключів відбувається наступним чином: Шаблон:Sfn:
где .
Розшифровка
Для розшифровки MESH, як і IDEA, використовує вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
— підключі повних раундів;
— підключі вихідних перетворень.
Тоді підключі розшифровки задаються наступним чином Шаблон:Sfn:
- , — перший раунд розшифровки;
- , — -й парний раунд, ;
- , — -й непарний раунд, ;
- , — вихідні перетворення.
MESH-128
У даній варіації розмір блоку становить 128 біт, ключ — 256 біт. Шифрування проходить в 12.5 раундів. Половина раунду відноситься до вихідних перетворень Шаблон:Sfn.
Ранундові перетворення
Позначимо вхідну інформацію для -го раунду:
Кожен раунд складається з двох частин: перемішування вхідних даних із підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:
- Для непарних раундів:
- Для парних раундів:
Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
.
МА-обчислення описуються наступними формулами:
Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
Для отримання зашифрованого повідомлення необхідно після 12-го раунду провести перемішування за непарною схемою Шаблон:Sfn
Генерація ключів
Для генерації ключів використовується 256-бітний, призначений для користувача, ключ, а також 16-бітові константи, такі ж, як для MESH-64 і для MESH-96.
Обчислення подключів відбувається наступним чином: Шаблон:Sfn:
где .
Розшифровка
Для розшифровки MESH, як і IDEA, використовує вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
— підключі повних раундів;
— підключі вихідних перетворень.
- , — перший раунд розшифровки;
- , — -й парний раунд, ;
- , — -й непарний раунд, ;
- , — вихідні перетворення.
Криптоаналіз
Нижче наводиться таблиця, яка містить розрахункову інформацію щодо можливих криптоатак. У ній розглядаються урізані алгоритми, кількість раундів можна побачити у відповідній колонці. За дані приймаються вибрані підібрані відкриті тексти, вказується необхідна кількість таких (в блоках). Час оцінюється в кількості обчислень. Пам'ять відображає кількість елементів пам'яті, необхідних для зберігання будь-яких даних під час криптоатаки. Як видно з таблиці, всі варіанти MESH більш складні для злому представленими криптоатаками, ніж IDEA, на якому він базується Шаблон:Sfn Шаблон:Sfn.
| Шифр | Криптоаналіз | #Раундів | Дані | Пам'ять | Час |
|---|---|---|---|---|---|
| IDEA (8.5 раундів) |
Інтегральний | ||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| MESH-64 (8.5 раундів) |
Інтегральний | ||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| MESH-96 (10.5 раундів) |
Інтегральний | ||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| MESH-128 (12.5 раундів) |
Інтегральний | ||||
| Шаблон:Iw | |||||
| Шаблон:Iw | |||||
| Шаблон:Iw |