Interested Article - EnRUPT

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 раунда.

Сфера использования

Схема раунда поточного шифра RUPT

Поскольку 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, const u32 xw, u32 *key, const u32 kw)
{
    u32 r, s=4, n=s*(2*xw+kw);
    for (r=1; r<=n; r++) x[r%xw] ^= er1(key[r%kw]);
}

unRUPT (u32 *x, const u32 xw, u32 *key, const u32 kw)
{
    u32 r, 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-битного блока необходимо около 2 64 выбранного текста. Данная атака применима и для шифра XXTEA .

На конкурсе хеш-функция на базе алгоритма EnRUPT была определена как имеющая коллизии при всех семи заявленных параметрах безопасности. Сложность нахождения коллизии составила от 2 36 до 2 40 операций для разных вариантов алгоритма, что позволило продемонстрировать практическую коллизию для варианта EnRUPT-256.

По утверждению авторов алгоритма EnRUPT, была проведена успешная атака ( англ. linearization attack ) не хеш-функции в целом и не её структуры, а только заявленного варианта с конкретным параметром s = 4. Увеличение параметра s до 8 должно привести к усилению диффузии и обеспечить более высокий уровень безопасности, за счет снижения скорости вычисления функции в два раза. Однако, независимых исследований данного варианта алгоритма не производилось.

В рамках того же конкурса была опубликована работа , где показана возможность нахождения прообраза для варианта EnRUPT-512. Данная атака требует около 2 480 операций, что лишь немногим лучше 2 512 для полного перебора, но все же показывает слабость структуры алгоритма.

Примечания

  1. от 14 июля 2010 на Wayback Machine .
  2. . Дата обращения: 21 января 2009. Архивировано из 29 января 2009 года.
  3. (недоступная ссылка)
  4. . Дата обращения: 22 декабря 2009. 5 марта 2016 года.
  5. . Дата обращения: 22 декабря 2009. 11 декабря 2010 года.

Ссылки

Источник —

Same as EnRUPT