Noekeon


NOEKEON — семейство из двух блочных шифров, разработанных Йоаном Дайменом,  Michaël Peeters, Gilles Van Assche и Винсентом Рэйменом и представленных в исследовательском проекте NESSIE[1]. Два шифра представляют собой NOEKEON в прямом режиме (direct mode) и в косвенном режиме (indirect mode). Отличаются режимы только процедурой расширения ключа.

Длина ключа в NOEKEON равна 128 битам. В каждом раунде NOEKEON использует последовательность преобразований, обратных самим себе, которые с легкостью могут быть реализованы в аппаратном или программном обеспечении, причем даже в таком, где существует возможность атаки по сторонним каналам. Шифр является компактным в реализации на различных языках программирования, быстро работает на различных аппаратных средствах и является очень эффективным в широком диапазоне платформ[2]. Однако, NOEKEON не отвечал требованиям Wide Trail Design Strategy, что показал криптоанализ, проведенный Ларсом Кнудсеном и Håvard Raddum в апреле 2001. Кнудсен и Raddum показали, что на данный шифр возможна атака на основе связанных ключей[3], из-за чего шифр не прошел отбор в проекте NESSIE.

Алгоритм NOEKEON[4] выполняет 16 раундов преобразований с последующим применением функции Theta. Блок входных данных State представляет собой четыре 32-битных слов от a[0] до a[3].

Число раундов Nr равно 16. Единственная разница между NOEKEON и его инверсией заключается в вычислении WorkingKey для инверсии NOEKEON и применении раундовых констант.

Все функции работают с состоянием State, на который предоставляется указатель. Всегда одна из входных констант задана, как 0. Если раундовое преобразование применяется в прямом шифре, то Constant2 устанавливается в 0, если же раундовое преобразование используется для обратного шифра, то Constant1 = 0.

Gamma является инволютивным нелинейным отображением, по сути являющимся простой табличной заменой. Gamma производит независимые операции над 32 подблоками бит, называемыми ящиками. Эти ящики состоят из 4 битов, стоящих на одной и той же позиции в каждом из четырёх 32-битовых слов , то есть ящик с номером i формируется из значениями i-х битов каждого из 32-битных слов: