Структура шифру
ред.
Кожен раунд в IDEA і MESH складається з операцій додавання та множення. Послідовність таких обчислень в межах одного раунду утворює MA-бокс. Всі MA-бокси в MESH використовують мінімум три чергових рівнів додавань і множень (за схемою «зигзаг»), в той час, як в IDEA таких тільки два. Це робить MESH більш стійким проти диференціальної і лінійної криптоатак. Також, з метою уникнення проблеми слабких ключів, в MESH використовуються два наступних принципи:
Кожне підключення залежить від багатьох подключень, точнішео — як мінімум від шести попередніх ключів нелінійно.
Використовуються фіксовані константи. Без них, наприклад, ключ з усіх нулів перейшов би в підключі, кожна з яких дорівнювала б нулю в будь-якому раунді.
Як і в IDEA, MESH використовує такі операції:
Множення по модулю
2
16
+
1
{\displaystyle 2^{16}+1}
, при чому замість нуля використовується
2
16
{\displaystyle 2^{16}}
(
⊙
{\displaystyle \odot }
)
Бітовий зсув вліво на
n
{\displaystyle n}
бит (
⋘
n
{\displaystyle \lll \ n}
)
Складання по модулю
2
16
{\displaystyle 2^{16}}
(
⊞
{\displaystyle \boxplus }
)
Побітова Виключна диз'юнкція (
⊕
{\displaystyle \oplus }
)
Операції розташовані в порядку зменшення пріоритету.
В обчисленнях запис
A
k
(
i
)
{\displaystyle A_{k}^{(i)}}
позначає 16-ти бітове слово. Індекси описуються далі.
MESH описується в трьох варіаціях за розмірами блоку: 64, 96, 128 біт. Розмір ключа при цьому береться вдвічі більший [2] .
У даній варіації розмір блоку становить 64 біт, ключ — 128 біт. Шифрування проходить в 8.5 раундів. Половина раунду відноситься до вихідних перетворень [3] .
Раундові перетворення
ред.
Позначимо вхідну інформацію для
i
{\displaystyle i}
-го раунду:
X
(
i
)
=
(
X
1
(
i
)
,
X
2
(
i
)
,
X
3
(
i
)
,
X
4
(
i
)
)
,
i
=
1...9
{\displaystyle X^{(i)}\ =\ (X_{1}^{(i)},\ X_{2}^{(i)},\ X_{3}^{(i)},\ X_{4}^{(i)}),\ i=1...9}
Кожен раунд складається з двох частин: перемішування вхідних даних з підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:
(
Y
1
(
i
)
,
Y
2
(
i
)
,
Y
3
(
i
)
,
Y
4
(
i
)
)
=
(
X
1
(
i
)
⊙
Z
1
(
i
)
,
X
2
(
i
)
⊞
Z
2
(
i
)
,
X
3
(
i
)
⊞
Z
3
(
i
)
,
X
4
(
i
)
⊙
Z
4
(
i
)
)
{\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)})}
.
(
Y
1
(
i
)
,
Y
2
(
i
)
,
Y
3
(
i
)
,
Y
4
(
i
)
)
=
(
X
1
(
i
)
b
o
x
p
l
u
s
Z
1
(
i
)
,
X
2
(
i
)
o
d
o
t
Z
2
(
i
)
,
X
3
(
i
)
o
d
o
t
Z
3
(
i
)
,
X
4
(
i
)
b
o
x
p
l
u
s
Z
4
(
i
)
)
{\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)})}
.
Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
(
Y
5
(
i
)
,
Y
6
(
i
)
)
=
(
Y
1
(
i
)
⊕
Y
3
(
i
)
,
Y
2
(
i
)
⊕
Y
4
(
i
)
)
{\displaystyle (Y_{5}^{(i)},\ Y_{6}^{(i)})\ =\ (Y_{1}^{(i)}\ \oplus \ Y_{3}^{(i)},\ Y_{2}^{(i)}\ \oplus \ Y_{4}^{(i)})}
МА-обчислення описуються наступними формулами:
Y
7
(
i
)
=
(
(
Y
5
(
i
)
⊙
Z
5
(
i
)
⊞
Y
6
(
i
)
)
⊙
Z
6
(
i
)
⊞
(
Y
5
(
i
)
⊙
Z
5
(
i
)
)
)
⊙
Z
7
(
i
)
{\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)}}
Y
8
(
i
)
=
Y
7
(
i
)
⊞
(
(
Y
5
(
i
)
⊙
Z
5
(
i
)
⊞
Y
6
(
i
)
)
⊙
Z
6
(
i
)
)
{\displaystyle Y_{8}^{(i)}\ =\ Y_{7}^{(i)}\ \boxplus \ ((Y_{5}^{(i)}\ \odot \ Z_{5}^{(i)}\ \boxplus \ Y_{6}^{(i)})\ \odot \ Z_{6}^{(i)})}
Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
X
(
i
+
1
)
=
(
Y
1
(
i
)
⊕
Y
8
(
i
)
,
Y
3
(
i
)
⊕
Y
8
(
i
)
,
Y
2
(
i
)
⊕
Y
7
(
i
)
,
Y
4
(
i
)
⊕
Y
7
(
i
)
)
{\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)})}
Згідно зі схемою, для отримання зашифрованого повідомлення, необхідно після восьмого раунду провести перемішування по непарній схемі
(
i
=
9
)
{\displaystyle (i=9)}
[4]
Генерація ключів
ред.
Для генерації ключів використовується 128-бітний, призначений для користувача ключ, а також 16-бітові константи
c
i
{\displaystyle c_{i}}
:
c
0
=
1
{\displaystyle c_{0}\ =\ 1}
,
c
i
=
3
c
i
−
1
{\displaystyle c_{i}\ =\ 3c_{i-1}}
, вони обчислюються в Полі Галуа
G
F
(
2
16
)
{\displaystyle GF(2^{16})}
по модулю багаточлена
x
16
+
x
5
+
x
3
+
x
2
+
1
{\displaystyle x^{16}\ +\ x^{5}\ +\ x^{3}\ +\ x^{2}\ +\ 1}
. Призначений для користувача ключ, розбивається на 8 16-бітових слів
K
i
,
0
l
e
q
s
l
a
n
t
i
l
e
q
s
l
a
n
t
7
{\displaystyle K_{i},\ 0\ \ leqslant\ i\ \ leqslant\ 7}
.
Обчислення підключів відбувається наступним чином: :
Z
i
+
1
(
1
)
=
K
i
⊕
c
i
,
0
⩽
i
⩽
6
{\displaystyle Z_{i+1}^{(1)}\ =\ K_{i}\ \oplus \ c_{i},\ 0\ \leqslant \ i\ \leqslant \ 6}
Z
1
(
2
)
=
K
7
⊕
c
7
{\displaystyle Z_{1}^{(2)}\ =\ K_{7}\ \oplus \ c_{7}}
Z
l
(
i
)
(
h
(
i
)
)
=
(
(
(
(
(
Z
l
(
i
−
8
)
(
h
(
i
−
8
)
)
⊞
Z
l
(
i
−
7
)
(
h
(
i
−
7
)
)
)
⊕
Z
l
(
i
−
6
)
(
h
(
i
−
6
)
)
)
⊞
Z
l
(
i
−
3
)
(
h
(
i
−
3
)
)
)
⊕
Z
l
(
i
−
2
)
(
h
(
i
−
2
)
)
)
⊞
Z
l
(
i
−
1
)
(
h
(
i
−
1
)
)
)
⋘
7
⊕
c
i
,
{\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},}
где
8
⩽
i
⩽
59
,
h
(
i
)
=
i
d
i
v
7
+
1
,
l
(
i
)
=
i
mod
7
+
1
{\displaystyle 8\ \leqslant \ i\ \leqslant \ 59,\ h(i)\ =\ i\ div\ 7\ +\ 1,\ l(i)\ =\ i\ {\bmod {\ }}7\ +\ 1}
.
Розшифровка
ред.
Для розшифровки MESH, як і IDEA, використовують вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
(
Z
1
(
r
)
,
.
.
.
Z
7
(
r
)
)
,
1
l
e
q
s
l
a
n
t
r
l
e
q
s
l
a
n
t
8
{\displaystyle (Z_{1}^{(r)},\ ...\ Z_{7}^{(r)}),\ 1\ \ leqslant\ r\ \ leqslant\ 8}
— підключі повних раундів;
(
Z
1
(
9
)
,
.
.
.
Z
4
(
9
)
)
{\displaystyle (Z_{1}^{(9)},\ ...\ Z_{4}^{(9)})}
— підключі вихідних перетворень.
Тоді підключі розшифровки задаються наступним чином : :
(
(
Z
1
(
9
)
)
−
1
,
−
Z
2
(
9
)
,
−
Z
3
(
9
)
,
(
Z
4
(
9
)
)
−
1
,
Z
5
(
8
)
,
Z
6
(
8
)
,
Z
7
(
8
)
)
{\displaystyle ((Z_{1}^{(9)})^{-1},\ -Z_{2}^{(9)},\ -Z_{3}^{(9)},\ (Z_{4}^{(9)})^{-1},\ Z_{5}^{(8)},\ Z_{6}^{(8)},\ Z_{7}^{(8)})}
, — первий раунд розшифровки;
(
−
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
)
)
{\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)})}
, —
r
{\displaystyle r}
-й парний раунд,
r
∈
{
2
,
4
,
6
,
8
}
{\displaystyle r\ \in \ \{2,\ 4,\ 6,\ 8\}}
;
(
(
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
)
)
{\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)})}
, —
r
{\displaystyle r}
-й непарний раунд,
r
∈
{
3
,
5
,
7
}
{\displaystyle r\ \in \ \{3,\ 5,\ 7\}}
;
(
(
Z
1
(
1
)
)
−
1
,
−
Z
2
(
1
)
,
−
Z
3
(
1
)
,
(
Z
4
(
1
)
)
−
1
)
{\displaystyle ((Z_{1}^{(1)})^{-1},\ -Z_{2}^{(1)},\ -Z_{3}^{(1)},\ (Z_{4}^{(1)})^{-1})}
, — вихідні перетворення.
У даній варіації розмір блоку становить 96 біт, ключ — 192 біт. Шифрування проходить в 10.5 раундів. Половина раунду відноситься до вихідних перетворень [7] .
Раундові перетворення
ред.
Позначимо вхідну інформацію для
i
{\displaystyle i}
-го раунду:
X
(
i
)
=
(
X
1
(
i
)
,
X
2
(
i
)
,
X
3
(
i
)
,
X
4
(
i
)
,
X
5
(
i
)
,
X
6
(
i
)
)
,
i
=
1...11
{\displaystyle X^{(i)}\ =\ (X_{1}^{(i)},\ X_{2}^{(i)},\ X_{3}^{(i)},\ X_{4}^{(i)},\ X_{5}^{(i)},\ X_{6}^{(i)}),\ i=1...11}
Кожен раунд складається з двох частин: перемішування вхідних даних із підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:
(
Y
1
(
i
)
,
Y
2
(
i
)
,
Y
3
(
i
)
,
Y
4
(
i
)
,
Y
5
(
i
)
,
Y
6
(
i
)
)
=
(
X
1
(
i
)
⊙
Z
1
(
i
)
,
X
2
(
i
)
⊞
Z
2
(
i
)
,
X
3
(
i
)
⊙
Z
3
(
i
)
,
X
4
(
i
)
⊞
Z
4
(
i
)
,
X
5
(
i
)
⊙
Z
5
(
i
)
,
X
6
(
i
)
⊞
Z
6
(
i
)
)
{\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)})}
(
Y
1
(
i
)
,
Y
2
(
i
)
,
Y
3
(
i
)
,
Y
4
(
i
)
,
Y
5
(
i
)
,
Y
6
(
i
)
)
=
(
X
1
(
i
)
⊞
Z
1
(
i
)
,
X
2
(
i
)
⊙
Z
2
(
i
)
,
X
3
(
i
)
⊞
Z
3
(
i
)
,
X
4
(
i
)
⊙
Z
4
(
i
)
,
X
5
(
i
)
⊞
Z
5
(
i
)
,
X
6
(
i
)
⊙
Z
6
(
i
)
)
{\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)})}
Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
(
Y
7
(
i
)
,
Y
8
(
i
)
,
Y
9
(
i
)
)
=
(
Y
1
(
i
)
⊕
Y
4
(
i
)
,
Y
2
(
i
)
⊕
Y
5
(
i
)
,
Y
3
(
i
)
⊕
Y
6
(
i
)
)
{\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)})}
МА-обчислення описуються наступними формулами:
Y
10
(
i
)
=
(
(
(
Y
7
(
i
)
⊙
Z
7
(
i
)
⊞
Y
8
(
i
)
)
⊙
Y
9
(
i
)
⊞
Z
8
(
i
)
)
⊙
(
Y
7
(
i
)
⊙
Z
7
(
i
)
⊞
Y
8
(
i
)
)
⊞
Y
7
(
i
)
⊙
Z
7
(
i
)
)
⊙
Z
9
(
i
)
{\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)}}
Y
11
(
i
)
=
Y
10
(
i
)
⊞
(
(
Y
7
(
i
)
⊙
Z
7
(
i
)
⊞
Y
8
(
i
)
)
⊙
Y
9
(
i
)
⊞
Z
8
(
i
)
)
⊙
(
Y
7
(
i
)
⊙
Z
7
(
i
)
⊞
Y
8
(
i
)
)
{\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)})}
Y
12
(
i
)
=
Y
11
(
i
)
⊙
(
(
Y
7
(
i
)
⊙
Z
7
(
i
)
⊞
Y
8
(
i
)
)
⊙
Y
9
(
i
)
⊞
Z
8
(
i
)
)
{\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)})}
Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
X
(
i
+
1
)
=
(
Y
1
(
i
)
⊕
Y
12
(
i
)
,
Y
4
(
i
)
⊕
Y
12
(
i
)
,
Y
5
(
i
)
⊕
Y
11
(
i
)
,
Y
2
(
i
)
⊕
Y
11
(
i
)
,
Y
3
(
i
)
⊕
Y
10
(
i
)
,
Y
6
(
i
)
⊕
Y
10
(
i
)
)
{\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)})}
Для отримання зашифрованого повідомлення, необхідно після 10-го раунду провести перемішування за непарною схемою
(
i
=
9
)
{\displaystyle (i=9)}
[8]
Генерація ключів
ред.
Для генерації ключів використовується 192-бітний, призначений для користувача, ключ, а також 16-бітові константи, такі ж, як і для MESH-64.
Обчислення подключів відбувається наступним чином: [9] :
Z
i
+
1
(
1
)
=
K
i
⊕
c
i
,
0
⩽
i
⩽
8
{\displaystyle Z_{i+1}^{(1)}\ =\ K_{i}\ \oplus \ c_{i},\ 0\ \leqslant \ i\ \leqslant \ 8}
Z
1
(
2
)
=
K
9
⊕
c
9
{\displaystyle Z_{1}^{(2)}\ =\ K_{9}\ \oplus \ c_{9}}
Z
2
(
2
)
=
K
10
⊕
c
10
{\displaystyle Z_{2}^{(2)}\ =\ K_{10}\ \oplus \ c_{10}}
Z
3
(
2
)
=
K
11
⊕
c
11
{\displaystyle Z_{3}^{(2)}\ =\ K_{11}\ \oplus \ c_{11}}
Z
l
(
i
)
(
h
(
i
)
)
=
(
(
(
(
(
Z
l
(
i
−
12
)
(
h
(
i
−
12
)
)
⊞
Z
l
(
i
−
8
)
(
h
(
i
−
8
)
)
)
⊕
Z
l
(
i
−
6
)
(
h
(
i
−
6
)
)
)
⊞
Z
l
(
i
−
4
)
(
h
(
i
−
4
)
)
)
⊕
Z
l
(
i
−
2
)
(
h
(
i
−
2
)
)
)
⊞
Z
l
(
i
−
1
)
(
h
(
i
−
1
)
)
)
⋘
9
⊕
c
i
,
{\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},}
где
12
⩽
i
⩽
95
,
h
(
i
)
=
i
d
i
v
9
+
1
,
l
(
i
)
=
i
mod
9
+
1
{\displaystyle 12\ \leqslant \ i\ \leqslant \ 95,\ h(i)\ =\ i\ div\ 9\ +\ 1,\ l(i)\ =\ i\ {\bmod {\ }}9\ +\ 1}
.
Розшифровка
ред.
Для розшифровки MESH, як і IDEA, використовує вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
(
Z
1
(
r
)
,
.
.
.
Z
9
(
r
)
)
,
1
l
e
q
s
l
a
n
t
r
l
e
q
s
l
a
n
t
10
{\displaystyle (Z_{1}^{(r)},\ ...\ Z_{9}^{(r)}),\ 1\ \ leqslant\ r\ \ leqslant\ 10}
— підключі повних раундів;
(
Z
1
(
11
)
,
.
.
.
Z
6
(
11
)
)
{\displaystyle (Z_{1}^{(11)},\ ...\ Z_{6}^{(11)})}
— підключі вихідних перетворень.
Тоді підключі розшифровки задаються наступним чином [10] :
(
(
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
)
)
{\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)})}
, — перший раунд розшифровки;
(
−
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
)
)
{\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)})}
, —
r
{\displaystyle r}
-й парний раунд,
r
∈
{
2
,
4
,
6
,
8
,
10
}
{\displaystyle r\ \in \ \{2,\ 4,\ 6,\ 8,\ 10\}}
;
(
(
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
)
)
{\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)})}
, —
r
{\displaystyle r}
-й непарний раунд,
r
∈
{
3
,
5
,
7
,
9
}
{\displaystyle r\ \in \ \{3,\ 5,\ 7,\ 9\}}
;
(
(
Z
1
(
1
)
)
−
1
,
−
Z
2
(
1
)
,
(
Z
3
(
1
)
)
−
1
,
−
Z
4
(
1
)
,
(
Z
5
(
1
)
)
−
1
,
−
Z
6
(
1
)
)
{\displaystyle ((Z_{1}^{(1)})^{-1},\ -Z_{2}^{(1)},\ (Z_{3}^{(1)})^{-1},\ -Z_{4}^{(1)},\ (Z_{5}^{(1)})^{-1},\ -Z_{6}^{(1)})}
, — вихідні перетворення.
MESH-128
ред.
У даній варіації розмір блоку становить 128 біт, ключ — 256 біт. Шифрування проходить в 12.5 раундів. Половина раунду відноситься до вихідних перетворень [11] .
Ранундові перетворення
ред.
Позначимо вхідну інформацію для
i
{\displaystyle i}
-го раунду:
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
{\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}
Кожен раунд складається з двох частин: перемішування вхідних даних із підключами і MA-обчислення. На парних і непарних раундах перемішування відбувається по-різному:
(
Y
1
(
i
)
,
Y
2
(
i
)
,
Y
3
(
i
)
,
Y
4
(
i
)
,
Y
5
(
i
)
,
Y
6
(
i
)
,
Y
7
(
i
)
,
Y
8
(
i
)
)
=
{\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)})\ =}
(
X
1
(
i
)
⊙
Z
1
(
i
)
,
X
2
(
i
)
⊞
Z
2
(
i
)
,
X
3
(
i
)
⊙
Z
3
(
i
)
,
X
4
(
i
)
⊞
Z
4
(
i
)
,
X
5
(
i
)
⊙
Z
5
(
i
)
,
X
6
(
i
)
⊞
Z
6
(
i
)
,
X
7
(
i
)
⊙
Z
7
(
i
)
,
X
8
(
i
)
⊞
Z
8
(
i
)
)
{\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)})}
(
Y
1
(
i
)
,
Y
2
(
i
)
,
Y
3
(
i
)
,
Y
4
(
i
)
,
Y
5
(
i
)
,
Y
6
(
i
)
,
Y
7
(
i
)
,
Y
8
(
i
)
)
=
{\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)})\ =}
(
X
1
(
i
)
⊞
Z
1
(
i
)
,
X
2
(
i
)
⊙
Z
2
(
i
)
,
X
3
(
i
)
⊞
Z
3
(
i
)
,
X
4
(
i
)
⊙
Z
4
(
i
)
,
X
5
(
i
)
⊞
Z
5
(
i
)
,
X
6
(
i
)
⊙
Z
6
(
i
)
,
X
7
(
i
)
⊞
Z
7
(
i
)
,
X
8
(
i
)
⊙
Z
8
(
i
)
)
{\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)})}
Перетворення, що виконуються MA-боксами, однакові для всіх раундів. Вхідні дані для них виходять наступним чином:
(
Y
9
(
i
)
,
Y
10
(
i
)
,
Y
11
(
i
)
,
Y
12
(
i
)
)
=
(
Y
1
(
i
)
⊕
Y
5
(
i
)
,
Y
2
(
i
)
⊕
Y
6
(
i
)
,
Y
3
(
i
)
⊕
Y
7
(
i
)
,
Y
4
(
i
)
⊕
Y
8
(
i
)
)
{\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)})}
.
МА-обчислення описуються наступними формулами:
Y
13
(
i
)
=
Y
9
(
i
)
⊙
Z
9
(
i
)
,
Y
14
(
i
)
=
Y
13
(
i
)
⊞
Y
10
(
i
)
,
{\displaystyle Y_{13}^{(i)}\ =\ Y_{9}^{(i)}\ \odot \ Z_{9}^{(i)},\ \ \ \ \ Y_{14}^{(i)}\ =\ Y_{13}^{(i)}\ \boxplus \ Y_{10}^{(i)},}
Y
15
(
i
)
=
Y
14
(
i
)
⊙
Y
11
(
i
)
,
Y
16
(
i
)
=
Y
15
(
i
)
⊞
Y
12
(
i
)
,
{\displaystyle Y_{15}^{(i)}\ =\ Y_{14}^{(i)}\ \odot \ Y_{11}^{(i)},\ \ \ \ \ Y_{16}^{(i)}\ =\ Y_{15}^{(i)}\ \boxplus \ Y_{12}^{(i)},}
Y
17
(
i
)
=
Y
16
(
i
)
⊙
Z
10
(
i
)
,
Y
18
(
i
)
=
Y
15
(
i
)
⊞
Y
17
(
i
)
,
{\displaystyle Y_{17}^{(i)}\ =\ Y_{16}^{(i)}\ \odot \ Z_{10}^{(i)},\ \ \ \ \ Y_{18}^{(i)}\ =\ Y_{15}^{(i)}\ \boxplus \ Y_{17}^{(i)},}
Y
19
(
i
)
=
Y
14
(
i
)
⊙
Y
18
(
i
)
,
Y
20
(
i
)
=
Y
13
(
i
)
⊞
Y
19
(
i
)
,
{\displaystyle Y_{19}^{(i)}\ =\ Y_{14}^{(i)}\ \odot \ Y_{18}^{(i)},\ \ \ \ \ Y_{20}^{(i)}\ =\ Y_{13}^{(i)}\ \boxplus \ Y_{19}^{(i)},}
Y
21
(
i
)
=
Y
20
(
i
)
⊙
Z
11
(
i
)
,
Y
22
(
i
)
=
Y
19
(
i
)
⊞
Y
21
(
i
)
,
{\displaystyle Y_{21}^{(i)}\ =\ Y_{20}^{(i)}\ \odot \ Z_{11}^{(i)},\ \ \ \ \ Y_{22}^{(i)}\ =\ Y_{19}^{(i)}\ \boxplus \ Y_{21}^{(i)},}
Y
23
(
i
)
=
Y
18
(
i
)
⊙
Y
22
(
i
)
,
Y
24
(
i
)
=
Y
17
(
i
)
⊞
Y
23
(
i
)
,
{\displaystyle Y_{23}^{(i)}\ =\ Y_{18}^{(i)}\ \odot \ Y_{22}^{(i)},\ \ \ \ \ Y_{24}^{(i)}\ =\ Y_{17}^{(i)}\ \boxplus \ Y_{23}^{(i)},}
Y
25
(
i
)
=
Y
24
(
i
)
⊙
Z
12
(
i
)
,
Y
26
(
i
)
=
Y
23
(
i
)
⊞
Y
25
(
i
)
,
{\displaystyle Y_{25}^{(i)}\ =\ Y_{24}^{(i)}\ \odot \ Z_{12}^{(i)},\ \ \ \ \ Y_{26}^{(i)}\ =\ Y_{23}^{(i)}\ \boxplus \ Y_{25}^{(i)},}
Y
27
(
i
)
=
Y
22
(
i
)
⊙
Y
26
(
i
)
,
Y
28
(
i
)
=
Y
21
(
i
)
⊞
Y
27
(
i
)
.
{\displaystyle Y_{27}^{(i)}\ =\ Y_{22}^{(i)}\ \odot \ Y_{26}^{(i)},\ \ \ \ \ Y_{28}^{(i)}\ =\ Y_{21}^{(i)}\ \boxplus \ Y_{27}^{(i)}.}
Використовуючи результати, отримані MA-боксами, знаходимо вхідні дані для наступного раунду:
X
(
i
+
1
)
=
(
Y
1
(
i
)
⊕
Y
25
(
i
)
,
Y
5
(
i
)
⊕
Y
25
(
i
)
,
Y
6
(
i
)
⊕
Y
26
(
i
)
,
Y
7
(
i
)
⊕
Y
27
(
i
)
,
Y
2
(
i
)
⊕
Y
26
(
i
)
,
Y
3
(
i
)
⊕
Y
27
(
i
)
,
Y
4
(
i
)
⊕
Y
28
(
i
)
,
Y
8
(
i
)
⊕
Y
28
(
i
)
)
{\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)})}
Для отримання зашифрованого повідомлення необхідно після 12-го раунду провести перемішування за непарною схемою
(
i
=
9
)
{\displaystyle (i=9)}
[12]
Генерація ключів
ред.
Для генерації ключів використовується 256-бітний, призначений для користувача, ключ, а також 16-бітові константи, такі ж, як для MESH-64 і для MESH-96.
Обчислення подключів відбувається наступним чином: [13] :
Z
i
+
1
(
1
)
=
K
i
⊕
c
i
,
0
⩽
i
⩽
11
{\displaystyle Z_{i+1}^{(1)}\ =\ K_{i}\ \oplus \ c_{i},\ 0\ \leqslant \ i\ \leqslant \ 11}
Z
j
mod
12
+
1
(
2
)
=
K
j
⊕
c
j
,
12
⩽
j
⩽
15
{\displaystyle Z_{j\ {\bmod {\ }}12\ +\ 1}^{(2)}\ =\ K_{j}\ \oplus \ c_{j},\ 12\ \leqslant \ j\ \leqslant \ 15}
Z
l
(
i
)
(
h
(
i
)
)
=
(
(
(
(
(
Z
l
(
i
−
16
)
(
h
(
i
−
16
)
)
⊞
Z
l
(
i
−
13
)
(
h
(
i
−
13
)
)
)
⊕
Z
l
(
i
−
12
)
(
h
(
i
−
12
)
)
)
⊞
Z
l
(
i
−
8
)
(
h
(
i
−
8
)
)
)
⊕
Z
l
(
i
−
2
)
(
h
(
i
−
2
)
)
)
⊞
Z
l
(
i
−
1
)
(
h
(
i
−
1
)
)
)
⋘
11
⊕
c
i
,
{\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},}
где
16
⩽
i
⩽
151
,
h
(
i
)
=
i
d
i
v
12
+
1
,
l
(
i
)
=
i
mod
12
+
1
{\displaystyle 16\ \leqslant \ i\ \leqslant \ 151,\ h(i)\ =\ i\ div\ 12\ +\ 1,\ l(i)\ =\ i\ {\bmod {\ }}12\ +\ 1}
.
Розшифровка
ред.
Для розшифровки MESH, як і IDEA, використовує вже існуючу схему, але зі зміненими раундовими підключами. Позначимо підключі, що використовувалися при шифруванні, в такий спосіб:
(
Z
1
(
r
)
,
.
.
.
Z
12
(
r
)
)
,
1
l
e
q
s
l
a
n
t
r
l
e
q
s
l
a
n
t
12
{\displaystyle (Z_{1}^{(r)},\ ...\ Z_{12}^{(r)}),\ 1\ \ leqslant\ r\ \ leqslant\ 12}
— підключі повних раундів;
(
Z
1
(
13
)
,
.
.
.
Z
8
(
13
)
)
{\displaystyle (Z_{1}^{(13)},\ ...\ Z_{8}^{(13)})}
— підключі вихідних перетворень.
[14] :
(
(
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
)
)
{\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)})}
, — перший раунд розшифровки;
(
−
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
)
)
{\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)})}
, —
r
{\displaystyle r}
-й парний раунд,
r
∈
{
2
,
4
,
6
,
8
,
10
,
12
}
{\displaystyle r\ \in \ \{2,\ 4,\ 6,\ 8,\ 10,\ 12\}}
;
(
(
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
)
)
{\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)})}
, —
r
{\displaystyle r}
-й непарний раунд,
r
∈
{
3
,
5
,
7
,
9
,
11
}
{\displaystyle r\ \in \ \{3,\ 5,\ 7,\ 9,\ 11\}}
;
(
(
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
)
{\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})}
, — вихідні перетворення.
Криптоаналіз
ред.
Примітки
ред.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 124.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 125.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 125-126.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 127.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 127-129.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 129.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 129-130.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 130.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 130-132.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 132.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 132-133.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 10-11.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 178-180.
↑ Cryptanalysis And Design Of Block Ciphers, 2003 , с. 179.
Література
ред.