Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СТТС_Лекция_18.doc
Скачиваний:
4
Добавлен:
13.09.2019
Размер:
325.63 Кб
Скачать

Симетричні криптоалгоритми des, аes

DES

Одним з найвідоміших криптостандартів є стандарт DES (Data Eucryption Standard). У 80-х роках він був прийнятий у США як федеральний стандарт симетричного криптоалгоритму для внутрішнього застосування і опублікований.

Цей алгоритм був розроблений фірмою ІВМ і належить до шифрів збивання (перестановка плюс логічні операції). В ньому застосовується 64-бітний ключ. На сьогоднішній день цей алгоритм уже не задовольняє сучасні вимоги до криптографічних алгоритмів. Так, у ньому використовується недостатня величина ключа (перебір — 7×1016 операцій), а також однакові зашифровані дані мають однаковий вигляд.

На сьогодні DES і його версія Trіple DES (TDEA — Triple Data Encryption Algorithm) застосовуються в багатьох комерційних продуктах.

Розвитком DES є метод IDEA (Improved Proposed Encryption Standard) — покращений стандарт шифрування, розроблений Джеймсом Мессі 1990 року, в якому використовується 128-біт­ний ключ.

AES

1997 року Американський інститут стандартизації (NІST) оголосив конкурс на новий стандарт симетричного криптоалгоритму. Конкурс отримав назву Advanced Encryptіon Standard (AES). У ньому взяли участь найбільші криптологічні центри світу. Переможцем став алгоритм шифрування Rіjndael, розроблений бельгійськими криптологами, який у 2001 році був затверджений як офіційний стандарт.

В AES специфіковано довжину вхідного блока даних — 128 біт (кількість стовпців масиву State — Nb = 4). Ключ може бути довжиною 128, 192 або 256 біт (кількість стовпців масиву Cipher Nk = 4, 6 або 8).

На рис. 2 подано псевдокод для шифрування за алгоритмом Rіjndael.

Cipher (byte in [4*Nb], byte out [4*Nb], word w [Nb*(Nr+1)])

begin

byte state [4, Hb]

state = in

AddRoundKey (state, w[0, Nb–1])

for round = 1 step 1 to Nr–1

SubBytes (state)

ShiftRows (state)

MixColumns (state)

AddRoundKey (state, w[round*Nb, (round+1) *Nb–l])

end for

SubBytes(state)

ShiftRows; (state)

AddRoundKey (state, w[Nr*Nb, (Nr+3)*Mb–l])

out = state

end

Рис. 2. Шифрування за алгоритмом Rіjndael

На початку шифрування (розшифровування) вхідний блок даних (In) переписується в масив State (рис. 3) за такими правилами:

S[r,c] = In[r+4c],

де 0  r < 4, 0  c < Nb.

Після закінчення шифрування (розшифровування) масив State переписується у вихідний масив Out (див. рис. 16.1) за такими правилами:

Out[r+4c] = S[r,c],

де 0  r < 4, 0  c < Nb.

Рис. 3. Вхідний, робочий та вихідний масиви

Усі кроки алгоритму повторюються кілька разів (раундів). Кількість раундів залежить від довжини ключа і може бути відповідно Nr = 10, 12 або 14.

Кожний раунд (як для зашифровування, так і розшифровування інформації) містить функцію, що складається з чотирьох байт-орієнтованих трансформацій — SubBytes(), ShіftRows(), MіxColumns(), AddRoundKey().

1. SubBytes() — таблична підстановка — операції здійснюються з кожним байтом таблиці State з використанням матриці S-Box (рис. 4, 5).

Рис. 4. Трансформація SubBytes()

y

0

1

2

3

4

5

6

7

8

9

a

b

c

d

e

f

x

0

63

7c

77

7b

f2

6b

6f

c5

30

01

67

2b

fe

d7

ab

76

1

ca

82

c9

7d

fa

59

47

f0

ad

d4

a2

af

9c

a4

72

c0

2

b7

fd

93

26

36

3f

f7

cc

34

a5

e5

f1

71

d8

31

15

3

04

c7

23

c3

18

96

05

9a

07

12

80

e2

eb

27

b2

75

4

09

83

2c

la

1b

6e

5a

a0

52

3b

d6

b3

29

e3

2f

84

5

53

d1

00

ed

20

fc

b1

5b

6a

cb

be

39

4a

4c

58

cf

6

d0

ef

aa

fb

43

4d

33

85

45

f9

02

7f

50

3c

9f

a8

7

51

a3

40

8f

92

9d

38

f5

bc

b6

da

21

10

ff

f3

d2

8

cd

0c

13

ec

5f

97

44

17

c4

a7

7e

3d

64

5d

19

73

9

60

81

4f

dc

22

2a

90

88

46

ee

b8

14

de

5e

0b

db

a

e0

32

3a

0a

49

06

24

5c

c2

d3

ac

62

91

95

e4

79

b

e7

c8

37

6d

8d

d5

4e

a9

6c

56

f4

ea

65

7a

ae

08

c

ba

78

25

26

1c

a6

b4

c6

e8

dd

74

1f

4b

bd

8b

8a

d

70

3e

b5

66

48

03

f6

0e

61

35

57

b9

86

c1

1d

9e

e

el

f8

98

11

69

d9

8e

94

9b

1e

87

e9

ce

55

28

df

f

8c

a1

89

0d

bf

e6

42

68

41

99

2d

0f

b0

54

bb

16

Рис. 5. Матриця S-Box

Наприклад, якщо s1,1 = {53}, то в рядку з індексом 5 і стовпці з індексом 3 знаходиться значення «ed», отже, s'1,1 = {ed}.

2. ShіftRows() — три рядки масиву State циклічно зміщуються на різну кількість позицій, а перший рядок не зміщується (рис.  6):

s'r,c = sr, (c+ shift(r,Nb))ModNb,

де 0  r < 4, 0  c < Nb; shift(1,4) = 1, shift(2,4) = 2, shift(3,4) = 3.

Рис. 6. Зміщення за функцією ShіftRows()

3. MіxColumns() — математичне перетворення, що передбачає роботу з кожним окремим стовпцем:

s' (x) = a(x)  s(x),

де a(x) = {03}x3 + {01}x2 + {01}x + {02}.

Отже,

,

де 0  c < Nb.

Результатом мультиплікації буде заміна чотирьох байтів стовпця наступними:

;

;

;

.

4. AddRoundKey () — здійснюється додавання ключа для чергового раунду.

Ключ раунду накладається шляхом виконання операції XOR над масивом State та ключовим словом Wl (рис. 7):

[s'0,c, s'1,c, s'2,c, s'3,c] = [s0,c, s1,c, s2,c, s3,c]  [w Round*Nb+c], 0  c < Nb.

Рис. 7. Функція AddRoundKey()

В останньому раунді операція перемішування стовпців не виконується, що робить всю послідовність операцій симетричною.

Усі перетворення, що здійснюються в процесі шифрування, мають чітке математичне обґрунтування. Структура і послідовність операцій дозволяють ефективно виконувати цей алгоритм як на 8-бітних, так і на 32-бітних процесорах. У структурі алгоритму закладена можливість розпаралелювання операцій для виконання на багатопроцесорних комплексах. У найближчому майбутньому цей алгоритм захищений від спроб розшифровування методом перебору всіх можливих ключів.

Йому притаманні висока швидкодія і помірні вимоги до пам’яті, тому АЕС може бути реалізований у різних пристроях, включаючи мобільні телефони і смарт-картки. Оскільки алгоритм Rіjndael не захищений патентами, він доступний для вільного використання в будь-яких продуктах.

ГОСТ 28147—89

Аналогічним до алгоритму DES є вітчизняний ГОСТ 28147—89, проте він складніший, включає на окремих етапах гамування, імітовставки (послідовність даних фіксованої довжини, отриманих за певним правилом з відкритих даних і ключа). Імітовставка передається після зашифровування даних. Дані розшифровуються, і з отриманих відкритих даних формується імітовставка. Вона порівнюється з отриманою, і якщо з нею не збігається, то всі розшифровані дані вважаються неістинними. Імітовставки потрібні для запобігання дезінформації у разі підключення стороннього обладнання до каналу зв’язку. Цей алгоритм має ключ довжиною 256 біт. Він криптостійкіший, ніж DES, але через це досить по- вільний.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]