SPEED (Secure Package for Encrypting Electronic Data) — это алгоритм блочного симметричного шифрования, разработанный австралийским криптографом , работавшим в университете Монаша. Основные параметры: раунд, длина блока и длина ключа являются переменными, в этом алгоритм похож на более известный аналог RC5.
Описание Шифрование по алгоритму SPEED состоит из двух этапов. Процедура расширения ключа и непосредственно шифрование. Для дешифрования выполняется сначала процедура расширения ключа, а затем операции, обратные процедуре шифрования.
Параметры Так как алгоритм SPEED имеет переменные параметры, то для спецификации алгоритма с конкретными параметрами принято указывать (W,L,R)First International Conference, FC '97, Anguilla, British West Indies, February 24-28, 1997. Proceedings p.71-89, где:
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(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 различных длин ключей. Эти константы показаны ниже в шестнадцатеричной форме. DF7BD629E9DB362F5DO0F20FC3D1IFD2589B431291EB718EBF2AIETDB25777A616546B2A0D98A9D3668F19BEF8556D98022DE4E2D017EA2F7572C3B51086480C3AA69CAO98F7DOE4253CC90155F39BF4F659D76C Алгоритм планирования ключей расширяет наш массив до kblast-1, где last = при W = 64, last = R при W = 128, last = 2R при W = 256.
Дальнейший процесс расширения можно представить в виде нескольких шагов:
На переменные S0, S1, S2 действует функция G, которая представляется собой побитовую операцию G(S2, S1, S0) = S2,S1S1,S0S0,S2 (Здесь SiSj побитовое И, а SiSj битовый XOR). Мы получаем T = G (S0,S1, S2) Полученный результат поворачивает вправо на 5 бит. Далее T = T + S2 + kb[j] (mod 216), где i=j (mod ). Происходит сдвиг переменных S0, S1, S2 и новое значение T становится значением переменной S0: kb[i]=T S2=S1 S1=S0 S0=T Этот шаг переводит last двухбайтовые данные kb0, kb1, …, kblast-1 в R цикловых ключей, каждый из которых состоит из бит. Перевод поддерживает порядок двухбайтовых данных.
Полезные свойства Побитовая нелинейная логическая операция используется в каждом раунде. Чтобы усилить шифр против дифференциальной атаки на выходе операции применяется циклический сдвиг, зависящий от данных. Использование максимально нелинейной булевой функции в побитовой булевой операции помогло бы предотвратить линейную атакуSEBERRY,J., ZHANG,X. M., AND ZHENG,Y. Nonlinearity and propagation characteristics of balanced boolean functions. Information and Computation 119, 1 (1995).
Дешифрование В качестве шифра с закрытым ключом SPEED использует один и тот же ключ как для шифрования, так и для дешифрования. Чтобы расшифровать зашифрованный текст C с помощью ключа K, происходит весь процесс работы алгоритма в обратном порядке, за исключением планирования ключей, который остается неизменным. Другими словами внутренние операции каждого Pi, где i = 1, 2, 3, 4, будут проводиться в обратном порядке.
Преимущества и недостатки Простой и компактный в реализации: при реализации алгоритма на языке программирования C его объём занимает всего около 3 килобайт. Алгоритм подвержен различным криптоатакам: дифференциальный криптоанализ и атака на связанные ключи.
Повышения криптоустойчивости можно добиться, увеличивая количество раундов, но это негативно влияет на производительность. Быстродействие алгоритма значительно падает, и становится в несколько раз меньше быстродействия аналогичного криптоустойчивого алгоритма RC5Cryptanalysis of SPEED by Chris Hall , John Kelsey, Vincent Rijmen, Bruce Schneier, David Wagner.
Примечания
Ссылки First International Conference, FC '97, Anguilla, British West Indies, February 24-28, 1997. Proceedings p.71-89 Cryptanalysis of SPEED by Chris Hall , John Kelsey , Vincent Rijmen , Bruce Schneier , David Wagner SEBERRY,J., ZHANG,X. M., AND ZHENG,Y. Nonlinearity and propagation characteristics of balanced boolean functions. Information and Computation 119, 1 (1995).
Категория:Шифры Категория:Сеть Фейстеля