MAGENTAMAGENTA — блочный шифр, разработанный Майклом Якобсоном и Клаусом Хубером для немецкой телекоммуникационной компании Deutsche Telekom AG. MAGENTA является сокращением от Multifunctional Algorithm for General-purpose Encryption and Network Telecommunication Applications (Многофункциональный алгоритм для шифрования в общих целях и телекоммуникационных приложениях). ИсторияРазработка MAGENTA началась в 1990 году с основными принципами, описанными в неопубликованной книге[1].Основная идея заключалась в применении простой техники, без магических таблиц и постоянных, которая могла быть выполнена как аппаратно, так и программно. Планы заключались в разработке чипа, который мог бы передавать данных со скоростью до 1 Гбит/c и использоваться для шифрования в ATM. К сожалению, аппаратная реализация не появилась на свет, как планировалось, из-за узкого применения, но, несмотря на это, исследования показали, что такой чип возможно разработать[2]. MAGENTA участвовал в конкурсе AES в 1998 году, но выбыл после первого раунда. Шифр стал доступен участникам конференции только в день презентации в отличие от других принимавших участие шифров. MAGENTA использовалась для шифрования данных внутри компании Deutsche Telekom. Следует отметить, что до MAGENTA быстрое преобразование Фурье в криптографических целях использовалось в 2 шифрах. Конкретное название первого не удалось найти[3], он изобретен Жан-Пьером Вассером и зарегистрирован 2 июня 1959 года. Вторым шифром является одна из реализаций алгоритма A3 — Comp-128. ШифрованиеMAGENTA имеет структуру сети Фейстеля. Раундовая функция основана на быстром Адамаровом преобразовании[англ.][4], за исключением того, что вместо сложения и вычитания на каждом этапе к одному из слагаемых применяется S-блок, задаваемый функцией f(x), и затем они складываются по модулю 2. Пусть множество .Размер блока исходного текста — 128 бит. Размер ключа может принимать 3 значения:
Пусть F — раундовая функция. Шифр блока M вычисляется таким образом:
ДешифрованиеСледует заметить, что последовательность используемых частей ключа является палиндромом. Пусть . Тогда Таким образом, дешифрование Раундовая функция FВходной блок X размером 128 бит раунда n c раундовым ключом Kn разбивается на 2 части X1 и X2 размером 64 бита каждая. X = X1X2 После прохождения раунда получаем X' = X2F(X2Kn) Из зависимости деления на части исходного ключа от количества раундов : длина части ключа, используемая в каждом раунде равна всегда 64 бита. Следовательно, функция F принимает 128 битовый аргумент и должна возвращать 64-битный или 8-байтовый результат. Введем вспомогательные функции, через которые затем выразим F:
Схема работы функции П(X) : F полагают равной первым 8 байтам от S(C(n, (X2Kn))), то есть байтам C(n, (X2Kn)) с четным порядковым номером. Изначально n положили равным 7, но тесты показали, что в этом случае шифр возможно взломать. Поэтому затем положили n = 3. Как показали тесты это наилучший выбор, не допускающий криптографических слабостей, сказывающихся на всем шифре. Таким образом, F полагают равной первым 8 байтам от S(C(3,(X2Kn))) S-блокS-блок образуется следующим образом: Первый элемент — 1, последующие образуются битовым сдвигом влево предыдущего, пока 1 не выйдет за левую границу байта. Соответственно начало блока — 1 2 4 8 16 32 64 128 25610=1 0000 00002, 1 вышла за границу байта. В этом случае нужно сложить по модулю 2 полученное сдвинутое число 0000 00002 c числом 10110=0110 01012: 0000 00002 ⊕ 0110 01012 = 0110 01012 = 10110, то есть после 128 будет стоять 101. 10110=0110 01012 << 1 = 1100 10102=20210, 1 не вышла за границу, следовательно следующий элемент 202. 1001 01002 ⊕ 0110 01012 = 1111 00012 = 24110. Последний 256 элемент полагается равным 0. В результате получается такой S-блок: 1 2 4 8 16 32 64 128 101 202 241 135 107 214 201 247 139 115 230 169 55 110 220 221 223 219 211 195 227 163 35 70 140 125 250 145 71 142 121 242 129 103 206 249 151 75 150 73 146 65 130 97 194 225 167 43 86 172 61 122 244 141 127 254 153 87 174 57 114 228 173 63 126 252 157 95 190 25 50 100 200 245 143 123 246 137 119 238 185 23 46 92 184 21 42 84 168 53 106 212 205 255 155 83 166 41 82 164 45 90 180 13 26 52 104 208 197 239 187 19 38 76 152 85 170 49 98 196 237 191 27 54 108 216 213 207 251 147 67 134 105 210 193 231 171 51 102 204 253 159 91 182 9 18 36 72 144 69 138 113 226 161 39 78 156 93 186 17 34 68 136 117 234 177 7 14 28 56 112 224 165 47 94 188 29 58 116 232 181 15 30 60 120 240 133 111 222 217 215 203 243 131 99 198 233 183 11 22 44 88 176 5 10 20 40 80 160 37 74 148 77 154 81 162 33 66 132 109 218 209 199 235 179 3 6 12 24 48 96 192 229 175 59 118 236 189 31 62 124 248 149 79 158 89 178 0 Углубляясь в теорию, можно подытожить: Пусть имеется поле Галуа GF(28) и задающий это поле многочлен — p(x)=x8+x6+x5+x2+1 и пусть α — примитивный элемент поля, p(α)=0. Тогда элемент f(x) в S-блоке с индексом x можно представить как Свойства используемых функцийf(x)В течение одного выполнения MAGENTA функция f(x) вычисляется 2304 раза для ключей в 128 и 192 бита и 3072 раза для ключа в 256 бит. Так как функция представляет нелинейную часть алгоритма, она имеет особую важность для анализа всего алгоритма. Следующие свойства f(x) известны:
f(x+1) = 2∙f(x), где ∙ — произведение десятичных чисел. ∀(x, y)∈B2 и таких, что f(x)∙f(y)∈{1,2,…255} выполнено: f((x+y) mod 255) = f(x)∙f(y)
PE(x, y)КриптоанализОказывается, по крайней мере часть MAGENTA может быть вскрыта методами данного криптоанализа. В качестве разницы между двумя элементами(открытыми текстами или шифрами) берется сложение по модулю 2 между этими элементами. Такое определение разницы обусловлено частым использованием операции xor в данном шифре. Строковые индексы XOR-таблицы представляют собой всевозможные разницы между открытыми текстами, а столбцовые индексы — между шифротекстами. На пересечении конкретного различия открытых текстов, то есть строкового индекса, и конкретного различия шифров, то есть столбцового индекса, стоит число пар открытых текстов, удовлетворяющих данному различию, шифры которых различаются на столбцовый индекс. XOR-таблица для функции f имеет размеры 256*256. Сумма каждой строки и столбца равна 256. Первый элемент первой строки(с индексом 0), отвечающей нулевому различию открытых текстов и шифров, равен 256. Все остальные первой строки элементы равны 0. Аналогично все элементы 1 столбца, кроме первого, равного 256, равны 0. Особенный интерес для дифференциального анализа представляют большие значения — самое большое значение в этой таблицы равно 8. Оно имеет место при таких различиях
В остальных ячейках таблицы расположены числа 0, 2, 4, 6. Максимальная вероятность перехода для ненулевых различий — . Линейная аппроксимационная таблица для S-блока была вычислена.[8]. Для функций и для каждой xor-суммы , как и для всех линейных функций, было определено, как много цифр значений в таблице согласуется с соответствующими цифрами рассматриваемых линейных функций. В итоге получилось 255 значений между 0 и 256. Нормировка заключалась в вычитании 128. Все значения в таблице лежали на отрезке [-24;26]. Данные значения соответствуют ожидаемым для произвольно выбранных . Значение 26 получается при следующих линейных комбинациях:
Применяя лемму о набегании знаков[англ.] к раундовой функции F(, l=12) Полученное значение является верхней границей наилучшего аффинного преобразования для F. Приблизительно пар открытый текст — шифр нужно чтобы использовать аффинное линейное приближение с вероятностью [8]. Учитывая предыдущие результаты, для атаки на F необходимо . Следовательно, благодаря нелинейности f(x), MAGENTA не удастся взломать атаками, основанными на линейном криптоанализе. Примечания
Ссылки
|
Portal di Ensiklopedia Dunia