Алгоритм Square, Шифрование информации. Структура алгоритма

Пользователям

Вебмастерам

Безминималки

Автовыплота

Карта сайта

 

Главная страница

Меню :

Главная страница +

Криптография -

Rijndael

ГОСТ №28147-89

Akelare

Anubis

Mars

RC6

Blowfish

Skipjack

Square

Статьи +

Документальные фильмы +

Экстракт здоровья +

 

      Square.

      Алгоритм Square разработан теми же специалистами, которые впоследствии создали алгоритм AES. Именно структура алгоритма Square легла в основу алгоритма Rijndael. Структура алгоритма весьма нетрадиционна для современных алгоритмов симметричного шифрования данных - это справедливо как для 1997 г., когда был разработан алгоритм Square, так и для 2000-го, когда при подведении итогов конкурса AES эксперты отмечали, что "в основе алгоритма Rijndael лежит нетрадиционная парадигма, поэтому алгоритм может содержать скрытые уязвимости". Это не помешало Rijndael стать новым стандартом шифрования США, а та самая нетрадиционная структура сейчас называется "квадрат" (square) - по названию алгоритма, в котором она была впервые применена.
     

 

      Структура алгоритма.

 

      Алгоритм Square шифрует данные блоками по 128 бит, длина ключа также составляет 128 бит. 128-битный блок данных представляется в виде двухмерного байтового массива (таблицы) размером 4x4 - отсюда и название алгоритма. Текущее значение байтового массива в спецификации алгоритма называется состоянием (state). Над состоянием выполняется восемь раундов преобразований, каждый из которых состоит из следующих операций:

1. Линейное преобразование q, выполняющееся раздельно над каждой из строк таблицы (рис. 1):
q : bi,j = cjai,0 (+) cj-1ai,1 (+) cj-2ai,2 (+) cj-3ai,3,
где ai,j - текущее значение байта состояния, принадлежащего i-й строке и j-му столбцу; bi,j - новое значение байта состояния; cn - набор констант, определенных в спецификации алгоритма; (+) - логическая операция "исключающее или" (XOR); умножение выполняется по модулю 28.

 

a00

a01

a02

a03

a10

a11

a12

a13

a20

a21

a22

a23

a30

a31

a32

a33

             --->              

b00

b01

b02

b03

b10

b11

b12

b13

b20

b21

b22

b23

b30

b31

b32

b33

Рис. 1. Операция q алгоритма Square

2. Нелинейное преобразование, представляющее собой табличную замену (рис. 2):
g : bi,j = S(ai,j).

 

 

a00

a01

a02

a03

a10

a11

a12

a13

a20

a21

a22

a23

a30

a31

a32

a33

             S(ai,j)              

b00

b01

b02

b03

b10

b11

b12

b13

b20

b21

b22

b23

b30

b31

b32

b33

Рис. 2. Операция g алгоритма Square

Замена реализуется в соответствии с табл. 1 (в ней указаны шестнадцатеричные значения).

Таблица1.

 

 

4 бита

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

 

 

 

 

 

4

б

и

т

а

 

 

 

 

 

1

78

48

21

...

23

11

67

89

55

34

99

87

65

43

33

44

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

фиксированная таблица от 0 до 255

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример: берем 1 байт входного массива равный "0" и заменяем его по таблице 3 на значение "78".

              берем 2 байт входного массива равный "11" и заменяем его по таблице 3 на значение "99".

             .......

              берем 8 байт входного массива равный "8" и заменяем его по таблице 3 на значение "89".

 

3. Байтовая перестановка p, простейшим образом преобразующая строку состояния в столбец (рис. 3):
p : bi,j = aj,i.

a00

a01

a02

a03

a10

a11

a12

a13

a20

a21

a22

a23

a30

a31

a32

a33

               ---->            

a00

a10

a20

a30

a01

a11

a21

a31

a02

a12

a22

a32

a03

a13

a23

a33

Рис. 3. Операция p алгоритма Square.

 

4. Операция s, представляющая собой побитовое сложение состояния с ключом раунда (рис. 4):
s : b = a (+) Kt,
где a и b - значение всего массива состояния соответственно до и после преобразования, а Kt - ключ текущего раунда t (процедура формирования ключей раунда описана ниже).

a00

a01

a02

a03

a10

a11

a12

a13

a20

a21

a22

a23

a30

a31

a32

a33

(+)
побитовое
сложение

K00

K01

K02

K03

K10

K11

K12

K13

K20

K21

K22

K23

K30

K31

K32

K33

   =      

b00

b01

b02

b03

b10

b11

b12

b13

b20

b21

b22

b23

b30

b31

b32

b33

Рис. 4. Операция s алгоритма Square.

 

      Помимо восьми раундов описанных преобразований, перед первым раундом выполняется "нулевой" раунд, состоящий из обратного линейного преобразования q-1 и наложения ключа нулевого раунда K0 операцией s.

      Расшифрование данных выполняется аналогично зашифрованию, но с использованием обратных операций g-1 и q-1 вместо g и q. И наоборот, в нулевом раунде используется прямое преобразование q вместо обратного q-1. Операция g-1 представляет собой обратную замену, а q-1 предполагает использование вместо констант cn набора констант dn, приводящих к обратному результату и также определенных в спецификации алгоритма.

 

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

Задача процедуры расширения ключа состоит в получении восьми 128-битных ключей раунда и ключа K0 из 128-битного ключа шифрования алгоритма. Расширение ключа выполняется следующим простым преобразованием:
Kt = y(Kt-1).
Операция y представляет собой набор функций, с помощью которых вычисляются ключи раунда (рис. 5):
k0,t+1 = k0,t (+) rotl(k3,t) (+) Ct,
k1,t+1 = k1,t (+) k0,t+1,
k2,t+1 = k2,t (+) k1,t+1,
k3,t+1 = k3,t (+) k2,t+1,
где kn,t - n-я строка (аналогично состоянию, ключ раунда представляется в виде байтовой таблицы 4x4) ключа t-го раунда Kt; Ct - набор итеративно вычисляемых констант, а rotl() - операция циклического сдвига байтовой строки на один байт влево.

 

Рис. 5. Операция y алгоритма Square.

 

      В качестве начального значения K0 используется исходный ключ шифрования алгоритма.

 

Достоинства и недостатки алгоритма:

 

      В спецификации алгоритма Square авторы привели строгое математическое обоснование операций алгоритма, которые выбирались исходя из требований высокой криптостойкости к линейному и дифференциальному криптоанализу (см. "Атаки на алгоритмы шифрования", "BYTE/Россия" № 11'2004). Кроме того, там же описаны возможные атаки на данный алгоритм, наиболее интересная из которых позволяет вскрыть шестираундовый вариант алгоритма путем выполнения 272 операций шифрования при наличии 232 блоков открытого текста и соответствующих им блоков шифртекста.
      Все приведенные атаки позволяют вскрыть только "урезанные" (с уменьшенным числом раундов) варианты алгоритма Square. Авторы алгоритма не обнаружили никаких атак на полнораундовый алгоритм. Однако они предостерегают потенциальных пользователей Square от использования алгоритма, не прошедшего полного изучения специалистами на предмет отсутствия уязвимостей.

 

 

 

О Сущности, Разуме и многом другом... – сайт академика Николая Левашова. Этот сайт содержит Знания. Уникальные Знания, которые, до сих пор, не были доступны всем желающим. Это Знания о загадках Жизни, о строении Вселенной, о Сущности, Разуме и многом другом...    ->

Яндекс.Метрика