Що таке шифрування 3DES і як працює DES?
3DES – шифрувальний шифр, який був отриманий з оригінального стандарту шифрування даних (DES). Він став помітним наприкінці дев’яностих, але з тих пір вийшов з ладу через зростання більш безпечних алгоритмів.
Незважаючи на те, що він буде застарілим у 2023 році, він все ще реалізовується в деяких ситуаціях. Оскільки він заснований на одному з перших широко опублікованих та вивчених алгоритмів, DES, все ще важливо дізнатися про те, що таке 3DES та як він працює.
Цей посібник детально ознайомить вас з кожним кроком процесу DES, а потім розповість, як DES модифікується в 3DES, щоб зробити його більш безпечним. Він також торкається різних питань безпеки та того, чи слід використовувати алгоритм чи ні.
Що таке 3DES?
Хоча це офіційно відомий як Алгоритм потрійного шифрування даних (3DEA), його найчастіше називають 3DES. Це пояснюється тим, що алгоритм 3DES тричі використовує шифр Standard Encryption Standard (DES) для шифрування своїх даних.
DES – алгоритм симетричного ключа на основі мережі Feistel. Як шифр симетричного ключа, він використовує той самий ключ як для процесів шифрування, так і для дешифрування. Мережа Feistel робить обидва ці процеси майже однаковими, що призводить до більш ефективного впровадження алгоритму.
DES має 64-бітний блок і розмір ключа, але на практиці ключ надає лише 56-бітову безпеку. 3DES був розроблений як більш безпечна альтернатива через невелику довжину ключів DES. У 3DES алгоритм DES тричі виконується трьома клавішами, однак він вважається безпечним лише у тому випадку, якщо використовуються три окремі клавіші.
Використання 3DES
Як тільки слабкі сторони нормального DES стали більш очевидними, 3DES був прийнятий у широкому діапазоні застосувань. Це була одна з найбільш часто використовуваних схем шифрування до підйому AES.
Деякі приклади його реалізації включали платіжні системи Microsoft Office, Firefox та EMV. Багато з цих платформ більше не використовують 3DES, оскільки є кращі альтернативи.
Національний інститут стандартів і технологій (NIST) опублікував проект пропозиції, в якому говориться, що всі форми 3DES будуть припинені до 2023 року та заборонені з 2024 року. Хоча це лише чернетка, пропозиція означає кінець епохи, і вже минув час перейти на інші, більш безпечні алгоритми.
Історія шифрування 3DES
Оскільки 3DES походить від DES, найкраще спочатку ввести попередній стандарт. У сімдесятих роках Національне бюро стандартів (NBS – воно з тих пір перейменовано на NIST) шукало алгоритм, який він міг би використовувати як стандарт для шифрування чутливої, ще не класифікованої урядової інформації.
НБС прийняла пропозиції щодо стандарту, який би відповідав його вимогам, але жоден з кандидатів у первинному турі не був відповідним. Він запросив більше подань, і цього разу IBM надіслала алгоритм, який розробила його команда. Подання було отримане з шифру Люцифера, який сконструював Хорст Фейстель.
У 1975 році алгоритм IBM був опублікований NBS як запропонований стандарт шифрування даних. Громадськість запропонувала прокоментувати дизайн, що викликало певну критику.
Видатні криптографи, такі як Вітфілд Діффі та Мартін Гелман, дизайнери обміну ключами Diffie-Hellman, стверджували, що довжина ключа була занадто короткою і що S-ящики були змінені від їх початкового дизайну.
У той час багато хто з криптографічної спільноти думали, що АНБ саботувала проект і послабила алгоритм, так що це буде єдине агентство, яке може зламати DES.
Коли це було досліджено Комітетом з питань розвідки Сенату Сполучених Штатів Америки, було встановлено, що «АНБ переконала IBM у тому, що достатньо зменшеного розміру ключа; опосередковано допомагали в розробці структур S-box; і підтвердили, що остаточний алгоритм DES, наскільки їм відомо, не мав жодної статистичної чи математичної слабкості “.
У цьому ж звіті було сказано, що “АНБ жодним чином не підробляв дизайн”. Це підтвердили деякі колишні співробітники IBM, які заявляли, що алгоритм DES повністю був розроблений командою IBM.
В власній розсекреченій документації АНБ зазначається, що агентство «тісно співпрацювало з IBM, щоб посилити алгоритм проти всіх, крім жорстоких атак, та посилити таблиці заміщення…»
Підозри в підробці НПА були зменшені в дев’яностих роках, коли було відкрито виявлено диференціальний криптоаналіз. Коли багатозлобні S-коробки були випробувані за допомогою нової техніки, вони виявилися більш стійкими до нападу, ніж якби вони були вибрані випадковим чином.
Це вказує на те, що команда IBM вже знала про диференціальний криптоаналіз у сімдесяті роки. Стівен Леві стверджував, що АНБ попросило їх зберегти техніку в таємниці з метою захисту національної безпеки.
Відомий криптограф Брюс Шнейер одного разу знущався: “Академічному співтовариству знадобилося два десятиліття, щоб зрозуміти, що” налаштування “АНБ насправді покращили безпеку DES”.
Незважаючи на початкові питання щодо безпеки алгоритму та залучення АНБ, алгоритм IBM був затверджений як Стандарт шифрування даних у 1976 році. Він був опублікований у 1977 році та підтверджений як стандарт у 1983, 1988 та 1993 роках.
Коли в 1994 році вперше був опублікований лінійний криптоаналіз, він почав викликати питання щодо безпеки алгоритму. У 1997 році компанія NIST оголосила, що шукає алгоритм для заміни DES. Потреба в новому алгоритмі посилювалася в міру подальшого розвитку технологій і посилення потенційних атак.
Різні спроби розтріскування показали, що зламати алгоритм менш важко, ніж вважалося раніше. У 1998 році розподілений.net зміг зламати DES – це 39 днів.
На початок 1999 року глибокий тріск Фонду електронних прикордонників скоротив час до трохи більше 22 годин. Це означало закінчення DES, оскільки атака подібного характеру тепер знаходилася в межах досяжності супротивника, що має достатній ресурс.
Основним питанням було невеликий ключовий простір, і новий алгоритм дуже потребував. Це було проблемою, тому що NIST знадобиться ще кілька років, щоб влаштуватися на алгоритм, який став стандартом заміни, Розширений стандарт шифрування (AES).
Поки шифр для AES вирішувався, 3DES був запропонований як захід зупинки. Він передбачає виконання алгоритму DES три рази, з трьома окремими клавішами. У 1999 році DES був підтверджений, але з 3DES як ідеального алгоритму. Звичайний DES дозволений лише у застарілих програмах.
3DES перетворився на широко розповсюджений алгоритм шифрування, хоча його велике використання ресурсів та обмеження безпеки призвели до його заміни на AES у більшості випадків використання..
Розуміння алгоритму DES
Перш ніж ми поговоримо про деталі 3DES, важливо зрозуміти алгоритм DES, з якого він походить. Тож почнемо з самого початку.
Ми використовуємо шифрування, щоб перетворити наші дані прямого тексту в шифротекст, це інформація, до якої зловмисники не можуть отримати доступ (доки ми використовуємо відповідні алгоритми).
Алгоритми шифрування по суті є складними математичними формулами. Якщо мова заходить про шифрування чогось типу “Давайте на пляж”, багато людей плутаються. Зрештою, як можна застосовувати математику до таких речей, як букви та символи?
Кодування тексту
Реальність полягає в тому, що комп’ютери не працюють з літерами та символами. Натомість вони працюють за системою 1s та 0s, відомою як двійкова. Кожен 1 або 0 відомий як біт, а колекція з восьми з них відома як байт.
Ви можете переглянути його вручну або скористатися онлайн-перетворювачем, щоб побачити, що у двійковій формі “Давайте на пляж” стає:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111 00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000 01100010 01100101 01100001 01100011 01101000
Блоки
Коли дані шифруються, вони поділяються на окремі блоки для обробки. DES має 64-розрядний розмір блоку, що по суті означає, що кожен блок відповідає суміші 64 одиниць і нулів. Першим нашим блоком (перші 64 цифри двійкового зображеного вище) буде:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Нашим другим буде:
00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000
І наш останній блок буде:
01100010 01100101 01100001 01100011 01101000
Прокладки
Можливо, ви помітили, що наш третій блок довжиною лише 40 біт. Перш ніж його можна зашифрувати, його потрібно зібрати до 64-бітного розміру блоку. Це робиться за допомогою підкладка, що передбачає додавання додаткової інформації до блоку з метою її заповнення. Це можна зробити за допомогою декількох різних схем, і це також може зробити важче зламати зашифровану інформацію, але ми не будемо вникати в цю статтю.
Розклад ключів DES
Алгоритми шифрування використовують ключі, щоб додати дані, які змінять кінцевий результат процесу. Якщо DES передбачає лише такі кроки, як перестановка та S-бокси (перестановка пояснюється нижче, тоді як S-поля розкриті в Заміна розділ), все, що зловмисник повинен зробити, – це розкрити деталі алгоритму, а потім зробити кожен з кроків у зворотному порядку, щоб виявити початкове повідомлення.
Оскільки більшість наших алгоритмів широко відомі, це насправді не додасть особливої безпеки. Натомість, секретні ключі додаються для зміни результату таким чином, який неможливо передбачити лише знаючи алгоритм (доки використовується досить складний алгоритм).
DES починається з однієї клавіші, яка використовується для створення підключень, які застосовуються в кожному раунді. Це 64-бітний ключ, який має той самий розмір, що і наші блоки. Скажімо, наш ключ:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010
Тепер це ключ у двійковій формі, тобто спосіб вираження даних, коли комп’ютери обробляють його. Коли люди мають справу з клавішами, вони зазвичай відображаються як поєднання символів, приблизно так:
kj329nf982bc9wn1
У DES перший крок отримання наших круглих клавіш – перестановка ключа (переміщення її) відповідно до наступної таблиці:
Під час перестановки кожен біт нашого початкового ключа переміщується на нове положення, як зазначено в таблиці. Оскільки клітина у верхньому лівому куті (з С) говорить 57, першим номером нашого перестановленого ключа буде число у 57-му положенні нашого старого блоку:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010
Друга клітина каже 49, що означає, що другою цифрою нашого нового ключа буде число, яке знаходиться в 49-й позиції нашого старого блоку:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010
Третя клітина каже 41, тому ми шукаємо цифру на 41-й позиції:
01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010
Поки наш ключ складається з “110“.
Решта ключа розташовані так само, відповідно до значень таблиці. Ми рухаємося вліво-вправо, і як тільки ми дістаємося до кінця ряду, ми переходимо до наступного, як і звичайного. Раз таблиця С закінчено, ми стрибаємо до таблиця D завершити другу половину ключа.
Існує не простий спосіб перенести весь наш блок згідно з початковою таблицею перестановки. Ви можете зробити все це вручну, або написати сценарій для нього (або навіть пощастить і знайти його в глибині Інтернету), але ми збираємося обдурити і придумати:
1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111
Ви можете турбуватися, що ми складаємо деякі номери в цьому посібнику, але реальність полягає в тому, що це насправді не має значення. Ніхто більше не шифрує дані вручну, це все робиться через програми. Найбільш критичний аспект цього підручника полягає в тому, що ви отримуєте чітке уявлення про поняття, з якими ми маємо справу. Цифри самі служать для того, щоб допомогти вам уявити, що відбувається.
Деякі читачі, можливо, помітили, що таблиця (і тепер наш ключ) має лише 56 біт, а не 64. Це тому, що кожен восьмий біт пропускається. Це артефакт із старих технологій, коли було важливо мати біти перевірки паритетності, які перевіряли, чи правильно отримано ключ. Ці біти перевірки парності означають, що на практиці DES має захист лише 56-бітного ключа.
Таблиці C і D дають нам ключ, який має дві 28-бітні половинки. Іноді половинки називають C і D, але в цій статті ми будемо називати їх як L і R, для лівої та правої. Наша ліва сторона:
1100010 1010010 1010101 0101010
Хоча наше право таке:
1010000 1111001 0001011 1000111
Наступним кроком є переміщення клавіші на один або два пробіли вліво, залежно від раунду. Точна кількість пробілів визначається відповідно до наступної заздалегідь заданої таблиці:
1 | 1 |
2 | 1 |
3 | 2 |
4 | 2 |
5 | 2 |
6 | 2 |
7 | 2 |
8 | 2 |
9 | 1 |
10 | 2 |
11 | 2 |
12 | 2 |
13 | 2 |
14 | 2 |
15 | 2 |
16 | 1 |
Тож візьмемо ліву і праву половинки:
L 1010010 1010010 1010101 0101010
R 1010000 1111001 0001011 1000111
І перемістіть їх обох на одну позицію вліво, оскільки перший тур має зміщення 1 відповідно до таблиці (число в лівому кінці переміщується в правий кінець).
Підрозділ першого раунду:
L 0100101 0100101 0101010 1010101
R 0100001 1110010 0010111 0001111
У другому турі також говорить стіл 1, тому цей результат знову буде змінено, переміщуючи кожну позицію номер один вліво.
Другий тур підрозділ:
L 1001010 1001010 1010101 0101010
R 1000011 1100100 0101110 0011110
У третьому раунді цифри будуть переміщені на два місця ліворуч, тому що таблиця тепер говорить 2.
Підрозділ третього кола:
L 0101010 0101010 1010101 0101010
R 0001111 0010001 0111000 1111010
У наступних раундах цифри переміщуються вліво відповідно до відстаней, зазначених у таблиці, при цьому кожен зсув застосовується до результату попереднього раунду. Зрештою, це дає нам шістнадцять різних підрозділів, по одному для кожного раунду процесу DES.
Наступний крок – чергова перестановка відповідно до таблиці PC2, показаної нижче:
На даний момент ви повинні бути знайомі з перестановками, тому ми не будемо заглиблюватися в процес. Якщо ви хочете дізнатися, як це працює більш докладно, зверніться до пояснення біля початку цього розділу. Хоча позиції переселення різні, процес той самий.
Кожен з 16 ключів, отриманих у процесі переміщення, тепер переміщується відповідно до таблиці, при цьому число з 14-ї позиції переміщується на перше місце, з 17-го на друге, з 11-го на третє і т.д…
Якщо ви уважно придивитесь до таблиці, то помітите, що є лише 48 біт, а не 56 біт, які у нас були раніше. Цей процес відомий як компресійна перестановка.
Ви також можете бачити, що у верхній половині таблиці розміщені цифри від одного до 28, тоді як у нижній половині цифри від 29 до 56. Ліва та права половини наших підрозділів зберігають окремо, і це вказується нижче більшим пробілом посередині клавіш.
Знову ми збираємося обдурити і скласти номери. Скажімо, що весь цей процес дав нам такі підрозділи:
Перший раунд: 010101 010101 101010 110100 101001 100101 101010 101010
Другий раунд: 011010 110101 101110 110010 010100 110010 111101 101101
Третій раунд: 010100 100110 110110 101010 100110 011000 101011 011001
Четвертий раунд: 011001 110101 011001 110101 000011 001011 010101 010101
П’ятий раунд: 110101 001101 010101 010101 010011 001011 010111 100101
Шостий раунд: 010111 110101 011001 111001 101001 100101 101010 101010
Сьомий раунд: 110101 111010 101110 101010 100110 010110 111011 001110
Восьмий раунд: 011001 110101 010101 001001 010011 001011 010100 101010
9 раунд: 111011 011010 011110 100010 100010 010110 110011 110010
10 раунд: 011010 010101 101110 101001 010010 010110 111000 101010
11 раунд: 110101 001101 101110 101010 100101 100101 101010 001010
12 раунд: 101001 100100 101001 101010 100110 011000 101011 011001
13 раунд: 010010 010010 010101 010101 010110 110001 100101 101010
14 раунд: 101001 100110 010101 011101 010001 001010 110010 111110
15 раунд: 011001 011010 011001 110101 001001 011001 100101 101101
16 раунд: 010010 100110 010101 010101 010001 101000 110010 111010
Цей процес зсуву призводить до того, що кожен біт з початкового ключа використовується приблизно в 14 з 16 підрозділів, хоча деякі біти використовуються трохи більше, ніж інші.
Початкова перестановка
Після того, як дані будуть розділені на блоки та додані при необхідності, саме час почати процес шифрування DES. Ми повернемося до підрозділів, які ми тільки що створили на більш пізньому етапі. Перший крок відомий як початкова перестановка, де дані переставляються відповідно до наступної таблиці:
Цей початковий процес перестановки не робить алгоритм більш захищеним. Це пояснюється тим, що він не передбачає введення жодної клавіші, і його можна легко змінити. Спочатку алгоритм був розроблений таким чином, оскільки він полегшив реалізацію в певних контекстах.
Оскільки ми переглядали перестановки кілька разів, ми пропустимо тут будь-яке основне пояснення. Поверніться до Розклад ключів DES розділ, якщо вам потрібна додаткова інформація про те, як вони працюють.
Візьмемо перший блок із повідомлення “Давайте підемо на пляж”, яке ми отримали в Блок розділ під Розуміння алгоритму DES:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Оскільки перша клітина каже 58, ми вибрали б число з 58-ї позиції:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Тоді ми б взяли число з 50-ї позиції:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
І число з 42-ї позиції:
01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111
Це дає нам “110” так далеко. Ми складемо решту числа:
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
Коли початкова перестановка завершена, дані переходять до наступного кроку.
Розщеплення блоків
Після того, як дані зазнали первинної перестановки, вони поділяються на дві половини. Ми беремо наш блок, який щойно зазнав первинну перестановку:
11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001
І розділимо його на два блоки, лівий блок (складається з перших 32 цифр), відомий як L0:
L0 11010111 01001010 10101000 10011101
І правий блок (складається з другої 32 цифри), відомий як R0:
R0 01001011 10110101 10000111 10101001
Функція F
Тепер, коли блок розділений, настав час функціонування F. У першому раунді він буде застосований лише до правої половини блоку, в той час як ліва половина тримається в стороні до пізніше. Права сторона проходить наступні чотири етапи як частина функції F:
- Перестановка розширення (E на діаграмі)
- Змішування клавіш (⊕ на діаграмі)
- Заміна (кожен S1, S2 тощо на діаграмі)
- Перестановка (P на діаграмі)
Перестановка розширення
Перестановка розширення виконує три речі. Найважливіше – це те, що воно дозволяє одним бітом вхідних даних впливати на вихід двох інших бітів, викликаючи ефект лавини. Це також робить праву половину 48 біт, так що вона буде такого ж розміру, як підрозділ для наступного кроку. Інший ефект перестановки розширення полягає в тому, що він робить висновок довшим, ніж вхідний. Це дозволяє стиснути його в процесі заміщення.
Біти переставляються відповідно до наступної таблиці. Деякі окремі біти знаходяться в таблиці двічі, тому блок розширився з 32 до 48 біт:
Оскільки перша клітина каже 32, ми беремо наш правий блок і вибираємо число з 32-ї позиції, як і в інших перелічених прикладах перестановки:
R0 01001011 10110101 10000111 10101001
Потім ми беремо цифри з першої позиції, другої позиції і так далі, вгору, поки не дістанемося до нижнього правого кута блоку. Оскільки є 1 в цій комірці останньою цифрою також буде число, яке з’являється в першій позиції нашого блоку.
Скажімо, перестановка розширення дає нам новий 48-розрядний блок:
101110 100110 100100 000000 001100 001110 101101 011110
Змішування ключів
Після розширення блоку до 48 біт настав час застосувати підрозділ першого раунду, який ми отримали в Розклад ключів DES розділ вище. Блок модифікується підрозділом за допомогою шифру XOR.
Шифр XOR – це додатковий шифр, який слід за простим процесом, особливо порівняно з іншими елементами, про які ми вже обговорювали.
У шифрі XOR:
0 + 0 = 0
1 + 0 = 1
1 + 1 = 0
Тож скажімо, що ви повинні XOR наступні два числа у двійковій формі:
1101
0101
Кожна цифра буде додана до тієї, що знаходиться під нею. Відповідно до трьох наведених вище правил, це дає результат:
1000
Щоб виконати крок змішування клавіш, ми беремо праву частину нашого блоку, яку ми просто розширили до 48 біт, і першу круглу клавішу. Потім виконуємо додаток XOR:
Блок: 101110 100110 100100 000000 001100 001110 101101 011110
Кругла перша клавіша: 010101 010101 101010 110100 101001 100101 101010 101010
Результат XOR: 111011 110011 001110 110100 100101 101011 000111 110100
Результат операції XOR передається наступному раунду.
Заміна
Заміна додає плутанину в даних. Зазвичай це робиться за допомогою таблиць пошуку, які також відомі як поля заміни або S-скриньки. DES використовує вісім окремих таблиць або S-полів, різні для кожного 6 біт даних. У наступній таблиці показано вісім S-коробок DES:
Вісім окремих S-коробок використовуються для перекладу кожного 6-бітного вводу в 4-бітний вихід. Перший крок у процесі – це взяти цифри на початку та в кінці 6-бітного сегмента, а потім перетворити це двійкове значення в десяткове.
Візьмемо дані, які ми щойно закінчили XORing на попередньому кроці:
111011 110011 001110 110100 100101 101011 000111 110100
Ми розглянемо перший 6-бітний сегмент, щоб показати вам, як працює процес заміни:
111011
Оскільки перше число і останнє число – це обоє 1, це дає нам значення 11. Потім ми конвертуємо 11 від двійкових до десяткових, що дає нам 3. Це просто еквівалентні значення, написані по-різному. Подумайте про це як перетворення комп’ютерної мови на людську. Ви можете перевірити перетворення для себе за допомогою онлайн-калькулятора, якщо хочете.
Потім беремо чотири середні цифри першого 6-бітного сегмента:
111011
І перетворити їх з двійкових у десятковий. 1101 переводить на число 13.
Тепер ми беремо ці два числа і переглядаємо їх у S1 стіл:
Наш перший номер, 3, говорить нам дивитись у третьому ряду, а наш другий номер, 13 повідомляє нам подивитися в 13-й колонці. Значення в третьому ряду 13-го стовпця – 0.
Тепер, коли ми переглянули наше число в таблиці, ми перетворюємо його назад у чотиризначне двійкове. Нуль зазвичай записується як 0 у двійковій формі, але 0000 те саме, і це той формат, який найбільше підходить для наших цілей.
Після цього процесу S-box перетворює наш перший 6-бітний розділ даних (111011) в інше 4-бітове значення (0000). Це здається перекрученим, але ця методика допомагає ще більше затемнити зв’язок між шифротекстом і простим текстом, з яким він пов’язаний.
Наступний 6-бітний розділ даних потім проходить той самий процес, але замість цього він використовує вікно S2, показане вище. Третій розділ використовує таблицю S3 тощо, до тих пір, поки остаточний розділ не піддається заміні через таблицю S8.
Знову ж таки, ми збираємося обдурити решту цінностей. Скажімо, що поля заміни дають нам результат:
0000 1010 1100 1001 0100 1001 0111 0001
Після того, як кожен розділ даних пройшов через S-поле, він переходить до наступного кроку.
Перестановка
Останній етап функції F – це ще одна перестановка з використанням наступної таблиці:
На сьогодні ви вже маєте гідне розуміння того, як перестановки переносять цифри зі старого блоку на інше місце в новому блоці, тому ми не будемо знову входити в нього.
Скажімо, ця перестановка відповідає нашому попередньому результату:
0000 1010 1100 1001 0100 1001 0111 0001
І дає нам вихід:
0101 0110 1001 0101 0010 0100 0101 0010
Тепер, коли перестановка завершена, у цьому раунді ми закінчили чотири кроки функції F. У математичних позначеннях це значення відоме як f (R0, К1). Це означає, що результатом є функція (f) початкової правої частини блоку (R0) та підрозділу першого раунду (К1).
XOR з лівим блоком
Пам’ятаєте, як ми розділили блок навпіл безпосередньо перед тим, як розпочати кроки функції F? Ми відклали ліву частину блоку (L0), а права частина зазнала кожного з цих процесів. Що ж, настав час, щоб L0 повернувся до дії.
Ми беремо правильну сторону, яку ми щойно обробили f (R0, К1) і додайте його до лівої лівої сторони (L0) за допомогою шифру XOR Це нам дає R1, результат нашого першого туру:
f (R0, К1): 0101 0110 1001 0101 0010 0100 0101 0010
L0: 1101 0111 0100 1010 1010 1000 1001 1101
Результат XOR (R1): 1000 0001 1101 1111 1000 1100 1100 1111
Зверніться до Змішування ключів Розділ вище, якщо вам потрібно нагадати, як працює шифр XOR.
Ще 15 турів …
Якщо ви дійшли до цього часу, то DES, мабуть, здається важким процесом. Але це ще не близько до завершення. Дані йдуть, хоча чотири кроки функції F, а потім XOR, ще 15 разів, в цілому 16 раундів.
У другому раунді ми беремо оригінальну, незайману версію правої частини блоку (R0) і робимо її новою лівою стороною (L1). Тим часом ми беремо результат нашого першого раунду і відправляємо його через функцію F. Все відбувається так само, як і минулого разу, однак цього разу замість нього використовується підрозділ для другого раунду. Скажімо, цей процес дає нам результат:
f (R1, К2): 1011 0111 1000 1011 1001 1101 1001 1110
Потім ми XOR отримали результат з L1, який насправді є R0 (ми отримали це в Розщеплення блоків розділ). Це дає нам результат другого раунду, R2:
f (R1, К2): 1011 0111 1000 1011 1001 1101 1001 1110
L1: 0100 1011 1011 0101 1000 0111 1010 1001
R2: 1111 1100 0011 1110 0001 1010 0011 0111
Цей крок може здатися дещо заплутаним, але за схемою Фейстеля стара права сторона стає новою лівою, тоді як результатом операції стає нова права сторона.
Наступна схема дає наочне уявлення про те, що відбувається. IP представляє початкову перестановку, F – резервна для всієї функції F, ⊕ символізує функцію XOR, а стрілки вказують на кожну сторону блоку, що рухається між лівою та правою:
Точна формула для кожного кроку:
Lн = Rn-1
Rн = Ln-1 + f(Rn-1,Кн)
Де:
L = ліва половина блоку (починаючи з L0, коли блок спочатку був розбитий)
R = права половина блоку (починаючи з R0, коли блок спочатку був розбитий)
n = кругле число (починаючи з 0, коли блок був спочатку розділений)
f = F функція
Kn = підрозділ для круглої n
Відповідно до формули та діаграми, у третьому раунді R1 стає новою лівою половиною (L2), тоді як R2 обробляється через функцію F. Скажімо, це дає нам результат:
f (R2, К3) 1001 0111 0000 1011 1101 0111 1011 1011
Потім ми обчислюємо результат нашого третього раунду (R3), використовуючи шифр XOR, як і раніше:
f (R2, К3): 1011 0111 1000 1011 1001 1101 1001 1110
L2: 0100 1011 1011 0101 1000 0111 1010 1001
R3: 1111 1100 0011 1110 0001 1010 0011 0111
Цей же процес триває до п’ятнадцятого раунду, коли блоки перемикаються, а наступний підрозділ використовується в кожному раунді. У 16-му та заключному раунді блоки не перемикаються. Натомість вони об’єднуються, утворюючи 64-бітний блок. Утримання від заміни блоків на цьому останньому етапі дозволяє використовувати алгоритм як для шифрування, так і для дешифрування.
Скажімо, що заключний раунд дає нам результат:
1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101
Заключна перестановка
Ця перестановка є оберненою від початкової перестановки, і знову ж таки, вона не додає додаткового значення безпеки. Він переставляє дані відповідно до наступної таблиці:
Ця таблиця перестановок працює так само, як і попередні. Оскільки це останній етап процесу шифрування, результатом буде шифротекст для першого блоку “Ходімо до пляжу”. Скажімо, що зашифрований блок:
0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101
Тепер, якби ви хотіли справжнього шифротексту для “Поїдьмо на пляж”, ви могли просто пропустити весь навчальний процес і перейти безпосередньо до онлайн-інструменту шифрування DES. Якщо ми введемо наше речення поряд із ключем (скажімо, kj329nf982bc9wn1), інструмент надає нам зашифрований текст:
U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA
Якщо ви хочете, ви можете перетворити ключ і шифртекст у двійковий файл, а потім порівняти як шифротекст першого блоку узгоджується з усім наміченим процесом.
Дешифрування DES
У DES процес дешифрування неймовірно простий. Структура Фейстеля алгоритму дозволяє його легко змінити. Процес запускається майже точно так само, щоб розшифрувати інформацію. Єдина відмінність полягає в тому, що підрозділи застосовуються в зворотному порядку. Це ефективне налаштування, оскільки це означає, що одне і те саме програмне та апаратне забезпечення можна використовувати як в процесах шифрування, так і дешифрування..
Щоб розшифрувати дані, спочатку він проходить через початкову перестановку, потім блок розщеплюється, а права половина проходить через функцію F. Різниця полягає в тому, що в першому раунді дешифрування застосовується 16-й підрозділ. Все інше протікає як нормально. Після того, як функція F завершена, вона наближається до лівої частини блоку.
Блоки перемикаються і результат проходить той самий процес для другого раунду, за винятком лише того, що застосовується 15-й підрозділ. Цей процес триває до 16-го раунду, коли використовується 1-й підрозділ.
Як і в процесі шифрування, блоки не замінюються на останньому етапі, і тоді дані піддаються остаточній перестановці. На цьому закінчується процес дешифрування, в результаті чого виходить початковий текст тексту.
3DES
Оскільки слабкіші місця безпеки DES стали більш очевидними, 3DES був запропонований як спосіб збільшити свій розмір ключів, не будуючи абсолютно нового алгоритму. Замість використання однієї клавіші, як у DES, 3DES запускає алгоритм DES тричі, з трьома 56-бітовими клавішами:
- Ключовий з них звик шифрувати простий текст.
- Ключ другий звик розшифрувати текст, який був зашифрований ключовим.
- Ключ три використовується для шифрувати текст, який був розшифрований третім ключем.
На кожному етапі виконується повний процес DES, як зазначено вище.
Тепер вам може бути цікаво: “Як застосування розшифровки на другому кроці може підвищити безпеку?”
Відповідь полягає в тому, що він використовує окремий ключ. Якщо перший ключ також був використаний для дешифрування даних на другому кроці, то дані будуть повертатися туди, де вони почалися.
Однак, оскільки він використовує інший ключ, процес дешифрування насправді не служить для розшифровки даних. Це може здатися викривленим, але дешифрування за допомогою окремої клавіші служить лише для збільшення розміру даних.
Після того, як другий ключ “розшифрував” дані, третій ключ застосовується для його шифрування знову. Результат – шифротекст 3DES.
3DES побудований таким чином, оскільки він дозволяє сумісності реалізацій з одноклавішним DES, двома ключовими DES та трьома ключовими DES (вони описані в наступному розділі). Це не спрацювало, якби шифрування використовувалось у всіх трьох кроках.
Параметри клавіш 3DES
Технічно 3DES можна реалізувати за допомогою трьох різних ключових конфігурацій. Незважаючи на це, другий і третій варіант не є безпечними і ніколи не повинні бути реалізовані.
- Варіант клавіші перший – Цей параметр використовує три незалежні клавіші і є найбільш захищеним.
- Варіант клавіш другий – У цій конфігурації перша і третя клавіші однакові.
- Варіант тривання – Тут використовуються три однакові клавіші. Якщо використовуються ідентичні ключі, процес дешифрування на другому етапі скасовує перше шифрування, залишаючи лише остаточне шифрування для зміни даних. Це робить результат те саме, що звичайний DES.
Процес 3DES: варіант першого клавіші
Будемо чесними, весь процес 3DES може змусити вас закрутити голову, особливо якщо ви новачок у криптографії. Щоб допомогти йому зануритися, ось короткий підсумок всієї схеми шифрування алгоритму 3DES:
Простий текст входить в алгоритм 3DES і є першим зашифрований ключовим в наступних кроках:
-
-
Основний графік – 16 підрозділів отримані з ключового
-
Початкова перестановка
-
Блок розділений на ліву і праву половинки
-
-
-
-
Права половина передається через функцію F
-
Перестановка розширення
-
XOR з підрозділом для раунду
-
Заміна
-
Перестановка
-
-
XOR результат функції F з лівого боку
-
Зробіть стару праву сторону новою лівою стороною, а результат новою правою стороною
Повторіть описані вище кроки 14 разів
-
-
-
-
-
Права половина передається через функцію F
-
Перестановка розширення
-
XOR з підрозділом для 16-го туру
-
Заміна
-
Перестановка
-
-
XOR результат функції F з лівого боку
-
Об’єднайте ліву і праву сторони блоку разом
-
-
-
-
Заключна перестановка
-
Візьміть текст, який був зашифрований ключовим, а потім надішліть його через Процес “дешифрування” за допомогою ключ два:
-
-
Основний графік – 16 підрозділів походять від ключових двох
-
Початкова перестановка
-
Блок розділений на ліву і праву половинки
-
-
-
-
Права половина передається через функцію F
-
Перестановка розширення
-
XOR з підрозділом для раунду (починаючи з 16-го підрозділу для розшифровки)
-
Заміна
-
Перестановка
-
-
XOR результат функції F з лівого боку
-
Зробіть стару праву сторону новою лівою стороною, а результат новою правою стороною
Повторіть описані вище кроки 14 разів
-
-
-
-
-
Права половина передається через функцію F
-
Перестановка розширення
-
XOR з підпунктом для першого раунду
-
Заміна
-
Перестановка
-
-
XOR результат функції F з лівого боку
- Об’єднайте ліву і праву сторони блоку разом
-
- Заключна перестановка
-
Візьміть дані, які були «розшифровані» за допомогою другого ключа, та надсилайте їх через enпроцес криптування с ключ три:
-
-
Основний графік – 16 підрозділів походять від ключових трьох
-
Початкова перестановка
-
Блок розділений на ліву і праву половинки
-
-
-
-
Права половина передається через функцію F
-
Перестановка розширення
-
XOR з підрозділом для раунду
-
Заміна
-
Перестановка
-
-
XOR результат функції F з лівого боку
-
Зробіть стару праву сторону новою лівою стороною, а результат новою правою стороною
Повторіть описані вище кроки 14 разів
-
-
-
-
-
Права половина передається через функцію F
-
Перестановка розширення
-
XOR з підрозділом для 16-го туру
-
Заміна
-
Перестановка
-
-
XOR результат функції F з лівого боку
-
Об’єднайте ліву і праву сторони блоку разом
-
-
-
-
Заключна перестановка
-
Результат – шифротекст 3DES.
Безпека 3DES
Захищеність 3DES залежить від того, який варіант керування використовується. Варіант клавіші один включає три різні 56-бітні клавіші, що дає йому загальну довжину ключа 168 біт. Ефективна довжина значно скорочується за допомогою атак «посеред посередництва», які знижують його реальну безпеку до 112 біт.
Атаки “зустріч у середині” корисні для схем шифрування, які повторюють один і той же алгоритм кілька разів. Методика зберігає безпосередні значення з кожного етапу шифрування, потім використовує цю інформацію, щоб докорінно покращити час, який знадобиться для грубої сили алгоритму.
Варіанти два та три мають значно менші клавіші та вразливі як до відомих атак-відкритих текстів, так і до вибраних нападів простого тексту, а також до інших.
Відомі напади прямого тексту можливі, коли противник має доступ як до відкритого тексту, так і до шифротексту повідомлення. Якщо алгоритм сприйнятливий до цих атак, зловмисник може використовувати цю інформацію для виведення ключа, що дозволяє їм зламати всі інші дані, зашифровані тим самим ключем.
Обрана виразна атака схожа, але вона включає розкриття ключа зловмисником шляхом порівняння шифротекстів із довільними простими текстами.
Через ці вразливості та загальні невеликі розміри ключів, параметри клавіш два та три не є безпечними і не повинні застосовуватися.
Чи безпечно 3DES?
Оскільки 3DES буде застарілим у найближчі кілька років, найкраще використовувати інші алгоритми. Хоча варіант клавіші все ще вважається безпечним для багатьох додатків, існує не так багато вагомих причин, чому його слід використовувати замість такої альтернативи, як AES.
Незважаючи на те, що 3DES займає важливе місце в криптографії під час подальшої підтримки DES, роки його слави закінчилися, і настав час продовжувати. Якщо ви хочете добре захистити свої системи в майбутньому, вам слід скористатися більш сучасним алгоритмом.
Пов’язані: Пояснено загальні типи шифрування
План X дод CC0