Алгоритм SC2000

разработан в 2000 г. группой японских специалистов из компании Fujitsu Laboratories и Университета г. Токио.

имеет три фиксированных размера ключа шифрования: 128, 192 и 256 битов.

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

Алгоритм представляет собой SP-сеть; в нем выполняются 7 раундов преобразований при использовании 128-битного ключа или 8 раундов при использовании ключей больших размеров. Раунд алгоритма имеет достаточно сложную структуру; первый раунд показан на рис. 3.182. В нем выполняются следующие операции [357]:

1.    Входное 128-битное значение делится на 4 субблока по 32 бита, на каждый из которых операцией XOR накладывается соответствующий 32-битный фрагмент расширенного ключа (процедура расширения ключа будет описана далее), в этом случае — фрагменты к0…к3.

2.     Затем выполняется операция TQ, которая переразбивает блок данных на 32 субблока по 4 бита каждый. Переразбиение выполняется так (рис. 3.183): i-й 4-битный субблок (обозначим его о{) формируется из четырех /-х битов субблоков a,b, с и d.

3. Каждый 4-битный субблок «прогоняется» через таблицу замен 54: входное 4-битное значение заменяется выходным того же размера согласно табл. 3.113.

Таблица 3.113

2

5

10

12

7

15

1

11

13

6

0

9

4

8

3

14

То есть значение 0 заменяется значением 2, значение 1 меняется на 5 и т. д.

4. Обрабатываемый блок данных снова переразбивается на 32-битные субблоки с помощью операции Г'(), которая, фактически, является обратной к операции Т{) — см. рис. 3.184 (на рис. 4-битные субблоки обозначены как Ю…731).

5.     С помощью операции XOR выполняется наложение еще четырех фрагментов расширенного ключа; для первого раунда это фрагменты /:4…/:7.

6.     Значения субблоков С и D (а также маскирующая константа М5 = 55555555, указано шестнадцатеричное значение) подаются на вход функции F(), которая будет подробно описана далее. В результате выполнения этой функции получаются два 32-битных значения, которые накладываются операцией XOR на субблоки Aw В.

7.     Субблоки А и В меняются местами с субблоками С и D соответственно, после чего повторно выполняется шаг 6.

Упомянутая выше функция F() обрабатывает два входных 32-битных субблока следующим образом (рис. 3.185):

1.     Каждое из входных 32-битных значений разбивается на 6 фрагментов, два из которых являются 6-битными, а остальные имеют размер по 5 битов.

2.     6-битные фрагменты «прогоняются» через таблицу замен 56 (см. табл. 3.114), а 5-битные обрабатываются таблицей 55 (см. табл. 3.115).

Таблица 3.114

47

59

25

42

15

23

28

39

25

38

36

19

60

24

29

56

37

63

20

61

55

2

30

44

9

10

6

22

53

48

51

11

62

52

35

18

14

46

0

54

17

40

27

4

31

8

5 ‘

12

3

16

41

34

33

7

45

49

50

58

1

21

43

57

32

13

Таблица 3.115

20

26

7

31

19

12

10

15

22

30

13

14

4

24

9

18

27

И

1

21

6

16

2

28

23

5

8

3

0

17

29

25

Принцип действия этих таблиц аналогичен таблице 54.

3. Полученные после замены значения снова объединяются в 32-битные субблоки, каждый из которых обрабатывается операцией М(); данная операция выполняет умножение 32-битного входного значения (представленного в виде вектора) на матрицу размером 32 х 32 битов, которая представлена в табл. 3.116.

Таблица 3.116

D0C19225

А5А2240А

1B84D250

В728А4А1

6А704902

85DDDBE6

766FF4A4

ECDFE128

AFD13E94

DF837D09

BB27FA52

695059АС

52А1ВВ58

CC322F1D

1844565В

B4A8ACF6

34235438

6847А851

Е48С0СВВ

CD181136

9А112А0С

43EC6D0E

87D8D27D

487DC995

90FB9B4B

A1F63697

FC513ED9

78A37D93

8D16C5DF

9Е0С8ВВЕ

3C381F7C

E9FB0779

4.      На первое из 32-битных значений, полученных после обработки субблоков операцией Л/(), с помощью логической побитовой операции «и» (&) накладывается маскирующая константа (на рис. 3.185 обозначенная М). На второе значение аналогичным образом накладывается константа М’ — побитовый комплемент к М.

5.     Два выходных значения (обозначим их Out\ и Out2) получаются в результате выполнения следующих действий:

где VI и V2 — значения, полученные после обработки 32-битных субблоков операцией М().

Как было сказано выше, в алгоритме выполняются 7 раундов преобразований при использовании 128-битных ключей или 8 раундов при использовании ключей размером 192 или 256 битов. В каждом раунде используется по 8 различных 32-битных фрагментов расширенного ключа. Раунды незначительно различаются между собой в следующем:

?      в каждом четном раунде (считая, что раунды нумеруются с 1-го) вместо описанной выше маскирующей константы М5 используется константа Мъ =33333333 (шестнадцатеричное значение);

?      в последнем раунде не выполняются шаги 6 и 7 описанной выше последовательности действий для первого раунда.

Расшифровывание

Расшифровывание данных алгоритмом SC2000 весьма похоже на зашифро- вывание, за исключением следующих моментов:

?      фрагменты расширенного ключа применяются в обратной последовательности, т. е. в первом раунде (при использовании 128-битного ключа) операцией XOR накладываются сначала подключи к52…к55, а затем — к4%…к51 и т. д. в следующих раундах расшифровывания;

?      маскирующие константы используются в обратной последовательности, т. е. Л/3 в нечетных раундах и М5 — в четных;

?      вместо таблицы 54 используется обратная ей таблица, которая выглядит следующим образом (табл. 3.117).

Таблица 3.117

10

6

0

14

12

1

9

4

13

11

2

7

3

8

15

5

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

Расширение ключа выполняется в два этапа: сначала на основе ключа шифрования вычисляется промежуточный ключ, после чего из промежуточного ключа вычисляется требуемое количество фрагментов расширенного ключа.

Прежде всего ключ шифрования используется для инициализации начального ключевого массива ык^…ык7 следующим образом:

?      256-битный ключ просто разбивается на 32-битные фрагменты ик0…ик7;

?      192-битный ключ делится на фрагменты ик0…ик5, два остальных фрагмента инициализируются так:

?      128-битный ключ разбивается на фрагменты ик0…ик3, фрагменты ик4…ик7 эквивалентны фрагментам ик0….ик3.

Рис. 3.186. Процедура генерации промежуточных ключей алгоритма SC2000

Затем с помощью процедуры генерации промежуточных ключей, показанной на рис. 3.186, вычисляется набор промежуточных ключей: a0…a2, b0.vb2, с0…с2 и d0…d2. Процедура повторяется 12 раз по количеству вычисляемых промежуточных ключей. Входные и выходные параметры этой процедуры определяются согласно табл. 3.118.

Таблица 3.118

Вход 1

Вход 2

Вход 3

Выход

4*/

ик0

икх

ahi = 0..2

4 * / +1

ик2

икъ

bhi = 0…2

4*/ + 2

икА

ик5

chi = 0…2

4*/ + 3

ик6

uk-j

dni = 0…2

Для каждой группы промежуточных ключей в цикле по i- 0…2 процедура выполняет следующие действия:

1.     Каждый из трех входов обрабатывается функцией SQ, которая осуществляет «прогон» 32-битного фрагмента данных через описанные выше таблицы замен S5 и 56 — см. рис. 3.185.

2.     Результаты предыдущего шага обрабатываются описанной выше функцией М().

3.     Первый из фрагментов, полученных на предыдущем шаге (т. е. результат обработки функциями 5() и М() первого входа), складывается со вторым по модулю 232.

4.     Третий из фрагментов, полученных на шаге 2, умножается на значение i +1 по модулю 232.

5.     Результаты шагов 3 и 4 объединяются операцией XOR.

6.      Результат предыдущего шага обрабатывается функцией 5(), а затем — функцией М (), в результате чего получается выходное значение.

После этого из промежуточного ключа вычисляются фрагменты расширенного ключа выполнением в цикле по п от 0 до 55 (для 192- и 256-битных ключей шифрования — в цикле от 0 до 63) процедуры, показанной на рис. 3.187. В качестве входных значений процедура берет 4 различных фрагмента промежуточного ключа (будет описано далее), над которыми выполняются следующие действия:

1.     Первое входное значение циклически сдвигается влево на 1 бит.

2.     Аналогично сдвигается третье входное значение.

3.     Результат шага 1 складывается со вторым входным значением по модулю 232.

4.      Из результата шага 2 вычитается по модулю 2 четвертое входное значение.

Рис. 3.187. Генерация фрагментов расширенного ключа алгоритма SC2000

5.    Результат предыдущего шага циклически сдвигается влево на 1 бит.

6.     Результаты шагов 3 и 5 объединяются операцией XOR, что и дает выходное значение.

Выходным значением данной процедуры является п-й 32-битный фрагмент расширенного ключа. Входные значения определяются следующими таблицами, первая из которых (табл. 3.119) определяет группу промежуточных ключей (т. е. а/, ^, ct или d{), из которой берется конкретное входное значение.

Таблица 3.119

t

Вход 1

Вход 2

Вход 3

Вход 4

0

Я/

bi

 

di

1

bi

ai

di

Ci

2

ci

di

ai

bi

3

di

*

ci

bi

ai

4

ai

ci

di

bi

5

bi

di

ci

ai

6

ci

ai

bi

di

7

di

bi

<*i

c<

8

ax

di

bi

Ci

9

bi

ci

ai

di

10

ci

bi

di

«;

11

di

ai

ci

bi

Параметр t определяется из п следующим образом:

Вторая таблица (табл. 3.120) определяет индекс i фрагмента промежуточного ключа для конкретного входа.

Таблица 3.120

n mod 9

Вход 1

Вход 2

Вход 3

Вход 4

0

0

0

0

0

1

1

1

1

1

2

2

2

2

2

3

0

1

0

1

4

1

2

1

2

5

2

0

2

0

6

0

2

0

2

7

1

0

1

0

8

2

1

2

1

Криптоанализ алгоритма

не вышел во второй раунд конкурса NESSIE {см. разд. 2.2) — с одной стороны, у алгоритма достаточная криптостойкость (известны лишь методы вскрытия вариантов алгоритма SC2000 с уменьшенным количеством раундов— например, описанные в [139] и [318]) и неплохое быстродействие. С другой стороны, алгоритм имеет весьма сложную структуру, преимущества которой недостаточно убедительно обоснованы в спецификации алгоритма. Опасаясь скрытых слабостей и возможных недокументированных особенностей алгоритма, эксперты не выбрали этот алгоритм во второй раунд [308].

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100