Функція стиснення Купини складається з двох фіксованих 2n-бітних перестановок T⊕ і T+, структура яких запозичена у шифраКалина. Зокрема, використовуються чотири таких самих S-блока. Результат роботи геш-функції може мати довжину від 8 до 512 біт. Варіант, який повертає n біт, позначається як Купина-n.[6]
Алгоритм
Спочатку повідомлення доповнюється до довжини, кратної розміру блока. Для цього до повідомлення додається 1 біт , після нього нульових бітів, де і 96 біт, які містять довжину повідомлення в бітах. Таким чином, максимальна довжина повідомлення становить біт.
Далі повідомлення розбивається на блоків по біт у кожному. Для варіантів функції, які повертають до 256 біт включно, = 512. Для варіантів, які повертають значення, довші 256 біт, = 1024.
Далі, будується геш-функція, з використанням наступного ітеративного алгоритму[6].
де
, якщо l = 512, або , якщо l = 1024
— функція, яка повертає найбільш значущих бітів блока розміром [6]
Кількість ітерацій для варіантів функції, які повертають до 256 біт включно — 10. Кількість ітерацій для варіантів функції, які повертають значення, довші 256 біт, — 14[6].
Перестановки T⊕ і T+
Ці перетворення керують станом, представленим матрицею G, яка містить у кожній комірці 1 байт інформації[6]. Матриця має розмір 8Х8 (при ) або 8Х16 (при )[6].
Спочатку матриця G заповнюється послідовністю байт[6]. Наприклад для послідовності 00 01 02 … 3f матриця G виглядає так[6].
до кожного стовпця матриці стану ( — номер раунду)[6].
Функція додає по модулю вектор
до кожного стовпця матриці стану ( — номер раунду)[6].
Функція підміняє елементи матриці стану підстановкою з одного з чотирьох S-блоків (номер S-блока визначається як )[6].
Функція виконує циклічний зсув вправо елементів матриці стану. Рядки з номерами зсуваються на елементів, а рядок 7 зсувається на 7 елементів при або на 11 елементів при [6].
Для виконання функції кожен елемент матриці стану представляється як елемент скінченного поля , сформованого незвідним поліномом . Кожен елемент матриці стану обчислюється за формулою:
де — вектор (0x01, 0x01, 0x05, 0x01, 0x08, 0x06, 0x07, 0x04), а — номер стовпця матриці стану [6].
S-блоки
Підстановка π0
A8
43
5F
06
6B
75
6C
59
71
DF
87
95
17
F0
D8
09
6D
F3
1D
CB
C9
4D
2C
AF
79
E0
97
FD
6F
4B
45
39
3E
DD
A3
4F
B4
B6
9A
0E
1F
BF
15
E1
49
D2
93
C6
92
72
9E
61
D1
63
FA
EE
F4
19
D5
AD
58
A4
BB
A1
DC
F2
83
37
42
E4
7A
32
9C
CC
AB
4A
8F
6E
04
27
2E
E7
E2
5A
96
16
23
2B
C2
65
66
0F
BC
A9
47
41
34
48
FC
B7
6A
88
A5
53
86
F9
5B
DB
38
7B
C3
1E
22
33
24
28
36
C7
B2
3B
8E
77
BA
F5
14
9F
08
55
9B
4C
FE
60
5C
DA
18
46
CD
7D
21
B0
3F
1B
89
FF
EB
84
69
3A
9D
D7
D3
70
67
40
B5
DE
5D
30
91
B1
78
11
01
E5
00
68
98
A0
C5
02
A6
74
2D
0B
A2
76
B3
BE
CE
BD
AE
E9
8A
31
1C
EC
F1
99
94
AA
F6
26
2F
EF
E8
8C
35
03
D4
7F
FB
05
C1
5E
90
20
3D
82
F7
EA
0A
0D
7E
F8
50
1A
C4
07
57
B8
3C
62
E3
C8
AC
52
64
10
D0
D9
13
0C
12
29
51
B9
CF
D6
73
8D
81
54
C0
ED
4E
44
A7
2A
85
25
E6
CA
7C
8B
56
80
Підстановка π1
CE
BB
EB
92
EA
CB
13
C1
E9
3A
D6
B2
D2
90
17
F8
42
15
56
B4
65
1C
88
43
C5
5C
36
BA
F5
57
67
8D
31
F6
64
58
9E
F4
22
AA
75
0F
02
B1
DF
6D
73
4D
7C
26
2E
F7
08
5D
44
3E
9F
14
C8
AE
54
10
D8
BC
1A
6B
69
F3
BD
33
AB
FA
D1
9B
68
4E
16
95
91
EE
4C
63
8E
5B
CC
3C
19
A1
81
49
7B
D9
6F
37
60
CA
E7
2B
48
FD
96
45
FC
41
12
0D
79
E5
89
8C
E3
20
30
DC
B7
6C
4A
B5
3F
97
D4
62
2D
06
A4
A5
83
5F
2A
DA
C9
00
7E
A2
55
BF
11
D5
9C
CF
0E
0A
3D
51
7D
93
1B
FE
C4
47
09
86
0B
8F
9D
6A
07
B9
B0
98
18
32
71
4B
EF
3B
70
A0
E4
40
FF
C3
A9
E6
78
F9
8B
46
80
1E
38
E1
B8
A8
E0
0C
23
76
1D
25
24
05
F1
6E
94
28
9A
84
E8
A3
4F
77
D3
85
E2
52
F2
82
50
7A
2F
74
53
B3
61
AF
39
35
DE
CD
1F
99
AC
AD
72
2C
DD
D0
87
BE
5E
A6
EC
04
C6
03
34
FB
DB
59
B6
C2
01
F0
5A
ED
A7
66
21
7F
8A
27
C7
C0
29
D7
Підстановка π2
93
D9
9A
B5
98
22
45
FC
BA
6A
DF
02
9F
DC
51
59
4A
17
2B
C2
94
F4
BB
A3
62
E4
71
D4
CD
70
16
E1
49
3C
C0
D8
5C
9B
AD
85
53
A1
7A
C8
2D
E0
D1
72
A6
2C
C4
E3
76
78
B7
B4
09
3B
0E
41
4C
DE
B2
90
25
A5
D7
03
11
00
C3
2E
92
EF
4E
12
9D
7D
CB
35
10
D5
4F
9E
4D
A9
55
C6
D0
7B
18
97
D3
36
E6
48
56
81
8F
77
CC
9C
B9
E2
AC
B8
2F
15
A4
7C
DA
38
1E
0B
05
D6
14
6E
6C
7E
66
FD
B1
E5
60
AF
5E
33
87
C9
F0
5D
6D
3F
88
8D
C7
F7
1D
E9
EC
ED
80
29
27
CF
99
A8
50
0F
37
24
28
30
95
D2
3E
5B
40
83
B3
69
57
1F
07
1C
8A
BC
20
EB
CE
8E
AB
EE
31
A2
73
F9
CA
3A
1A
FB
0D
C1
FE
FA
F2
6F
BD
96
DD
43
52
B6
08
F3
AE
BE
19
89
32
26
B0
EA
4B
64
84
82
6B
F5
79
BF
01
5F
75
63
1B
23
3D
68
2A
65
E8
91
F6
FF
13
58
F1
47
0A
7F
C5
A7
E7
61
5A
06
46
44
42
04
A0
DB
39
86
54
AA
8C
34
21
8B
F8
0C
74
67
Підстановка π3
68
8D
CA
4D
73
4B
4E
2A
D4
52
26
B3
54
1E
19
1F
22
03
46
3D
2D
4A
53
83
13
8A
B7
D5
25
79
F5
BD
58
2F
0D
02
ED
51
9E
11
F2
3E
55
5E
D1
16
3C
66
70
5D
F3
45
40
CC
E8
94
56
08
CE
1A
3A
D2
E1
DF
B5
38
6E
0E
E5
F4
F9
86
E9
4F
D6
85
23
CF
32
99
31
14
AE
EE
C8
48
D3
30
A1
92
41
B1
18
C4
2C
71
72
44
15
FD
37
BE
5F
AA
9B
88
D8
AB
89
9C
FA
60
EA
BC
62
0C
24
A6
A8
EC
67
20
DB
7C
28
DD
AC
5B
34
7E
10
F1
7B
8F
63
A0
05
9A
43
77
21
BF
27
09
C3
9F
B6
D7
29
C2
EB
C0
A4
8B
8C
1D
FB
FF
C1
B2
97
2E
F8
65
F6
75
07
04
49
33
E4
D9
B9
D0
42
C7
6C
90
00
8E
6F
50
01
C5
DA
47
3F
CD
69
A2
E2
7A
A7
C6
93
0F
0A
06
E6
2B
96
A3
1C
AF
6A
12
84
39
E7
B0
82
F7
FE
9D
87
5C
81
35
DE
B4
A5
FC
80
EF
CB
BB
6B
76
BA
5A
7D
78
0B
95
E3
AD
74
98
3B
36
64
6D
DC
F0
59
A9
4C
17
7F
91
B8
C9
57
1B
E0
61
Криптостійкість
Автори запевняють, що диференціальні атаки і rebound-атаки неефективні вже після 4 ітерацій функцій перестановок. У таблиці наведені заявлені авторами показники криптостійкості.
У результаті незалежного криптоаналізу вдалося провести атаку тільки на перші 5 раундів; складність знаходження колізії для скороченої до 5 раундів функції Купина-256 складає 2120.[7][8]
↑ абвгдежиклмнпрстhttps://eprint.iacr.org/2015/885.pdf Roman Oliynykov, Ivan Gorbenko, Oleksandr Kazymyrov, Victor Ruzhentsev, Oleksandr Kuznetsov, Yurii Gorbenko, Artem Boiko, Oleksandr Dyrda, Viktor Dolgov, Andrii Pushkaryov A New Standard of Ukraine: The Kupyna Hash Function