Скачать презентацию Алгоритм шифрования данных NUSH Описание алгоритма NUSH Скачать презентацию Алгоритм шифрования данных NUSH Описание алгоритма NUSH

Алгоритм шифрования данных.pptx

  • Количество слайдов: 23

Алгоритм шифрования данных NUSH Алгоритм шифрования данных NUSH

Описание алгоритма NUSH — блочный алгоритм симметричного шифрования, разработанный Анатолием Лебедевым и Алексеем Волчковым Описание алгоритма NUSH — блочный алгоритм симметричного шифрования, разработанный Анатолием Лебедевым и Алексеем Волчковым для российской компании LAN Crypto. NUSH имеет несколько различных вариантов, имеющих разный размер блока, различное число раундов и использует длину ключа в 128, 192 или 256 бит. Алгоритм не использует S-блоки, а только такие операции, как AND, OR, XOR, сложение по модулю и циклические сдвиги. Перед первым и последнего раунда проводится «отбеливание» ключа. Данный алгоритм был выдвинут в проекте NESSIE, но не был выбран, так как было показано, что линейный криптоанализ может быть эффективнее, чем атака перебором. Алгоритм NUSH, шифрующий данные 64 -битными блоками, (аналогично, например, известному алгоритму RC 5) весьма легко преобразуется под другие размеры блока. На конкурс NESSIE, помимо 64 -битного варианта, были представлены еще и варианты алгоритма, обрабатывающие 128 битные и 256 -битные блоки данных В отличие от алгоритмов CS-Cipher и Nimbus, алгоритм NUSH имеет несколько фиксированных размеров шифруемого блока данных: 64, 128 и 256 бит. Рассмотрим 64 -битный вариант алгоритма.

СТРУКТУРА АЛГОРИТМА Рис. 1. Структура алгоритма NUSH СТРУКТУРА АЛГОРИТМА Рис. 1. Структура алгоритма NUSH

Структура алгоритма показана на рис. 1. Шифруемый блок данных разбивается на 4 субблока по Структура алгоритма показана на рис. 1. Шифруемый блок данных разбивается на 4 субблока по 16 бит (обозначаемые как a, b, c, d). Прежде всего, выполняется начальное преобразование, состоящее в том, что на каждый субблок операцией XOR накладывается фрагмент расширенного ключа (процедура расширения ключа будет описана ниже) для начального преобразования KS 0. . . KS 3: A = a KS 0, B = b KS 1, C = c KS 2, D = d KS 3, где A, B, C, D – значения соответствующих субблоков после выполнения текущей операции. Затем выполняется 9 раундов преобразований; структура раунда будет описана ниже. По завершении 9 раундов выполняется финальное преобразование, в котором операцией XOR на субблоки накладываются подключи для финального преобразования KF 0. . . KF 3: A = a KF 0, B = b KF 1, C = c KF 2, D = d KF 3.

Основой каждого раунда алгоритма является преобразование ( Основой каждого раунда алгоритма является преобразование ("итерация" согласно спецификации алгоритма) R (X 1, X 2, X 3, X 4, k, s); в одной итерации выполняются следующие действия (см. рис. 2): Y 3 = (X 2 + (X 3 k) mod 216) >>> s, Y 1 = X 1 + (Y 3 # X 4) mod 216, Y 2 = X 2 , Y 4 = X 4 , где X 1. . . X 4 и Y 1. . . Y 4 - соответственно, входные и выходные значения обрабатываемых субблоков, k – модифицированный фрагмент расширенного ключа для текущей итерации, >>> – побитовый циклический сдвиг операнда вправо на переменное число бит,

Рис. 2. Итерация алгоритма NUSH Рис. 2. Итерация алгоритма NUSH

s – число бит сдвига, различно для каждой итерации и выбирается из таблицы 1 s – число бит сдвига, различно для каждой итерации и выбирается из таблицы 1 : таблица 1 Раунд 0 0 1 1 2 2 3 3 4 4 Итерация 0 1 2 3 0 1 s 4 7 11 8 7 14 5 4 8 2 9 4 13 1 14 6 7 12 Раунд 4 4 5 5 6 6 7 7 8 8 Итерация 2 3 0 1 2 3 s 5 1 2 4 12 3 9 2 11 13 12 3 6 11 7 15 4 14

 Символом # обозначена побитовая логическая операция Символом # обозначена побитовая логическая операция "и" (&) или побитовая логическая операция "или" (|), конкретная из которых также выбирается из таблицы 2: таблица 2 Раунд 0 0 1 1 2 2 3 3 4 Итерация 0 1 2 3 0 # & | | | & | | | Раунд 4 4 5 5 6 6 7 7 8 8 8 Итерация 2 3 0 1 2 # & & & | | | & & | | &

Раунд состоит из четырех итераций (в таблицах они пронумерованы от 0 до 3), выполняемых Раунд состоит из четырех итераций (в таблицах они пронумерованы от 0 до 3), выполняемых по следующему закону: R(a, b, c, d, KRC 4 i, S[4 i]), R(b, c, d, a, KRC 4 i + 1, S[4 i + 1]), R(c, d, a, b, KRC 4 i + 2, S[4 i + 2]), R(d, a, b, c, KRC 4 i + 3, S[4 i + 3]), где i – номер текущего раунда, начиная с 0, KRCn – модифицированный фрагмент расширенного ключа для текущей итерации (KRn): KRCn = KRn + c mod 216, где c – модифицирующая константа согласно таблице 3:

таблица 3 Раунд 0 0 1 1 2 2 3 3 4 4 Итерация таблица 3 Раунд 0 0 1 1 2 2 3 3 4 4 Итерация 0 1 2 3 0 1 с AC 25 8 A 93 243 D 262 E F 887 C 4 F 2 8 E 36 9 FA 1 7 DC 0 6 A 29 6 D 84 34 BD A 267 CC 15 04 FE B 94 A DF 24 40 EF Раунд 4 4 5 5 6 6 7 7 8 8 Итерация 2 3 0 1 2 3 с 96 DA 905 F D 631 AA 62 4 D 15 70 CB 7533 45 FC 5337 D 25 E A 926 1 C 7 B 5 F 12 4 ECC 3 C 86 28 DB FC 01 7 CB 1

РАСШИФРОВАНИЕ Расшифрование выполняется применением обратных операций в обратной последовательности. Таким образом, при расшифровании сначала РАСШИФРОВАНИЕ Расшифрование выполняется применением обратных операций в обратной последовательности. Таким образом, при расшифровании сначала выполняется обратное финальное преобразование, затем 9 раундов по 4 обратных итерации, после чего – обратное начальное преобразование. Обратные финальное и начальное преобразования полностью аналогичны прямым – на субблоки a, b, c, d операцией XOR накладываются, соответственно, фрагменты расширенного ключа KF 0. . . KF 3 и KS 0. . . KS 3. Итерации каждого раунда также выполняются в обратной последовательности (i = 9… 1): R-1(d, a, b, c, KRC 4 i - 1, S[4 i - 1]), R-1(c, d, a, b, KRC 4 i - 2, S[4 i - 2]), R-1(b, c, d, a, KRC 4 i - 3, S[4 i - 3]), R-1(a, b, c, d, KRC 4 i - 4, S[4 i - 4]). Итерация R-1(X 1, X 2, X 3, X 4, k, s) выглядит следующим образом: Y 1 = X 1 – (X 3 # X 4) mod 216, Y 2 = X 2, Y 3 = ((X 3 >>> (16 – s)) k) – X 2 mod 216 , Y 4 = X 4. (см. рис. 3):

Рис. 3. Обратная итерация алгоритма NUSH Рис. 3. Обратная итерация алгоритма NUSH

РАСШИРЕНИЕ КЛЮЧА Процедура расширения ключа весьма проста и напоминает таковую у отечественного стандарта шифрования РАСШИРЕНИЕ КЛЮЧА Процедура расширения ключа весьма проста и напоминает таковую у отечественного стандарта шифрования ГОСТ 28147 -89 – исходный ключ шифрования делится на фрагменты K 0. . . Kn-1 n – размер ключа шифрования в 16 -битных словах, т. е. : K 0. . . K 7 для 128 -битного ключа, K 0. . . K 11 для 192 -битного ключа, K 0. . . K 15 для 256 -битного ключа. таблица 4 Применение KS 0 KS 1 KS 2 KS 3 KF 0 KF 1 KF 2 KF 3 KR i Используемый фрагмент ключа (в зависимости от его размера) 128 бит 192 бита 256 бит K 4 K 12 K 5 K 13 K 6 K 14 K 7 K 15 K 3 K 11 K 13 K 2 K 10 K 12 K 1 K 9 K 15 K 0 K 8 K 14 Ki mod n Затем фрагменты ключа используются в итерациях, а также в начальном и финальном преобразованиях согласно таблице 4. Символом i в таблице обозначен сквозной номер итерации (от 0 до 35), т. е. в итерациях фрагменты ключа используются поочередно в прямом порядке.

128 -БИТНЫЙ ВАРИАНТ АЛГОРИТМА NUSH Отличия 128 -битного алгоритма NUSH от 64 -битного состоят 128 -БИТНЫЙ ВАРИАНТ АЛГОРИТМА NUSH Отличия 128 -битного алгоритма NUSH от 64 -битного состоят в следующем: 1. Выполняется 17 раундов преобразований вместо 9. 2. Блок данных делится на те же 4 субблока, но они имеют размер по 32 -бита (а не по 16 бит). Соответственно, операции сложения и вычитания выполняются по модулю 232. 3. Используются другие константы c (константы для модификации ключей, используемых в итерациях алгоритма) и s (число бит сдвига), а также другая последовательность логических операций #. Их значения сведены в таблицу 5:

таблица 5 таблица 5

4. Изменена процедура расширения ключа. В 128 -битном алгоритме NUSH фрагменты исходного ключа K 4. Изменена процедура расширения ключа. В 128 -битном алгоритме NUSH фрагменты исходного ключа K 0. . . Kn-1 (n – размер ключа шифрования в 32 битных словах) используются в итерациях (ниже i – сквозной номер итерации, начиная с 0), а также в начальном и финальном преобразованиях следующим образом: таблица 6 Применение KS 0 KS 1 KS 2 KS 3 KF 0 KF 1 KF 2 KF 3 KRi Используемый фрагмент ключа (в зависимости от его размера) 128 бит 192 бита 256 бит K 3 K 2 K 4 K 2 K 3 K 5 K 1 K 4 K 6 K 0 K 5 K 7 K 1 K 5 K 0 K 4 K 3 K 7 K 2 K 6 Ki mod n

256 -БИТНЫЙ ВАРИАНТ АЛГОРИТМА NUSH 256 -битный вариант алгоритма, по сути, имеет те же 256 -БИТНЫЙ ВАРИАНТ АЛГОРИТМА NUSH 256 -битный вариант алгоритма, по сути, имеет те же отличия от 64 -битного варианта: 1. Количество раундов алгоритма увеличено до 33. 2. Субблоки имеют размер по 64 бита, а операции сложения и вычитания выполняются по модулю 264. 3. Используются другие константы c и s согласно следующей таблице: таблица 7

Продолжение таблицы 7 Продолжение таблицы 7

4. 5. Что касается логических операций #, то они выполняются в той же последовательности, 4. 5. Что касается логических операций #, то они выполняются в той же последовательности, что и для 128 -битного алгоритма. В раундах, которые отсутствуют в 128 -битном варианте, используются операции согласно следующему правилу: #i = #i mod 64, где i – сквозной номер итерации. Фрагменты исходного ключа используются в преобразованиях алгоритма согласно таблице 8 (в данном случае ключ делится на 64 -битные слова): таблица 8 Применение KS 0 KS 1 KS 2 KS 3 KF 0 KF 1 KF 2 KF 3 KRi Используемый фрагмент ключа (в зависимости от его размера) 128 бит K 1 K 0 K 0 K 1 192 бита K 2 K 1 K 0 K 2 K 1 K 2 K 0 Ki mod n 256 бит K 3 K 2 K 1 K 0 K 2 K 3 K 0 K 1

БЫСТРОДЕЙСТВИЕ В алгоритме отсутствуют операции с битовою сложностью выше, чем O(k), где k - БЫСТРОДЕЙСТВИЕ В алгоритме отсутствуют операции с битовою сложностью выше, чем O(k), где k - битовая длина модуля или операндов (например, у произведения по модулю, нахождения обратного (по умножению) элемента или наибольшего общего делителя битовая сложность O(k 2), а у возведения в степень - O(k 3)). Поэтому естественно ожидать высокой скорости работы алгоритма. Авторами приводятся следующие данные: таблица 9 Размер блока, бит Программа на С Программа на Ассемблере Тактов на блок Тактов на байт 64 180 23 130 17 128 340 22 250 16

БЕЗОПАСНОСТЬ Главной причиной отсеивания алгоритма NUSH в конкурсе NESSIE стала найденная Ву Венлингом и БЕЗОПАСНОСТЬ Главной причиной отсеивания алгоритма NUSH в конкурсе NESSIE стала найденная Ву Венлингом и Фенгом Денго уязвимость алгоритма к линейному криптоанализу. В своей статье "Линейный криптоанализ блочного шифра NUSH" они используют понятие сложности атаки , где ε характеризует потребности в памяти, а η - в объёме вычислений. Для N=64 и N=128 бит предложено 3 вида атак, а для N=256 - два. Сложности соответствующих атак: таблица 10 Длина блока, бит Длина ключа, бит δ 128 192 256 128 128 192 256 64 192 256 § Для некоторых случаев версия с 192 -битным ключом существенно надежнее, чем с более длинным ключом. § Есть случаи, когда сложности атак шифра с самой маленькой длиной ключа и самой большой практически совпадают. § Увеличение длины ключа сказывается не так сильно на сложности атаки, как хотелось бы. Таким образом, существуют атаки на шифр NUSH эффективнее полного перебора.

КРИПТОАНАЛИЗ АЛГОРИТМА В качестве примера рассмотрим вторую атаку на шифр с длиной блока N=64 КРИПТОАНАЛИЗ АЛГОРИТМА В качестве примера рассмотрим вторую атаку на шифр с длиной блока N=64 бита. Криптоанализ основан на построении зависимостей между битами ключа, исходного и зашифрованного текста, справедливых с вероятностью, отличающейся от 1/2. Эти соотношения строятся на основе уравнения, справедливого с вероятностью 3/4 , Это уравнение можно проверить, используя описание алгоритма, и учтя, что для последнего (младшего) разряда операции "+" и совпадают. Действительно, имеем соотношение : Добавив к обеим частя равенства соотношение ai[0] = bi − 1[0] получим требуемое. Далее учитывая конкретные значения Si можно показать, что зависит не от всех бит ключа и открытого текста, а именно: Рассмотрев 4 первых раунда дешифрования, можно установить, что . Используя Piling-up лемму, с вероятностью 0. 5 + 2 − 30 получаем связь между m 0 битами ключа и открытым и зашифрованным текстами.

Из расписания ключей можно получить, что если длина ключа составляет 128 или 256 бит, Из расписания ключей можно получить, что если длина ключа составляет 128 или 256 бит, то m 0 = 78, если же ключ состоит из 192 бит, то m 0 = 96. Из этих данных оцениваем временную сложность атаки, задаваемой следующим алгоритмом: для каждого "ключа" считаем количество открытых текстов, удовлетворяющих найденному соотношению; находим максимальное из них; находим оставшиеся биты ключа: или похожим образом, находя соотношения, или путем перебора. Сложность по объёму хранимой информации оценивается как 260. Именно стольким количеством пар открытый-шифрованный текст должен обладать криптоаналитик. При этом тексты отнюдь не произвольные. Из приведенных соотношений видно, что зависят не от всех битов входного и выходного блоков. Соответственно, среди выборки блоков открытого и зашифрованых текстов должны быть блоки с отличающимися соответствующими битами. Работа алгоритма с меньшим числом известных текстов возможна, но тогда с меньшей вероятностью найденное "максимальное" число на втором этапе будет действительно соответствовать настоящему ключу в виду непревышения корня из дисперсии числа событий "уравнение выполняется" над математическим ожиданием разницы чисел этого события и ему противоположного (можно рассмотреть схему Бернулли, где вероятность "успеха" равна вероятности выполнения соотношения). Другие атаки отличаются анализом на последней стадии соотношений для других раундов и самостоятельного интереса не представляют.