Криптографічний алгоритм 3DES
На практиці використовуються трохи офіційно певні режими шифрування DES; кожний із цих режимів має різні властивості. Режим ECB (електронна кодова книга) послідовно шифрує кожен 64-бітний блок відкритого тексту тим самим 56-бітним ключем DES. У режимі CBC (формування ланцюжка блоку шифру) кожен 64-бітний блок відкритого тексту перед шифруванням DES ключем логічно підсумується (XOR) з попереднім… Читати ще >
Криптографічний алгоритм 3DES (реферат, курсова, диплом, контрольна)
Криптографічний алгоритм 3DES.
.
.
Зміст Вступ.
1.Історичні факти.
2.Реалізація алгоритмів шифрування.
3.Симетричний шифр 3DES.
4.Криптографічний алгоритм потрійний DES.
5.Типи потрійного шифрування DES.
6.Надійність використання DES.
7.Застосування алгоритму 3DES.
8.Стійкість ключів DES.
Список використаної літератури Вступ Споконвіків не було цінності більшої, ніж інформація. ХХІ століття — вік інформатики й інформатизації. Технологія дає можливість передавати й зберігати все більші обсяги інформації. Це благо має й зворотний бік. Інформація стає усе більше вразливою по різних причинах:
зростаючі обсяги збережених і переданих даних;
розширення кола користувачів, що мають доступ до ресурсів ЕОМ, програмам і даним;
ускладнення режимів експлуатації обчислювальних систем.
Тому все більшу важливість здобуває проблема захисту інформації від несанкціонованого доступу (НСД) при передачі й зберіганні. Сутність цієї проблеми — постійна боротьба фахівців із захисту інформації зі своїми «опонентами» .
Захист інформації - сукупність заходів, методів і засобів, що забезпечують:
виключення НСД до ресурсів ЕОМ, програмам і даним;
перевірку цілісності інформації;
виключення несанкціонованого використання програм (захист програм від копіювання).
Очевидна тенденція до переходу на цифрові методи передачі й зберігання інформації дозволяє застосовувати уніфіковані методи й алгоритми для захисту дискретної (текст, факс, телекс) і безперервної (мова) інформації.
Випробуваний метод захисту інформації від НСД — шифрування (криптографія). Шифруванням (encryption) називають процес перетворення відкритих даних (plaintext) у зашифровані (шифртекст, ciphertext) або зашифрованих даних у відкриті за певними правилами із застосуванням ключів.
Історичні факти Першим проривом завіси секретності стала поява алгоритма DES. У 1977р. був розроблений, опублікований і прийнятий у світі відкритий національний стандарт шифрування даних, що не складають державної таємниці, — алгоритм DES (Data Encryption Standart), затверджений Національним бюро стандартів США, і був офіційно визнаний як результат роботи Національного інституту стандартів США в 1981 р. Статус DES як національного стандарту США викликав до нього цікавість із боку розроблювачів устаткування й платіжних систем.
Це був алгоритм з так званим блочним шифром (шифрована інформація оброблялася блоками фіксованої довжини) з ключем довжиною 56 біт.
З часу появи перших публікацій про DES у 1973 році у всьому світі йому посвятили безліч різноманітних статей і розділів у спеціальних книгах по криптографії, що він, здавалося, вже давно повинен був бути «скритим». Але цього досі не сталося.
До сьогоднішнього часу найбільш ефективними методами дешифрування алгоритму DES, тобто отримання відкритої інформації з шифрованою без попереднього знання секретного ключа шифрування, так і залишились методи, основані на повному переборі всіх його можливих варіантів. Решта методів або основані на знанні додаткової інформації (наприклад пошук ключа по відкритій і шифрованій інформації), або відносяться до усіченим версіям алгоритмів.
Прогрес обчислювальної техніки за ці роки був настільки великим, що всі можливі 256 (приблизно 1017) варіанти ключа вже зараз не здаються настільки неможливими, якими вони представлялись у 1973 чи 1977 роках. Але навіть зараз для практичного вирішення цього завдання за допомогою потужного сучасного суперкомп «ютера, що дозволяє проводити 10 млрд. (тобто 1010) операцій в секунду, потрібно не менше 109 с (близько 30 років безперервної роботи).
Можливо десь в надрах Агентства національної безпеки США, як найбільш потужної в світі дешифрувальної служби, і є обчислювальні потужності, достатні для виконання настільки грандіозних обчислень (хоч це і не очевидно), але для абсолютної більшості найрізноманітніших комерційних додатків шифрування цей рівень стійкості на сьогодні залишається самим оптимальним варіантом. Тому й до сьогодні алгоритм DES є найпопулярнішим в комерційних додатках у всьому світі.
Головний парадокс заклечається зовсім в іншому: після опублікування алгоритму DES спецслужби виявили, що він має занадто високу стійкість, щоб спокійно ними сприйнятись, а крім того стає доступний для реалізації будь-якому грамотному програмісту.
Тепер будь-який розробник може реалізувати DES в своїй апаратурі чи програмі і сміливо стверджувати в рекламі, що інформація шифрується абсолютно надійно у відповідності з офіційними заключеннями розробників та державними організаціями, що прийняли стандарт. При цьому вже нема необхідності апелювати до авторитету цих служб при отриманні заключень щодо стійкості шифрування, а це не впливає на збільшення їх морального та матеріального капіталу у суспільстві.
Консорціум е-payment, у який входять компанії ACI Worldwide, Diebold, Thales e-Security і VeriFone, провідні гравці ринку розробки систем електронних платежів, опублікував проект специфікації 3DES, першого у світі міжплатформенного методу керування ключами алгоритму потрійного DES, що став де-факто стандартом для захисту інформації в банківській і фінансовій сферах.
Стандарт, запропонований консорціумом повинен визначити глобальну специфікацію 3DES, що розширить можливості взаємодії між всіма елементами платіжних систем, від програмного забезпечення хост-комп «ютерів до банківських торгових терміналів.
Для доробки й прийняття цього стандарту, консорціум має намір взаємодіяти з лідируючими асоціаціями карткових компаній, виробниками й організаціями по стандартизації.
Система шифрування й дешифрування даних DES використовується США як державний стандарт шифрування даних з 1976 року. На сьогоднішній день система шифрування DES вже не є такою криптостійкою, якою вона була 20 років тому. У зв’язку зі швидким ростом потужності комп’ютерних систем перебір всіх варіантів 64 бітового ключа вже не вважається таким вже неможливим завданням. Однак на його основі розроблено безліч методів шифрування даних, які використовуються й донині. Дана програма являє собою систему інтерактивного навчання класичному алгоритму DES. Крім опису самого алгоритму шифрування вона дозволить вам самому взяти участь у процесі шифрування й одержати результат. Після закінчення шифрування ви одержите результати вашого тестування. Також програма дозволяє шифрувати й дешифрувати невеликі ділянки тексту із заданим вами ключем. Система містить повну документацію по алгоритму DES з докладним поясненням всіх кроків шифрування й дешифрування українською мовою.
Стандарт шифрування даних DES (Data Encryption Standart) був розроблений фірмою IBM на початку 70-х років й у цей час є державним стандартом для шифрування цифрової інформації. Він рекомендований Асоціацією Американських Банкірів. Складний алгоритм DES використовує ключ довжиною 56 біт й 8 бітів перевірки на парність і вимагає від зловмисника перебору 72 квадриліонів можливих ключових комбінацій, забезпечуючи високий ступінь захисту при невеликих витратах. При частій зміні ключів алгоритм задовільно вирішує проблему перетворення конфіденційної інформації в недоступну.
Реалізація алгоритмів шифрування Алгоритми шифрування реалізуються програмними або апаратними засобами. Є безліч чисто програмних реалізацій різних алгоритмів. Через свою дешевизну (деякі й зовсім безкоштовні), а також все більшої швидкості процесорів ПЕВМ, простоти роботи й безвідмовності вони досить конкурентноздатні. Широко відома програма Diskreet з пакета Norton Utilities, що реалізує DES.
Не можна не згадати пакет PGP (Pretty Good Privacy, версія 2.1, автор Philip Zimmermann), у якому комплексно вирішені практично всі проблеми захисту переданої інформації. Застосоване стискання даних перед шифруванням, потужне керування ключами, симетричний (IDEA) і асиметричний (RSA) алгоритми шифрування, обчислення контрольної функції для цифрового підпису, надійна генерація ключів.
Апаратна реалізація алгоритмів можлива за допомогою спеціалізованих мікросхем (виробляються кристали для алгоритмів DH, RSA, DES, Skipjack, Дердстандарт 28 147−89) або з використанням компонентів широкого призначення (через дешевизну й високу швидкість перспективні цифрові сигнальні процесори — ЦСП, Digital Signal Processor, DSP).
Для більшої надійності шифрування одночасно працюють два криптопроцесора, і блок даних в 64 бітів вважається правильно зашифрованим, тільки якщо збігається інформація на виході обох блюмінгів. Швидкість шифрування — 250 КБ/c.
До алгоритмів шифрування пред’являються певні вимоги:
високий рівень захисту даних проти дешифрування й можливої модифікації;
захищеність інформації повинна ґрунтуватися тільки на знанні ключа й не залежати від того, відомий алгоритм чи ні (правило Кіркхоффа);
мала зміна вихідного тексту або ключа повинна призводити до значної зміни шифрованого тексту (ефект «обвалу»);
область значень ключа повинна виключати можливість дешифрування даних шляхом перебору значень ключа;
економічність реалізації алгоритму при достатній швидкості;
вартість дешифрування даних без знання ключа повинна перевищувати вартість даних.
За допомогою криптографічних методів можливим є:
шифрування інформації;
реалізація електронного підпису;
розподіл ключів шифрування;
захист від випадкової або навмисної зміни інформації.
Симетричні блокові шифри представлені в .NET класами DESCryptoServiceProvider, TripleDESCryptoServiceProvider, RijndaelManaged. Всі ці класи є нащадками абстрактного класу SymmetricAlgorithm, що описує все сімейство блокових алгоритмів із симетричними ключами. Клас описує властивості, що дозволяють маніпулювати основними параметрами алгоритму: розміром блоку, режимом роботи, ініціалізаціонним вектором, ключем й іншими. І методи CreateEncryptor й CreateDecryptor, що повертають контексти (інтерфейс ICryptoTransform) для криптографічних трансформацій даних. Також є методи GenerateKey й GenerateIV для генерації ключів й ініціалізаційних векторів. Конкретні реалізації успадковуються від цього класу.
Симетричний шифр 3DES.
Шифрування — це оборотне перетворення даних з метою їхнього приховання від сторонніх. Методів шифрування було придумано безліч — від шифрів простої заміни (найбільш відомий приклад — «Танцюючі чоловічки» Конан Дойля) до принципових, що розкривають не шифри — Вернама (двійкове додавання вихідного тексту з однократно використовуваною випадковою послідовністю). Майже всі методи шифрування використовують ключ шифрування — секретну кодову послідовність, використовувану в процесі перетворення інформації.
Шифрування виконується наступним кодом:
private SymmetricAlgorithm alg;
alg=(SymmetricAlgorithm)RijndaelManaged.Create (); //приклад створення класу RijndaelManaged.
PasswordDeriveBytes pdb=new PasswordDeriveBytes (Password.Text, null); //клас, що дозволяє генерувати ключі на базі паролів.
pdb.HashName="SHA512″; //будемо використати SHA512.
int keylen=(int)KeySize.SelectedItem; //одержуємо розмір ключа з ComboBox’а.
alg.KeySize=keylen; //установлюємо розмір ключа.
alg.Key=pdb.GetBytes (keylen>>3); //одержуємо ключ із пароля.
alg.Mode=CipherMode.CBC; //використаємо режим CBC.
alg.IV=new Byte[alg.BlockSize>>3]; //і порожній ініціалізаційний вектор
ICryptoTransform tr=alg.CreateEncryptor (); //створюємо encryptor.
FileStream instream=new.
FileStream (inFile.Text, FileMode. Open, FileAccess. Read, FileShare. Read);
FileStream outstream=new.
FileStream (outFile.Text, FileMode. Create, FileAccess. Write, FileShare. None);
int buflen=((2<<16)/alg.BlockSize)*alg.BlockSize;
byte []inbuf=new byte[buflen];
byte []outbuf=new byte[buflen];
int len;
while ((len=instream.Read (inbuf, 0, buflen))==buflen).
{.
int enclen=tr.TransformBlock (inbuf, 0, buflen, outbuf, 0); //властиво шифруємо.
outstream.Write (outbuf, 0, enclen);
}.
instream.Close ();
outbuf=tr.TransformFinalBlock (inbuf, 0, len);//шифруємо фінальний блок.
outstream.Write (outbuf, 0, outbuf. Length);
outstream.Close ();
alg.Clear (); //здійснюємо зачищення Як можна бачити, нічого складного в процесі шифрування/дешифрування немає. Використання базового класу SymmetricAlgorithm дозволяє звести все до конкретного алгоритму, до одного рядка — створенню екземпляра класу потрібного алгоритму.
Варто звернути увагу на необхідність явного завдання ініціалізаційного вектора, оскільки, на відміну від CryptoAPI, він не ініціалізується нулем за замовчуванням, а вибирається випадково.
Розмір розшифрованих даних для нефінального блоку може бути меншим розміру шифротекста. Поряд із самостійним читанням файлу й шифруванням його по блоках, можливий ще варіант із використанням стрима CryptoStream. При цьому ви створюєте CryptoStream, передаючи йому на вході стрим для запису й інтерфейс трансформації, а потім просто пишете в цей стрим свої дані.
Більшість сучасних стійких симетричних алгоритмів використовують ключ довжиною 64−256 біт (8−32 байта). Оскільки текст, зашифрований подвійним DES виявляється вразливим при криптографічній атаці - зустріч на середині (meet in the middle), те текст шифрується 3 рази DES. У такий спосіб довжина ключа зростає до 168-битий (56×3).
Симетричний шифр 3DES — це один з деяких симетричних шифрів, наданих стандартними криптопровайдерами CryptoAPI. Оскільки DES й 3DES — це практично той самий алгоритм (3DES — це DES, застосовуваний 3 рази підряд), те ми обмежимося прикладом використання алгоритму 3DES.
Однак помітимо, що для використання алгоритму 3DES потрібно Enhanced провайдер, а для DES цілком достатньо Base. Втім, DES уже не є стійким по сучасних мірках алгоритмом, тому використовувати його варто лише там, де надійність шифрування не дуже критична.
Алгоритм 3DES використовує різні ключі DES для кожної зі своїх операцій. Тому розмір його ключа дорівнює потрійному розміру ключа DES, тобто 192 (64*3) біти. Реально розмір ключа 3DES — 168 (56*3) біт, тому що в DES один байт ключа є контрольним для основних семи. Шифрування й дешифрування виконуються за допомогою функцій:
BOOL WINAPI CryptEncrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE* pbData, DWORD* pdwDataLen, DWORD dwBufLen);
BOOL WINAPI CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE* pbData, DWORD* pdwDataLen).
Параметр hHash дозволяє паралельно із шифруванням/дешифруванням проводити хеширування даних для наступного електронного підпису або його перевірки. Прапор Final визначає, чи є шифрований блок даних останнім. Він необхідний, оскільки дані можна шифрувати по частинам, але для останнього блоку завжди виконується певна деініціалізація алгоритму (звільняються внутрішні структури), і багато алгоритмів роблять додавання (і перевірку коректності при дешифруванні) заповнювача (padding) після основних даних. Параметри pbData й pdwDataLen задають адреса буфера й розмір шифрованих даних. Для блоку даних (Final=FALSE) розмір даних повинен бути завжди кратний розміру шифрованого алгоритмом блоку (для 3DES й DES цей розмір дорівнює 64 бітам). Для останнього блоку допускається порушення цієї умови.
Помітимо, що зашифровані дані містяться в тому самому буфері поверх вихідних.
Останній параметр функції CryptEncrypt — dwBufLen може здатися дивним. Навіщо нам розмір буфера, якщо ми й так знаємо розмір вхідних даних? Однак насправді він необхідний. Багато алгоритмів додають заповнювач в останній блок після основних даних. У цьому випадку розмір зашифрованих даних може виявитися більшим, ніж розмір вихідних даних. І результат може просто не вміститися в буфер! Тому варто заздалегідь вказати розмір буфера, що перевищує максимальний розмір відкритих даних, що поміщають у його. Для DES й 3DES максимально можливий довісок становить 64 біта, тобто 8 байт.
Криптографічний алгоритм потрійний DES.
Ідея використання потрійного DES з парою ключів відносно проста: якщо ключі однакові, то результат шифрування еквівалентний однократному шифруванню. Це забезпечує повну сумісність із існуючими системами розподілу й використання ключів як на однократному, так і на подвійному DES (подвійний DES — послідовне застосування однократного). Алгоритм 3DES створювався для запобігання шахрайства при заснованих на PIN-коді транзакціях ініційованих банкоматом або POS-терміналом. Існуючі зараз стандарти описують керування майстрами-ключами 3DES і процедуру обчислення унікального ключа транзакції - 3DES DUKPT (Derived Unique Key Per Transaction). Однак у них відсутній стандарт, що визначає керування ключами сесії. Без цього стандарту кожному виробникові доводитися розробляти власні реалізації обміну ключами сесії, що тільки ускладнює їхні системи.
DES означает Data Encryption Standard — стандарт шифрування даних. DES — це 64-бітовий блочний шифр з 64-бітовим ключем. Останній біт кожного байта в ключі є бітом парності, так що ефективна довжина ключа складає тільки56 біт. Це занадто мало, атака грубою силою на спеціалізованій машині займе менше доби. Потрійний DES (Triple DES) чи 3DES — це DES, що виконується тричі з різними ключами. Таким чином потрійний DES — це 64-бітовий блочний шифр з 168-бітови ключем (плюс 24 біта парності). Оригінальний DES досліджувався багато років, тому експерти вважають 3DES дуже надійним. Недоліком є те, що він значно повільніше всіх інших алгоритмів: DES сам по собі доволі повільний через застосування бітових перестановок, що ефективно розробляються на спеціальних мікросхемах, але набагато гірше на універсальних комп «ютерах, а з 3DES потрібно виконати три операції, щоб отримати захищеність двох. Єдина причина, чому варто застосовувати потрійний DES — це те, що він дуже добре вивчений. Це шифр для консерваторів.
3DES — найцікавіший блочний шифр PGP. Багаторазове зашифровування робить шифр сильнішим, але не обходиться і без проблем. Крім того, DES не є таким хорошим як інші шифри. Є атаки на 16-раундне шифрування DES, що робить 3DES найсумнівнішим шифром PGP.
Вже досить давно інформація шифрується не одинарним, а потрійним DES. Де Ek й Dk позначають відповідно зашифрування й розшифрування ключем k. Цей режим шифрування іноді називається DES-EDE. Інший варіант — DES-EEE, що складається із трьох послідовних шифрувань. Існують три можливих варіанти, певні в ANSI X9.52 для DES-EDE:
Три ключі k1, k2 й k3 незалежні.
k1 й k2 незалежні, але k1 = k3.
k1 = k2 = k3.
У третьому випадку TripleDES назад сполучимо з DES. Подібно всім блоковим шифрам, TripleDES може використовуватися різними способами. ANSI X9.52 описує сім таких способів, з яких широко використовуються чотири.
Використання подвійного й потрійного шифрування не завжди забезпечує додаткову безпеку, як цього можна було очікувати. Наприклад, розглянемо атаку «зустріч посередині» на подвійне шифрування [DH77]. Є симетричний блоковий шифр із розміром ключа n; нехай Ek (P) позначає шифрування повідомлення P ключем k. При шифруванні двома різними ключами повний розмір ключа становить 2n.
Атака полягає в наступному. Потрібно, щоб атакуючий знав хоча б одну пару, незашифрований текст і відповідний йому зашифрований текст: (Р, З). У цьому випадку, по-перше, шифрується Р для всіх можливих 256 значень K1. Цей результат запам’ятовується в таблиці, і потім таблиця впорядковується за значенням Х. Наступний крок складається в дешифруванні З, із застосуванням всіх можливих 256 значень K2. Для кожного виконаного дешифрування шукається рівне йому значення в першій таблиці. Якщо відповідне значення знайдене, то вважається, що ці ключі можуть бути правильними, і вони перевіряються для наступної відомої пари незашифрованого тексту, зашифрованого тексту.
Якщо відомо тільки одну пару значень незашифрованого тексту, зашифрованого тексту, то може бути отримана досить велика кількість невірних значень ключів. Але якщо супротивник має можливість перехопити хоча б дві пари значень (незашифрований текст — зашифрований текст), то складність злому подвійного DES фактично стає рівною складності злому звичайного DES, тобто 256.
Очевидна протидія атаці «зустріч посередині» складається у використанні третьої стадії шифрування із трьома різними ключами. Це піднімає вартість лобової атаки до 2168, що на сьогоднішній день уважається вище практичних можливостей. Але при цьому довжина ключа дорівнює 56 * 3 = 168 біт.
Як альтернатива пропонується метод потрійного шифрування, що використовує тільки два ключі. У цьому випадку виконується послідовність за шифрування-розшифрування-зашифруваня (EDE).
C = EK1 [DK2 [EK1 [P]]].
.
Рис. 2.6. Шифрування потрійним DES.
.
Дешифрування потрійним DES.
Не має великого значення, що використовується на другій стадії: шифрування або дешифрування. У випадку використання дешифрування існує тільки та перевага, що можна потрійний DES звести до звичайного одиночного DES, використовуючи K1 = K2.
Через потенційну вразливість DES при його аналізі шляхом перебору всіх можливих варіантів ключів, значний інтерес викликають пошуки альтернативи для цього шифру. Один з підходів припускає створення зовсім нового алгоритму. Інший підхід, що пропонує продовження використання вже наявного програмного забезпечення й устаткування, полягає в багаторазовому шифруванні за допомогою DES із застосуванням декількох ключів.
Те що на другій стадії використовується операція дешифрування, не є істотною з погляду шифрування, але це дає можливість користувачам «потрійного» DES розшифрувати дані, зашифровані іншими користувачами з використанням більш старої, звичайної версії DES:
C = EK1[DK1[EK1[P]]] = EK1[P].
" Потрійний" DES із трьома ключами використовує три 56-бітових ключі. Сумарна ефективна довжина ключа становить 168 біт. Шифрування відбувається за наступною схемою:
C = EK3[DK2[EK1[P]]].
Зворотна сумісність із DES буде забезпечена, якщо покласти K3=K2 або K1=K2.
" Потрійний" DES із трьома ключами реалізований у багатьох додатках, орієнтованих на роботу з Internet, у тому числі в PGP й S/MIME.
C = EK1 [DK1 [EK1 [P]]] = EK1 [P].
Потрійний DES є досить популярною альтернативою DES і використовується при керуванні ключами в стандартах ANSI X9.17 й ISO 8732 й в PEM (Privacy Enhanced Mail).
Відомих криптографічних атак на потрійний DES не існує. Ціна підбора ключа в потрійному DES дорівнює 2112.
Однак, припустимо, що можна одержати Ek (P) для всіх ключів k, а також даний відкритий текст P; потім припустимо, що нам дають зашифрований текст C такий що C = Ek2 (Ek1 (P)) для деяких секретних ключів k1 й k2. Для кожного ключа l є тільки один ключ k такий що Dl © = Ek (P). Існує 2**n можливих ключів, що створюють пари (P; C), і ці ключі можна знайти приблизно за O (2**n) кроків. Маючи можливість зберігати тільки 2**p < 2**n ключів, можна змінювати цей алгоритм і знайти всі можливі ключі за O (2**(2n-p)) кроків.
Атаки на Triple DES з подвійним ключем запропонували Merkle й Hellman [MH81], а також Van Urshot й Wiener [VW91], але вимоги до необхідних даних роблять ці атаки непрактичними. Подальша інформація відносно Triple DES пропонується різними джерелами [Bih95] [KR96].
У цей час основним недоліком DES вважається маленька довжина ключа, тому вже давно почали розроблятися різні альтернативи цьому алгоритму шифрування. Один з підходів полягає в тому, щоб розробити новий алгоритм, і успішний тому приклад — IDEA. Інший підхід припускає повторне застосування шифрування за допомогою DES з використанням декількох ключів. Найпростіший спосіб збільшити довжину ключа складається в повторному застосуванні DES із двома різними ключами. Використовуючи незашифроване повідомлення P і два ключі K1 й K2, зашифроване повідомлення можна одержати таким способом:
C = Ek2 [Ek1 [P]].
Для дешифрування потрібно, щоб два ключі застосовувалися у зворотному порядку:
P = Dk1 [Dk2 [C]].
У цьому випадку довжина ключа дорівнює 56 * 2 = 112 біт.
Типи потрійного шифрування DES.
DES-EEE3: Шифрується три рази з 3 різними ключами.
DES-EDE3: 3DES операції шифровка-розшифровка-шифровка з трьома різними ключами.
DES-EEE2 й DES-EDE2: Як і попередні, за винятком того, що перша й третя операції використовують однаковий ключ.
Порівняння різних видів DES шифрування.
Шифрування. | Ключів. | Обчислення (Computation). | Зберігання (Storage). | Тип атаки. |
одиночний. | 256. | ; | known plaintext. | |
одиночний. | 238. | 238. | chosen plaintext. | |
одиночний. | ; | 256. | chosen plaintext. | |
подвійний. | 2112. | ; | known plaintext. | |
подвійний. | 256. | 256. | known plaintext. | |
подвійний. | ; | 2112. | chosen plaintext. | |
потрійний. | 2112. | ; | known plaintext. | |
потрійний. | 256. | 256. | 256 chosen plaintext. | |
потрійний. | 2^(120-t). | ; | 2^t known plaintext. | |
потрійний. | ; | 256. | chosen plaintext. | |
потрійний. | 2112. | 256. | known plaintext. | |
потрійний. | 256. | 2112. | chosen plaintext. |
Злом DES.
Криптографічна стійкість будь-якого шифру визначається важкістю найбільш ефективних практичних чи навіть гіпотетичних алгоритмів його «викриття» чи «злому», які вдалося придумати і оцінити експертам. Найбільш прямолінійним (і тому найпростішим) способом оцінки є метод повного (тотального) перебору можливих варіантів ключа і їх перевірки на правильність до отримання істинного ключа. Такий метод приводить до успіху і тому служить еталоном найважчого з можливих методів «злому» шифру. Якщо ж шифр допускає методи «викриття» меншої важкості, ніж тотальний перебір, він рахується ненадійним.
Незважаючи на багаторічні зусилля дослідників, ефективних атак на DES не виявлено. Очевидний метод атаки — повний перебір всіх можливих ключів; цей процес виконується в середньому 2* *55 кроків. Спочатку передбачалося, що досвідчений нападаючий може побудувати спеціалізовану ЕОМ, здатну зламати DES, перебравши всі ключі впродовж розумного часу. Пізніше Hellman [Hel80] знайшов спосіб удосконалення повного перебору ключів за умови достатнього обсягу пам’яті. Крім того висувалися обвинувачення, що NSA навмисно зробило DES вразливим. Ці міркування дозволяли засумніватися в надійності DES, але незважаючи на все це, ніякого методу злому DES виявлено не було за винятком повного пошуку ключа. Вартість спеціалізованого комп’ютера для виконання такого повного пошуку (за умови знаходження ключа в середньому за 3.5 години) по оцінці Wiener становить один мільйон доларів [Wie94].
Недавно Wiener уточнив, що тепер рівний за вартістю комп’ютер знайде ключ за 35 хвилин. Перша атака на DES, більш ефективна ніж повний пошук, заявили Biham й Shamir [BS93a]; у ній використовувався новий метод відомий як диференціальний криптоаналіз. Ця атака вимагає шифрування 2* *47 відкритих текстів обраних нападаючим. Теоретично будучи крапкою розриву, ця атака непрактична через надмірні вимоги до підбору даних і складності організації атаки по обраному відкритому тексту. Самі автори цієї атаки Biham й Shamir заявили, що вважають DES захищеним.
Раніше Matsui [Mat94] розробив іншу атаку, відому як лінійний криптоаналіз Цей метод дозволяє відновити ключ DES за допомогою аналізу 2* *43 відомих відкритих текстів. Перший експериментальний криптоаналіз DES, заснований на відкритті Matsui, був успішно виконаний впродовж 50 днів на автоматизованих робочих місцях 12 HP 9735.
Зрозуміло, при таких витратах атака як і раніше вважається непрактичною. В одному з недавніх експериментів по злому DES ключ був знайдений за 22 години. На думку криптографів алгоритм DES одинарної довжини вже не є захищеним оскільки на сучасному рівні розвитку обчислювальної техніки 56-бітний ключ став вразливий для повного пошуку. Фактично DES уже заборонений для використання в державних структурах США й у цей час як стандарт використовується Triple DES (DES потрійної довжини), який буде замінений новим стандартом AES найближчим часом.
Надійність використання DES.
Приведемо кілька практичних рекомендацій, що забезпечують безпеку зашифрованих даних. Ключі DES потрібно міняти досить часто, щоб запобігти атакам, що вимагають аналізу досить великої кількості даних. Якщо говорити про захист переданих даних, то необхідно знайти захищений спосіб передачі DES ключа від відправника до одержувача. Обидві ці проблеми вирішуються за допомогою алгоритму RSA або якої-небудь іншої асиметричної криптосистеми: для кожного сеансу зв’язку створюється новий DES ключ, що зашифровується загальним ключем одержувача й у такому виді передається одержувачеві. У таких обставинах криптосистема RSA виступає як інструмент підвищення захищеності DES (або будь-якого іншого секретно-ключового шифру).
Якщо використовувати DES для шифрування файлів на жорсткому диску, то часто міняти ключі малореально, тому що для цього необхідно розшифрувати, а потім зашифрувати всі файли новим ключем. Замість цього можна створити головний ключ DES, яким буде зашифрований список ключів DES, використовуваних для шифрування файлів; у цьому випадку головний ключ можна змінювати так часто як це потрібно. Але тому що головний ключ більше привабливий для атаки чим окремі DES ключі, те його розумно шифрувати алгоритмом Triple DES.
На практиці використовуються трохи офіційно певні режими шифрування DES; кожний із цих режимів має різні властивості. Режим ECB (електронна кодова книга) послідовно шифрує кожен 64-бітний блок відкритого тексту тим самим 56-бітним ключем DES. У режимі CBC (формування ланцюжка блоку шифру) кожен 64-бітний блок відкритого тексту перед шифруванням DES ключем логічно підсумується (XOR) з попереднім блоком зашифрованого тексту. Таким чином, шифрування кожного наступного блоку залежить від попередніх блоків і тому той самий 64-бітний блок відкритого тексту може бути представлений різними блокам зашифрованого тексту залежно від його розміщення у вихідному повідомленні. CBC дозволяє захиститися від деяких атак, але не від повного пошуку або диференціального криптоаналіза. Режим CFB (шифрування зі зворотним зв’язком) дозволяє використати DES блоками довжиною менш 64 біт. Докладні описи різних режимів DES наведені в [NIS80]. Режим OFB власне кажучи дозволяє використати DES як потоковий шифр. З перерахованих режимів DES найбільше широко на практиці використається режим CBC, що є частиною декількох стандартів. Для підвищення захисту можна використати режим CBC з потрійним шифруванням.
Приклад шифрування:
BYTE buf[BUFFER_SIZE+8]; //8 — запас на padding.
while (fSize).
{.
if (!:ReadFile (hInFile, buf, BUFFER_SIZE,&dwLen, NULL)) //читаємо блок даних.
break;
dwSzLow=dwLen;
if (!:CryptEncrypt (hKey, hHash, fSize<=BUFFER_SIZE, 0, buf,&dwSzLow, sizeof (buf))) //шифруємо й хешируємо його.
break;
if (!:WriteFile (hOutFile, buf, dwSzLow,&dwSzLow, NULL)).
break;
fSize-=dwLen;
}.
Застосування алгоритму шифрування 3DES.
Операційна система Windows XP підтримує використання більш стійкого алгоритму симетричного шифрування, ніж використовуваного за умовчанням алгоритм DESX. Якщо користувачу потрібен симетричний алгоритм шифрування підвищеної стійкості, сумісний зі стандартом FIPS 140−1, потрібно включити алгоритм 3DES.
Включення алгоритму 3DES в системі Windows XP.
Щоб включити алгоритм 3DES в операційній системі Windows XP, потрібно задіяти або політику локального комп «ютера, або відповідну групову політику в тому місці розміщення, домені чи організаційному підрозділі, де знаходяться відповідні комп «ютери.
Послідовно натисніть наступні елементи:
Computer configuration («Конфігурація комп «ютера»);
Windows settings («Конфігурація Windows»);
Security settings («Параметри безпеки»);
Local Policies («Локальні політики»);
Security Options («Параметри безпеки»).
Відкрийте об «єкт System cryptography: Use FIPS compliant algorithms for encryption («Системна криптографія: використати FIPS-сумісні алгоритми для шифрування»).
Виберіть перемикач Enabled («Ввімкнено»), як показано нижче, і натисніть кнопку OK.
Коли клієнт Windows XP ввімкнений, він може відкривати файли, зашифровані як алгоритмом DESX, так і алгоритмом 3DES. Але всі нові файли будуть шифруватися тільки новим алгоритмом 3DES.
.
.
Настройка об «єкта System cryptography: Use FIPS compliant algorithms («Системна криптографія: використовувати FIPS-сумісні алгоритми для шифрування»).
Не потрібно включати алгоритм 3DES, якщо користувачу потрібен доступ до зашифрованого файлу як з системи Windows 2000, так і з Windows XP. Операційна система Windows 2000 не підтримує алгоритм 3DES.
Стійкість ключів DES.
Питання полягає в тому, що для двох довільних ключів k1 й k2 може існувати третій ключ k такий, що шифрування двома першими ключами еквівалентно шифруванню третім ключем, тобто Ek (m) = Ek1 (Ek2 (m)) для всіх повідомлень m. Якщо це так, то безліч всіх ключів утворить абстрактну групу, де закон сполучення k1 й k2 заміщається законом k., що досить знижує захищеність DES, оскільки допускає атаку «зустріч посередині», при якій ключ DES може бути знайдений у приблизно за 2* *28 кроків замість звичайних 2* *56. Також при цьому стає марним множинне (подвійне й потрійне) шифрування двома різними ключами оскільки воно буде еквівалентно одинарному шифруванню деяким третім ключем. Однак, ключі DES не групуються. Ця проблема, очевидна спочатку, була зрештою вирішена в 1993 році. У результаті було встановлено, що методи подібні до потрійного шифрування дійсно збільшують захищеність DES. Проблема може бути сформульована в такий спосіб: нехай М позначає набір всіх можливих повідомлень і нехай K позначає набір всіх можливих ключів. Шифрування ключем k приналежної K виконується перестановкою Ek: М -> М. Набір EK = {Ek: k належить K} таких перестановок є подом-набором групи SМ всіх перестановок М -> М. Той факт, що EK (тобто DES) — не група, є тільки факт того, що EK створює підгрупу СМ, що є більшої чим набір EK. Фактично, розмір цієї підгрупи — принаймні 2* *8300 [CW93]. Зокрема багаторазове шифрування задає більший простір ключів.
Для шифру DES існують чотири слабких ключі k при яких Ek (Ek (m)) = m; також існують дванадцять частково слабких ключів, які становлять пари k1 й k2 такі що Ek1 (Ek2 (m)) = m. Тому що кількість всіх можливих ключів DES становить 2* *56, то шанс випадково вибрати слабкий або частково слабкий ключ становить 1/(2* *52). Оскільки користувач вибирає ключ навмання, то слабкі ключі можна ігнорувати. Незважаючи на це, деякі користувачі воліють перевіряти, чи є використовуваний ключ DES слабким ключем. Таке випробування не віднімає багато часу й не впливає на швидкість шифрування.
Висновок Більша частина криптографічних класів (не абстрактних) .NET базується на криптопровайдерах CryptoAPI. Однак є й виключення (наприклад, SHA256Managed). У принципі, ієрархія класів .NET дозволяє абстрагуватися від конкретної реалізації алгоритму, що може забезпечити простий перехід на не прив’язані до CryptoAPI класи в майбутньому. На жаль, документація .NET по криптографічних класах, м’яко говорячи, залишає бажати кращого.
Синоніми 3DES: TripleDES, Потрійний DES. Посилений варіант алгоритму DES, при якому базовий алгоритм обробляє кожен блок даних тричі декількома незалежними підключами. Реалізований в PGP варіант 3DES EDE оперує з 168-бітовим ключем (теоретична стійкість становить 112 біт, практична — 129 біт) на 64-бітових блоках.
Список використаної літератури.
internet.
internet.
algolist.manual.ru.
internet.
internet.
internet.
alexeenko.prima.susu.ac.ru.
internet.
internet.
internet.
internet.
internet.
internet.
internet.
allrefs.ru.
internet.
internet.
security.software-testing.ru/wiki/AlgoritmDESOpisanieIObshhieVoprosy.
..
_.
.