145. Противодействие методам социальной инженерии



страница7/27
Дата29.11.2016
Размер1.54 Mb.
Просмотров6762
Скачиваний0
1   2   3   4   5   6   7   8   9   10   ...   27

2.3. Whirlpool


Whirlpool разработан Винсентом Риджменом (Vincent Rijmen) и Пауло Баретто (Paolo Barreto). Он одобрен европейской организацией NESSIE ( New European Schemes for Signature, Integrity and Encryption - Новые европейские схемы подписей, целостности и шифрования ).

Whirlpool - итеративная функция криптографического хэширования, основанная на схеме Миагучи-Пренеля, которая использует блочный шифр с симметричными ключами вместо функции сжатия. Блочный шифр в данном случае является измененным шифром AES, который был приспособлен для этой цели. рис. 2.12 показывает хэш-функции Whirlpool.




увеличить изображение
Рис. 2.12.  Whirlpool хэш-функция

Подготовка

Перед стартом алгоритма хэширования сообщение должно быть готово к процессу. Whirlpool требует, чтобы длина первоначального сообщения была меньше, чем 2256 бита. Сообщение должно быть дополнено прежде, чем начать обработку. Дополнение содержит единственный бит, равный 1, а затем следует необходимое чисел нулевых битов, чтобы сделать длину дополнения нечетным числом, кратным 256 битам. После дополнения добавляется блок 256 битов, чтобы указать длину первоначального сообщения. Этот блок обрабатывается как число без знака.

После дополнения первоначального сообщения и присоединения поля длины увеличенный размер сообщения становится кратным 256 битам или кратным 512 битам. Whirlpool создает дайджест 512 из сообщения, состоящего из многих блоков по 512 бит. Дайджест из 512 бит, H0, начинается всеми нулями. Это становится ключом шифра для шифрования первого блока. Из зашифрованного текста каждого зашифрованного блока получают ключ шифра для следующего блока после того, как его складывают по модулю два с предыдущим ключом шифра и блоком исходного текста. Дайджест сообщения - конечный зашифрованный текст на 512 битов после последней операции ИСКЛЮЧАЮЩЕЕ ИЛИ.

Шифр Whirlpool


Шифр Whirlpool - шифр не-Файстеля, похож на AES и был главным образом, разработан как блочный шифр, который используется в алгоритме хэширования. Вместо того чтобы дать полное описание этого шифра, мы будем исходить из того, что читатель знаком с AES по материалам Главы 7. Ниже только приводится сравнение шифра Whirlpool с шифром AES и отмечается их отличие.

Раунды

Whirlpool - шифр, который использует 10 раундов. Размер блока и ключевой размер - 512 битов. Шифр применяет 11 ключей раунда K0 - K10, каждый по 512 битов. рис. 2.13 показывает общий вид процесса шифрования шифром Whirlpool.




Рис. 2.13.  Общая идея шифра Whirlpool

Матрицы состояний и блоки

Подобно шифру AES, шифр Whirlpool использует матрицы состояний и блоки. Однако размер блока или матрицы состояний - 512 битов. Блок рассматривается как строка матрицы длиной 64 байта; матрица состояний - как квадратная матрица8 x 8 байтов. В отличие от AES преобразование "блок - матрица состояний" или "матрица состояний - блок" происходят строка за строкой. рис. 2.14 показывает блок, матрицу состояний и преобразование в шифр Whirlpool.




увеличить изображение
Рис. 2.14.  Блок и матрица состояний шифра Whirlpool

Структура каждого раунда

Рис. 2.15 показывает структуру каждого раунда. Каждый раунд использует четыре преобразования.




увеличить изображение
Рис. 2.15. 

SubBytes. Подобно AES, SubBytes обеспечивает нелинейное преобразование. Байт представлен как две шестнадцатеричных цифры. Левая цифра определяет строку, а правая - столбец таблицы подстановки. Две шестнадцатеричных цифры в пересечении строки и столбца - новый байт. рис. 2.16 иллюстрирует идею.




увеличить изображение
Рис. 2.16.  Преобразование SubBytes шифра Whirlpool

В преобразовании SubBytes матрица состояний обрабатывается как матрица байтов 8 x 8. Преобразование делается одновременно только с одним байтом. Содержание каждого байта изменяется, но порядок следования байтов в матрице остается тем же самым. В процессе каждый байт преобразуется независимо; мы имеем 64 различных преобразований байт-к-байту.



Таблица 2.4 показывает таблицу подстановки (S-блок) для преобразования подбайтов. Преобразование обеспечивает эффект перемешивания. Например, два байта, 5A16 и 5B16, которые отличаются только одним битом (самый правый бит), преобразованы к 5B16 и 8816, которые отличаются пятью битами.

Таблица 2.4. Таблица преобразования SubBytes (S-Box)







0

/

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

18

23

C6

E8

87

B8

01

4F

36

A6

D2

F5

79

6F

91

52

1

16

BC

9B

8E

A3

0C

7B

35

1D

E0

D7

C2

2E

4B

FE

57

2

15

77

37

E5

9F

F0

4A

CA

58

C9

29

0A

B1

A0

6B

85

3

BD

5D

10

14

CB

3E

05

67

E4

27

41

8B

A7

7D

95

C8

4

FB

EF

7C

66

DD

17

47

9E

CA

2D

BF

07

AD

5A

83

33

5

63

02

AA

71

C8

19

49

C9

F2

E3

5B

88

9A

26

32

BO

6

E9

OF

D5

80

BE

CD

34

48

FF

7A

90

5F

20

68

1A

AE

7

B4

54

93

2'2

64

F1

73

12

40

08

C3

EC

DB

A1

8D

3D

8

97

00

CF

:B

76

82

D6

1B

B5

AF

6A

50

45

F3

30

EF

9

3F

55

A2

EA

65

BA

2F

CO

DE

1C

FD

4D

92

75

06

8A

A

B2

E6

OE

F

62

D4

A8

96

F9

C5

25

59

84

72

39

4C

B

5E

7S

38

8C

C1

A5

E2

61

B3

21

9C

1E

43

C7

FC

04

C

51

99

6D

0D

FA

DF

7E

24

3B

AB

CE

11

8F

4E

B7

EB

D

3C

S1

94

'-7

9B

13

2C

D3

E7

6E

C4

03

56

44

7E

A9

E

2A

BB

C1

53

DC

OB

9D

6C

31

74

F6

46

AC

89

14

E1

F

16

3A

69

09

70

B6

CO

ED

CC

42

98

A4

28

5C

F8

86

Входы в табл. 2.4 могут быть вычислены алгебраически, используя поле G(24) с неприводимым полиномом (x4 + x + 1), как показано на рис. 2.17. Каждая шестнадцатеричная цифра в байте вводится в миниблок ( E и E-1 ). Результаты передаются в другой миниблок R. E -блоки вычисляют степень, равную шестнадцатеричному значению входа; R -миниблок использует псевдослучайный генератор чисел.




увеличить изображение
Рис. 2.17.  Операция SubBytes шифра Whirlpool

E-1 -блок - это только инверсия E -блока, где роли входов и выходов изменились. Значения входа-выхода для блоков сведены в таблицу на рис. 2.17.



ShiftColumns . Чтобы обеспечить перестановку, Whirlpool использует преобразование ShiftColumns , которое является подобным преобразованию ShiftRows в AES, за исключением того, что вместо строк сдвигаются столбцы. Смещение зависит от позиции столбца. Столбец 0 сдвигается на 0 байтов (смещения нет), в то время как столбец 7 сдвигается на 7 байтов. рис. 2.18 показывает преобразование смещения.




Рис. 2.18.  Преобразование ShiftColumns шифра Whirlpool

MixRows.Преобразование MixRows имеет тот же самый эффект, что и преобразование MixColumns в AES: оно рассеивает биты. Преобразование MixRows - матричное преобразование, где байты интерпретируются как слова по 8 битов (или полиномы) с коэффициентами в GF(28). Умножение байтов проводится в GF(28), но модуль отличается от используемого в AES. Шифр Whirlpool применяет ( 0x11 D ) или ( x+ x4 + x3 + x2 + 1 ) как модуль. Сложение слов по 8 битов - то же самое, что ИСКЛЮЧАЮЩЕЕ ИЛИ. На рис. 2.19 представлено преобразование MixRows.




увеличить изображение
Рис. 2.19.  Преобразование MixRows шифра Whirlpool

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



AddRoundKey. Преобразование AddRoundKey в шифре Whirlpool делается байт за байтом, потому что каждый ключ раунда - матрица состояний 8 x 8 байт. рис. 2.20 показывает этот процесс. Байт матрицы состояний данных складывается в поле GF(28) с соответствующим байтом матрицы состояний ключей раунда. Результат - новый байт в новой матрице состояний.




увеличить изображение
Рис. 2.20.  Преобразование AddRoundKey шифра Whirlpool
Расширение ключа

Как показывает рис. 2.21, алгоритм расширения ключей в Whirlpool полностью отличается от алгоритма в AES. Вместо того чтобы применять новый алгоритм создания ключей раунда, Whirlpool использует копию алгоритма шифрования (без предраунда), чтобы создать ключи раунда. Выход каждого раунда в алгоритме шифрования есть ключи для этого раунда. На первый взгляд это напоминает определение, где ключи раунда для алгоритма расширения ключа получаются из него самого. Откуда получается алгоритм расширения? Whirlpool изящно решил эту проблему, используя десять констант раунда ( RC ) как виртуальные ключи раунда для алгоритма расширения ключей. Другими словами, алгоритм расширения ключей применяет константы как ключи раунда. Алгоритм шифрования использует выход каждого раунда алгоритма расширения ключей как ключи раунда. Алгоритм генерирования ключей обрабатывает ключ шифра как исходный текст и зашифровывает его. Обратите внимание, что ключ шифра - также К0 для алгоритма шифрования.




увеличить изображение
Рис. 2.21.  Расширение ключа шифра Whirlpool

Константы раунда. Каждая константа раунда RCr является матрицей 8 x 8, где только первая строка имеет значения, отличные от нуля. Остальная часть входов содержит все нули. Значения для первой строки в каждой матрице констант могут быть вычислены, используя преобразование SubBytes ( табл. 2.4).

RC round[строка, столбец] = Subbytes (8 (round -1) + столбец) если строка = 0

RCround [строка, столбец] = 0 если строка ^ 0

Другими словами, RC1 использует первые восемь входов в таблице преобразования SubBytes ( табл. 2.4); RC2 использует вторые восемь входов, и т. д. рис. 2.22 показывает пример RC3, где первая строка - третьи восемь входов в таблицеSubBytes.




Рис. 2.22.  Константы для третьего раунда

Итоги шифра Whirlpool.


В табл. 2.5 приведены основные характеристики шифра Whirlpool.

Таблица 2.5. Основные характеристики шифра Whirlpool

Размер блока: 512 бит

Размер ключа шифра: 512 бит

Число раундов: 10

Расширение ключа: использование шифра непосредственно с константами раунда в качестве ключей раунда

Подстановка: Преобразование SubBytes

Перестановка: Преобразование ShiftColumns

Смешивание: Преобразование MixRows

Константы раунда: кубические корни первых восьмидесяти простых чисел

Анализ


Хотя Whirlpool не был всесторонне изучен или проверен, он базируется на устойчивой схеме Миагучи-Пренеля - (Miyaguchi-Preneel), а для функции сжатия использует шифр, который основан на AES, относительно которой было доказано, что эта криптографическая система - очень стойкая к атакам. Кроме того, размер дайджеста сообщения тот же, что и в SHA-512. Поэтому, как ожидается, Whirlpool будет очень сильной функцией криптографического хэширования. Однако необходимы серьезные испытания и исследования, чтобы подтвердить это. Единственный установленный недостаток - Whirlpool, который использует шифр как функцию сжатия, не может быть так же эффективен, как SHA-512, особенно когда он реализуется на аппаратных средствах.
149. Поточные шифры и генераторы псевдослучайных чисел.




Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   10   ...   27


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал