DES (англ. Data Encryption Standard) — це симетричний алгоритм шифрування певних даних, стандарт шифрування прийнятий урядом США із 1976 до кінця 1990-х, з часом набув міжнародного застосування. Ще з часу свого розроблення алгоритм викликав неоднозначні відгуки. Оскільки DES містив засекречені елементи своєї структури, породжувались побоювання щодо можливості контролю з боку Національного Агентства Безпеки США (англ. National Security Agency). Алгоритм піддавався критиці за малу довжину ключа, що, врешті, після бурхливих обговорень та контролю академічної громадськості, не завадило йому стати загальноприйнятим стандартом. DES дав поштовх сучасним уявленням про блочні алгоритми шифрування та криптоаналіз.
Розробники | IBM |
---|---|
Уперше оприлюднений | 1975 р. |
Раундів | 16 |
Тип | Мережа Фейстеля |
Зараз DES вважається ненадійним в основному через малу довжину ключа (56 біт) та розмір блоку (64 біти). У 1999 ключ DES було публічно дешифровано за 22 години 15 хвилин. Вважається, що алгоритм достатньо надійний для застосування у модифікації 3-DES, хоча існують розроблені теоретичні атаки. DES поступово витісняється алгоритмом AES, що з 2002 року є стандартом США.
Щиро кажучи, існує різниця між стандартом DES (Data Encryption Standard) та алгоритмом DEA (Data Encryption Algorithm).
Історія DES
Історія розробки DES сягає початку 1970-х і почалась за ініціативи Національного Бюро Стандартів США (англ. National Bureau of Standards) — тепер, Національний Інститут Стандартів і Технологій (англ. National Institute of Standards and Technology) — для забезпечення засекречених урядових даних. 15 травня 1973, після консультування із Національним Бюром Безпеки США, НБС оголосило конкурс на розробку алгоритму шифрування який би відповідав поставленим строгим архітектурним вимогам, однак, таких пропозицій не надійшло. Лише на другий конкурс 27 серпня 1974 IBM подала розробку яка задовільняла поставленим вимогам — алгоритм, розроблений в період 1973—1974, в основу якого був покладений шифр Хорста Фейстеля Люцифер.
Хронологія
Дата | Рік | Подія |
---|---|---|
15 травня | 1973 | Національне Бюро Стандартів (НБС) США опублікувало перший запит на стандарт алгоритму шифрування. Ніхто не відреагував |
27 серпня | 1974 | НБС опублікувало другий запит на алгоритм шифрування. IBM подала заявку |
17 березня | 1975 | DES опубліковано у Federal Register для коментарів |
Серпень | 1976 | Перший робоча зустріч по DES |
Вересень | 1976 | Друга робоча група, обговорення математичного підґрунтя DES |
Листопад | 1976 | DES погоджено як стандарт |
15 січня | 1977 | DES опубліковано як стандарт FIPS PUB 46 |
1983 | DES знову підтверджується як стандарт | |
22 січня | 1988 | DES вдруге підтверджується як стандарт (FIPS 46-1) |
Липень | 1990 | Біхем і Шамір заново відкривають диференціальний криптоаналіз, і застосовують його до 15-раундової DES-подібної криптосистеми. |
1992 | Біхем і Шамір описують теоретичну атаку із меншою часовою складністю ніж повний перебір: диференціальний криптоаналіз. Однак, для її успішності необхідно 247 незашифрованих даних. | |
30 грудня | 1993 | DES втретє підтверджується як стандарт (FIPS 46-2) |
1994 | Вперше проведено експериментальний криптоаналіз DES використовуючи лінійний криптоаналіз (Matsui, 1994). | |
червень | 1997 | Вперше публічно зломано зашифроване повідомлення DES. Проект DESCHALL |
липень | 1998 | EFF's (Deep Crack) дешифрує ключ DES за 56 годин. |
січень | 1999 | Разом та distributed.net дешифрують ключ DES за 22 години 15 хвилин. |
25 жовтня | 1999 | DES вчетверте підтверджується як стандарт (FIPS 46-3), в якому зазначено, що надавати перевагу слід 3-DES. |
26 листопада | 2001 | AES опубліковано як стандарт (FIPS 197) |
26 травня | 2002 | AES вступає в силу |
Опис алгоритму
DES є блочним шифром — дані шифруються блоками по 64 біти — 64 бітний блок явного тексту подається на вхід алгоритму, а 64-бітний блок шифрограми отримується в результаті роботи алгоритму. Крім того, як під час шифрування, так і під час дешифрування використовується один і той самий алгоритм (за винятком дещо іншого шляху утворення робочих ключів).
Ключ має довжину 56 біт (як правило, в джерельному вигляді ключ має довжину 64 біти, де кожний 8-й біт є бітом паритету, крім того, ці контрольні біти можуть бути винесені в останній байт ключа). Ключем може бути довільна 64-бітна , яка може бути змінена у будь-який момент часу. Частина цих комбінацій вважається слабкими ключами, оскільки може бути легко визначена. Безпечність алгоритму базується на безпечності ключа.
На найнижчому рівні алгоритм є ніщо інше, ніж поєднання двох базових технік шифрування: перемішування і підстановки. Цикл алгоритму, з яких і складається DES є комбінацією цих технік, коли як об'єкти перемішування виступають біти тексту, ключа і блоків підстановок.
Початкова перестановка
На вході подаються 64-бітний блок даних, які переставляються згідно з таблицею:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | 60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 | 62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
16 раундів
Далі 16 разів повторюються наступні операції:
Функція розширення блоку
Функція Е розширює 32-бітовий вектор до 48-бітового вектора шляхом повторення деяких біт з згідно з таблицею:
_ | 1 | 2 | 3 | 4 | _ | _ | 5 | 6 | 7 | 8 | _ | _ | 9 | 10 | 11 | 12 | _ | _ | 13 | 14 | 15 | 16 | _ | _ | 17 | 18 | 19 | 20 | _ | _ | 21 | 22 | 23 | 24 | _ | _ | 25 | 26 | 27 | 28 | _ | _ | 29 | 30 | 31 | 32 | _ |
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 |
Перший рядок — номери вхідних біт, другий рядок — вихідні біти. Повторення номерів, означає повторення біт.
Додавання раундового ключа
Блок 48 біт XOR'иться з раундовим ключем .
Таблиці підстановки
S-блоки мають вигляд:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 | |
1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 | |
2 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 | |
3 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 | |
0 | 15 | 1 | 8 | 14 | 6 | 11 | 3 | 4 | 9 | 7 | 2 | 13 | 12 | 0 | 5 | 10 | |
1 | 3 | 13 | 4 | 7 | 15 | 2 | 8 | 14 | 12 | 0 | 1 | 10 | 6 | 9 | 11 | 5 | |
2 | 0 | 14 | 7 | 11 | 10 | 4 | 13 | 1 | 5 | 8 | 12 | 6 | 9 | 3 | 2 | 15 | |
3 | 13 | 8 | 10 | 1 | 3 | 15 | 4 | 2 | 11 | 6 | 7 | 12 | 0 | 5 | 14 | 9 | |
0 | 10 | 0 | 9 | 14 | 6 | 3 | 15 | 5 | 1 | 13 | 12 | 7 | 11 | 4 | 2 | 8 | |
1 | 13 | 7 | 0 | 9 | 3 | 4 | 6 | 10 | 2 | 8 | 5 | 14 | 12 | 11 | 15 | 1 | |
2 | 13 | 6 | 4 | 9 | 8 | 15 | 3 | 0 | 11 | 1 | 2 | 12 | 5 | 10 | 14 | 7 | |
3 | 1 | 10 | 13 | 0 | 6 | 9 | 8 | 7 | 4 | 15 | 14 | 3 | 11 | 5 | 2 | 12 | |
0 | 7 | 13 | 14 | 3 | 0 | 6 | 9 | 10 | 1 | 2 | 8 | 5 | 11 | 12 | 4 | 15 | |
1 | 13 | 8 | 11 | 5 | 6 | 15 | 0 | 3 | 4 | 7 | 2 | 12 | 1 | 10 | 14 | 9 | |
2 | 10 | 6 | 9 | 0 | 12 | 11 | 7 | 13 | 15 | 1 | 3 | 14 | 5 | 2 | 8 | 4 | |
3 | 3 | 15 | 0 | 6 | 10 | 1 | 13 | 8 | 9 | 4 | 5 | 11 | 12 | 7 | 2 | 14 | |
0 | 2 | 12 | 4 | 1 | 7 | 10 | 11 | 6 | 8 | 5 | 3 | 15 | 13 | 0 | 14 | 9 | |
1 | 14 | 11 | 2 | 12 | 4 | 7 | 13 | 1 | 5 | 0 | 15 | 10 | 3 | 9 | 8 | 6 | |
2 | 4 | 2 | 1 | 11 | 10 | 13 | 7 | 8 | 15 | 9 | 12 | 5 | 6 | 3 | 0 | 14 | |
3 | 11 | 8 | 12 | 7 | 1 | 14 | 2 | 13 | 6 | 15 | 0 | 9 | 10 | 4 | 5 | 3 | |
0 | 12 | 1 | 10 | 15 | 9 | 2 | 6 | 8 | 0 | 13 | 3 | 4 | 14 | 7 | 5 | 11 | |
1 | 10 | 15 | 4 | 2 | 7 | 12 | 9 | 5 | 6 | 1 | 13 | 14 | 0 | 11 | 3 | 8 | |
2 | 9 | 14 | 15 | 5 | 2 | 8 | 12 | 3 | 7 | 0 | 4 | 10 | 1 | 13 | 11 | 6 | |
3 | 4 | 3 | 2 | 12 | 9 | 5 | 15 | 10 | 11 | 14 | 1 | 7 | 6 | 0 | 8 | 13 | |
0 | 4 | 11 | 2 | 14 | 15 | 0 | 8 | 13 | 3 | 12 | 9 | 7 | 5 | 10 | 6 | 1 | |
1 | 13 | 0 | 11 | 7 | 4 | 9 | 1 | 10 | 14 | 3 | 5 | 12 | 2 | 15 | 8 | 6 | |
2 | 1 | 4 | 11 | 13 | 12 | 3 | 7 | 14 | 10 | 15 | 6 | 8 | 0 | 5 | 9 | 2 | |
3 | 6 | 11 | 13 | 8 | 1 | 4 | 10 | 7 | 9 | 5 | 0 | 15 | 14 | 2 | 3 | 12 | |
0 | 13 | 2 | 8 | 4 | 6 | 15 | 11 | 1 | 10 | 9 | 3 | 14 | 5 | 0 | 12 | 7 | |
1 | 1 | 15 | 13 | 8 | 10 | 3 | 7 | 4 | 12 | 5 | 6 | 11 | 0 | 14 | 9 | 2 | |
2 | 7 | 11 | 4 | 1 | 9 | 12 | 14 | 2 | 0 | 6 | 10 | 13 | 15 | 3 | 5 | 8 | |
3 | 2 | 1 | 14 | 7 | 4 | 10 | 8 | 13 | 15 | 12 | 9 | 0 | 3 | 5 | 6 | 11 |
«Розширені» біти використовуються для визначення номера 0-1-2-3 таблиці (ліва колонка).
Перестановка
Далі виконується перестановка
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
16 | 7 | 20 | 21 | 29 | 12 | 28 | 17 | 1 | 15 | 23 | 26 | 5 | 18 | 31 | 10 | 2 | 8 | 24 | 14 | 32 | 27 | 3 | 9 | 19 | 13 | 30 | 6 | 22 | 11 | 4 | 25 |
XOR лівої і правої частин
За формулою отримуємо значення .
Кінцева перестановка
Після 16-ти раундів застосовуюєть перестановка біт:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 | 39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 | 38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 | 37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 | 36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 | 35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 | 34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 | 33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
Вхідний перший біт ставить на місце номер 40, другий біт на місце номер 8 і т. д.
В DES використовується 16 циклів, вихідними даними для кожного з них 64 є біти відкритого тексту (на вході першого раунду) чи 64 біти з результату роботи попереднього раунду (у всіх наступних), ключ і блоки підстановок.
Алгоритм використовує лише стандартні елементарні логічні операції (зсув, сума по модулю два(XOR)) на числах довжиною 64 біти, що значно полегшує програмування алгоритму і прискорює його роботу у інтегральних мікросхемах. Циклічний характер алгоритму в сумі з ідеальною здатністю до запрограмовування робить алгоритм швидким і легким до розуміння.
Розширення ключа (генерація раундових ключів )
Ключі отримують з початкового ключа k (64 біт = 8 байтів або 8 символів у ASCII) наступним чином. Вісім бітів, що знаходять в позиціях 8, 16, 24, 32, 40, 48, 56, 64 додаються в ключ k таким чином щоб кожен байт містив непарне число одиниць. Це використовується для виявлення помилок при обміні і зберіганні ключів. Потім роблять перестановку для розширеного ключа (крім доданих бітів номер 8, 16, 24, 32, 40, 48, 56, 64). Така перестановка визначена в таблиці 5.
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 | 60 | 52 | 44 | 36 | |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 | 62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
Ця перестановка визначається двома блоками і по 28 біт кожен. Перші 3 біта є біти 57, 49, 41 розширеного ключа. А перші три біта є біти 63, 55, 47 розширеного ключа.
Для раундів i = 1,2,3 … отримують з одним або двома лівими циклічними зрушеннями згідно з таблицею:
i-й раунд | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Число зсувів | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
Ключ , i = 1, … 16 складається з 48 біт, вибраних з бітів вектора (56 біт) згідно з приведеною нижче таблицею. Перший і другий біти є біти 14, 17 вектора
i-й біт раундового ключа | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
номери біт 3 векторів | 14 | 17 | 11 | 24 | 1 | 5 | 3 | 28 | 15 | 6 | 21 | 10 | 23 | 19 | 12 | 4 | 26 | 8 | 16 | 7 | 27 | 20 | 13 | 2 | 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 | 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 | 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
Біти номер 1-48 використовують для раундового XORу.
Приклад роботи алгоритму
Для ключа 00 00 00 00 00 00 00 00 (НЕХ)
та тексту 00 00 00 00 00 00 00 00 (НЕХ)
Результати шифрування відкритого тексту ключем
8C A6 4D E9 C1 B1 23 A7 (НЕХ)
(test vector 8ca64de9c1b123a7)
Детальний приклад
Ключ FEDCBA9876543210 (НЕХ)
Відкритий текст 0123456789ABCDEF (НЕХ)
Результат ED39D950FA74BCC4 (НЕХ)
Слабкі ключі
Слабкими ключами називається ключі k такі, що , де x — 64-бітний блок.
Відомі 4 слабких ключа, вони наведені в таблиці 9. Для кожного слабкого ключа існує нерухомі точки, тобто, таких 64-бітових блоків х, для яких .
Слабкі ключі (hexadecimal) | ||
0101-0101-0101-0101 | ||
FEFE-FEFE-FEFE-FEFE | ||
1F1F-1F1F-0E0E-0E0E | ||
E0E0-E0E0-F1F1-F1F1 |
позначає вектор, що складається з 28 нульових бітів.
Наприклад, для ключа
FE FE FE FE FE FE FE FE (НЕХ)
та тексту
01 23 45 67 89 AB CD EF (НЕХ)
Результати шифрування відкритого тексту ключем
6D CE 0D C9 00 65 56 A3 (НЕХ)
далі, для ключа
FE FE FE FE FE FE FE FE (НЕХ)
та тексту
6D CE 0D C9 00 65 56 A3 (НЕХ)
Результати шифрування відкритого тексту ключем
01 23 45 67 89 AB CD EF (НЕХ)
Захист та криптоаналіз
Оскільки DES — порівняно старий криптоалгоритм, існує багато публікацій щодо його криптоаналізу. Дуже ґрунтовну оцінку безпеки DES дано Брюсом Шнаєром, який у своїй відомій книзі «Прикладна криптографія» розбирає та впорядковує велику кількість публікацій щодо криптоаналізу DES.
Тепер DES вважається нестійким, оскільки:
- Розмір ключа — 56 бітів — замалий, тому існує реальна загроза пошуку ключа лобовою атакою (послідовним перебором).
- DES нестійкий до лінійного криптоаналізу (тобто лінійна атака дозволяє знайти ключ DES швидше, ніж послідовний перебір).
В той же час, повний 16-раундовий DES стійкий до диференційного криптоаналізу.
Через високу розповсюдженість DES було запропоновано багато ідей щодо підвищення його безпеки, зокрема, замінити S-блоки DES новими, стійкими до лінійної атаки. Однак, широке практичне застосування жодна з видозмінених версій DES не набула. Винятком є потрійний DES, однак, це не видозміна алгоритму, а лише особливий режим шифрування звичайним DES.
Посилання
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
DES angl Data Encryption Standard ce simetrichnij algoritm shifruvannya pevnih danih standart shifruvannya prijnyatij uryadom SShA iz 1976 do kincya 1990 h z chasom nabuv mizhnarodnogo zastosuvannya She z chasu svogo rozroblennya algoritm viklikav neodnoznachni vidguki Oskilki DES mistiv zasekrecheni elementi svoyeyi strukturi porodzhuvalis poboyuvannya shodo mozhlivosti kontrolyu z boku Nacionalnogo Agentstva Bezpeki SShA angl National Security Agency Algoritm piddavavsya kritici za malu dovzhinu klyucha sho vreshti pislya burhlivih obgovoren ta kontrolyu akademichnoyi gromadskosti ne zavadilo jomu stati zagalnoprijnyatim standartom DES dav poshtovh suchasnim uyavlennyam pro blochni algoritmi shifruvannya ta kriptoanaliz DES Data Encryption Standard DEA Data Encryption Algorithm Rozrobniki IBMUpershe oprilyudnenij 1975 r Raundiv 16Tip Merezha Fejstelya Zaraz DES vvazhayetsya nenadijnim v osnovnomu cherez malu dovzhinu klyucha 56 bit ta rozmir bloku 64 biti U 1999 klyuch DES bulo publichno deshifrovano za 22 godini 15 hvilin Vvazhayetsya sho algoritm dostatno nadijnij dlya zastosuvannya u modifikaciyi 3 DES hocha isnuyut rozrobleni teoretichni ataki DES postupovo vitisnyayetsya algoritmom AES sho z 2002 roku ye standartom SShA Shiro kazhuchi isnuye riznicya mizh standartom DES Data Encryption Standard ta algoritmom DEA Data Encryption Algorithm Istoriya DESIstoriya rozrobki DES syagaye pochatku 1970 h i pochalas za iniciativi Nacionalnogo Byuro Standartiv SShA angl National Bureau of Standards teper Nacionalnij Institut Standartiv i Tehnologij angl National Institute of Standards and Technology dlya zabezpechennya zasekrechenih uryadovih danih 15 travnya 1973 pislya konsultuvannya iz Nacionalnim Byurom Bezpeki SShA NBS ogolosilo konkurs na rozrobku algoritmu shifruvannya yakij bi vidpovidav postavlenim strogim arhitekturnim vimogam odnak takih propozicij ne nadijshlo Lishe na drugij konkurs 27 serpnya 1974 IBM podala rozrobku yaka zadovilnyala postavlenim vimogam algoritm rozroblenij v period 1973 1974 v osnovu yakogo buv pokladenij shifr Horsta Fejstelya Lyucifer Hronologiya Data Rik Podiya 15 travnya 1973 Nacionalne Byuro Standartiv NBS SShA opublikuvalo pershij zapit na standart algoritmu shifruvannya Nihto ne vidreaguvav 27 serpnya 1974 NBS opublikuvalo drugij zapit na algoritm shifruvannya IBM podala zayavku 17 bereznya 1975 DES opublikovano u Federal Register dlya komentariv Serpen 1976 Pershij robocha zustrich po DES Veresen 1976 Druga robocha grupa obgovorennya matematichnogo pidgruntya DES Listopad 1976 DES pogodzheno yak standart 15 sichnya 1977 DES opublikovano yak standart FIPS PUB 46 1983 DES znovu pidtverdzhuyetsya yak standart 22 sichnya 1988 DES vdruge pidtverdzhuyetsya yak standart FIPS 46 1 Lipen 1990 Bihem i Shamir zanovo vidkrivayut diferencialnij kriptoanaliz i zastosovuyut jogo do 15 raundovoyi DES podibnoyi kriptosistemi 1992 Bihem i Shamir opisuyut teoretichnu ataku iz menshoyu chasovoyu skladnistyu nizh povnij perebir diferencialnij kriptoanaliz Odnak dlya yiyi uspishnosti neobhidno 247 nezashifrovanih danih 30 grudnya 1993 DES vtretye pidtverdzhuyetsya yak standart FIPS 46 2 1994 Vpershe provedeno eksperimentalnij kriptoanaliz DES vikoristovuyuchi linijnij kriptoanaliz Matsui 1994 cherven 1997 Vpershe publichno zlomano zashifrovane povidomlennya DES Proekt DESCHALL lipen 1998 EFF s Deep Crack deshifruye klyuch DES za 56 godin sichen 1999 Razom ta distributed net deshifruyut klyuch DES za 22 godini 15 hvilin 25 zhovtnya 1999 DES vchetverte pidtverdzhuyetsya yak standart FIPS 46 3 v yakomu zaznacheno sho nadavati perevagu slid 3 DES 26 listopada 2001 AES opublikovano yak standart FIPS 197 26 travnya 2002 AES vstupaye v siluOpis algoritmuDES ye blochnim shifrom dani shifruyutsya blokami po 64 biti 64 bitnij blok yavnogo tekstu podayetsya na vhid algoritmu a 64 bitnij blok shifrogrami otrimuyetsya v rezultati roboti algoritmu Krim togo yak pid chas shifruvannya tak i pid chas deshifruvannya vikoristovuyetsya odin i toj samij algoritm za vinyatkom desho inshogo shlyahu utvorennya robochih klyuchiv Klyuch maye dovzhinu 56 bit yak pravilo v dzherelnomu viglyadi klyuch maye dovzhinu 64 biti de kozhnij 8 j bit ye bitom paritetu krim togo ci kontrolni biti mozhut buti vineseni v ostannij bajt klyucha Klyuchem mozhe buti dovilna 64 bitna yaka mozhe buti zminena u bud yakij moment chasu Chastina cih kombinacij vvazhayetsya slabkimi klyuchami oskilki mozhe buti legko viznachena Bezpechnist algoritmu bazuyetsya na bezpechnosti klyucha Na najnizhchomu rivni algoritm ye nisho inshe nizh poyednannya dvoh bazovih tehnik shifruvannya peremishuvannya i pidstanovki Cikl algoritmu z yakih i skladayetsya DES ye kombinaciyeyu cih tehnik koli yak ob yekti peremishuvannya vistupayut biti tekstu klyucha i blokiv pidstanovok Pochatkova perestanovka Na vhodi podayutsya 64 bitnij blok danih yaki perestavlyayutsya zgidno z tabliceyu Pochatkova perestanovka IP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 16 raundiv Dali 16 raziv povtoryuyutsya nastupni operaciyi Funkciya rozshirennya bloku Funkciya E rozshiryuye 32 bitovij vektor R i 1 displaystyle R i 1 do 48 bitovogo vektora E R i 1 displaystyle E R i 1 shlyahom povtorennya deyakih bit z R i 1 displaystyle R i 1 zgidno z tabliceyu Funkciya rozshirennya E 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 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 Pershij ryadok nomeri vhidnih bit drugij ryadok vihidni biti Povtorennya nomeriv oznachaye povtorennya bit Dodavannya raundovogo klyucha k i displaystyle k i Blok 48 bit XOR itsya z raundovim klyuchem k i displaystyle k i Tablici pidstanovki S bloki mayut viglyad S blok S i displaystyle S i i 1 8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 S 1 displaystyle S 1 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 S 2 displaystyle S 2 2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 S 3 displaystyle S 3 2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 S 4 displaystyle S 4 2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 S 5 displaystyle S 5 2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 S 6 displaystyle S 6 2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 S 7 displaystyle S 7 2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 S 8 displaystyle S 8 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 Rozshireni biti vikoristovuyutsya dlya viznachennya nomera 0 1 2 3 tablici liva kolonka Perestanovka Dali vikonuyetsya perestanovka Perestanovka P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 XOR livoyi i pravoyi chastin Za formuloyu R i L i 1 f R i 1 k i displaystyle R i L i 1 oplus f R i 1 k i otrimuyemo znachennya R i displaystyle R i Kinceva perestanovka Pislya 16 ti raundiv zastosovuyuyet perestanovka bit Perestanovka I P 1 displaystyle IP 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Vhidnij pershij bit stavit na misce nomer 40 drugij bit na misce nomer 8 i t d V DES vikoristovuyetsya 16 cikliv vihidnimi danimi dlya kozhnogo z nih 64 ye biti vidkritogo tekstu na vhodi pershogo raundu chi 64 biti z rezultatu roboti poperednogo raundu u vsih nastupnih klyuch i bloki pidstanovok Algoritm vikoristovuye lishe standartni elementarni logichni operaciyi zsuv suma po modulyu dva XOR na chislah dovzhinoyu 64 biti sho znachno polegshuye programuvannya algoritmu i priskoryuye jogo robotu u integralnih mikroshemah Ciklichnij harakter algoritmu v sumi z idealnoyu zdatnistyu do zaprogramovuvannya robit algoritm shvidkim i legkim do rozuminnya Rozshirennya klyucha generaciya raundovih klyuchiv k i displaystyle k i Klyuchi k i displaystyle k i otrimuyut z pochatkovogo klyucha k 64 bit 8 bajtiv abo 8 simvoliv u ASCII nastupnim chinom Visim bitiv sho znahodyat v poziciyah 8 16 24 32 40 48 56 64 dodayutsya v klyuch k takim chinom shob kozhen bajt mistiv neparne chislo odinic Ce vikoristovuyetsya dlya viyavlennya pomilok pri obmini i zberiganni klyuchiv Potim roblyat perestanovku dlya rozshirenogo klyucha krim dodanih bitiv nomer 8 16 24 32 40 48 56 64 Taka perestanovka viznachena v tablici 5 Pochatkova perestanovka bit klyucha 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 C 0 displaystyle C 0 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 D 0 displaystyle D 0 Cya perestanovka viznachayetsya dvoma blokami C 0 displaystyle C 0 i D 0 displaystyle D 0 po 28 bit kozhen Pershi 3 bita C 0 displaystyle C 0 ye biti 57 49 41 rozshirenogo klyucha A pershi tri bita D 0 displaystyle D 0 ye biti 63 55 47 rozshirenogo klyucha Dlya raundiv C i D i displaystyle C i D i i 1 2 3 otrimuyut z C i 1 D i 1 displaystyle C i 1 D i 1 odnim abo dvoma livimi ciklichnimi zrushennyami zgidno z tabliceyu Ciklichnij zsuv i j raund 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Chislo zsuviv 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 Klyuch k i displaystyle k i i 1 16 skladayetsya z 48 bit vibranih z bitiv vektora C i D i displaystyle C i D i 56 bit zgidno z privedenoyu nizhche tabliceyu Pershij i drugij biti k i displaystyle k i ye biti 14 17 vektora C i D i displaystyle C i D i i j bit raundovogo klyucha 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 nomeri bit 3 vektoriv C i D i displaystyle C i D i 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Biti nomer 1 48 vikoristovuyut dlya raundovogo XORu Priklad roboti algoritmuDlya klyucha 00 00 00 00 00 00 00 00 NEH ta tekstu 00 00 00 00 00 00 00 00 NEH Rezultati shifruvannya vidkritogo tekstu klyuchem 8C A6 4D E9 C1 B1 23 A7 NEH test vector 8ca64de9c1b123a7 Detalnij prikladKlyuch FEDCBA9876543210 NEH Vidkritij tekst 0123456789ABCDEF NEH Rezultat ED39D950FA74BCC4 NEH Slabki klyuchiSlabkimi klyuchami nazivayetsya klyuchi k taki sho D E S k D E S k x x displaystyle DES k DES k x x de x 64 bitnij blok Vidomi 4 slabkih klyucha voni navedeni v tablici 9 Dlya kozhnogo slabkogo klyucha isnuye 2 32 displaystyle 2 32 neruhomi tochki tobto takih 64 bitovih blokiv h dlya yakih D E S k x x displaystyle DES k x x Tablicya 9 DES Slabki klyuchi Slabki klyuchi hexadecimal C 0 displaystyle C 0 D 0 displaystyle D 0 0101 0101 0101 0101 0 28 displaystyle 0 28 0 28 displaystyle 0 28 FEFE FEFE FEFE FEFE 1 28 displaystyle 1 28 1 28 displaystyle 1 28 1F1F 1F1F 0E0E 0E0E 0 28 displaystyle 0 28 1 28 displaystyle 1 28 E0E0 E0E0 F1F1 F1F1 1 28 displaystyle 1 28 0 28 displaystyle 0 28 0 28 displaystyle 0 28 poznachaye vektor sho skladayetsya z 28 nulovih bitiv Napriklad dlya klyucha FE FE FE FE FE FE FE FE NEH ta tekstu 01 23 45 67 89 AB CD EF NEH Rezultati shifruvannya vidkritogo tekstu klyuchem 6D CE 0D C9 00 65 56 A3 NEH dali dlya klyucha FE FE FE FE FE FE FE FE NEH ta tekstu 6D CE 0D C9 00 65 56 A3 NEH Rezultati shifruvannya vidkritogo tekstu klyuchem 01 23 45 67 89 AB CD EF NEH Zahist ta kriptoanalizOskilki DES porivnyano starij kriptoalgoritm isnuye bagato publikacij shodo jogo kriptoanalizu Duzhe gruntovnu ocinku bezpeki DES dano Bryusom Shnayerom yakij u svoyij vidomij knizi Prikladna kriptografiya rozbiraye ta vporyadkovuye veliku kilkist publikacij shodo kriptoanalizu DES Teper DES vvazhayetsya nestijkim oskilki Rozmir klyucha 56 bitiv zamalij tomu isnuye realna zagroza poshuku klyucha lobovoyu atakoyu poslidovnim pereborom DES nestijkij do linijnogo kriptoanalizu tobto linijna ataka dozvolyaye znajti klyuch DES shvidshe nizh poslidovnij perebir V toj zhe chas povnij 16 raundovij DES stijkij do diferencijnogo kriptoanalizu Cherez visoku rozpovsyudzhenist DES bulo zaproponovano bagato idej shodo pidvishennya jogo bezpeki zokrema zaminiti S bloki DES novimi stijkimi do linijnoyi ataki Odnak shiroke praktichne zastosuvannya zhodna z vidozminenih versij DES ne nabula Vinyatkom ye potrijnij DES odnak ce ne vidozmina algoritmu a lishe osoblivij rezhim shifruvannya zvichajnim DES PosilannyaCe nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi