Велика бібліотека української літератури
» » » Криптографічний алгоритм 3DES

Рефераты по информатике Споконвіків не було цінності більшої, ніж інформація. ХХІ століття - вік інформатики й інформатизації. Технологія дає можливість передавати й

Криптографічний алгоритм 3DES

Споконвіків не було цінності більшої, ніж інформація. ХХІ століття - вік інформатики й інформатизації. Технологія дає можливість передавати й зберігати все більші обсяги інформації. Це благо має й зворотний бік. Інформація стає усе більше вразливою по різних причинах:

зростаючі обсяги збережених і переданих даних;

розширення кола користувачів, що мають доступ до ресурсів ЕОМ, програмам і даним;

ускладнення режимів експлуатації обчислювальних систем.

Тому все більшу важливість здобуває проблема захисту інформації від несанкціонованого доступу (НСД) при передачі й зберіганні. Сутність цієї проблеми - постійна боротьба фахівців із захисту інформації зі своїми "опонентами".

Захист інформації - сукупність заходів, методів і засобів, що забезпечують:

виключення НСД до ресурсів ЕОМ, програмам і даним;

перевірку цілісності інформації;

виключення несанкціонованого використання програм (захист програм від копіювання).

Очевидна тенденція до переходу на цифрові методи передачі й зберігання інформації дозволяє застосовувати уніфіковані методи й алгоритми для захисту дискретної (текст, факс, телекс) і безперервної (мова) інформації.

Випробуваний метод захисту інформації від НСД - шифрування (криптографія). Шифруванням (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, Дердстандарт 28147-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Параметр 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 (C) = Ek (P). Існує 2**n можливих ключів, що створюють пари (P; C), і ці ключі можна знайти приблизно за O(2**n) кроків. Маючи можливість зберігати тільки 2**p М. Набір 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-бітових блоках.
Оценок: 788 (средняя 5 из 5)
© 2014 - 2017 BigLib.info — это сокращение от Big Library (большая библиотека).
Целью создания этого сайта было сделать литературу доступной для всех, кто желает ее читать.
Использование любых материалов сайта без согласования с администрацией запрещено.
Обратная связь