Перестановка с расширением

Эта операция расширяет правую половину данных, Ri, от 32 до 48 битов. Так как при этом не просто повторяются определенные биты, но и изменяется их порядок, эта операция называется перестановкой с расширением. У нее две задачи: привести размер правой половины в соответствие с ключом для операции XOR и получить более длинный результат, который можно будет сжать в ходе операции подстановки. Однако главный криптографический смысл совсем в другом. За счет влияния одного бита на две подстановки быстрее возрастает зависимость битов результата от битов исходных данных. Это называется лавинным эффектом. DES спроектирован так, чтобы как можно быстрее добиться зависимости каждого бита шифротекста от каждого бита открытого текста и каждого бита ключа.

Перестановка с расширением показана на Рис. 12-3. Иногда она называется E-блоком (от expansion). Для каждого 4-битового входного блока первый и четвертый бит представляют собой два бита выходного блока, а второй и третий биты - один бит выходного блока. В Табл. 12-5 показано, какие позиции результата соответствуют каким позициям исходных данных. Например, бит входного блока в позиции 3 переместится в позицию 4 выходного блока, а бит входного блока в позиции 21 - в позиции 30 и 32 выходного блока.

[image]

Рис. 12-3. Перестановка с расширением.

Хотя выходной блок больше входного, каждый входной блок генерирует уникальный выходной блок.

Табл. 12-5.
Перестановка с расширением

32,

1,

2,

3,

4,

5,

4,

5,

6,

7,

8,

9,

8,

9,

10,

11,

12.,

13,

12,

13,

14,

15,

16,

17,

16,

17,

18,

19,

20,

21,

20,

21,

22,

23,

24,

25,

24,

25,

26,

27,

28,

29,

28,

29,

30,

31,

32,

1

Подстановка с помощью S-блоков

После объединения сжатого блока с расширенным блоком с помощью XOR над 48-битовым результатом выполняется операция подстановки. Подстановки производятся в восьми блоках подстановки, или S-блоках (от substitution). У каждого S-блока 6-битовый вход и 4-битовый выход, всего используется восемь различных S-блоков. (Для восьми S-блоков DES потребуется 256 байтов памяти.) 48 битов делятся на восемь 6-битовых подблока. Каждый отдельный подблок обрабатывается отдельным S-блоком: первый подблок - S-блоком 1, второй - S-блоком 2, и так далее. См. Рис. 12-4.

[image]

Рис. 12-4. Подстановка - S-блоки.

Каждый S-блок представляет собой таблицу из 2 строк и 16 столбцов. Каждый элемент в блоке является 4-битовым числом. По 6 входным битам S-блока определяется, под какими номерами столбцов и строк искать выходное значение. Все восемь S-блоков показаны в Табл. 12-6.

Табл. 12-6.
S-блоки

S-блок 1:

14,

4,

13,

1,

2,

15,

11,

8,

3,

10,

6,

12.,

5,

9,

0,

7,

0,

15,

7,

4,

14,

2,

13,

1,

10,

6,

12.,

11,

9,

5,

3,

8,

4,

1,

14,

8,

13,

6,

2,

11,

15,

12,

9,

7,

3,

10,

5,

0,

15,

12,

8,

2,

4,

9,

1,

7,

5,

11,

3,

14,

10,

0,

6,

13,

S-блок 2:

15,

1,

8,

14,

6,

11,

3,

4,

9,

7,

2,

13,

12,

0,

5,

10,

3,

13,

4,

7,

15,

2,

8,

14,

12,

0,

1,

10,

6,

9,

11,

5,

0,

14,

7,

11,

10,

4,

13,

1,

5,

8,

12,

6,

9,

3,

2,

15,

13,

8,

10,

1,

3,

15,

4,

2,

11,

6,

7,

12,

0,

5,

14,

9,

S-блок 3:

10,

0,

9,

14,

6,

3,

15,

5,

1,

13,

12,

7,

11,

4,

2,

8,

13,

7,

0,

9,

3,

4,

6,

10,

2,

8,

5,

14,

12,

11,

15,

1,

13,

6,

4,

9,

8,

15,

3,

0,

11,

1,

2,

12,

5,

10,

14,

7,

1,

10,

13,

0,

6,

9,

8,

7,

4,

15,

14,

3,

11,

5,

2,

12,

S-блок 4:

7,

13,

14,

3,

0,

6,

9,

10,

1,

2,

8,

5,

11,

12,

4,

15,

13,

8,

11,

5,

6.

15,

0,

3,

4,

7,

2,

12,

1,

10,

14,

9,

10,

6,

9,

0,

12,

11,

7,

13,

15,

1,

3,

14,

5,

2,

8,

4,

3,

15,

0,

6,

10,

1,

13,

8,

9,

4,

5,

11,

12,

7,

2,

14,

S-блок 5:

2,

12,

4,

1,

7,

10,

11,

6,

8,

5,

3,

15,

13,

0,

14,

9,

14,

11,

2,

12,

4,

7,

13,

1,

5,

0,

15,

10,

3,

9,

8,

6,

4,

2,

1,

11,

10,

13,

7,

8,

15,

9,

12,

5,

6,

3,

0,

14,

11,

8,

12,

7,

1,

14,

2,

13,

6,

15,

0,

9,

10,

4,

5,

3,

S-блок 6:

12,

1,

10,

15,

9,

2,

6,

8,

0,

13,

3,

4,

14,

7,

5,

11,

10,

15,

4,

2,

7,

12,

9,

5,

6,

1,

13,

14,

0,

11,

3,

8,

9,

14,

15,

5,

2,

8,

12,

3,

7,

0,

4,

10,

1,

13,

11,

6,

4,

3,

2,

12,

9,

5,

15,

10,

11,

14,

1,

7,

6,

0,

8,

13,

S-блок 7:

4,

11,

2,

14,

15,

0,

8,

13,

3,

12,

9,

7,

5,

10,

6,

1,

13,

0,

11,

7,

4,

9,

1,

10,

14,

3,

5,

12,

2,

15,

8,

6,

1,

4,

11,

13,

12,

3,

7,

14,

10,

15,

6,

8,

0,

5,

9,

2,

6,

11,

13,

8,

1,

4,

10,

7,

9,

5,

0,

15,

14,

2,

3,

12,

S-блок 8:

13,

2,

8,

4,

6,

15,

11,

1,

10,

9,

3,

14,

5,

0,

12,

7,

1,

15,

13,

8,

10,

3,

7,

4,

12,

5,

6,

11,

0,

14,

9,

2,

7,

11,

4,

1,

9,

12,

14,

2,

0,

6,

10,

13,

15,

3,

5,

8,

2,

1,

14,

7,

4,

10,

8,

13,

15,

12,

9,

0,

3,

5,

6,

11

Входные биты особым образом определяют элемент S-блока. Рассмотрим 6-битовый вход S-блока: b1, b2, b3, b4, b5 и b6. Биты b1 и b6 объединяются, образуя 2-битовое число от 0 до 3, соответствующее строке таблицы. Средние 4 бита, с b2 по b5, объединяются, образуя 4-битовое число от 0 до 15, соответствующее столбцу таблицы.

Например, пусть на вход шестого S-блока (т.е., биты функции XOR с 31 по 36) попадает 110011. Первый и последний бит, объединяясь, образуют 11, что соответствует строке 3 шестого S-блока. Средние 4 бита образуют 1001, что соответствует столбцу 9 того же S-блока. Элемент S-блока 6, находящийся на пересечении строки 3 и столбца 9, - это 14. (Не забывайте, что строки и столбцы нумеруются с 0, а не с 1.) Вместо 110011 подставляется 1110.

Конечно же, намного легче реализовать S-блоки программно в виде массивов с 64 элементами. Для этого потребуется переупорядочить элементы, что не является трудной задачей. (Изменить индексы, не изменяя порядок элементов, недостаточно. S-блоки спроектированы очень тщательно.) Однако такой способ описания S-блоков помогает понять, как они работают. Каждый S-блок можно рассматривать как функцию подстановки 4-битового элемента: b2 по b5являются входом, а некоторое 4-битовое число - результатом. Биты b1 и b6 определяются соседними блоками, они определяют одну из четырех функций подстановки, возможных в данном S-блоке.

Подстановка с помощью S-блоков является ключевым этапом DES. Другие действия алгоритма линейны и легко поддаются анализу. S-блоки нелинейны, и именно они в большей степени, чем все остальное, обеспечивают безопасность DES.

В результате этого этапа подстановки получаются восемь 4-битовых блоков, которые вновь объединяются в единый 32-битовый блок. Этот блок поступает на вход следующего этапа - перестановки с помощью P-блоков.