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

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

Описание править

Шифрование по алгоритму 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) = X6X3 X5X1 X4X2 X1X0 X0

Фаза 2(P2): F2(X6,X5,X4,X3,X2,X1,X0) = X6X4X0 X4X3X0 X5X2 X4X3 X4X1 X3X0 X1

Фаза 3(P3): F3(X6,X5,X4,X3,X2,X1,X0) = X5X4X0 X6X4 X5X2 X3X0 X1X0 X3

Фаза 4(P4): F4(X6,X5,X4,X3,X2,X1,X0) = X6X4X2X0 X6X5 X4X3 X3X2 X1X0 X2

Расширение ключа править

Ключ шифрования/дешифрования 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 различных длин ключей. Эти константы показаны ниже в шестнадцатеричной форме.

DF7B D629 E9DB 362F 5DO0 F20F C3D1
IFD2 589B 4312 91EB 718E BF2A IETD
B257 77A6 1654 6B2A 0D98 A9D3 668F
19BE F855 6D98 022D E4E2 D017 EA2F
7572 C3B5 1086 480C 3AA6 9CAO 98F7
DOE4 253C C901 55F3 9BF4 F659 D76C

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

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

  1. На переменные S0, S1, S2 действует функция G, которая представляется собой побитовую операцию G(S2, S1, S0) = S2,S1 S1,S0 S0,S2 (Здесь SiSj побитовое И, а Si Sj битовый 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

Ссылки править