В криптографії, XTEA (eXtended TEA) — блочний шифроалгоритм, покликаний усунути критичні помилки алгоритму TEA. Розробниками шифру є Девід Вілер і Роджер Нідгем (факультет комп'ютерних наук Кембриджського університету). Алгоритм був представлений в невиданий технічному звіті в 1997 році. Шифр не запатентований, широко використовується в ряді криптографічних додатків і широкому спектрі апаратного забезпечення завдяки вкрай низькими вимогами до пам'яті і простоті реалізації.
Розробники | Девід Уілер і Роджер Нідгем |
---|---|
Уперше оприлюднений | 1997 р |
Деталі шифру | |
Розмір ключа | 128 біт |
Розмір блоку | 64 біт |
Раундів | 64 |
Тип | Мережа Фейстеля |
Властивості шифру
Як і TEA, шифр заснований на операціях з 64-бітним блоком, має 32 повних цикли, в кожному повному циклі за два раунди Мережі Фейстеля, що означає 64 раунди мережі Фейстеля. Однак, кількість раундів для досягнення кращої дифузії може бути збільшено на шкоду продуктивності. Крім того в XTEA, як і в TEA, використовується 128-бітний ключ, який складається з чотирьох 32-бітних слів K[0], K[1], K[2] і K[3]. У XTEA немає алгоритму планування ключів у звичному розумінні. Для того, щоб визначити який з чотирьох слів ключа використовувати в кожному раунді, в алгоритмі використовується константа δ = 9E3779B916. В TEA ж такого розподілу немає. Ще однією відмінністю від TEA є перестановка бітових операцій, які використовуються в шифрі. Завдяки цим удосконаленням XTEA не зазнав сильних ускладнень порівняно з TEA, але в той же час ліквідував два основних недоліки алгоритму TEA:
- кожен ключ в TEA еквівалентний трьом іншим, що означає, що ефективна довжина ключа складає 126 біт замість 128, як це було задумано розробниками;
- TEA сприйнятливий до атак на пов'язаних ключах. Така атака може вимагати лише 223 обраного відкритого тексту і мати тимчасову складність що дорівнює 232.
Опис алгоритму
В роботі XTEA застосовуються такі логічні операції: виключаюче «АБО», бітовий зсув і логічне «І». Крім того в XTEA використовується операція додавання цілих чисел по модулю 232, які позначають як x y (x і y Z232). Виключне «АБО» в булевій логіці позначається як x y, а в мові Сі як x ^ y. Логічне «І» в булевій логіці — x y в мові Сі — x & y. Логічний зсув x на y біт вліво позначається як x y, а логічний зсув x на y біт вправо позначається як x y. Нехай на вхід n-го (1 ≤ n ≤ 64) раунду алгоритму подається (Ln,Rn), а на виході виходить (Ln+1,Rn+1), причому Ln+1 = Rn. Rn+1 обчислюється наступним чином:
якщо n = 2 * i — 1 для 1 ≤ i ≤ 32, Rn+1 = Ln + ({ (Rn 4 Rn 5) Rn } ({ i — 1 } * δ K [ ({ i — 1 } * δ) 3 ]),
якщо n = 2 * i для 1 ≤ i ≤ 32, Rn+1 = Ln + ({ (Rn 4 Rn 5) Rn } (i * δ K [ (i * δ 11) 3 ]).
Так як це блочний шифроалгоритм, де довжина блоку 64-біт, а довжина даних може бути не кратна 64-біт, значення всіх байтів доповнюють блок до кратності в 64-біт встановлюється в 0x01.
Криптоаналіз алгоритму
Вважається що XTEA більше захищений, ніж ТЕА, проте можна підібрати такий тип атак для яких XTEA більш вразливий. Перший підхід — це диференціальні атаки. Так як TEA використовує додавання по модулю 232 ключа раунду і відкритого тексту, що подається на вхід, а XTEA використовує виключаюче «АБО», то простіше проводити диференціальну атаку на XTEA, ніж на TEA. Після 14 раундів XTEA можна побудувати з імовірністю 2-57.79диференціальну характеристику і використовувати її для злому XTEA включає в себе 16 раундів (дана атака вимагає 261 обраних відкритих текстів). У той же час для TEA важко побудувати хорошу диференціальну характеристику. Другий підхід усічена диференціальна атака. Після 8 раундів TEA і XTEA можна побудувати усічену диференціальну характеристику з ймовірністю 1. За допомогою цієї атаки можна зламати XTEA з максимальною кількістю раундів — 23 і TEA з максимальною кількістю раундів — 17. Таке розходження спостерігається через властивості планування ключів в кожному з алгоритмів.
Найбільш успішна з опублікованих атак на XTEA — це диференційна атака на пов'язаних ключах, яка здатна зламати 37 з 64 раундів алгоритму, використовуючи 263 обраних відкритих текстів з тимчасової складністю 2125. Якщо розглядати підмножина слабких ключів, в яке входять 2107.5 ключів з 2128, то ця пані атака здатна зламати 51 з 64 раундів алгоритму з тимчасової складністю 2123.
Приклад реалізації алгоритму
Реалізація на мові Сі (адаптований варіант коду, представленого в статті Девіда Уїлера та Роджера Нидхема) шифрування і розшифрування з використанням алгоритму XTEA:
#include <stdint.h> void xtea_encipher(unsigned int num_rounds, uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9; for (i=0; i < num_rounds; i++) { v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); sum += delta; v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); } v[0]=v0; v[1]=v1; } void xtea_decipher(unsigned int num_rounds, uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds; for (i=0; i < num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); sum -= delta; v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); } v[0]=v0; v[1]=v1; }
Коментарі:
- v — початковий текст складається з двох слів по 32 біта
- k — ключ складається з чотирьох 32-бітних слів
- num_rounds — число циклів алгоритму (рекомендується 32)
- num_rounds має бути однаковим для шифрування і розшифрування, якщо num_rounds==0 то ні шифрування, ні розшифрування відбуватися не буде
Зміни у порівнянні з оригінальним кодом:
- використовується тип uint32_t внаслідок того, що він завжди має розмір 32 біта на відміну від long (присутній в оригінальному коді), який може містити 64 біта (наприклад в деяких 64-бітних системах)
- вихідний код не використовує тип const
- у вихідному коді опущені надлишкові дужки у виразах для v0 і v1, в даній модифікації вони залишені для більшої наочності
Версії алгоритму
Виявлені вразливості в ключовому розкладі і наявність успішних атак на алгоритми TEA, XTEA і XXTEA призвели до створення поряд криптоаналітиків альтернативних варіантів шифру. Зокрема, на даний момент існують засновані на шифрах колекції TEA алгоритми RTEA (Шон о ' Ніл), Raiden (Хуліо Кастро), XTEA-1, XTEA-2 і XTEA-3 (Ст. Денис). Втім, дані модифікації не були настільки широко досліджені і не одержали достатнього практичного застосування.
Алгоритм XTEA-1
Одна з вразливостей XTEA полягає в тому, що біти в ключі впливають на одні й ті ж біти в кожному раунді алгоритму. Ця проблема може бути вирішена шляхом використання шифру, що включає в себе алгоритм розкладу ключів. Планування ключів проводиться динамічно і не потребує виділення пам'яті. Розклад ключів здійснюється шляхом циклічного бітового зсуву ключа на значення, залежне від відкритого тексту. Алгоритм XTEA-1 реалізує цю ідею щодо посилення шифру XTEA шляхом незначної зміни структури шифру без зміни основних принципів алгоритму.
Шифр використовує технологію забеливания і залежну від даних трансформацію підключа, що ускладнює криптоаналіз, оскільки вихідний алгоритм містив вразливість — модифікація певних біт ключа відбивалася на відповідних бітах шіфротекста.
Реалізація XTEA-1 на мові Сі:
#include <stdint.h> uint32_t rol(uint32_t base, uint32_t shift) { uint32_t res; /* only 5 bits of shift are significant*/ shift &= 0x1F; res = (base << shift) | (base >> (32 - shift)); return res; } void xtea1_encipher(unsigned int num_rounds,uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t y, z, sum=0, delta=0x9E3779B9; /* load and pre-white the registers */ y = v[0] + k[0]; z = v[1] + k[1]; /* Round functions */ for (i = 0; i < num_rounds; i++) { y += ((z << 4) ^ (z >> 5)) + (z ^ sum) + rol(k[sum & 3], z); sum += delta; z += ((y << 4) ^ (y >> 5)) + (y ^ sum) + rol(k[(sum >> 11) & 3], y); } /* post-white and store registers */ v[0] = y ^ k[2]; v[1] = z ^ k[3]; } void xtea1_decipher(unsigned int num_rounds,uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t y, z,delta=0x9E3779B9,sum=delta*num_rounds; z = v[1] ^ k[3]; y = v[0] ^ k[2]; for (i = 0; i < num_rounds; i++) { z -= ((y << 4) ^ (y >> 5)) + (y ^ sum) + rol(k[(sum >> 11) & 3], y); sum -= delta; y -= ((z << 4) ^ (z >> 5)) + (z ^ sum) + rol(k[sum & 3], z); } v[1] = z - k[1]; v[0] = y - k[0]; }
Функція 'rol' виконує циклічний бітовий зсув ключа, використовуючи 5 молодших бітів змінної shift. Цей алгоритм використовує лише один зсув за раунд, що досить ефективно і швидко працює на більшості сучасних процесорах.
Алгоритм XTEA-2
Можна змінити XTEA-1 використовуючи 128 бітний блок. Отриманий алгоритм вимагає більше раундів, але швидкість шифрування у нього вище, ніж у XTEA.
Реалізація XTEA-2 на Сі:
#include <stdint.h> void xtea2_encipher(unsigned int num_rounds,uint32_t *v, uint32_t const *k){ unsigned int i; uint32_t a, b, c, d, sum=0, t,delta=0x9E3779B9; a = v[0]; b = v[1] + k[0]; c = v[2]; d = v[3] + k[1]; for (i = 0; i < num_rounds; i++) { a += ((b << 4) ^ (b >> 5)) + (d ^ sum) + rol(k[sum & 3], b); sum += delta; c += ((d << 4) ^ (d >> 5)) + (b ^ sum) + rol(k[(sum >> 11) & 3], d); t = a; a = b; b = c; c = d; d = t; } v[0] = a ^ k[2]; v[1] = b; v[2] = c ^ k[3]; v[3] = d; } void xtea2_decipher(unsigned int num_rounds,uint32_t *v, uint32_t const *k){ unsigned int i; uint32_t a, b, c, d, t, delta=0x9E3779B9, sum=delta*num_rounds; d = v[3]; c = v[2] ^ k[3]; b = v[1]; a = v[0] ^ k[2]; for (i = 0; i < num_rounds; i++) { t = d; d = c; c = b; b = a; a = t; c -= ((d << 4) ^ (d >> 5)) + (b ^ sum) + rol(k[(sum >> 11) & 3], d); sum -= delta; a -= ((b << 4) ^ (b >> 5)) + (d ^ sum) + rol(k[sum & 3], b); } v[0] = a; v[1] = b - k[0]; v[2] = c; v[3] = d - k[1]; }
Основна перевага цього алгоритму — це можливість шифрувати великі блоки. Цей алгоритм використовує ті ж базові операції що і XTEA-1, але вимагає більше ітерацій. Насправді він вимагає в два рази більше ітерацій від 32 до 64 (від 64 до 128 раундів). 48 ітерацій — це компроміс між швидкістю і надійністю шифрування.
Алгоритм XTEA-3
Ще одне природне розширення XTEA-1 — це використання 256 бітного ключа і більш практичного 128 бітного блоку. Цей алгоритм вимагає від 32 до 64 ітерацій, але в той же час забезпечує надійний захист від атак шляхом повного перебору. Шифр використовує технологію забеливания і реалізує операції, залежні від ключа, що ускладнює криптоаналіз.
Реалізація XTEA-3 на Сі:
#include <stdint.h> void xtea3_encipher(unsigned int num_rounds,uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t a, b, c, d, sum=0, t,delta=0x9E3779B9; sum = 0; a = v[0] + k[0]; b = v[1] + k[1]; c = v[2] + k[2]; d = v[3] + k[3]; for (i = 0; i < num_rounds; i++){ a += (((b << 4) + rol (k[(sum % 4) + 4], b)) ^ (d + sum) ^ ((b >> 5) + rol (k[sum % 4], b >> 27))); sum += delta; c += (((d << 4) + rol (k[((sum >> 11) % 4) + 4], d)) ^ (b + sum) ^ ((d >> 5) + rol (k[(sum >> 11) % 4], d >> 27))); t = a;a = b;b = c;c = d;d = t; } v[0] = a ^ k[4]; v[1] = b ^ k[5]; v[2] = c ^ k[6]; v[3] = d ^ k[7]; } void xtea3_decipher(unsigned int num_rounds,uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t a, b, c, d, t,delta=0x9E3779B9,sum = delta * num_rounds; d = v[3] ^ k[7]; c = v[2] ^ k[6]; b = v[1] ^ k[5]; a = v[0] ^ k[4]; for (i = 0; i < num_rounds; i++){ t = d;d = c;c = b;b = a;a = t; c -= (((d << 4) + rol (k[((sum >> 11) % 4) + 4], d)) ^ (b + sum) ^ ((d >> 5) + rol (k[(sum >> 11) % 4], d >> 27))); sum -= delta; a -= (((b << 4) + rol (k[(sum % 4) + 4], b)) ^ (d + sum) ^ ((b >> 5) + rol (k[sum % 4], b >> 27))); } v[3] = d - k[3]; v[2] = c - k[2]; v[1] = b - k[1]; v[0] = a - k[0]; }
XTEA-3 використовує 5 старших і молодших 5 біт регістра відкритого тексту для циклічного зсуву ключа, тому що статистичні дані говорять про те, що ці біти найбільш схильні до зміни. Цей алгоритм вимагає як мінімум 32 ітерації, однак, 48 ітерацій — це компромісне співвідношення між швидкістю і надійністю шифрування даних.
Порівняння різних версій розширення XTEA
Ці три алгоритму є природними розширеннями TEA і XTEA. Їх відмінними рисами порівняно з оригінальними алгоритмами шифрування є кращий розклад ключів і більший розмір блоків і/або ключів. Використання ключів, динамічно залежних від відкритого тексту, означає, що не існує заздалегідь встановленого порядку для використання ключів і не потрібно виділення пам'яті. Це досить корисна властивість, так як завдання виявлення ключів, що використовуються найбільш часто, ускладнюється. Шифри володіють більшою захищеністю до диференціального криптоаналізу, так як біти в ключі можуть впливати на будь-які інші біти шифротексту. Використання нелінійної алгебри (додавання по модулю 232, виключаюче «АБО») ефективно проти лінійного криптоананлиза. Крім того використання цих операцій не вносить вразливостей в алгоритми.
Перший алгоритм (XTEA-1) має найбільшу швидкість і при достатній кількості раундів (від 32 до 64) володіє хорошою надійністю. XTEA-2 являє собою розширення з великим розміром блоку, і він не більш захищений ніж XTEA-1. XTEA-3 — це розширення алгоритм з використанням більшого розміру блоку і ключа. Третій варіант працює трохи повільніше, але більш захищений. Так як ці алгоритми побудовані на базі оригінального TEA з усуненням всіх відомих недоліків, то їх можна вважати достатньо надійними.
Порівняльна таблиця алгоритмів:
Назва алгоритму | Мінімальна кількість раундів | Максимальна кількість раундів | Розмір блоку | Розмір ключа |
---|---|---|---|---|
XTEA-1 | 32 | 64 | 64 біта | 128 біт |
XTEA-2 | 64 | 128 | 128 біт | 128 біт |
XTEA-3 | 64 | 128 | 128 біт | 256 біт |
Однак дані алгоритми все одно потребують подальшої доробки. Перша проблема полягає в тому, тільки молодші біти відкритого тексту використовуються для циклічного бітового зсуву ключа (як у XTEA-1 і XTEA-2). Друга проблема полягає в тому, що ключ розділений на дві підгрупи по 4 елемента, і кожна частина виразу використовує тільки одну підгрупу (як у XTEA-3). XTEA-3 може бути розширено шляхом використання всіх восьми елементів в обох частинах висловлювання. Якщо ці вдосконалення будуть проведені, то алгоритм стане більш практичним, але тоді він буде дуже сильно відрізнятися від оригінального TEA.
Примітки
- А. Roger M. Needham and David J. Wheeler. Tea extensions [ 20 вересня 2017 у Wayback Machine.]
- John Kelsey, Bruce Schneier, David Wagner. Related-Key Cryptanalysis of 3-WAY, Biham-DES, CAST, DES-X, NewDES, RC2, TEA[недоступне посилання з листопадаа 2019]
- Seokhie Hong, Deukjo Hong, Youngdai Ko, Donghoon Chang, Wonil Lee, Sangjin Lee. Differential Cryptanalysis of TEA and XTEA[недоступне посилання з листопадаа 2019]
- Charles Bouillaguet, Orr Dunkelman, Gaetan Leurent, and Pierre-Alain Fouque. Another Look at Complementation Properties [ 6 липня 2017 у Wayback Machine.]
- Tom St Denis. Extended TEA Algorithms [ 27 серпня 2018 у Wayback Machine.]
Дивись також
Посилання
- David J. Wheeler Roger and M. Needham. «Correction to xtea.» Technical report, Computer Laboratory, University of Cambridge, October 1998 (PDF) [ 20 вересня 2017 у Wayback Machine.].
- Dukjae Moon, Kyungdeok Hwang, Wonil Lee, Sangjin Lee and Jongin Lim. «Impossible Differential Криптоаналіз of Reduced Round XTEA and TEA.» Center for Information and Security Technologies(CIST), 2004 (PDF)[недоступне посилання з листопадаа 2019].
- Реалізації
- The Tiny Encryption Algorithm (TEA) [ 12 червня 2017 у Wayback Machine.], Simon Shepherd, 24 February 2006 — Вебсторінка з описом і посиланнями на різні реалізації XTEA
- Реалізація XTEA на PHP [ 13 листопада 2015 у Wayback Machine.]
- Реалізація XTEA на Java (32 проходу) [ 9 квітня 2016 у Wayback Machine.]
- Python XTEA Encryption (Python recipe) [ 18 серпня 2016 у Wayback Machine.] — Реалізація XTEA на Python
- Реалізація XTEA на Verilog [ 2 серпня 2017 у Wayback Machine.] (для FPGA)
- Звернення до реалізації алгоритмів XTEA-1, XTEA-2, XTEA-3 на C з Python [ 11 червня 2018 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V kriptografiyi XTEA eXtended TEA blochnij shifroalgoritm poklikanij usunuti kritichni pomilki algoritmu TEA Rozrobnikami shifru ye Devid Viler i Rodzher Nidgem fakultet komp yuternih nauk Kembridzhskogo universitetu Algoritm buv predstavlenij v nevidanij tehnichnomu zviti v 1997 roci Shifr ne zapatentovanij shiroko vikoristovuyetsya v ryadi kriptografichnih dodatkiv i shirokomu spektri aparatnogo zabezpechennya zavdyaki vkraj nizkimi vimogami do pam yati i prostoti realizaciyi XTEARozrobnikiDevid Uiler i Rodzher NidgemUpershe oprilyudnenij1997 rDetali shifruRozmir klyucha128 bitRozmir bloku64 bitRaundiv64TipMerezha FejstelyaVlastivosti shifruYak i TEA shifr zasnovanij na operaciyah z 64 bitnim blokom maye 32 povnih cikli v kozhnomu povnomu cikli za dva raundi Merezhi Fejstelya sho oznachaye 64 raundi merezhi Fejstelya Odnak kilkist raundiv dlya dosyagnennya krashoyi difuziyi mozhe buti zbilsheno na shkodu produktivnosti Krim togo v XTEA yak i v TEA vikoristovuyetsya 128 bitnij klyuch yakij skladayetsya z chotiroh 32 bitnih sliv K 0 K 1 K 2 i K 3 U XTEA nemaye algoritmu planuvannya klyuchiv u zvichnomu rozuminni Dlya togo shob viznachiti yakij z chotiroh sliv klyucha vikoristovuvati v kozhnomu raundi v algoritmi vikoristovuyetsya konstanta d 9E3779B916 V TEA zh takogo rozpodilu nemaye She odniyeyu vidminnistyu vid TEA ye perestanovka bitovih operacij yaki vikoristovuyutsya v shifri Zavdyaki cim udoskonalennyam XTEA ne zaznav silnih uskladnen porivnyano z TEA ale v toj zhe chas likviduvav dva osnovnih nedoliki algoritmu TEA kozhen klyuch v TEA ekvivalentnij trom inshim sho oznachaye sho efektivna dovzhina klyucha skladaye 126 bit zamist 128 yak ce bulo zadumano rozrobnikami TEA sprijnyatlivij do atak na pov yazanih klyuchah Taka ataka mozhe vimagati lishe 223 obranogo vidkritogo tekstu i mati timchasovu skladnist sho dorivnyuye 232 Opis algoritmuV roboti XTEA zastosovuyutsya taki logichni operaciyi viklyuchayuche ABO bitovij zsuv i logichne I Krim togo v XTEA vikoristovuyetsya operaciya dodavannya cilih chisel po modulyu 232 yaki poznachayut yak x displaystyle boxplus y x i y displaystyle in Z232 Viklyuchne ABO v bulevij logici poznachayetsya yak x displaystyle oplus y a v movi Si yak x y Logichne I v bulevij logici x displaystyle land y v movi Si x amp y Logichnij zsuv x na y bit vlivo poznachayetsya yak x displaystyle ll y a logichnij zsuv x na y bit vpravo poznachayetsya yak x displaystyle gg y Nehaj na vhid n go 1 n 64 raundu algoritmu podayetsya Ln Rn a na vihodi vihodit Ln 1 Rn 1 prichomu Ln 1 Rn Rn 1 obchislyuyetsya nastupnim chinom yaksho n 2 i 1 dlya 1 i 32 Rn 1 Ln Rn displaystyle ll 4 displaystyle oplus Rn displaystyle gg 5 displaystyle boxplus Rn displaystyle oplus i 1 d displaystyle boxplus K i 1 d displaystyle land 3 yaksho n 2 i dlya 1 i 32 Rn 1 Ln Rn displaystyle ll 4 displaystyle oplus Rn displaystyle gg 5 displaystyle boxplus Rn displaystyle oplus i d displaystyle boxplus K i d displaystyle gg 11 displaystyle land 3 Tak yak ce blochnij shifroalgoritm de dovzhina bloku 64 bit a dovzhina danih mozhe buti ne kratna 64 bit znachennya vsih bajtiv dopovnyuyut blok do kratnosti v 64 bit vstanovlyuyetsya v 0x01 Kriptoanaliz algoritmuVvazhayetsya sho XTEA bilshe zahishenij nizh TEA prote mozhna pidibrati takij tip atak dlya yakih XTEA bilsh vrazlivij Pershij pidhid ce diferencialni ataki Tak yak TEA vikoristovuye dodavannya po modulyu 232 klyucha raundu i vidkritogo tekstu sho podayetsya na vhid a XTEA vikoristovuye viklyuchayuche ABO to prostishe provoditi diferencialnu ataku na XTEA nizh na TEA Pislya 14 raundiv XTEA mozhna pobuduvati z imovirnistyu 2 57 79diferencialnu harakteristiku i vikoristovuvati yiyi dlya zlomu XTEA vklyuchaye v sebe 16 raundiv dana ataka vimagaye 261 obranih vidkritih tekstiv U toj zhe chas dlya TEA vazhko pobuduvati horoshu diferencialnu harakteristiku Drugij pidhid usichena diferencialna ataka Pislya 8 raundiv TEA i XTEA mozhna pobuduvati usichenu diferencialnu harakteristiku z jmovirnistyu 1 Za dopomogoyu ciyeyi ataki mozhna zlamati XTEA z maksimalnoyu kilkistyu raundiv 23 i TEA z maksimalnoyu kilkistyu raundiv 17 Take rozhodzhennya sposterigayetsya cherez vlastivosti planuvannya klyuchiv v kozhnomu z algoritmiv Najbilsh uspishna z opublikovanih atak na XTEA ce diferencijna ataka na pov yazanih klyuchah yaka zdatna zlamati 37 z 64 raundiv algoritmu vikoristovuyuchi 263 obranih vidkritih tekstiv z timchasovoyi skladnistyu 2125 Yaksho rozglyadati pidmnozhina slabkih klyuchiv v yake vhodyat 2107 5 klyuchiv z 2128 to cya pani ataka zdatna zlamati 51 z 64 raundiv algoritmu z timchasovoyi skladnistyu 2123 Priklad realizaciyi algoritmuRealizaciya na movi Si adaptovanij variant kodu predstavlenogo v statti Devida Uyilera ta Rodzhera Nidhema shifruvannya i rozshifruvannya z vikoristannyam algoritmu XTEA include lt stdint h gt void xtea encipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t v0 v 0 v1 v 1 sum 0 delta 0x9E3779B9 for i 0 i lt num rounds i v0 v1 lt lt 4 v1 gt gt 5 v1 sum k sum amp 3 sum delta v1 v0 lt lt 4 v0 gt gt 5 v0 sum k sum gt gt 11 amp 3 v 0 v0 v 1 v1 void xtea decipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t v0 v 0 v1 v 1 delta 0x9E3779B9 sum delta num rounds for i 0 i lt num rounds i v1 v0 lt lt 4 v0 gt gt 5 v0 sum k sum gt gt 11 amp 3 sum delta v0 v1 lt lt 4 v1 gt gt 5 v1 sum k sum amp 3 v 0 v0 v 1 v1 Komentari v pochatkovij tekst skladayetsya z dvoh sliv po 32 bita k klyuch skladayetsya z chotiroh 32 bitnih sliv num rounds chislo cikliv algoritmu rekomenduyetsya 32 num rounds maye buti odnakovim dlya shifruvannya i rozshifruvannya yaksho num rounds 0 to ni shifruvannya ni rozshifruvannya vidbuvatisya ne bude Zmini u porivnyanni z originalnim kodom vikoristovuyetsya tip uint32 t vnaslidok togo sho vin zavzhdi maye rozmir 32 bita na vidminu vid long prisutnij v originalnomu kodi yakij mozhe mistiti 64 bita napriklad v deyakih 64 bitnih sistemah vihidnij kod ne vikoristovuye tip const u vihidnomu kodi opusheni nadlishkovi duzhki u virazah dlya v0 i v1 v danij modifikaciyi voni zalisheni dlya bilshoyi naochnostiVersiyi algoritmuViyavleni vrazlivosti v klyuchovomu rozkladi i nayavnist uspishnih atak na algoritmi TEA XTEA i XXTEA prizveli do stvorennya poryad kriptoanalitikiv alternativnih variantiv shifru Zokrema na danij moment isnuyut zasnovani na shifrah kolekciyi TEA algoritmi RTEA Shon o Nil Raiden Hulio Kastro XTEA 1 XTEA 2 i XTEA 3 St Denis Vtim dani modifikaciyi ne buli nastilki shiroko doslidzheni i ne oderzhali dostatnogo praktichnogo zastosuvannya Algoritm XTEA 1 Odna z vrazlivostej XTEA polyagaye v tomu sho biti v klyuchi vplivayut na odni j ti zh biti v kozhnomu raundi algoritmu Cya problema mozhe buti virishena shlyahom vikoristannya shifru sho vklyuchaye v sebe algoritm rozkladu klyuchiv Planuvannya klyuchiv provoditsya dinamichno i ne potrebuye vidilennya pam yati Rozklad klyuchiv zdijsnyuyetsya shlyahom ciklichnogo bitovogo zsuvu klyucha na znachennya zalezhne vid vidkritogo tekstu Algoritm XTEA 1 realizuye cyu ideyu shodo posilennya shifru XTEA shlyahom neznachnoyi zmini strukturi shifru bez zmini osnovnih principiv algoritmu Shifr vikoristovuye tehnologiyu zabelivaniya i zalezhnu vid danih transformaciyu pidklyucha sho uskladnyuye kriptoanaliz oskilki vihidnij algoritm mistiv vrazlivist modifikaciya pevnih bit klyucha vidbivalasya na vidpovidnih bitah shifroteksta Realizaciya XTEA 1 na movi Si include lt stdint h gt uint32 t rol uint32 t base uint32 t shift uint32 t res only 5 bits of shift are significant shift amp 0x1F res base lt lt shift base gt gt 32 shift return res void xtea1 encipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t y z sum 0 delta 0x9E3779B9 load and pre white the registers y v 0 k 0 z v 1 k 1 Round functions for i 0 i lt num rounds i y z lt lt 4 z gt gt 5 z sum rol k sum amp 3 z sum delta z y lt lt 4 y gt gt 5 y sum rol k sum gt gt 11 amp 3 y post white and store registers v 0 y k 2 v 1 z k 3 void xtea1 decipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t y z delta 0x9E3779B9 sum delta num rounds z v 1 k 3 y v 0 k 2 for i 0 i lt num rounds i z y lt lt 4 y gt gt 5 y sum rol k sum gt gt 11 amp 3 y sum delta y z lt lt 4 z gt gt 5 z sum rol k sum amp 3 z v 1 z k 1 v 0 y k 0 Funkciya rol vikonuye ciklichnij bitovij zsuv klyucha vikoristovuyuchi 5 molodshih bitiv zminnoyi shift Cej algoritm vikoristovuye lishe odin zsuv za raund sho dosit efektivno i shvidko pracyuye na bilshosti suchasnih procesorah Algoritm XTEA 2 Mozhna zminiti XTEA 1 vikoristovuyuchi 128 bitnij blok Otrimanij algoritm vimagaye bilshe raundiv ale shvidkist shifruvannya u nogo vishe nizh u XTEA Realizaciya XTEA 2 na Si include lt stdint h gt void xtea2 encipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t a b c d sum 0 t delta 0x9E3779B9 a v 0 b v 1 k 0 c v 2 d v 3 k 1 for i 0 i lt num rounds i a b lt lt 4 b gt gt 5 d sum rol k sum amp 3 b sum delta c d lt lt 4 d gt gt 5 b sum rol k sum gt gt 11 amp 3 d t a a b b c c d d t v 0 a k 2 v 1 b v 2 c k 3 v 3 d void xtea2 decipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t a b c d t delta 0x9E3779B9 sum delta num rounds d v 3 c v 2 k 3 b v 1 a v 0 k 2 for i 0 i lt num rounds i t d d c c b b a a t c d lt lt 4 d gt gt 5 b sum rol k sum gt gt 11 amp 3 d sum delta a b lt lt 4 b gt gt 5 d sum rol k sum amp 3 b v 0 a v 1 b k 0 v 2 c v 3 d k 1 Osnovna perevaga cogo algoritmu ce mozhlivist shifruvati veliki bloki Cej algoritm vikoristovuye ti zh bazovi operaciyi sho i XTEA 1 ale vimagaye bilshe iteracij Naspravdi vin vimagaye v dva razi bilshe iteracij vid 32 do 64 vid 64 do 128 raundiv 48 iteracij ce kompromis mizh shvidkistyu i nadijnistyu shifruvannya Algoritm XTEA 3 She odne prirodne rozshirennya XTEA 1 ce vikoristannya 256 bitnogo klyucha i bilsh praktichnogo 128 bitnogo bloku Cej algoritm vimagaye vid 32 do 64 iteracij ale v toj zhe chas zabezpechuye nadijnij zahist vid atak shlyahom povnogo pereboru Shifr vikoristovuye tehnologiyu zabelivaniya i realizuye operaciyi zalezhni vid klyucha sho uskladnyuye kriptoanaliz Realizaciya XTEA 3 na Si include lt stdint h gt void xtea3 encipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t a b c d sum 0 t delta 0x9E3779B9 sum 0 a v 0 k 0 b v 1 k 1 c v 2 k 2 d v 3 k 3 for i 0 i lt num rounds i a b lt lt 4 rol k sum 4 4 b d sum b gt gt 5 rol k sum 4 b gt gt 27 sum delta c d lt lt 4 rol k sum gt gt 11 4 4 d b sum d gt gt 5 rol k sum gt gt 11 4 d gt gt 27 t a a b b c c d d t v 0 a k 4 v 1 b k 5 v 2 c k 6 v 3 d k 7 void xtea3 decipher unsigned int num rounds uint32 t v uint32 t const k unsigned int i uint32 t a b c d t delta 0x9E3779B9 sum delta num rounds d v 3 k 7 c v 2 k 6 b v 1 k 5 a v 0 k 4 for i 0 i lt num rounds i t d d c c b b a a t c d lt lt 4 rol k sum gt gt 11 4 4 d b sum d gt gt 5 rol k sum gt gt 11 4 d gt gt 27 sum delta a b lt lt 4 rol k sum 4 4 b d sum b gt gt 5 rol k sum 4 b gt gt 27 v 3 d k 3 v 2 c k 2 v 1 b k 1 v 0 a k 0 XTEA 3 vikoristovuye 5 starshih i molodshih 5 bit registra vidkritogo tekstu dlya ciklichnogo zsuvu klyucha tomu sho statistichni dani govoryat pro te sho ci biti najbilsh shilni do zmini Cej algoritm vimagaye yak minimum 32 iteraciyi odnak 48 iteracij ce kompromisne spivvidnoshennya mizh shvidkistyu i nadijnistyu shifruvannya danih Porivnyannya riznih versij rozshirennya XTEA Ci tri algoritmu ye prirodnimi rozshirennyami TEA i XTEA Yih vidminnimi risami porivnyano z originalnimi algoritmami shifruvannya ye krashij rozklad klyuchiv i bilshij rozmir blokiv i abo klyuchiv Vikoristannya klyuchiv dinamichno zalezhnih vid vidkritogo tekstu oznachaye sho ne isnuye zazdalegid vstanovlenogo poryadku dlya vikoristannya klyuchiv i ne potribno vidilennya pam yati Ce dosit korisna vlastivist tak yak zavdannya viyavlennya klyuchiv sho vikoristovuyutsya najbilsh chasto uskladnyuyetsya Shifri volodiyut bilshoyu zahishenistyu do diferencialnogo kriptoanalizu tak yak biti v klyuchi mozhut vplivati na bud yaki inshi biti shifrotekstu Vikoristannya nelinijnoyi algebri dodavannya po modulyu 232 viklyuchayuche ABO efektivno proti linijnogo kriptoananliza Krim togo vikoristannya cih operacij ne vnosit vrazlivostej v algoritmi Pershij algoritm XTEA 1 maye najbilshu shvidkist i pri dostatnij kilkosti raundiv vid 32 do 64 volodiye horoshoyu nadijnistyu XTEA 2 yavlyaye soboyu rozshirennya z velikim rozmirom bloku i vin ne bilsh zahishenij nizh XTEA 1 XTEA 3 ce rozshirennya algoritm z vikoristannyam bilshogo rozmiru bloku i klyucha Tretij variant pracyuye trohi povilnishe ale bilsh zahishenij Tak yak ci algoritmi pobudovani na bazi originalnogo TEA z usunennyam vsih vidomih nedolikiv to yih mozhna vvazhati dostatno nadijnimi Porivnyalna tablicya algoritmiv Nazva algoritmu Minimalna kilkist raundiv Maksimalna kilkist raundiv Rozmir bloku Rozmir klyuchaXTEA 1 32 64 64 bita 128 bitXTEA 2 64 128 128 bit 128 bitXTEA 3 64 128 128 bit 256 bit Odnak dani algoritmi vse odno potrebuyut podalshoyi dorobki Persha problema polyagaye v tomu tilki molodshi biti vidkritogo tekstu vikoristovuyutsya dlya ciklichnogo bitovogo zsuvu klyucha yak u XTEA 1 i XTEA 2 Druga problema polyagaye v tomu sho klyuch rozdilenij na dvi pidgrupi po 4 elementa i kozhna chastina virazu vikoristovuye tilki odnu pidgrupu yak u XTEA 3 XTEA 3 mozhe buti rozshireno shlyahom vikoristannya vsih vosmi elementiv v oboh chastinah vislovlyuvannya Yaksho ci vdoskonalennya budut provedeni to algoritm stane bilsh praktichnim ale todi vin bude duzhe silno vidriznyatisya vid originalnogo TEA PrimitkiA Roger M Needham and David J Wheeler Tea extensions 20 veresnya 2017 u Wayback Machine John Kelsey Bruce Schneier David Wagner Related Key Cryptanalysis of 3 WAY Biham DES CAST DES X NewDES RC2 TEA nedostupne posilannya z listopadaa 2019 Seokhie Hong Deukjo Hong Youngdai Ko Donghoon Chang Wonil Lee Sangjin Lee Differential Cryptanalysis of TEA and XTEA nedostupne posilannya z listopadaa 2019 Charles Bouillaguet Orr Dunkelman Gaetan Leurent and Pierre Alain Fouque Another Look at Complementation Properties 6 lipnya 2017 u Wayback Machine Tom St Denis Extended TEA Algorithms 27 serpnya 2018 u Wayback Machine Divis takozhTEA Merezha Fejstelya Bitovi operaciyi XXTEA RTEA RaidenPosilannyaDavid J Wheeler Roger and M Needham Correction to xtea Technical report Computer Laboratory University of Cambridge October 1998 PDF 20 veresnya 2017 u Wayback Machine Dukjae Moon Kyungdeok Hwang Wonil Lee Sangjin Lee and Jongin Lim Impossible Differential Kriptoanaliz of Reduced Round XTEA and TEA Center for Information and Security Technologies CIST 2004 PDF nedostupne posilannya z listopadaa 2019 RealizaciyiThe Tiny Encryption Algorithm TEA 12 chervnya 2017 u Wayback Machine Simon Shepherd 24 February 2006 Vebstorinka z opisom i posilannyami na rizni realizaciyi XTEA Realizaciya XTEA na PHP 13 listopada 2015 u Wayback Machine Realizaciya XTEA na Java 32 prohodu 9 kvitnya 2016 u Wayback Machine Python XTEA Encryption Python recipe 18 serpnya 2016 u Wayback Machine Realizaciya XTEA na Python Realizaciya XTEA na Verilog 2 serpnya 2017 u Wayback Machine dlya FPGA Zvernennya do realizaciyi algoritmiv XTEA 1 XTEA 2 XTEA 3 na C z Python 11 chervnya 2018 u Wayback Machine