DFC

Перейти к навигацииПерейти к поиску
DFC
СоздательJacques Stern[англ.],
Serge Vaudenay[англ.]
Создан1998
Опубликован 1998
Размер ключа 128/192/256 бит
Размер блока128 бит
Число раундов 8
ТипСеть Фейстеля

DFC (Decorrelated Fast Cipher) — блочный симметричный криптоалгоритм, созданный в 1998 году совместно криптографами Парижской Высшей нормальной школы, Национального центра научных исследований (CNRS) и телекоммуникационного гиганта France Telecom под руководством известного криптолога Сержа Воденэ[англ.], специально для участия в конкурсе AES. Относится к семейству PEANUT (Pretty Encryption Algorithm with n-Universal Transformation) шифров.[1]

Общая структура

Шифрование
Расшифрование
«Запутывающая перестановка» (Confusion Permutation)

DFC — блочный шифр с длинной блока 128 бит, представляющий 8-раундовую Сеть Фейстеля. Используется 64-битовая функция шифрования с восемью различными раундовыми ключами по 128 бит, получаемыми из одного исходного ключа шифрования. Каждый раунд функция шифрования использует левую половину исходного текста (блока) и два 64-битных ключа, являющихся половинами соответствующего раундового, для получения 64-битного шифрованного текста. Полученная зашифрованная левая половина блока прибавляется к правой. Затем, согласно идее сети Фейстеля, левая и правая части блока меняются местами[2]. Расшифровывание происходит так же как и шифрование с использованием раундовых ключей в обратном порядке. Длина исходного ключа шифрования не ограничивается тремя фиксированными размерами, предусмотренными конкурсом AES (128, 192 и 256 битов), и может быть переменного размера от 0 до 256 бит[3].

Функция шифрования[2][4]

Вход:  — 64-битная левая половина исходного текста (блока);  — соответствующий раундовый ключ.

Выход:  — 64-битная зашифрованная левая половина исходного текста.

Этап 1: Вычисление

Раундовый ключ делится на две половины: и . Далее производится следующее вычисление:

Этап 2: «Запутывающая перестановка»

«Запутывающая перестановка» (Confusion Permutation) использует S-box, трансформирующий входные 6 бит в 32 бита с помощью таблицы замены RT (Далее считаем функцией данного преобразования).

Пусть и  — левая и правая части полученного по 32 бита каждая (обозначим это как ), и  — заданные константы длиной 32 и 64 бита соответственно, а  — функция, оставляющая крайних левых бит аргумента, тогда результат функции шифрования:

Таблица поиска (S-box)

S-блок — основной компонент симметричных криптоалгоритмов, производящий замену n входных бит на m выходных по некоторой таблице поиска. Используется для максимального устранения зависимостей между ключом шифрования и шифротекстом, что позволяет выполнить свойство Шеннона о запутанности криптоалгоритма. Обычно используются S-блоки с фиксированной таблицей поиска (DES,Rijndael), но в некоторых криптоалгоритмах таблица поиска генерируется с использованием входного ключа шифрования (Blowfish,Twofish). В DFC используется фиксированная таблица поиска RT, её значения будут описаны ниже. Необходимым критерием таблицы поиска является инъективность.

Раундовые ключи[4]

Для повышения стойкости шифра каждый раунд функция шифрования использует разные раундовые ключи . Для их получения используется основной ключ шифра . Алгоритм получения состоит в следующем.

Шаг 1

Сначала дополним основной ключ шифра (длина которого колеблется от 0 до 256 бит) заданной константой длиной 256 бит, отрезая лишние символы.

.

Полученный разрезаем на 8 32-битных частей .

Шаг 2

Определим несколько вспомогательных переменных, используя полученные :

а также для i=2,3,4

где  — заданные 64-битные константы.

Шаг 3

Таким образом мы получили из исходного ключа длиной 256 бит два ключа длиной по 512 бит каждый.

Пусть  — функции шифрования, описанные в пункте 2, только с 4 раундами вместо 8, использующие для -го раунда раундовые ключи и соответственно. Тогда полагая что получаем искомые раундовые ключи:

Если  — нечетное, то:

Если  — четное, то:

Раундовые ключи найдены.

Фиксированные параметры[4]

Для проведения операции шифрования шифром DFC, как показано выше, требуются следующие фиксированные параметры:

НаименованиеДлина (бит)Назначение
64Функция Шифрования, Этап 2
32Функция Шифрования, Этап 2
64Получение раундовых ключей, Шаг 2
64Получение раундовых ключей, Шаг 2
256Получение раундовых ключей, Шаг 1
Таблица поиска 64x32Функция Шифрования, Этап 2

Для задания фиксированных параметров обычно используется шестнадцатеричная запись числа e:

e = 2.b7e151628aed2a6abf7158…

Далее будем считать только дробную часть шестнадцатеричной записи числа e.

Таким образом получим следующее (данные представлены в шестнадцатеричной системе исчисления):

Таблица поиска RT
Входная последовательность бит(6):000102030405060708090A0B
Выходная последовательность бит (32):b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfef324e7738926cfbe5f4bf8d8d8c31d763
0C0D0E0F101112131415161718191A1B
da06c80abb1185eb4f7c7b5757f5959490cfd47d7c19bb42158d9554f7b46bced55c4d79fd5f24d6613c31c3839a2ddf8a9a276bcfbfa1c877c56284dab79cd4
1C1D1E1F202122232425262728292A2B
c2d3293d20e9e5eaf02ac60acc93ed874422a52ecb238feee5ab6add835fd1a0753d0a8f78e537d2b95bb79d8dcaec642c1e9f23b829b5c2780bf38737df8bb3
2C2D2E2F303132333435363738393A3B
00d01334a0d0bd8645cbfa73a6160ffe393c48cbbbca060f0ff8ec6d31beb5cceed7f2f0bb088017163bc60df45a0ecb1bcd289b06cbbfea21ad08e1847f3f73
3C3D3E3F
78d56ced94640d6ef0d3d37be6700831

Константы:

KD  = 86d1bf27 5b9b251d
KC  = eb64749a
KA1 = b7e15162 8aed2a6a
KA2 = bf715880 9cf4f3c7
KA3 = 62e7160f 38b4da56
KB1 = a784d904 5190cfef
KB2 = 324e7738 926cfbe5
KB3 = f4bf8d8d 8c31d763
KS  = da06c80a bb1185eb 4f7c7b57 57f59584 90cfd47d 7c19bb42 158d9554 f7b46bce

Криптостойкость

Криптостойкость — способность алгоритма шифрования противостоять возможным атакам на него. Структура DFC основана на декорреляционном методе[1], разработанном Сержом Ваденэ, с доказуемой стойкостью к известным криптографическим атакам. Однако уже существуют аналитические результаты, показывающие обратное.

Слабые ключи и константы[4]

Для удобства возьмем, что  — левая половина i-го раундового ключа K,  — правая половина. Если равна 0, то на выходе функции шифрования будет некая константа, независящая от . Следовательно, взяв , , равными 0, шифр становится уязвимым для distinguishing attack[англ.] (более подробно о такой атаке с примером[5]). Шанс появления таких ключей равен 2−192.

Следует отметить ещё одну особенность шифра, связанную с плохим выбором констант и . (см. «Раундовые ключи») Если , , , то получим , , . А значит

Таким образом получаем нулевые раундовые ключи для всех раундов, значит

, где  — некая константа.

По получившемуся закрытому тексту можно восстановить исходный текст.

Атака по времени

Атака по времени — одна из разновидностей атаки по сторонним каналам. Реализации устойчивых шифров (DFC не исключение) должны быть такими, чтобы время вычисления операций по модулю (mod) не зависело от входных данных. В противном случае возможно применение атаки Кохера по времени[6].

Атака «Photofinishing Attack»

Эли Бихам предложил эффективную технологию реалиции шифра, основанную на 1-битновом SIMD-микропроцессоре. Этот вид реализации не подвержен атаке Шамира «Photofinishing attack»[7].

Примечания

Ссылки