- •Лекція №18 з навчальної дисципліни
- •1. Основні поняття безпеки телекомунікаційних систем
- •Загроза безпеці
- •Служби безпеки
- •Механізми безпеки
- •Оцінка рівня безпеки системи
- •Класифікація криптографічних алгоритмів
- •Симетричні криптоалгоритми des, аes
- •Асиметричний криптоалгоритм rsa
- •1. Пристрої для пошуку і знищення технічних засобів розвідки:
- •2. Пасивні засоби захисту приміщень і апаратури:
- •3. Технічні засоби криптографічного захисту інформації:
- •4. Спеціальні технічні засоби розпізнавання користувачів пк:
- •1. Програмні засоби парольної ідентифікації.
- •2. Програмні засоби шифрування інформації.
- •3. Програми видалення інформації з жорсткого диска.
- •4. Антивіруси.
- •5. Програми видалення spyware.
- •6. Стеганографічні продукти.
Симетричні криптоалгоритми 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, але через це досить по- вільний.