MAGENTA

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

MAGENTA — блочний шифр, розроблений Майклом Якобсоном і Клаусом Хубером для німецької телекомунікаційної компанії 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 має структуру мережі Фейстеля. Раундова функція заснована на швидкому Адамаровому перетворенні[en][4], за винятком того, що замість додавання і віднімання на кожному етапі до одного з доданків застосовується S-блок, що задається функцією f(x), і потім вони складаються по модулю 2.

Нехай множина . Розмір блоку вихідного тексту — 128 біт. Розмір ключа може приймати 3 значення:

  • 128 біт : ,
  • 192 біт : ,
  • 256 біт : , де .

Нехай F — раундова функція. Шифр блоку M вираховується таким чином:

  • 128 біт — ключ К розбивається на 2 частини — К1 та К2. Кількість раундів 6. Ключі застосовуються в такому порядку:
Раунд 1 2 3 4 5 6
Застосований
ключ
К1 К1 К2 К2 К1 К1
  • 192 біт — ключ К розбивається на 3 частини — К1, К2 та К3. Кількість раундів 6. Ключі застосовуютьсяу в таком порядку:
Раунд 1 2 3 4 5 6
Застосований
ключ
К1 К2 К3 К3 К2 К1
  • 256 біт — ключ К розбивається на 4 частини — К1, К2, К3 та К4. Кількість раундів 8. Ключі застосовуються в такому порядку:
Раунд 1 2 3 4 5 6 7 8
Застосованийй
ключ
К1 К2 К3 К4 К4 К3 К2 К1

Дешифрування[ред. | ред. код]

Слід зауважити, що послідовність застосованих частин ключа, є паліндромом. Нехай . Тоді

[5][6]

Таким чином, дешифрування

Раундова функція F[ред. | ред. код]

Вхідний блок X розміром 128 біт раунду n з раундовим ключем K n розбивається на 2 частини X1 та X2 розміром 64 біта кожна.

X = X1X2

Після проходження раунду отримуємо X' = X2F(X2Kn)

З залежності ділення вихідного ключа від кількості раундів: довжина частини ключа, що використовується в кожному раунді завжди дорівнює 64 бітам.

Отже, функція F приймає 128-бітовий аргумент і повинна повертати 64-бітний (8-байтовий) результат.

Введемо допоміжні функції, через які потім виразимо F:

Функція Розмір прийнятих аргументів Розмір поверненого значения Опис
f(x) 1 байт 1 байт Повертає елемент з номером x в S-блоці
A(x, y) 1 байт 1 байт f(x f(y))
PE(x, y) 1 байт 2 байта (A(x, y)A(y, x)) — конкатенує результати A(x, y) та A(y, x)
П(X) 16 байт 16 байт X=X0X1...X14X15

(PE(X0,X8)PE(X1,X9)...PE(X6,X14)PE(X7,X15)) - конкатенує результати PE(Xi,Xi+8) i=0...7, Xi має розмір 1 байт.

T(X) 16 байт 16 байт П(П(П(П(X)))) — застосовує до X 4 рази функцію П.
S(X) 16 байт 16 байт (X0X2X4…X14X1X3X5…X15) — виконує перестановку байтів X: спочатку записуються байти з парним порядковим номером потім з непарним.
С(k, X) k∈Ν
X — 16 байт
16 байт Рекурсивна функція:
С(1,X) = T(X))
С(k, X) = T(X S(C(k-1,X)))

Схема роботи функції П(X) :

Схема роботи П-функції шифру MAGENTA

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 з числом 10110=0110 01012:

0000 00002 0110 01012 = 0110 01012 = 10110,тобто після 128 стоятиме 101.

10110=0110 01012 << 1 = 1100 10102=20210, 1 не вийшла за межу, відповідно наступний елемент 202.
20210 << 1= 1100 10102 << 1 = 1001 01002, 1 вийла за межу:

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) відомі:

  1. F(x) — взаємно-однозначна функція, тобто перестановка над множиною B = {0,1} 8  — всіх восьмибітних двійкових векторів.
  2. Дана перестановка може бути представлена ​​як результат дії 6 незв'язаних циклів довжини 198 38 9 5 5 і 1. Згідно комбінаторному аналізу, ці значення — «нормальні» і не мають значних розбіжностей з подібними циклами для випадкових перестановок. Єдине число, що залишається на місці — 161.
  3. ∀x ∈ B в такого, що f(x) ∈ {1,2,…127} виконано: 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)
  4. Якщо розглядати f(x) як вектор-функцію, тобто f(x) = (f7(x), f6(x),…f0(x)), то кожна з 8 булевих функцій нелінійна та має степінь 7. Також всілякі нетривіальні XOR-комбінації цих функцій нелінійні.[7] Ще одна цікава властивість полягає в тому, що кожна така функція має 128 доданків.

Криптоаналіз[ред. | ред. код]

Диференціальний криптоаналіз[ред. | ред. код]

Виявляється, принаймні частина MAGENTA може бути розкрита методами даного криптоаналізу. В якості різниці між двома елементами (відкритими текстами або шифрами) береться складання по модулю 2 між цими елементами. Таке визначення різниці обумовлено частим використанням операції XOR в даному шифрі.

Рядкові індекси XOR-таблиці є всіма можливими різницями між відкритими текстами, а стовпцеві індекси — між шифротекстами. На перетині конкретної відмінності відкритих текстів, тобто рядкового індексу, і конкретної відмінності шифрів, тобто стовпчикового індексу, стоїть число пар відкритих текстів, які відповідають даним відмінностям, шифри яких розрізняються на стовпчиковий індекс. XOR-таблиця для функції f має розміри 256 * 256. Сума кожного рядка й стовпчика дорівнює 256. Перший елемент першого рядка (з індексом 0), що відповідає нульовій відмінності відкритих текстів і шифрів, дорівнює 256. Всі інші елементи першого рядка рівні 0. Аналогічно всі елементи 1 стовпчика, крім першого, рівного 256, рівні 0. Особливий інтерес для диференціального аналізу представляють великі значення — найбільше значення в цій таблиці дорівнює 8. Воно має місце при таких розбіжностях

Відмінності між
відкритими текстами
Відмінності між
шифрами
51 35, 66, 154, 155, 250
102 111, 114, 232, 233, 244
153 96, 97, 115, 229, 247
204 18, 19, 38, 207, 251

В інших осередках таблиці розташовані числа 0, 2, 4, 6. Максимальна ймовірність переходу для ненульових відмінностей — .
Для функції PE — також були визначені максимальні значення — вони дорівнюють 36 для різниці у відкритому тексті (234, 234) і нульової різниці шифрів. Максимальна ймовірність переходу— .
Максимальна ймовірність переходу для функції T — , для C(3,X) — . Так як число необхідних пар шифрів більше ніж величина, зворотна ймовірності переходу, даний тип диференціального аналізу, заснований на xor-таблицях, не застосовний до MAGENTA. Однак питання про інші типи залишається відкритим.

Лінійний криптоаналіз[ред. | ред. код]

Лінійна апроксимаційна таблиця для S-блоку була обчислена.[8]. Для функцій і для кожної xor-суми , як і для всіх лінійних функцій, було визначено, як багато цифр значень в таблиці узгоджується з відповідними цифрами розглянутих лінійних функцій. У підсумку вийшло 255 значень між 0 і 256. Нормування полягало в відніманні 128. Всі значення в таблиці лежали на відрізку [-24; 26]. Дані значення відповідають очікуваним для довільно обраних . Значення 26 виходить при наступних лінійних комбінаціях:

Застосована англ. Piling-up lemma|лема про набігання знаків до раундової функції F(, l=12)

Отримане значення є верхньою межею найкращого афінного перетворення для F. Приблизно пар відкритий текст — шифр потрібно, щоб використовувати афінне лінійне наближення з ймовірністю [8].З огляду на попередні результати, для атаки на F необхідно. Отже, завдяки нелінійності f (x), MAGENTA не вдасться зламати атаками, заснованими на лінійному криптоаналіз.

Примітки[ред. | ред. код]

  1. K. Huber. Neue Kryptographische Verfahren durch Kombination von Operationen in endlichen K? Örpern mit der schnellen Walshtransformation. Unpublished manuscript, 1990.
  2. K. Huber and S. Wolter. Telekom's MAGENTA algorithm for en- / decryption in the gigabit/sec range. In ICASSP 1996 Conference Proceedings, volume 6, pages 3233 — 3235, 1996..
  3. J.P Vaseur. Verschl? Uesselungsanordnung mit Mischverdrahtung. Deutsches Patentamt Auslegeschrift 1148397, Anmeldetag: 2.Juni 1959 Auslegeschrift: 9.Mai 1963 Anmelder: Compagnie Generale de Telegraphie sans Fil, Paris.
  4. S.Y. Kung. VLSI Array Processors. Prentice Hall, 1988.
  5. M. Luby and C. Rackoff. How to construct pseudorandom permutations from pseudorandom functions. SIAM J. Computing, 17(2):373-386, April 1988.
  6. J. Pieprzyk and B. Sadeghiyan. Design of Hashing Algorithms, volume 756 of Lecture Notes in Computer Science. Springer, 1993.
  7. SIT GmbH. Abschlussbericht — Untersuchung eines universellen Kryptoalgorithmus. Technical report, SIT GmbH, 1994.
  8. а б E. Biham. On Matsui's linear cryptanalysis. In Proc. EUROCRYPT '94, volume 658 of Lecture Notes in Computer Science, pages 81-91, 1995.

Посилання[ред. | ред. код]