CLEFIA (от фр.clef «ключ») — блочный шифр с размером блока 128 битов, длиной ключа 128, 192 или 256 битов и количеством раундов 18, 22, 26 соответственно. Этот криптоалгоритм относится к «легковесным» алгоритмам и использует сеть Фейстеля как основную структурную единицу. CLEFIA был разработан корпорацией Sony и представлен в 2007 году. Авторами являются сотрудники компании Тайдзо Сираи, Кёдзи Сибутани, Тору Акисита, Сихо Мориаи, а также доцент Нагойского университета Тэцу Ивата.
Основное назначение данного шифра — использование в качестве безопасной альтернативы AES в сфере защиты авторских прав и DRM-систем, а также применение в RFID-метках и смарт-картах.
Является одним из самых эффективных криптоалгоритмов при аппаратной реализации: аппаратная реализация CLEFIA может достигать эффективности 400,96 Kbps на эквивалентную логическую ячейку[англ.] шифратора, что является самым высоким показателем среди алгоритмов, включённых в стандарты ISO на 2008 год[1].
Префикс для двоичной строки в шестнадцатеричной форме
показывает длину в битах
Конкатенация
Обновление значения значением
Побитовое исключающее ИЛИ
Умножение в
Алгоритм состоит из двух составных частей: части обработки ключа и части обработки данных. Число раундов CLEFIA зависит от длины ключа и составляет соответственно 18, 22 или 26 раундов, при этом используется 36, 44 и 52 подключа.
Алгоритм использует ключевое забеливание[англ.] с дополнительным подключами перед обработкой данных и после неё.
Базовым этапом шифрования данных в CLEFIA является применение обобщённой сети Фейстеля с 4 или 8 ветвями, которая используется как в части обработки данных, так и в части обработки ключа (рисунок 1). В общем случае, если обобщённая сеть Фейстеля имеет d-ветвей и r-раундов, она обозначается как (англ.generalized Feistel network). Далее рассмотрен алгоритм работы сети Фейстеля в случае использования 4-х ветвей и блока данных в 128 бит.
В , кроме 4-x 32-х битных входов () и 4-x 32-х битных выходов (), также используются раундовые ключи . Их количество составляет в связи с тем, что для каждого раунда требуется в два раза меньше ключей, чем ветвей. генерируются в части обработки ключа[4].
Каждая ячейка Фейстеля задействует также две различные -функции: . -функции относятся к SP-типу функций и используют:
Две -функции и , используемые в , включают в себя нелинейные 8-битные S-блоки и , рассмотренные далее, и матрицы и размером . В каждой -функции эти S-блоки используются в различном порядке, и применяется своя матрица распространения для умножения в поле Галуа. На рисунках показана содержательная часть -функций[4].
-функции определяются следующим образом:
Функция
Шаг 1.
Шаг 2.
Шаг 3.
Функция
Шаг 1.
Шаг 2.
Шаг 3.
S-блоки
В CLEFIA используется два разных типа S-блоков, размером по 8 бит каждый. Они сгенерированы так, чтобы минимализировать занимаемую ими площадь при аппаратной реализации. Первый () состоит из 4-битных случайных S-блоков. Во втором () используется обратная функции над полем . В таблицах ниже представлены выходные значения в шестнадцатеричной системе счисления для S-блоков. Старшие 4-бита для 8-битного ввода S-блока обозначают строку, а младшие 4-бита обозначают столбец. Например, если введено значение , то блок выводит [3].
Первый S-блок
создан с помощью применения четырёх 4-битных S-блоков следующим образом:
Алгоритм получения выходных данных при использования блока
Шаг 1.
Шаг 2.
Шаг 3.
Умножение в выполняется в над многочленами, которое определяется неприводимым полиномом .
В таблице можно найти соответствующий полученный S-box .
Таблица
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.a
.b
.c
.d
.e
.f
0.
57
49
d1
c6
2f
33
74
fb
95
6d
82
ea
0e
b0
a8
1c
1.
28
d0
4b
92
5c
ee
85
b1
c4
0a
76
3d
63
f9
17
af
2.
bf
a1
19
65
f7
7a
32
20
06
ce
e4
83
9d
5b
4c
d8
3.
42
5d
2e
e8
d4
9b
0f
13
3c
89
67
c0
71
aa
b6
f5
4.
a4
be
fd
8c
12
00
97
da
78
e1
cf
6b
39
43
55
26
5.
30
98
cc
dd
eb
54
b3
8f
4e
16
fa
22
a5
77
09
61
6.
d6
2a
53
37
45
c1
6c
ae
ef
70
08
99
8b
1d
f2
b4
7.
e9
c7
9f
4a
31
25
fe
7c
d3
a2
bd
56
14
88
60
0b
8.
cd
e2
34
50
9e
dc
11
05
2b
b7
a9
48
ff
66
8a
73
9.
03
75
86
f1
6a
a7
40
c2
b9
2c
db
1f
58
94
3e
ed
a.
fc
1b
a0
04
b8
8d
e6
59
62
93
35
7e
ca
21
df
47
b.
15
f3
ba
7f
a6
69
c8
4d
87
3b
9c
01
e0
de
24
52
c.
7b
0c
68
1e
80
b2
5a
e7
ad
d5
23
f4
46
3f
91
c9
d.
6e
84
72
bb
0d
18
d9
96
f0
5f
41
ac
27
c5
e3
3a
e.
81
6f
07
a3
79
f6
2d
38
1a
44
5e
b5
d2
ec
cb
90
f.
9a
36
e5
29
c3
4f
ab
64
51
f8
10
d7
bc
02
7d
8e
Таблица
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
e
6
c
a
8
7
2
f
b
1
4
0
5
9
d
3
6
4
0
d
2
b
a
3
9
c
e
f
8
7
5
1
b
8
5
e
a
6
4
c
f
7
2
3
1
0
d
9
a
2
6
d
3
4
5
e
0
7
8
9
b
f
c
1
Второй S-блок
Блок определяется как:
При этом обратная функция находится в поле , которое задано неприводимым полиномом . — аффинные преобразования над , определённые следующим образом:
Здесь используется, что и . Таким образом получается блок .
Таблица
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.a
.b
.c
.d
.e
.f
0.
6c
da
c3
e9
4e
9d
0a
3d
b8
36
b4
38
13
34
0c
d9
1.
bf
74
94
8f
b7
9c
e5
dc
9e
07
49
4f
98
2c
b0
93
2.
12
eb
cd
b3
92
e7
41
60
e3
21
27
3b
e6
19
d2
0e
3.
91
11
c7
3f
2a
8e
a1
bc
2b
c8
c5
0f
5b
f3
87
8b
4.
fb
f5
de
20
c6
a7
84
ce
d8
65
51
c9
a4
ef
43
53
5.
25
5d
9b
31
e8
3e
0d
d7
80
ff
69
8a
ba
0b
73
5c
6.
6e
54
15
62
f6
35
30
52
a3
16
d3
28
32
fa
aa
5e
7.
cf
ea
ed
78
33
58
09
7b
63
c0
c1
46
1e
df
a9
99
8.
55
04
c4
86
39
77
82
ec
40
18
90
97
59
dd
83
1f
9.
9a
37
06
24
64
7c
a5
56
48
08
85
d0
61
26
ca
6f
a.
7e
6a
b6
71
a0
70
05
d1
45
8c
23
1c
f0
ee
89
ad
b.
7a
4b
c2
2f
db
5a
4d
76
67
17
2d
f4
cb
b1
4a
a8
c.
b5
22
47
3a
d5
10
4c
72
cc
00
f9
e0
fd
e2
fe
ae
d.
f8
5f
ab
f1
1b
42
81
d6
be
44
29
a6
57
b9
af
f2
e.
d4
75
66
bb
68
9f
50
02
01
3c
7f
8d
1a
88
bd
ac
f.
f7
e4
79
96
a2
fc
6d
b2
6b
03
e1
2e
7d
14
95
1d
Матрицы распространения
Матрицы распространения заданы следующим образом:
Умножения матрицы и векторов выполняются в поле , определённое неприводимым полиномом .
Общая структура шифрования
Таким образом, на основе обобщённой сети Фейстеля (4 входа для блока данных; 2r входа для раундовых ключей; 4 выхода для шифротекста):
Число раундов составляет 18, 22 и 26 для 128-битных, 192-битных и 256-битных ключей соответственно. Общее количество зависит от длины ключа, поэтому часть обработки данных требует 36, 44 и 52 раундовых ключей для 128-битных, 192-битных и 256-битных ключей соответственно.
В часть обработки данных CLEFIA, состоящую из для шифрования и для расшифрования, входят процедуры исключающее «или» между текстом и отбеливающими ключами в начале и в конце алгоритма.
Таким образом, пусть — открытый текст и зашифрованный текст, и пусть — части открытого текста и зашифрованного текста, где и , и пусть — отбеливающие ключи, а — раундовые ключи, предоставляемые частью обработки ключа. Тогда алгоритм шифрования с использованием ключевого забеливания:
Функция шифрования
Шаг 1.
Шаг 2.
Шаг 3.
Функция расшифрования
Шаг 1.
Шаг 2.
Шаг 3.
Алгоритм обработки ключа
Часть обработки ключей в шифре CLEFIA поддерживает 128, 192 и 256-битные ключи и в результате выдаёт отбеливающие ключи и раундовые ключи для части обработки данных.
Пусть будет ключом, а — промежуточным ключом (получается с помощью сокращённой части обработки данных), тогда часть обработки ключа состоит в трёх этапах:
Генерация из .
Генерация из .
Генерация из и .
Чтобы сгенерировать из , часть обработки ключа для 128-битного ключа использует 128-битную (4 входа по 32 бита), в то время как для 192/256-битных ключей используется 256-битная (8 входов по 32 бита). Далее приведёно описание алгоритма в случае 128-битного ключа.
Функция перестановки бит
Данный алгоритм использует функцию перестановки бит DoubleSwap (обозначение: ):
Причём обозначает битовую строку, вырезанную с -го бита по -й бит из .
Генерация констант
Схема требует на вход раундовые ключи в количестве (если ), и, когда эта схема применяется в части обработки ключа, шифр CLEFIA применяет заранее сгенерированные константы как раундовые ключи. Также дополнительные константы необходимы при втором этапе, при генерации и , и их количество равно (но в данном случае константы и из части обработки данных).
Эти 32-х битные константы обозначаются как , где — номер константы, — используемое количество бит для ключа(может быть 128, 196, 256). Тогда количество констант будет 60, 84, 92 для 128, 192, 256 битовых ключей соответственно.
Пусть и . Тогда алгоритм для генерации (в таблице количество итераций и начальные значения ):
Шаг 1.
Шаг 2.
Шаг 2.1.
Шаг 2.2.
Шаг 2.3.
Где — логическое отрицание, — циклический левый сдвиг на -бит; а умножение происходит в поле и определённо неприводимым многочленом .
Обработка ключа в случае 128-битного ключа
128-разрядный промежуточный ключ генерируется путём применения , который принимает на вход двадцать четыре 32-разрядные константы в качестве раундовых ключей и в качестве данных для шифрования. Затем и используются для генерации и в следующих шагах:
Генерация из :
Шаг 1.
Генерация из :
Шаг 2.
Генерация из и :
Шаг 3.
Шаг 3.1.
Шаг 3.2.
Шаг 3.3.
Шаг 3.4.
Особенности шифра
CLEFIA может быть эффективно реализована как в аппаратном, так и в программном обеспечении. В таблице показаны основные преимущества технологий, использованных в этом шифре[3].
Аспекты проектирования для эффективной реализации
-функции небольшого размера (32-битный вход/выход)
CLEFIA использует обобщённую структуру Фейстеля с 4 ветвями, которая рассматривается как расширение традиционной структуры Фейстеля с 2 ветвями. Существует много типов обобщённых структур Фейстеля. В алгоритме CLEFIA используется второй тип этой структуры (схема 1)[5]. Структура второго типа имеет две F-функции в одном раунде для четырёх линий данных.
Структура типа 2 имеет следующие особенности:
-функции меньше, чем у традиционной структуры Фейстеля;
множественные -функции могут обрабатываться одновременно;
как правило, требует больше раундов, чем традиционная структура Фейстеля.
Первая особенность является большим преимуществом для программных и аппаратных реализаций; а вторая особенность подходит для эффективной реализации, особенно в аппаратном обеспечение. Но при этом, заметно увеличивается количество раундов из-за третьей особенности. Однако преимущества структуры второго типа превосходят недостатки для данной конструкции блочного шифр, так как используется новая методика программирования, использующая DSM и два типа S-боксов, что позволяет эффективно сократить количество раундов.
Использование Diffusion Switching Mechanism
CLEFIA использует две разные матрицы распространения для повышения устойчивости к дифференциальным атакам и линейным атакам с использованием механизма DSM (схема 2). Эта методика проектирования была первоначально разработана для традиционных сетей Фейстеля[3]. Эта техника была перенесена на , что является одним из уникальных свойств этого шифра. Также, благодаря DSM можно увеличить гарантированное количество активных S-блоков при том же количество раундов.
Следующая таблица показывает гарантированное количество активных S-блоков в шифре CLEFIA. Данные получены при помощи компьютерного моделирования с использованием алгоритма поиска исчерпывающего типа[3]. Столбцы «D» и «L» в таблице показывают гарантированное количество активных S-блоков при дифференциальном и линейном криптоанализе соответственно. Из этой таблицы можно видеть, что влияние DSM проявляется уже при , и гарантированное количество S-боксов увеличиваются примерно на 20 % — 40 %, в отличие от структуры без DSM. Следовательно, количество раундов может быть уменьшено, что означает, что производительность улучшается.
Гарантированное число активных S боксов
Количество раундов 1 — 13
Раунды
Дифф. и Лин. (без DSM)
Дифф. (с DSM)
Лин. (с DSM)
1
0
0
0
2
1
1
1
3
2
2
5
4
6
6
6
5
8
8
10
6
12
12
15
7
12
14
16
8
13
18
18
9
14
20
20
10
18
22
23
11
20
24
26
12
24
28
30
13
24
30
32
Количество раундов 14 — 26
Раунды
Дифф. и Лин. (без DSM)
Дифф. (с DSM)
Лин. (с DSM)
14
25
34
34
15
26
36
36
16
30
38
39
17
32
40
42
18
36
44
46
19
36
44
46
20
37
50
50
21
38
52
52
22
42
55
55
23
44
56
58
24
48
59
62
25
48
62
64
26
49
65
66
В таблице красным выделена строка, указывающая на минимальное требуемое количество раундов, чтобы шифр был устойчив к криптоанализу методом полного перебора(см. также). Синим цветом выделены строки, количество раундов которых используется в алгоритме CLEFIA с 128/192/256-битовыми ключами соответственно.
Особенности двух S-боксов
CLEFIA использует два разных типа 8-битных S-блоков: один основан на четырёх 4-битных случайных S-блоках; а другой основан на обратной функции в , которая имеет максимально возможную трудоёмкость атаки для дифференциального криптоанализа и линейного криптоанализа . Оба S-блока выбраны для эффективной реализации, особенно в аппаратном обеспечении.
Для параметров безопасности составляет , а его составляет . Для и оба равны [6].
Криптостойкость
Дифференциальный криптоанализ
По таблице количества активных S боксов с DSM(в пункте Использование Diffusion Switching Mechanism) минимальное число раундов равно 12. Таким образом, используя 28 активных S-блоков для 12-раундового CLEFIA и (см. также), определяем, что вероятность характеристики . Это означает, что трудоёмкость атаки выше и для атакующего нет полезной дифференциальной характеристики в 12 раундов. Кроме того, поскольку имеет более низкий , ожидается, что фактическая верхняя граница будет ниже, чем приведённая выше оценка[3]. В результате мы считаем, что полный цикл CLEFIA защищён от дифференциального криптоанализа (в CLEFIA используется 18 раундов).
Линейный криптоанализ
Для оценки сложности линейного криптоанализа применяется подход на основе подсчёта активных S-блоков при заданном количестве раундов. Поскольку , используя 30 активных S-блоков для 12-раундового CLEFIA, . Это даёт вывод, что злоумышленнику трудно найти достаточное количество пар текст-шифротекст, которые можно использовать для успешной атаки на CLEFIA. В результате полнофункциональный CLEFIA достаточно защищён от линейного криптоанализа[6].
где — любая ненулевая величина. Таким образом, используя описанный выше отличительный признак, можно смоделировать атаку (для каждой длины ключа), которая будет восстанавливать текущий ключ. В следующей таблице приведены данные о сложностях, необходимых для невозможных дифференциальных атак. Согласно этой таблице ожидается, что у CLEFIA с полным циклом есть достаточный запас безопасности против этой атаки.
CLEFIA обеспечивает компактную и быструю реализацию одновременно без ущерба для безопасности. По сравнению с AES, наиболее широко используемым 128-битным блочным шифром, CLEFIA имеет преимущество в аппаратной реализации. CLEFIA может реализовывать скорость 1,6 Гбит/с с площадью менее 6 тысяч эквивалентных логических ячеек[англ.], а пропускная способность на шлюз является самой высокой в мире на 2008 год (в случае аппаратной реализации)[1].
В таблице ниже приведена сравнительная характеристика шифра CLEFIA по отношению к некоторым другим известным шифрам[1]: