CLEFIA (от «ключ») — блочный шифр с размером блока 128 битов, длиной ключа 128, 192 или 256 битов и количеством раундов 18, 22, 26 соответственно. Этот криптоалгоритм относится к «легковесным» алгоритмам и использует сеть Фейстеля как основную структурную единицу. CLEFIA был разработан корпорацией Sony и представлен в 2007 году. Авторами являются сотрудники компании Тайдзо Сираи, Кёдзи Сибутани, Тору Акисита, Сихо Мориаи, а также доцент Нагойского университета Тэцу Ивата.
Основное назначение данного шифра — использование в качестве безопасной альтернативы AES в сфере защиты авторских прав и DRM-систем, а также применение в RFID-метках и смарт-картах.
Является одним из самых эффективных криптоалгоритмов при аппаратной реализации: аппаратная реализация CLEFIA может достигать эффективности 400,96 Kbps на шифратора, что является самым высоким показателем среди алгоритмов, включённых в стандарты ISO на 2008 год.
Алгоритм стал одним из первых шифров, применяющим технологию DSM () для увеличения защищённости от линейного и дифференциального криптоанализа.
Схема шифрования данных + Обозначения Префикс для двоичной строки в шестнадцатеричной форме показывает длину в битах Конкатенация Обновление значения значением Побитовое исключающее ИЛИ Умножение в
Алгоритм состоит из двух составных частей: части обработки ключа и части обработки данных. Число раундов CLEFIA зависит от длины ключа и составляет соответственно 18, 22 или 26 раундов, при этом используется 36, 44 и 52 подключа. Алгоритм использует с дополнительным подключами перед обработкой данных и после неё.
Базовым этапом шифрования данных в CLEFIA является применение обобщённой сети Фейстеля с 4 или 8 ветвями, которая используется как в части обработки данных, так и в части обработки ключа (рисунок 1). В общем случае, если обобщённая сеть Фейстеля имеет d-ветвей и r-раундов, она обозначается как (). Далее рассмотрен алгоритм работы сети Фейстеля в случае использования 4-х ветвей и блока данных в 128 бит.
В , кроме 4-x 32-х битных входов () и 4-x 32-х битных выходов (), также используются раундовые ключи . Их количество составляет в связи с тем, что для каждого раунда требуется в два раза меньше ключей, чем ветвей. генерируются в части обработки ключа.
Каждая ячейка Фейстеля задействует также две различные -функции: . -функции относятся к SP-типу функций и используют: блок подстановок (S-блок, ); в поле Галуа ().
F-функции Две -функции и , используемые в , включают в себя нелинейные 8-битные S-блоки и , рассмотренные далее, и матрицы и размером . В каждой -функции эти S-блоки используются в различном порядке, и применяется своя матрица распространения для умножения в поле Галуа. На рисунках показана содержательная часть -функций. -функции определяются следующим образом:
Функция Шаг 1. Шаг 2. Шаг 3.
Функция Шаг 1. Шаг 2. Шаг 3.
S-блоки В CLEFIA используется два разных типа S-блоков, размером по 8 бит каждый. Они сгенерированы так, чтобы минимализировать занимаемую ими площадь при аппаратной реализации. Первый () состоит из 4-битных случайных S-блоков. Во втором () используется обратная функции над полем . В таблицах ниже представлены выходные значения в шестнадцатеричной системе счисления для S-блоков. Старшие 4-бита для 8-битного ввода S-блока обозначают строку, а младшие 4-бита обозначают столбец. Например, если введено значение , то блок выводит .
Первый 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 выхода для шифротекста):
Алгоритм шифрования и расшифрования данных:
Шифрование () Шаг 1. Шаг 2. Шаг 2.1. Шаг 2.2. Шаг 3.
Расшифрование () Шаг 1. Шаг 2. Шаг 2.1. Шаг 2.2. Шаг 3.
Число раундов составляет 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 может быть эффективно реализована как в аппаратном, так и в программном обеспечении. В таблице показаны основные преимущества технологий, использованных в этом шифре.
+ Аспекты проектирования для эффективной реализации -функции небольшого размера (32-битный вход/выход) Нет необходимости в обратимости -функций SP-тип -функций Возможность быстрой табличной реализации в программном обеспечении DSM Сокращение количества раундов S-блоки Очень маленькая занимаемая площадь и в аппаратном обеспечении Матрицы Использование элементов только с малым весом Хэмминга Часть обработки ключа Совместное использование структуры с частью обработки данных Требуется только 128-битный регистр для 128-битного ключа Небольшая площадь функции DoubleSwap
Преимуществами и особенностями в алгоритма CLEFIA являются: Обобщённую сеть Фейстеля ; DSM (); Два S-бокса.
Особенности реализации GFN
CLEFIA использует обобщённую структуру Фейстеля с 4 ветвями, которая рассматривается как расширение традиционной структуры Фейстеля с 2 ветвями. Существует много типов обобщённых структур Фейстеля. В алгоритме CLEFIA используется второй тип этой структуры (схема 1). Структура второго типа имеет две F-функции в одном раунде для четырёх линий данных.
Структура типа 2 имеет следующие особенности: -функции меньше, чем у традиционной структуры Фейстеля; множественные -функции могут обрабатываться одновременно; как правило, требует больше раундов, чем традиционная структура Фейстеля.
Первая особенность является большим преимуществом для программных и аппаратных реализаций; а вторая особенность подходит для эффективной реализации, особенно в аппаратном обеспечение. Но при этом, заметно увеличивается количество раундов из-за третьей особенности. Однако преимущества структуры второго типа превосходят недостатки для данной конструкции блочного шифр, так как используется новая методика программирования, использующая DSM и два типа S-боксов, что позволяет эффективно сократить количество раундов.
Использование Diffusion Switching Mechanism
CLEFIA использует две разные матрицы распространения для повышения устойчивости к дифференциальным атакам и линейным атакам с использованием механизма DSM (схема 2). Эта методика проектирования была первоначально разработана для традиционных сетей Фейстеля. Эта техника была перенесена на , что является одним из уникальных свойств этого шифра. Также, благодаря DSM можно увеличить гарантированное количество активных S-блоков при том же количество раундов.