Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Беззатеев и др. Блоковые шифры.pdf
Скачиваний:
245
Добавлен:
02.04.2015
Размер:
1.75 Mб
Скачать

21

Преобразование E( , ) по алгоритму DES не обладает свойствами группы — то есть множество перестановок, определяемое DES при фиксированном ключе K , не является группой: для любых двух ключей K1 , K2 не существует третьего ключа K3 такого, что E(x, K3 ) = E(E(x, K1 ), K2 ) для всех информационных 64-битных блоков x .

Более того, нижняя граница на размер группы множества перестановок алгоритма DES, определяемых различными ключами, составляет 102499 [MOV97]. Это позволяет говорить об эффективности использования DES при многократном шифровании.

3.3.2 Использование метода разностного криптоанализа для DES

В 1990 году Эли Бихам (Eli Biham) и Ади Шамир (Adi Shamir) [BihSh90, BihSh91] ввели определе-

ние разностного криптоанализа. Это был новый метод криптоанализа (следует, однако, отметить, что разработчики DES заявили, что этот метод был известен им еще в 1974 году [Cop92]). Используя этот метод, Бихам и Шамир предложили криптоатаку на алгоритм DES по специальным образом выбранному исходному тексту. Такой криптоанализ оказался более эффективным, чем метод прямого подбора ключа.

При разностном криптоанализе сравниваются пары исходного текста и пары соответствующего зашифрованного текста. Точнее, анализируются такие пары зашифрованного текста, у которых соответствующие им исходные тексты имеют определенное различие. Пара исходных текстов может выбираться случайным образом, требуется лишь определенное различие между текстами в каждой паре, то есть криптоаналитику могут быть неизвестны значения исходных текстов, задается лишь различие одного от другого.

Определенные различия между исходными текстами с большой вероятностью проявляются и при сравнении соответствующих им зашифрованных текстов. Такие различия называются характеристиками. Например [Schn96], если различие между исходными текстами в шестнадцатеричнодесятичном коде — 0080 8200 6000 0000, тогда после первых трех циклов DES (без начальной перестановки) различие между зашифрованными текстами по-прежнему будет 0080 8200 6000 0000

(Рис. 3.4) с вероятностью (14 / 64)2 , или около 5%. Бихам и Шамир нашли множество подобных

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

Такой криптоанализ работает для DES и других алгоритмов подобного типа с постоянными блоками замены. Эффективность криптоанализа существенно зависит от структуры блоков замены, следует заметить, что в алгоритме DES структура этих блоков оказалась оптимальной относительно разностного криптоанализа.

Вопрос о замене DES на новый алгоритм, с более длинным ключом, приобрел особую актуальность после того, как в 1999 году совместные усилия организации EFF (Electronic Frontier Foundation) и фирмы Distributed.Net привели к установлению нового рекорда по вскрытию DES — 22 часа 15 минут. При этом были задействованы 100000 компьютеров энтузиастов, входящих в коалицию, объединенную Distributed.Net и "Deep Crack" — специальный компьютер для вскрытия DES. Был объявлен конкурс на новый федеральный стандарт шифрования, в финал которого вы-

шли пять претендентов (MARS, RC6, Rijndael, Serpent, Twofish), среди которых NIST (Националь-

ный Институт Стандартов) должен был выбрать проект нового стандарта AES (Advanced Encryption Standard). Ниже, в Главе 4, мы приведем краткое описание пяти претендентов на звание AES.

3.4. Алгоритм шифрования FEAL

FEAL (Fast Data Encipherment Algorithm, Быстрый Алгоритм Шифрования Данных) представляет собой целое семейство алгоритмов шифрования (FEAL-4, FEAL-8, FEAL-N, FEAL-NX), сыгравших ключевую роль в разработке и применении различных методов криптоанализа, включая линейный и разностный криптоанализ. FEAL, разработанный сотрудниками японской компании

NTT Akihiro Shimizu и Shoji Miyaguchi [ShiMiy87] в 1987 году, как некоторая модификация DES с

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

22

Рис. 3.4. Характеристика с вероятностью 0,05 для трех циклов алгоритма DES.

Первый успех был достигнут в 1988 году, при использовании криптоатаки с выбором исходного текста [Boer88]. Ответом разработчиков стало увеличение числа циклов в алгоритме до восьми — FEAL-8. Однако и это не решило проблему слабости алгоритма. В 1991 Гилберт (Gilbert) и Чейз (Chase), применив криптоанализ с выбором исходного текста, вскрыли FEAL-8 с использованием лишь 10000 блоков [GilGha91]. Дальнейшее усовершенствование алгоритма происходило как по пути увеличения числа циклов до произвольного числа N , выбираемого по усмотрению пользователя — FEAL-N, так и увеличения длины ключа до 128 бит — FEAL-NX. Достаточно подробно драматическая история семейства алгоритмов FEAL описана в таких энциклопедических книгах по криптографии, как [Schn96] и [MOV97]. Отметим здесь лишь, что разностный криптоанализ позволяет вскрывать FEAL-8, используя только 12 выбранных блоков исходного текста [AokOht95]. Ниже мы приведем краткое описание базового алгоритма FEAL-4.

На Рис. 3.5 приведена блок-схема алгоритма. Ключи, используемые при дешифрации, обозначены в фигурных скобках. Процесс начинается с 64-битного информационного блока (исходного или зашифрованного текста). Сначала информационный блок складывается по модулю два с 64 битами ключа (вопрос о том, каким образом получаются используемые в алгоритме блоки ключа, будет рассмотрен несколько позже — Рис. 3.7). Затем информационный блок разбивается на левую и правую половины. Левая половина складывается по модулю два с правой и обе половины проходят 4 цикла (для FEAL-N число циклов, соответственно, равно N ).

В каждом цикле правая часть комбинируется с 16 битами ключа (используя функцию f ) и скла-

дывается по модулю два с левой половиной, образуя новую правую часть. Исходная правая половина (входная для данного цикла) образует новую левую часть. После 4-х циклов левая часть опять складывается по модулю два с правой частью и образует заключительную часть, которая затем объединяется с заключительной левой частью, образуя полный 64-битный блок. Этот блок складывается по модулю два с другими 64 битами ключа, и алгоритм останавливается.

Функция f использует 32 бита информации и 16 бит ключа и смешивает их вместе. Сначала ин-

формационный блок разбивается на 8-битные подблоки, которые затем складываются по модулю два и замещают друг друга.

23

K8 , K9 , K10, K11

{K12 , K13, K14 , K15}

L0{R8} R0{L8}

K0{K7}

K1{K6} L1{R7} R1{L7}

 

 

 

 

 

 

 

 

K7{K0}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L7{R1}

 

 

 

 

 

 

R7{L1}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R8{L0} L8{R0}

K12 , K13, K14 , K15

{K8 , K9 , K10 , K11}

Рис. 3.5. Один цикл алгоритма FEAL.

Рис. 3.6. Блок-схема функции f .

24

На Рис. 3.6 приведена блок-схема функции f . Функции S0 и S1 определяются следующим образом:

S0 (a,b) = (сдвиг влево на 2 бита (a + b)) mod 256

S1(a,b) = (сдвиг влевона 2 бита (a + b)) mod 256

Этот алгоритм может использоваться как при шифрации, так и при дешифрации. Единственным отличием является то, что при дешифрации ключ должен использоваться в обратном порядке.

Рис. 3.7. Алгоритм получения ключей для FEAL.

На Рис. 3.7 приведена блок-схема функции, генерирующей подблоки ключей для каждого из циклов алгоритма FEAL. Сначала 64-битный ключ разбивается на две половины. Половины склады-

ваются по модулю два и преобразуются с помощью функции fk , как показано на диаграмме. На Рис. 3.8 показана блок-схема функции fk . Два 32-битных входных блока разбиваются на 8-битные блоки, после чего перемешиваются и преобразуются, как показано на рисунке. S0 и S1 определе-

ны ранее. Затем полученные 16-битные блоки ключа используются в алгоритме шифрации/дешифрации.

Рис. 3.8. Функция f , используемая при генерации ключа.

25

3.5.ГОСТ 28147-89 — российский стандарт криптографического преобразования данных

Полное описание алгоритма приведено в ГОСТ 28147-89 "Алгоритм криптографического преобразования данных". Алгоритм может быть использован как в аппаратной, так и в программной реализации. Общая схема алгоритма приведена на Рис. 3.9.

Рис. 3.9. Общая схема алгоритма ГОСТ 28147-89.

Валгоритме используются следующие структурные компоненты:

1.Устройство для хранения ключей, способное хранить 256-битный ключ в восьми 32-битных регистрах.

2.Четыре 32-битных регистра — R1 , R2 , R3 , R4 .

3.Два 32-битных регистра R5 , R6 , которые содержат константы C2 , C1 соответственно.

4.Два 32-битных сумматора по модулю 232 CM1 , CM3 .

5.Побитный сумматор по модулю два (схема ИСКЛЮЧАЮЩЕЕ ИЛИ) ( CM2 ) для двух 32битных слов.

26

6.32-битный сумматор по модулю 232 1 ( CM4 ).

7.Побитный сумматор по модулю два (схема ИСКЛЮЧАЮЩЕЕ ИЛИ) ( CM5 ).

8.Блок замены ( S ).

9.Регистр сдвига с обратной связью ( R ), обеспечивающий сдвиг содержимого на каждом такте на 11 бит влево.

Блок замены ( S ) содержит восемь подблоков замены (S-box) — S1 , S2 , S3 , S4 , S5 , S6 , S7 , S8 , с каждым из которых связан блок памяти объемом в 64 бит. Входной блок из 32 бит разбивается на 8 подблоков по 4 бита каждый. Каждый 4-битный блок преобразуется с помощью своей S-box в соответствующие 4 бита. Каждый подблок замены хранится в памяти как таблица из 16 строк. Нужная строка таблицы выбирается в соответствии с входным 4-битным блоком, который используется как адрес. После преобразования все 4-битные выходные блоки объединяются в блок длиной 32 бита.

Алгоритм использует 256-битный ключ K = (k1,,k256 ) , где ki {0,1} для i =1,,256 . Ключ берется из устройства для хранения ключей, где он хранится в следующей форме:

K0 = (k32 ,,k1 )

K1 = (k64 ,,k33 )

...

K7 = (k256 ,,k225 )

Значения констант C1 и C2 равно соответственно: 224 + 216 + 28 + 22 и 224 + 216 + 28 +1. Значе-

ние ключа K и таблицы блока подстановок S (S-box) являются секретной информацией в этом алгоритме. Ниже в качестве примера в Табл. 3.11 приведены S-box, используемые в Центральном Банке РФ [Shn96].

Подблоки замены (S-box)

S1

S2

S3

S4

S5

S6

S7

S8

 

 

 

 

 

 

 

 

1

2

3

4

5

6

7

8

 

 

 

 

 

 

 

 

4

14

5

7

6

4

3

1

 

 

 

 

 

 

 

 

10

11

8

13

12

11

11

15

 

 

 

 

 

 

 

 

9

4

1

10

7

10

4

13

 

 

 

 

 

 

 

 

2

12

13

1

1

0

1

0

 

 

 

 

 

 

 

 

13

6

10

0

5

7

3

5

 

 

 

 

 

 

 

 

8

13

3

8

15

2

15

7

 

 

 

 

 

 

 

 

0

15

4

9

13

1

5

10

 

 

 

 

 

 

 

 

14

10

2

15

8

13

9

4

 

 

 

 

 

 

 

 

6

2

14

14

4

3

0

9

 

 

 

 

 

 

 

 

11

3

15

4

10

6

10

2

 

 

 

 

 

 

 

 

1

8

12

6

9

8

14

3

 

 

 

 

 

 

 

 

12

1

7

12

14

5

7

14

 

 

 

 

 

 

 

 

7

0

6

11

0

9

6

6

 

 

 

 

 

 

 

 

15

7

0

2

3

12

8

11

 

 

 

 

 

 

 

 

5

5

9

5

11

15

2

8

 

 

 

 

 

 

 

 

3

9

11

3

2

14

12

12

 

 

 

 

 

 

 

 

Табл. 3.11. S-box ГОСТа.