RTEA

RTEA (від Ruptor's TEA або Repaired TEA) — в криптографії симетричний блоковий криптоалгоритм типу «Мережа Фейстеля», розроблений Marcos el Ruptor, розширення шифроалгоритма TEA. Виправлені деякі уразливості в алгоритмі. Як і інші варіанти алгоритму TEA, операції засновані на роботі з 32-бітними числами. Алгоритм значно простіший і продуктивніший за XTEA, при цьому, за заявою авторів і згідно з проведеними розробниками статистичними тестами, більш стійкий до криптоаналізу[1]. Щоб протистояти всім адаптивним і неадаптивним атакам, алгоритму необхідне число раундів, яке дорівнює 32+w*4, де w — кількість 32-бітних цілих чисел в ключі, тобто 4 — 128 бітного, і 8 для 256-бітного ключа. Для ключа розміром 128 біт виконується 48 раундів, для ключа розміром 256 біт — 64 раунди алгоритму.[2]

Алгоритм блокового шифрування
Назва:RTEA
Розробник:Marcos el Ruptor (Sean O'Neil)
Створений:2007 р
Опублікований:2007 р
Розмір ключа:128 (256)біт
Розмір блоку:64 біт
Число раундів:48 (64)
Тип:Мережа Фейстеля

Так як це блочний шифроалгоритм, де довжина блоку 64-біт, а довжина даних може бути не кратна 64-біт, блок доповнюють байтами зі значенням 0x01.

Реалізація

Алгоритм за один прохід обробляє два 32-розрядних беззнакових чисел (unsigned long) a і b, тобто 64-бітний блок. Довжина ключа в 32-розрядних числах — kw, r — раунд.


Таким чином, декларація змінних може бути наступною:

u32 a, b, c, kw;
u32 key[kw];
long r;

Універсальний код

// шифрування

for (r=0;r<kw*4+32;r++) c=b,b+=a+((b<<6)^(b>>8))+key[r%kw]+r,a=c;

// розшифрування

for (r=kw*4+31;r!=-1;r--) c=a,a=b-=a+((a<<6)^(a>>8))+key[r%kw]+r,b=c;

Що аналогічно іншим написанням:

// шифрування

for (r=0;r<kw*4+32;r++) a+=b+((b<<6)^(b>>8))+key[r%kw]+r,r++,b+=a+((a<<6)^(a>>8))+key[r%kw]+r;


// розшифрування

for (r=kw*4+31;r!=-1;r--) b-=a+((a<<6)^(a>>8))+key[r%kw]+r,r--,a-=b+((b<<6)^(b>>8))+key[r%kw]+r;

Код для 256 — бітного ключа

Використання алгоритму є дуже простим і зручним. Так, для ключа, рівного 256 біт (kw = 8), код буде наступним:

// шифрування


for (r=0;r<64;r++)
{
 b+=a+((a<<6)^(a>>8))+ (key[r%8]+r);
 r++;
 a+=b+((b<<6)^(b>>8))+ (key[r%8]+r);
}


// розшифрування

for (r=63;r>=0;r--)
{
 a-=b+((b<<6)^(b>>8))+ (key[r%8]+r);
 r--;
 b-=a+((a<<6)^(a>>8))+ (key[r%8]+r);

}


Для забезпечення унікальності кожного з зашифрованих блоків при ідентичності відкритого вихідного тексту може бути застосовано один з режимів DES (наприклад, CBC, CFB, CTS, CTR)

Безпека

На даний момент існує лише атака на основі пов'язаних ключів[3] на даний шифр.

Див. також

Примітки

  1. Порівняльні результати стійкості симетричних криптоалгоритмов Архівовано 25 липня 2008 у Wayback Machine. (англ.)
  2. TEA, XTEA, XXTEA and RTEA. Архів оригіналу за 19 липня 2008. Процитовано 23 квітня 2018.
  3. A related key attack for RTEA.[недоступне посилання з лютого 2019]

Посилання

  1. Вихідний код алгоритму RTEA на Open Watcom C і Delphi
  2. FAQ по матеріалам конференції fido7.ru.crypt. Безпосередньо до RTEA відноситься наступне передупреждение: "Придумати алгоритм - це 5% роботи. Решта 95% - переконатися (і переконати інших), що його ніхто не зможе зламати."
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.