RTEA
| Эту статью следует викифицировать.
Пожалуйста, оформите её согласно правилам оформления статей.
|
| RTEA | |
| Создатель: |
Marcos el Ruptor (Sean O'Neil) |
|---|---|
| Создан: |
2007 г. |
| Опубликован: |
2007 г. |
| Размер ключа: |
128 (256) бит |
| Размер блока: |
64 бит |
| Число раундов: |
48 (64) |
| Тип: | |
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]
Т.к. это блочный шифроалгоритм, где длина блока 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)
[править] Безопасность
На данный момент существует лишь атака на основе связанных ключей (англ. related key attack)[3] на данный шифр.
[править] См. также
Raiden — алгоритм, как и RTEA, основанный на идеях блочного шифра TEA
[править] Примечания
- ↑ Сравнительные результаты устойчивости симметричных криптоалгоритмовангл.
- ↑ TEA, XTEA, XXTEA and RTEA
- ↑ A related key attack for RTEA.
[править] Ссылки
- Исходный код алгоритма RTEA на Open Watcom C и Delphi
- FAQ по материалам конференции fido7.ru.crypt. Непосредственно к RTEA относится следующее передупреждение: "Придумать алгоритм - это 5% работы. Остальные 95% - убедиться (и убедить других), что его никто не сможет сломать."
|
|
|
|---|---|
| Поточный шифр | |
| Сеть Фейстеля |
ГОСТ 28147-89 • Blowfish • Camellia • CAST-128 • CAST-256 • CIPHERUNICORN-A • CIPHERUNICORN-E • CLEFIA • Cobra • DFC • DEAL • DES • DESX • EnRUPT • FEAL • FNAm2 • HPC • IDEA • KASUMI • Khufu • LOKI97 • MARS • NewDES • Raiden • RC5 • RC6 • RTEA • SEED • Sinople • TEA • Triple DES • Twofish • XTEA • XXTEA |
| SP-сеть | |
| Другие | |

