Топ питань
Часова шкала
Чат
Перспективи

Data Encryption Standard

З Вікіпедії, вільної енциклопедії

Data Encryption Standard
Remove ads

DES (англ. Data Encryption Standard) — це симетричний алгоритм шифрування певних даних, стандарт шифрування прийнятий урядом США із 1976 до кінця 1990-х, з часом набув міжнародного застосування. Ще з часу свого розроблення алгоритм викликав неоднозначні відгуки. Оскільки DES містив засекречені елементи своєї структури, породжувались побоювання щодо можливості контролю з боку Національного Агентства Безпеки США (англ. National Security Agency). Алгоритм піддавався критиці за малу довжину ключа, що, врешті, після бурхливих обговорень та контролю академічної громадськості, не завадило йому стати загальноприйнятим стандартом. DES дав поштовх сучасним уявленням про блочні алгоритми шифрування та криптоаналіз.

Коротка інформація Розробники, Уперше оприлюднений ...

Зараз DES вважається ненадійним в основному через малу довжину ключа (56 біт) та розмір блоку (64 біти). У 1999 ключ DES було публічно дешифровано за 22 години 15 хвилин. Вважається, що алгоритм достатньо надійний для застосування у модифікації 3-DES, хоча існують розроблені теоретичні атаки. DES поступово витісняється алгоритмом AES, що з 2002 року є стандартом США.

Щиро кажучи, існує різниця між стандартом DES (Data Encryption Standard) та алгоритмом DEA (Data Encryption Algorithm).

Remove ads

Історія DES

Узагальнити
Перспектива

Історія розробки DES сягає початку 1970-х і почалась за ініціативи Національного Бюро Стандартів США (англ. National Bureau of Standards) — тепер, Національний Інститут Стандартів і Технологій (англ. National Institute of Standards and Technology) — для забезпечення засекречених урядових даних. 15 травня 1973, після консультування із Національним Бюром Безпеки США, НБС оголосило конкурс на розробку алгоритму шифрування який би відповідав поставленим строгим архітектурним вимогам, однак, таких пропозицій не надійшло. Лише на другий конкурс 27 серпня 1974 IBM подала розробку яка задовільняла поставленим вимогам — алгоритм, розроблений в період 1973—1974, в основу якого був покладений шифр Хорста Фейстеля Люцифер.

Хронологія

Більше інформації Дата, Рік ...

Опис алгоритму

Узагальнити
Перспектива

DES є блочним шифром — дані шифруються блоками по 64 біти — 64 бітний блок явного тексту подається на вхід алгоритму, а 64-бітний блок шифрограми отримується в результаті роботи алгоритму. Крім того, як під час шифрування, так і під час дешифрування використовується один і той самий алгоритм (за винятком дещо іншого шляху утворення робочих ключів).

Ключ має довжину 56 біт (як правило, в джерельному вигляді ключ має довжину 64 біти, де кожний 8-й біт є бітом паритету, крім того, ці контрольні біти можуть бути винесені в останній байт ключа). Ключем може бути довільна 64-бітна комбінація, яка може бути змінена у будь-який момент часу. Частина цих комбінацій вважається слабкими ключами, оскільки може бути легко визначена. Безпечність алгоритму базується на безпечності ключа.

На найнижчому рівні алгоритм є ніщо інше, ніж поєднання двох базових технік шифрування: перемішування і підстановки. Цикл алгоритму, з яких і складається DES є комбінацією цих технік, коли як об'єкти перемішування виступають біти тексту, ключа і блоків підстановок.

Початкова перестановка

На вході подаються 64-бітний блок даних, які переставляються згідно з таблицею:

Початкова перестановка IP
1234567891011121314151617181920212223242526272829303132
585042342618102605244362820124625446383022146645648403224168
3334353637383940414243444546474849505152535455565758596061626364
57494133251791595143352719113615345372921135635547393123157

16 раундів

Далі 16 разів повторюються наступні операції:

Функція розширення блоку

Функція Е розширює 32-бітовий вектор до 48-бітового вектора шляхом повторення деяких біт з згідно з таблицею:

Функція розширення E
_1234__5678__9101112__13141516__17181920__21222324__25262728__29303132_
3212345456789891011121312131415161716171819202120212223242524252627282928293031321

Перший рядок — номери вхідних біт, другий рядок — вихідні біти. Повторення номерів, означає повторення біт.

Додавання раундового ключа

Блок 48 біт XOR'иться з раундовим ключем .

Таблиці підстановки

S-блоки мають вигляд:

Більше інформації ...

«Розширені» біти використовуються для визначення номера 0-1-2-3 таблиці (ліва колонка).

Перестановка

Далі виконується перестановка

Перестановка P
1234567891011121314151617181920212223242526272829303132
1672021291228171152326518311028241432273919133062211425

XOR лівої і правої частин

За формулою отримуємо значення .

Кінцева перестановка

Після 16-ти раундів застосовуюєть перестановка біт:

Перестановка
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725

Вхідний перший біт ставить на місце номер 40, другий біт на місце номер 8 і т. д.

В DES використовується 16 циклів, вихідними даними для кожного з них 64 є біти відкритого тексту (на вході першого раунду) чи 64 біти з результату роботи попереднього раунду (у всіх наступних), ключ і блоки підстановок.

Алгоритм використовує лише стандартні елементарні логічні операції (зсув, сума по модулю два(XOR)) на числах довжиною 64 біти, що значно полегшує програмування алгоритму і прискорює його роботу у інтегральних мікросхемах. Циклічний характер алгоритму в сумі з ідеальною здатністю до запрограмовування робить алгоритм швидким і легким до розуміння.

Розширення ключа (генерація раундових ключів k i {\displaystyle k_{i}} )

Узагальнити
Перспектива

Ключі отримують з початкового ключа k (64 біт = 8 байтів або 8 символів у ASCII) наступним чином. Вісім бітів, що знаходять в позиціях 8, 16, 24, 32, 40, 48, 56, 64 додаються в ключ k таким чином щоб кожен байт містив непарне число одиниць. Це використовується для виявлення помилок при обміні і зберіганні ключів. Потім роблять перестановку для розширеного ключа (крім доданих бітів номер 8, 16, 24, 32, 40, 48, 56, 64). Така перестановка визначена в таблиці 5.

Початкова перестановка біт ключа
5749413325179158504234261810259514335271911360524436
6355473931231576254463830221466153453729211352820124

Ця перестановка визначається двома блоками і по 28 біт кожен. Перші 3 біта є біти 57, 49, 41 розширеного ключа. А перші три біта є біти 63, 55, 47 розширеного ключа.

Для раундів i = 1,2,3 … отримують з одним або двома лівими циклічними зрушеннями згідно з таблицею:

Більше інформації i-й раунд ...

Ключ , i = 1, … 16 складається з 48 біт, вибраних з бітів вектора (56 біт) згідно з приведеною нижче таблицею. Перший і другий біти є біти 14, 17 вектора

i-й біт раундового ключа123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
номери біт 3 векторів 1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932

Біти номер 1-48 використовують для раундового XORу.

Remove ads

Приклад роботи алгоритму

Для ключа 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-бітових блоків х, для яких .

Таблиця 9. DES-Слабкі ключі
Слабкі ключі (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 (НЕХ)

Remove ads

Захист та криптоаналіз

Оскільки DES — порівняно старий криптоалгоритм, існує багато публікацій щодо його криптоаналізу. Дуже ґрунтовну оцінку безпеки DES дано Брюсом Шнаєром, який у своїй відомій книзі «Прикладна криптографія» розбирає та впорядковує велику кількість публікацій щодо криптоаналізу DES.

Тепер DES вважається нестійким, оскільки:

  1. Розмір ключа — 56 бітів — замалий, тому існує реальна загроза пошуку ключа лобовою атакою (послідовним перебором).
  2. DES нестійкий до лінійного криптоаналізу (тобто лінійна атака дозволяє знайти ключ DES швидше, ніж послідовний перебір).

В той же час, повний 16-раундовий DES стійкий до диференційного криптоаналізу.

Через високу розповсюдженість DES було запропоновано багато ідей щодо підвищення його безпеки, зокрема, замінити S-блоки DES новими, стійкими до лінійної атаки. Однак, широке практичне застосування жодна з видозмінених версій DES не набула. Винятком є потрійний DES, однак, це не видозміна алгоритму, а лише особливий режим шифрування звичайним DES.

Remove ads

Посилання

Програмна реалізація DES


Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads