REDOC

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
REDOC II
Создатель:

Майкл Вуд

Создан:

1990 г.

Опубликован:

1990 г.

Размер ключа:

от 70 до 17 920 бит,эффективный: 70 бит

Размер блока:

70 бит

Число раундов:

10

Тип:

собственный

REDOC III
Создатель:

Майкл Вуд

Размер ключа:

Переменный, до 2560 байт (20480 бит)

Размер блока:

80 бит

Число раундов:

10

Тип:

собственный

REDOCсимметричный блочный криптоалгоритм, разработанный Майклом Вудом[en] в 1990 году для компании Cryptech и получивший наименование REDOC II. Все операции — подстановки, перестановки, XOR выполняются с байтами что позволяет его эффективно реализовать программно. Алгоритм использует зависимые от ключа и исходного открытого текста наборы таблиц (S-блоков), используя меняющиеся табличные функции. Алгоритм отличает использование масок, т.е. чисел, получаемых из ключевой таблицы. Маски используются для выбора таблиц конкретной функции конкретного раунда. При этом используется как значение маски, так и значение данных[1].

Алгоритм[править | править вики-текст]

REDOC-II представляет собой десятираундовую криптосистему (но высказано предположение, что 1- или двухраундовая версия является безопасной)[2]. Каждый раунд предусматривает набор сложных[источник не указан 39 дней] манипуляций с 10 байтовым блоком.

Оригинальная длина ключа составляет 10 байт. Однако, так как используются для шифрования только первые 7 бит, эффективный размер ключа составляет 70 бит. Следует уточнить, что REDOC II может поддерживать длину ключа в диапазоне от 70 до 17 920 бит. Текущая версия использует 140-битный ключ[3].

Каждый раунд состоит из шести фаз:

  1. Первая переменная подстановка,
  2. Вторая переменная подстановка,
  3. Первый переменный ключ XOR,
  4. Переменный анклав,
  5. Второй переменный ключ XOR,
  6. Переменная перестановка.

Во время каждой фазы данные обрабатываются с помощью таблиц[4].

Виды таблиц[править | править вики-текст]

  1. 16 предопределенных подстановочных таблиц, которые используются в фазах переменной подстановки. (Фиксированы)
  2. 128 предопределенных таблиц перестановок, используемые фазами переменной перестановки. (Фиксированы)
  3. 128 предопределенных таблиц анклава, используемые фазами переменного анклава. (Фиксированы)
  4. Кроме того, 128 десятибайтных таблиц ключей и девять таблиц масок вычисляются для каждого ключа с помощью алгоритма обработки ключа. (Вычислимые)[4]

Описание фаз[править | править вики-текст]

Фазы переменного ключа XOR[править | править вики-текст]

В каждой фазе переменного ключа XOR осуществляется операция XOR между значением определенного байта в данных с определенным байтом в таблице масок. Итоговое значение – номер таблицы. Все байты данных, исключая выбранный байт, подвергаются операции XOR с соответствующим байтом из выбранной таблицы ключей[4].

Фазы переменной подстановки[править | править вики-текст]

В каждой фазе переменной подстановки осуществляется операция XOR между значением конкретного байта из таблицы данных и конкретным байтом в таблице масок. Номер таблицы — это полученное значение, взятое по модулю 16. Все байты, за исключением выбранного, заменяются значениями из выбранной подстановочной таблицы[4].

Фазы переменной перестановки[править | править вики-текст]

В каждой фазе переменной перестановки выбирается одна таблица путем добавления всех десяти байтов данным (по модулю 128) и результат подвергается операции XOR с конкретным байтом из таблицы масок. Полученное значение — это номер таблицы. Все байты данных переставляются выбранной перестановкой[4].

Фазы переменного анклава[править | править вики-текст]

Предопределенная таблица анклава имеет пять строк и 3 столбца. Каждая запись содержит число от 1 до 5. Существует 2 свойства, которым таблица анклава должна удовлетворять:

  • каждый столбец должен быть перестановкой чисел 1—5;
  • каждая строка должна содержать 3 различных значения[4].

Каждая фаза переменного анклава использует 4 таблицы анклава следующим образом:

  1. Разделяет блоки на два под-блока по 5 байт каждый. Под-блоки называют левой и правой половинами.
  2. XOR двух отдельных байтов из правой половины (в первом круге: первые 2 байта) с двумя отдельными байтами масок. Получившиеся 2 байта — это указатели двух таблиц анклава.
  3. Обработка левой половины первой таблицей анклава указанной с помощью двух байтов.
  4. Обработка полученной левой половины второй таблицей анклава указанной с помощью двух байтов.
  5. XOR двух отдельных байтов в полученной левой половине (в первом круге: первые 2 байта) с двумя отдельными байтами масок. Полученные два байта — указатели двух таблиц анклава.
  6. XOR левой и правой половин.
  7. Обработка полученной правой половины первой таблицей анклава указанной с помощью двух байт.
  8. Обработка полученной правой половины второй таблицей анклава указанной с помощью двух байт.
  9. XOR правой и левой половин

Таблицы анклава связана с под-блоками следующим образом:

  1. Каждая запись в таблице — это индекс байта в полублоке.
  2. Добавление значения в 3 байта указывает на номер в первой строке таблицы и хранит результат в байтах, указывающий на первый столбец этой строки.
  3. Добавление к полученному значению трех байтов указывает на номер во второй строке таблицы и хранит результат в байтах, указывающий на первый столбец в строке.
  4. Аналогично добавление в соответствии с третьей, четвертой и пятой строкой[4].

Важное свойство таблиц анклав состоит в том, что они являются линейными операциями в терминах сложения и могут быть смоделированы матрично-векторным произведением. При изменении только одного верхнего входного бита, только один верхний выходной бит будет изменён. Кроме того, линейное изменение таблицы верхних выходных битов верхними входными битами однозначно определяет использование таблицы анклава. Это свойство как раз используется в фазе переменного анклава. Левая половина входных данных с двумя байтами правой половины влияют на выбор таблицы анклава, используемой в этой фазе. Однако 3 бита правой половины не влияют на выбор таблицы анклава (в первой фазе это 8, 9 и 10 байты) и это изменение верхних выходных битов – линейная функция от изменения верхних битов этими поступающими байтами. Следует отметить, что хотя мы делаем XOR правой и левой половин последним шагом в фазе переменного анклава, мы получаем симметричное изменение обоих половин и, следовательно, четное число измененных верхних битов[5].

Надежность[править | править вики-текст]

Наиболее эффективным способом вскрытия ключа считается грубая сила, для достижения цели потребуется 2160 операций. Практически единственным эффективным криптоанализом было вскрытие одного из раундов алгоритма Томасом Кузиком, но расширить вскрытие на дальнейшие раунды не удалось. С помощью 2300 открытых текстов был проведен криптоанализ одного из раундов Шамиром и Бихамом, после 4 раундов были получены 3 значения маски однако успехов как таковых это не принесло и на данный момент алгоритм считается криптостойким[1].

REDOC III[править | править вики-текст]

Существует также значительно упрощенная версия алгоритма — REDOC III, созданный Майклом Вудом. Используется 80-битный блок, длина ключа переменна, может достигать 20480 битов. Перестановки и подстановки исключены, все операции над блоком и ключом основаны лишь на применении XOR, за счет чего значительно увеличена скорость шифрования в ущерб стойкости к дифференциальному криптоанализу. Основой алгоритма являются генерированные на основе секретного ключа 256 10-байтовых ключей, и полученные на основе XOR 128 10-байтовых ключей два 10-байтовых блока маски. Для успешного восстановления обеих масок алгоритма REDOC III требуется 223 открытых текстов. Этот алгоритм несложен и быстр. На 33 мегагерцовом процессоре 80386 он шифрует данные со скоростью 2.75 Мбит/с[1]. Криптографическая система REDOC II способна шифровать 800 кбит/с при тактовой частоте 20 Мгц. [6]

Алгоритм REDOC II и его упрощенная версия запатентованы в США[1].

Примечания[править | править вики-текст]

Литература[править | править вики-текст]