EnRUPT
| EnRUPT | |
|---|---|
| Создатель | Шон О’Нил (англ. Sean O’Neil) |
| Создан | 2007 г. |
| Опубликован | 2008 г. |
| Размер ключа | мин. 32 бит с шагом 32 бита |
| Размер блока | мин. 64 бит с шагом 32 бита |
| Число раундов | 8 × (xw / 32) + 4 × (kw / 32) |
| Тип | Несбалансированная модифицированнаясеть Фейстеля[1] |
EnRUPT — вкриптографиисимметричный блочныйкриптоалгоритм и криптопримитив, разработанный Шоном О’Нилом (англ. Sean O’Neil).
Особенностью алгоритма является его чрезвычайная гибкость. По сути дела, алгоритм — этокриптопримитив, позволяющий реализовать блочный шифр с произвольным размером блока — от 64бит и длиной ключа от 32бит. При этом число раундов будет равно 4 × (2 × xw + kw), где xw — размер блока в словах, kw — длина ключа в словах. Размер слова может быть 32 или 64бита. При слове 32 бита число раундов равно 8 × (xb / 32) + 4 × (kb / 32), где xb — размер блока в битах, kb — длина ключа в битах. Для шифра со 128-битным блоком и 512-битным ключом применяется 96 раундов, а при 256-битном ключе — 64 раунда.
Сфера использования
[править |править код]
Поскольку EnRUPT является, де-факто, криптопримитивом, он может быть использован в режиме быстрого симметричногоблочного шифра,поточного шифра (irreversible EnRUPT, irRUPT),хеш-функции (mdRUPT),MAC,ГСЧ/ГПСЧ.
Пример реализации
[править |править код]Как и алгоритмTEA, EnRUPT очень прост в реализации. Фактически, шифр является упрощенным, усиленным и ускоренным вариантом алгоритмаXXTEA. Ниже указан простой и гибкий пример реализации алгоритма в режиме 32-разрядного блочного шифра.
#define er1(k) (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^k^r,8)*9^k)enRUPT(u32*x,constu32xw,u32*key,constu32kw){u32r,s=4,n=s*(2*xw+kw);for(r=1;r<=n;r++)x[r%xw]^=er1(key[r%kw]);}unRUPT(u32*x,constu32xw,u32*key,constu32kw){u32r,s=4,n=s*(2*xw+kw);for(r=n;r;r--)x[r%xw]^=er1(key[r%kw]);}
Где x — блок из 32-разрядных беззнаковых чисел, key — ключ, xw — длина сообщения, kw — длина ключа.
Безопасность
[править |править код]Существует атака на 32-разрядный вариант блочного шифра EnRUPT, при условии, что криптоаналитик имеет возможность модифицировать ключ и получить большое количество пар открытого и зашифрованного текста, для 256-битного ключа и 128-битного блока необходимо около 264 выбранного текста. Данная атака применима и для шифраXXTEA.[2][3]
На конкурсеSHA-3хеш-функция на базе алгоритма EnRUPT была определена как имеющаяколлизии при всех семи заявленных параметрах безопасности. Сложность нахождения коллизии составила от 236 до 240 операций для разных вариантов алгоритма, что позволило продемонстрировать[4] практическую коллизию для варианта EnRUPT-256.
По утверждению авторов алгоритма EnRUPT, была проведена успешная атака (англ. linearization attack) не хеш-функции в целом и не её структуры, а только заявленного варианта с конкретным параметром s = 4. Увеличение параметра s до 8 должно привести к усилению диффузии и обеспечить более высокий уровень безопасности, за счет снижения скорости вычисления функции в два раза. Однако, независимых исследований данного варианта алгоритма не производилось.
В рамках того же конкурсаSHA-3 была опубликована работа[5], где показана возможностьнахождения прообраза для варианта EnRUPT-512. Данная атака требует около 2480 операций, что лишь немногим лучше 2512 для полного перебора, но все же показывает слабость структуры алгоритма.
Примечания
[править |править код]- ↑EnRUPT: First all-in-one symmetric cryptographic primitiveАрхивная копия от 14 июля 2010 наWayback Machine.
- ↑Enrupt related-key attack . Дата обращения: 21 января 2009. Архивировано изоригинала 29 января 2009 года.
- ↑EnRUPT related-key attack (недоступная ссылка)
- ↑Practical Collisions for EnRUPT . Дата обращения: 22 декабря 2009. Архивировано 5 марта 2016 года.
- ↑Cryptanalysis of EnRUPT . Дата обращения: 22 декабря 2009. Архивировано 11 декабря 2010 года.