- EnRUPT
-
Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.EnRUPT Создатель: Шон О`Нил (англ. Sean O’Neil)
Создан: 2007 г.
Опубликован: 2008 г.
Размер ключа: мин. 32 бит с шагом 32 бит
Размер блока: мин. 64 бит с шагом 32 бит
Число раундов: 8 * (xw / 32) + 4 * (kw / 32)
Тип: Несбалансированная модифицированная сеть Фейстеля[1]
EnRUPT — в криптографии симметричный блочный криптоалгоритм и криптопримитив, разработанный Шоном О`Нилом (англ. Sean O’Neil).Особенностью алгоритма является его чрезвычайная гибкость. По-сути дела, алгоритм — это криптопримитив, позволяющий реализовать блочный шифр с произвольным размером блока — от 32 бит и длиной ключа от 64 бит. При этом, число раундов будет равно 8 * (xw / 32) + 4 * (kw / 32), где xw — размер блока в битах, kw — длина ключа в битах. Для шифра со 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, 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-битного блока необходимо около 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.
- ↑ Enrupt related-key attack
- ↑ EnRUPT related-key attack
- ↑ Practical Collisions for EnRUPT
- ↑ Cryptanalysis of EnRUPT
Ссылки
Симметричные криптосистемы Поточный шифр Сеть Фейстеля ГОСТ 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-сеть Другие Категории:- Шифры
- Генераторы псевдослучайных чисел
- Криптографические хеш-функции
Wikimedia Foundation. 2010.