Алгоритм SPEED

Перейти к навигацииПерейти к поиску
SPEED
СоздательЧжэн Юлян
Создан1997 год
Опубликован1997 год
Размер ключа 48-256 бит (кратное 16)
Размер блока64, 128 или 256 бит
Число раундов ≥ 32 (кратное 4)
ТипСеть Фейстеля

SPEED (Secure Package for Encrypting Electronic Data) — это алгоритм блочного симметричного шифрования, разработанный австралийским криптографом Чжэн Юляном[англ.], работавшим в университете Монаша. Основные параметры: раунд, длина блока и длина ключа являются переменными, в этом алгоритм похож на более известный аналог RC5.

Описание

Шифрование по алгоритму SPEED состоит из двух этапов. Процедура расширения ключа и непосредственно шифрование. Для дешифрования выполняется сначала процедура расширения ключа, а затем операции, обратные процедуре шифрования.

Параметры

Так как алгоритм SPEED имеет переменные параметры, то для спецификации алгоритма с конкретными параметрами принято указывать (W,L,R)[1], где:

W — это размер блока шифруемых данных, который может принимать значения: 64, 128 и 256 бит соответственно.

L — это размер ключа, который принимает значение L диапазоне от 48 до 256 бит, которое кратно 16.

R — это количество раундов преобразований. Количество преобразований при этом должно быть не менее 32 и кратно 4.

Шифрование

SPEED, применяя ключ К длиной L бит, преобразует открытый текст M из W бит в зашифрованный С той же длины.

Криптографический ключ K, представляющий собой строку из L бит, сначала расширяется с помощью функции планирования ключей на четыре ключа K1, K2, K3 и К4. Каждый из этих ключей состоит из R цикловых ключей, где указано количество раундов в каждом проходе.

Открытый текст M представляется как 8 строк, бит каждый. Эти 8 строк обрабатываются в фазах P1, P2, P3 и P4 последовательно. Каждая фаза называется проходом и включает в себя ключи К1, К2, К3, К4 соответственно . На выходе мы получим зашифрованный текст С из открытого М.

Все 4 фазы внутреннего прохода P1, P2, P3, P4 работают одинаково, хотя в каждом проходе используется отдельный подключ К1, К2, К3, К4, а также разные нелинейные функции для побитовых логических операций. Ниже на рисунке представлены эти функции[1]:

Фаза 1(P1): F1(X6,X5,X4,X3,X2,X1,X0) = X6X3X5X1X4X2X1X0X0

Фаза 2(P2): F2(X6,X5,X4,X3,X2,X1,X0) = X6X4X0X4X3X0X5X2X4X3X4X1X3X0X1

Фаза 3(P3): F3(X6,X5,X4,X3,X2,X1,X0) = X5X4X0X6X4X5X2X3X0X1X0X3

Фаза 4(P4): F4(X6,X5,X4,X3,X2,X1,X0) = X6X4X2X0X6X5X4X3X3X2X1X0X2

Расширение ключа

Ключ шифрования/дешифрования K для SPEED представляет собой двоичную строку из L бит, где L является целым числом от 48 до 256 и делится на 16. Функция планирования ключей состоит в том, чтобы «расширять» ключ K на R фрагментов циклового ключа, необходимых для R раундов обработки.

Порядок расширения ключа

Основной блок данных в планировании ключей — это двухбайтовые данные. Таким образом, байтный ключ сначала переводится во внутренние двухбайтовые блоки данных kb0,kb1, , kb-1.

Также в процессе расширения ключа принимают переменные S0, S1, S2. Их размер составляет также 2 байта. Их начальное значение равняется константам Q0, Q1, Q2 соответственно, значение которых прямо зависит от размера ключа шифрования. Значения Q0, Q1, Q2 получают из констант дробной части числа . Первые три константы из дробной части используются для случая L = 48, следующие три для L = 64 и так далее. Таким образом, в общей сложности 42 константы требуются для 14 различных длин ключей. Эти константы показаны ниже в шестнадцатеричной форме.

DF7BD629E9DB362F5DO0F20FC3D1
IFD2589B431291EB718EBF2AIETD
B25777A616546B2A0D98A9D3668F
19BEF8556D98022DE4E2D017EA2F
7572C3B51086480C3AA69CAO98F7
DOE4253CC90155F39BF4F659D76C

Алгоритм планирования ключей расширяет наш массив до kblast-1, где last = при W = 64, last = R при W = 128, last = 2R при W = 256.

Дальнейший процесс расширения можно представить в виде нескольких шагов[1]:

  1. На переменные S0, S1, S2 действует функция G, которая представляется собой побитовую операцию G(S2, S1, S0) = S2,S1S1,S0S0,S2 (Здесь SiSj побитовое И, а SiSj битовый XOR). Мы получаем T = G (S0,S1, S2)
  2. Полученный результат поворачивает вправо на 5 бит.
  3. Далее T = T + S2 + kb[j] (mod 216), где i=j (mod ).
  4. Происходит сдвиг переменных S0, S1, S2 и новое значение T становится значением переменной S0: kb[i]=T S2=S1 S1=S0 S0=T
  5. Этот шаг переводит last двухбайтовые данные kb0, kb1, …, kblast-1 в R цикловых ключей, каждый из которых состоит из бит. Перевод поддерживает порядок двухбайтовых данных.

Полезные свойства

Побитовая нелинейная логическая операция используется в каждом раунде. Чтобы усилить шифр против дифференциальной атаки на выходе операции применяется циклический сдвиг, зависящий от данных. Использование максимально нелинейной булевой функции в побитовой булевой операции помогло бы предотвратить линейную атаку[2].

Дешифрование

В качестве шифра с закрытым ключом SPEED использует один и тот же ключ как для шифрования, так и для дешифрования. Чтобы расшифровать зашифрованный текст C с помощью ключа K, происходит весь процесс работы алгоритма в обратном порядке, за исключением планирования ключей, который остается неизменным. Другими словами внутренние операции каждого Pi, где i = 1, 2, 3, 4, будут проводиться в обратном порядке[1].

Преимущества и недостатки

  • Простой и компактный в реализации: при реализации алгоритма на языке программирования C его объём занимает всего около 3 килобайт.
  • Алгоритм подвержен различным криптоатакам: дифференциальный криптоанализ и атака на связанные ключи.

Повышения криптоустойчивости можно добиться, увеличивая количество раундов, но это негативно влияет на производительность. Быстродействие алгоритма значительно падает, и становится в несколько раз меньше быстродействия аналогичного криптоустойчивого алгоритма RC5[3].

Примечания

  1. 1 2 3 4 First International Conference, FC '97, Anguilla, British West Indies, February 24-28, 1997. Proceedings p.71-89
  2. SEBERRY,J., ZHANG,X. M., AND ZHENG,Y. Nonlinearity and propagation characteristics of balanced boolean functions. Information and Computation 119, 1 (1995)
  3. Cryptanalysis of SPEED by Chris Hall , John Kelsey, Vincent Rijmen, Bruce Schneier, David Wagner

Ссылки