3DES е криптиращ шифър, получен от оригиналния стандарт за шифроване на данни (DES). Той стана известен в края на деветдесетте години, но оттогава изпадна в полза поради нарастването на по-сигурни алгоритми.
Въпреки че ще бъде остарял през [year] г., той все още се прилага в някои ситуации. Тъй като се основава на един от първите широко публикувани и изучавани алгоритми, DES, все още е важно да научите какво е 3DES и как работи.
Това ръководство ще ви преведе подробно през всяка стъпка от процеса на DES, след което ще разгледа как се модифицира DES в 3DES, за да стане по-сигурен. Той също така докосва различните проблеми със сигурността и дали трябва да използвате алгоритъма или не.
Какво е 3DES?
Въпреки че официално е известен като алгоритъм на тройното шифроване на данни (3DEA), той най-често се нарича 3DES. Това е така, защото алгоритъмът 3DES използва шифъра на Data Encryption Standard (DES) три пъти, за да криптира данните си.
DES е алгоритъм със симетричен ключ, базиран на мрежа от Feistel. Като симетричен ключов шифър, използва същия ключ както за процесите на криптиране, така и за декриптиране. Мрежата Feistel прави и двата процеса почти абсолютно еднакви, което води до по-ефективен за изпълнение алгоритъм.
DES има както 64-битов блок, така и размер на ключовете, но на практика ключът осигурява само 56-битови сигурност. 3DES е разработен като по-сигурна алтернатива заради малката дължина на клавишите на DES. В 3DES алгоритъмът DES се изпълнява три пъти с три клавиша, но се счита за сигурен само ако се използват три отделни ключа.
Използването на 3DES
След като слабостите на нормалния DES станаха по-очевидни, 3DES беше приет в широк спектър от приложения. Това беше една от най-често използваните схеми за криптиране преди възхода на AES.
Някои примери за реализациите му включват платежни системи Microsoft Office, Firefox и EMV. Много от тези платформи вече не използват 3DES, защото има по-добри алтернативи.
Националният институт за стандарти и технологии (NIST) пусна проект на предложение, според което всички форми на 3DES ще бъдат оттеглени до [year] г. и забранени от 2024 г. нататък. Въпреки че е просто чернова, предложението означава края на една ера и е изминало времето да преминем към други, по-сигурни алгоритми.
Историята на 3DES криптиране
Тъй като 3DES произлиза от DES, най-добре е първо да се въведе по-ранният стандарт. През седемдесетте години Националното бюро за стандарти (NBS – оттогава е преименувано на NIST) търсеше алгоритъм, който може да използва като стандарт за криптиране на чувствителна, но некласифицирана правителствена информация.
НБС прие предложения за стандарт, който да отговаря на изискванията му, но нито един от кандидатите от първоначалния кръг не беше подходящ. Той покани още изявления и този път IBM изпрати чрез алгоритъм, който екипът му разработи. Представянето е получено от шифъра на Луцифер, който Horst Feistel е проектирал.
През 1975 г. алгоритъмът на IBM е публикуван от NBS като предложения стандарт за шифроване на данни. Обществеността беше поканена да коментира дизайна, което привлече известна критика.
Изтъкнати криптографи като Whitfield Diffie и Martin Hellman, дизайнери на обмена на ключове Diffie-Hellman, твърдят, че дължината на ключа е твърде къса и че S-кутиите са променени от първоначалния им дизайн.
По онова време мнозина от криптографската общност смятали, че NSA е саботирала проекта и отслабила алгоритъма, така че да бъде единствената агенция, която може да наруши DES.
Когато това беше разследвано от Селективния комитет за разузнаване на Сената на САЩ, беше установено, че „NSA убеждава IBM, че е достатъчен намален размер на ключовете; косвено подпомагани в развитието на структурите на S-box; и удостоверява, че крайният DES алгоритъм, доколкото им е известно, не съдържа статистическа или математическа слабост. “
В същия доклад се казва, че „NSA не е нарушил дизайна по никакъв начин.“ Това е подкрепено от някои бивши служители на IBM, които твърдят, че алгоритъмът DES е проектиран изцяло от екипа на IBM.
В собствената разсекретена документация на NSA се твърди, че агенцията „е работила в тясно сътрудничество с IBM за укрепване на алгоритъма срещу всички, освен груби атаки и за укрепване на таблиците за заместване…“
Подозренията за подправяне на НСА бяха облекчени през деветдесетте години, след като публично беше открита диференциалната криптоанализа. Когато много злокачествените S-кутии бяха тествани с новата техника, беше установено, че са по-устойчиви на атака, отколкото ако бяха избрани на случаен принцип.
Това показва, че екипът на IBM вече е знаел за диференциалната криптоанализа през седемдесетте години, като Стивън Леви твърди, че NSA ги е помолил да пазят техниката в тайна, за да защитят националната сигурност.
Известният криптограф Брус Шнайер веднъж се усмихна: „На академичната общност бяха необходими две десетилетия, за да разберат, че„ ощипването “на NSA всъщност подобрява сигурността на DES.
Въпреки първоначалните въпроси относно сигурността на алгоритъма и участието на NSA, алгоритъмът IBM продължава да бъде одобрен като стандарт за шифроване на данни през 1976 г. Той е публикуван през 1977 г. и отново потвърден като стандарт през 1983, 1988 и 1993 г..
Когато линейната криптоанализа беше публикувана за първи път през 1994 г., тя започна да повдига въпроси относно сигурността на алгоритъма. През 1997 г. NIST обяви, че търси алгоритъм за замяна на DES. Необходимостта от нов алгоритъм беше засилена с напредването на технологиите и потенциалните атаки се засилиха.
Различни опити за крекинг показаха, че е по-малко трудно да се разчупи алгоритъма, отколкото се смяташе досега. През 1998 г. distribu.net е успял да пробие DES е 39 дни.
В началото на 1999 г., Deep Crack на Фондацията за електронни граници беше намалил времето до малко над 22 часа. Това сигнализира за края на DES, тъй като атака от този характер вече е в обсега на добре осигурен противник.
Основният проблем беше малкото ключово пространство и беше изключително необходим нов алгоритъм. Това беше проблем, защото ще отнеме още няколко години, за да се установи NIST по алгоритъма, който се превърна в стандарт за заместване – Advanced Encryption Standard (AES).
Докато шифърът за AES се решаваше, 3DES беше предложен като мярка за спиране. Тя включва пускане на алгоритъма DES три пъти, с три отделни клавиша. През 1999 г. DES бе потвърден отново, но с 3DES като идеален алгоритъм. Нормалният DES беше разрешен само в старите приложения.
3DES се превърна в широко разпространен алгоритъм за криптиране, въпреки че голямото използване на ресурси и ограниченията на сигурността доведе до заместване с AES в повечето случаи на използване.
Разбиране на алгоритъма на DES
Преди да поговорим за детайлите на 3DES, важно е да разберем алгоритъма на DES, от който произлиза. Така че нека започнем още в началото.
Използваме криптиране, за да превърнем нашите данни в незаконен текст в шифротекст, което е информация, която не може да бъде достъпна от атакуващи (стига да използваме подходящи алгоритми).
Алгоритмите за криптиране са по същество сложни математически формули. Когато става дума за криптиране на нещо като „Нека да отидем на плажа“, много хора се объркват. В крайна сметка как можете да приложите математиката към неща като букви и знаци?
Кодиране на текста
Реалността е, че компютрите не се занимават с букви и знаци. Вместо това те работят върху система от 1 и 0, известна като двоична. Всеки 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, първата стъпка от извеждането на нашите кръгли клавиши е да пермутирате ключа (да го преместите) в съответствие със следната таблица:
При пермутация всеки бит от оригиналния ни ключ се размества до ново положение, както е посочено в таблицата. Тъй като клетката в горния ляв ъгъл (на C) казва 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“.
Останалата част от ключа е подредена по същия начин, според стойностите на таблицата. Придвижваме се наляво надясно и след като стигнем до края на редица, скачаме надолу към следващия, точно като нормално. Веднъж таблица С е завършен, ние скачаме към таблица Г за да завършите втората половина на ключа.
Няма лесен начин да транспонираме целия ни блок според първоначалната таблица за пермутация. Можете да направите цялата работа ръчно или да напишете скрипт за това (или дори да извадите късмет и да го намерите в дълбините на интернет), но ние ще изневеряваме и ще го измислим:
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
Кръг девети: 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:
- Пермутация на разширяване (Е в диаграмата)
- Смесване на ключове (⊕ на диаграмата)
- Замяна (всеки 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.
Сега, ние вземаме тези две числа и ги погледнете в С1 таблица:
Първият ни номер, 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. В математическата нотация тази стойност е известна като е (R0, K1). Това означава, че резултатът е функцията (е) от първоначалната дясна страна на блока (R0) и под ключ от първия кръг (K1).
XOR с левия блок
Спомнете ли си как разделихме блока наполовина точно преди да започнем стъпките на функцията F? Отстраняваме лявата страна на блока (L0), докато дясната страна преминава през всеки от тези процеси. Е, сега е време L0 да се върне в действие.
Ние приемаме дясната страна, която току-що обработихме е (R0, K1) и го добавете към старата лява страна (L0) с помощта на XOR шифър. Това ни дава R1, резултатът от първия ни кръг:
е (R0, K1): 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. Всичко се случва както миналия път, но този път вместо това се използва под ключ за втори кръг. Нека да кажем, че този процес ни дава резултат от:
е (R1, K2): 1011 0111 1000 1011 1001 1101 1001 1110
След това XOR резултата с L1, който всъщност е R0 (ние получихме това в Разделяне на блокове раздел). Това ни дава резултата от втория кръг, R2:
е (R1, K2): 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
Тази стъпка може да изглежда малко объркваща, но при схемата на Feistel старата дясна страна става новата лява, докато резултатът от операцията става новата дясна страна.
Следващата диаграма ви дава визуално представяне на случващото се. IP представлява първоначалната пермутация, F е готовност за цялата функция F, ⊕ символизира функцията XOR и стрелките показват всяка страна на блока, движеща се между ляво и дясно:
Точната формула за всяка стъпка е:
Lн = RN-1
Rн = LN-1 + е(RN-1,Kн)
Където:
L = лявата половина на блока (започва с L0, когато блокът първоначално се раздели)
R = дясната половина на блока (започва с R0, когато блокът първоначално се раздели)
n = Кръглото число (започващо с 0, когато блокът първоначално се раздели)
f = F функция
Kn = Под ключ за кръг n
Според формулата и диаграмата, в третия кръг R1 става новата лява половина (L2), докато R2 се обработва чрез функцията F. Нека да кажем, че тя ни дава резултат от:
е (R2, K3) 1001 0111 0000 1011 1101 0111 1011 1011
След това изчисляваме резултата от нашия трети кръг (R3), използвайки шифъра XOR, точно както преди:
е (R2, K3): 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 процесът на декриптиране е невероятно лесен. Структурата на алгоритъма на Feistel позволява лесното му обръщане. Процесът се изпълнява почти точно така, за да се декриптира информация. Единствената разлика е, че подразделите се прилагат в обратен ред. Това е ефикасна настройка, защото означава, че един и същ софтуер и хардуер могат да бъдат използвани както в процесите на криптиране, така и в декриптирането..
За да декриптира данните, първо преминава през първоначална пермутация, след това блокът се разделя и дясната половина преминава през функцията F. Разликата е, че в първия кръг на дешифриране се прилага 16-ти под ключ. Всичко останало протича като нормално. След като функцията F приключи, тя се XORed с лявата страна на блока.
Блоковете се превключват и резултатът преминава през същия процес за втория кръг, с единственото изключение, че се прилага 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 с лявата страна
- Комбинирайте лявата и дясната страна на блока заедно
-
- Крайна пермутация
-
Вземете данните, които са били „декриптирани“ от ключ втори, след което ги изпращайте през енпроцес на криптиране с ключ три:
-
-
Ключов график – 16 ключови ключове са получени от ключ три
-
Първоначална пермутация
-
Блокът се разделя на лява и дясна половина
-
-
-
-
Дясната половина се изпраща чрез функцията F
-
Разширяване пермутация
-
XOR с под ключ за рунда
-
Заместване
-
пермутация
-
-
XOR резултатът от функцията F с лявата страна
-
Направете старата дясна страна новата лява страна, а резултата новата дясна страна
Повторете горните стъпки 14 пъти
-
-
-
-
-
Дясната половина се изпраща чрез функцията F
-
Разширяване пермутация
-
XOR с под ключ за 16-ия кръг
-
Заместване
-
пермутация
-
-
XOR резултатът от функцията F с лявата страна
-
Комбинирайте лявата и дясната страна на блока заедно
-
-
-
-
Крайна пермутация
-
Резултатът е шифротекстът 3DES.
Сигурността на 3DES
Сигурността на 3DES зависи от това коя опция за клавиш се използва. Опцията за клавиш 1 включва три различни 56-битови клавиша, което му дава обща дължина на клавиша от 168 бита. Ефективната дължина се намалява значително от срещите в средата, които намаляват сигурността му в реалния свят до 112 бита.
Атаките за среща в средата са полезни срещу схемите за криптиране, които повтарят един и същ алгоритъм няколко пъти. Техниката съхранява непосредствените стойности от всеки етап на криптиране, след което използва тази информация, за да подобри радикално времето, необходимо за груба сила на алгоритъма.
Опции две и три имат значително по-малки клавиши и са уязвими както за известни атаки в открит текст, така и за избрани атаки, както и други.
Известни атаки в явен текст са възможни, когато противникът има достъп както до обикновения текст, така и до шифротекста на съобщението. Ако един алгоритъм е податлив на тези атаки, нападателят може да използва тази информация, за да изведе ключа, който им позволява да пропукат всички останали данни, които са били криптирани от същия ключ.
Избрана атака в неясен текст е подобна, но включва атакуващ разкриване на ключа чрез сравняване на шифъртекстове с произволни явни текстове.
Поради тези уязвимости и общите малки малки ключови размери, опциите за клавиши две и три са несигурни и не трябва да се прилагат.
Безопасен ли е 3DES?
Тъй като 3DES ще бъде остарял през следващите няколко години, най-добре е да използвате други алгоритми. Въпреки че опцията за клавиши 1 все още се счита за сигурна за много приложения, няма много добри причини защо да се използва вместо алтернатива като AES.
Въпреки че 3DES заема важно място в криптографията като проследяване на DES, годините на славата му са приключили и е време да продължите. Ако искате да защитите добре вашите системи в бъдеще, вместо това трябва да използвате по-актуален алгоритъм.
Свързани: Обяснени общи типове криптиране
План X от DoD, лицензирани съгласно CC0
3DES е един от най-известните криптиращи шифри, получен от оригиналния стандарт за шифроване на данни (DES). Въпреки че е бил използван в края на деветдесетте години, той оттогава е изпаднал в полза поради нарастването на по-сигурни алгоритми. Въпреки това, той все още се прилага в някои ситуации. 3DES е разработен като по-сигурна алтернатива заради малката дължина на клавишите на DES. Той използва шифъра на DES три пъти, за да криптира данните си. Националният институт за стандарти и технологии (NIST) пусна проект на предложение, според което всички форми на 3DES ще бъдат оттеглени до 2023 г. и забранени от 2024 г. нататък. Въпреки че е просто чернова, предложението означава края на една ера и е изминало времето да преминем към други, по-сигурни алгоритми.
3DES е един от най-известните криптиращи шифри, получен от оригиналния стандарт за шифроване на данни (DES). Въпреки че е бил използван в края на деветдесетте години, той оттогава е изпаднал в полза поради нарастването на по-сигурни алгоритми. Въпреки това, той все още се прилага в някои ситуации. 3DES е разработен като по-сигурна алтернатива заради малката дължина на клавишите на DES. Той използва шифъра на DES три пъти, за да криптира данните си. Националният институт за стандарти и технологии (NIST) пусна проект на предложение, според което всички форми на 3DES ще бъдат оттеглени до 2023 г. и забранени от 2024 г. нататък. Въпреки че е просто чернова, предложението означава края на една ера и е изминало времето да преминем към други, по-сигурни алгоритми.
3DES е един от най-известните криптиращи шифри, получен от оригиналния стандарт за шифроване на данни (DES). Въпреки че е бил използван в края на деветдесетте години, той оттогава е изпаднал в полза поради нарастването на по-сигурни алгоритми. Въпреки това, той все още се прилага в някои ситуации. 3DES е разработен като по-сигурна алтернатива заради малката дължина на клавишите на DES. Той използва шифъра на DES три пъти, за да криптира данните си. Националният институт за стандарти и технологии (NIST) пусна проект на предложение, според което всички форми на 3DES ще бъдат оттеглени до 2023 г. и забранени от 2024 г. нататък. Въпреки че е просто чернова, предложението означава края на една ера и е изминало времето да преминем към други, по-сигурни алгоритми.