Криптографія
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Lorenz-SZ42-2.jpg/300px-Lorenz-SZ42-2.jpg)
Криптогра́фія (від грецького κρυπτός — прихований і gráphein — писати) — наука про математичні методи забезпечення конфіденційності, цілісності і автентичності інформації. Розвинулась з практичної потреби передавати важливі відомості найнадійнішим чином. Для математичного аналізу криптографія використовує інструментарій абстрактної алгебри та теорії ймовірностей.
Тривалий час під криптографією розумілось лише шифрування — процес перетворення звичайної інформації (відкритого тексту) в незрозуміле «сміття» (тобто, шифротекст).[1] Дешифрування — зворотний процес відтворення інформації із шифротексту. Шифром називається пара алгоритмів шифрування/розшифрування. Дія шифру керується як алгоритмами, та, в кожному випадку, ключем. Ключ — секретний параметр (в ідеалі, відомий лише двом сторонам) для окремого контексту під час передачі повідомлення. Ключі мають велику важливість, оскільки без змінних ключів алгоритми шифрування легко зламуються і непридатні для використання в більшості випадків. Історично склалось так, що шифри часто використовуються для шифрування та дешифрування, без виконання додаткових процедур, таких як аутентифікація або перевірка цілісності.
В англійській мові слова криптографії та криптології інколи мають однакове значення, в той час, як деколи під криптографією може розумітись використання та дослідження технологій шифрування, а під криптологією — дослідження криптографії та криптології.[2][3]
Дослідження характеристик мов, що будь-яким чином стосуються криптології, таких як частоти появи певних літер, комбінацій літер, загальні шаблони тощо, називається криптолінгвістикою.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Skytala%26EmptyStrip-Shaded.png/199px-Skytala%26EmptyStrip-Shaded.png)
До нашого часу криптографія займалася виключно забезпеченням конфіденційності повідомлень (тобто шифруванням) — перетворенням [інформація|повідомлень] із зрозумілої форми в незрозумілу і зворотне відновлення на стороні одержувача, роблячи його неможливим для прочитання для того, хто перехопив або підслухав без секретного знання (а саме ключа, необхідного для дешифрування повідомлення). В останні десятиліття сфера застосування криптографії розширилася і включає не лише таємну передачу повідомлень, але і методи перевірки цілісності повідомлень, ідентифікування відправника/одержувача аутентифікація, цифрові підписи, інтерактивні підтвердження, та технології безпечного спілкування тощо.
Найперші форми тайнопису вимагали не більше, ніж аналог олівця та паперу, оскільки в ті часи більшість людей не могли читати. Поширення писемності, або писемності серед ворогів, викликало потребу саме в криптографії. Основними типами класичних шифрів є перестановочні шифри, які змінюють порядок літер в повідомленні, та підстановочні шифри, які систематично замінюють літери або групи літер іншими літерами або групами літер. Прості варіанти обох типів пропонували слабкий захист від досвідчених супротивників. Одним із ранніх підстановочних шифрів був шифр Цезаря, в якому кожна літера в повідомленні замінювалась літерою через декілька позицій із абетки. Цей шифр отримав ім'я Юлія Цезаря, який його використовував, зі зсувом в 3 позиції, для спілкування з генералами під час військових кампаній, подібно до коду EXCESS-3 в булевій алгебрі.
Шляхом застосування шифрування намагаються зберегти зміст спілкування в таємниці, подібно до шпигунів, військових лідерів, та дипломатів. Збереглися також відомості про деякі з ранніх єврейських шифрів. Застосування криптографії радиться в Камасутрі як спосіб спілкування закоханих без ризику незручного викриття.[4] Стеганографія (тобто, приховування факту наявності повідомлення взагалі) також була розроблена в давні часи. Зокрема, Геродот приховав повідомлення — татуювання на поголеній голові раба — під новим волоссям. До сучасних прикладів стеганографії належать невидимі чорнила, мікрокрапки, цифрові водяні знаки, що застосовуються для приховування інформації.
Шифротексти, отримані від класичних шифрів (та деяких сучасних), завжди видають деяку статистичну інформацію про текст повідомлення, що може бути використано для зламу. Після відкриття частотного аналізу (можливо, арабським вченим аль-Кінді) в 9-му столітті, майже всі такі шифри стали більш-менш легко зламними досвідченим фахівцем. Класичні шифри зберегли популярність, в основному, у вигляді головоломок (див. криптограма). Майже всі шифри залишались беззахисними перед криптоаналізом з використанням частотного аналізу до винаходу поліалфавітного шифру, швидше за все, Альберта Леоном-Баттіста приблизно в 1467 році (хоча, існують свідчення того, що знання про такі шифри існували серед арабських вчених). Винахід Альберті полягав у тому, щоб використовувати різні шифри (наприклад, алфавіти підстановки) для різних частин повідомлення. Йому також належить винахід того, що може вважатись першим шифрувальним приладом: колесо, що частково реалізовувало його винахід (див. Шифрувальний диск Альберті). В поліалфавітному шифрі Віженера (англ. Vigenère cipher), алгоритм шифрування використовує ключове слово, яке керує підстановкою літер в залежності від того, яка літера ключового слова використовується. В середині 1800-х, Чарльз Беббідж показав, що поліалфавітні шифри цього типу залишились частково беззахисними перед частотним аналізом.[1]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Enigma.jpg/240px-Enigma.jpg)
Хоча частотний аналіз є потужною та загальною технікою, шифрування, на практиці, часто було ефективним; багато із криптоаналітиків не знали цю техніку. Дешифрування повідомлень без частотного аналізу практично означало необхідність знання використаного шифру, спонукаючи, таким чином, до шпигунства, підкупу, крадіжок, зрад, тощо для отримання алгоритму. Згодом, в 19-му столітті, було визнано, що збереження алгоритму шифрування в таємниці не забезпечує захист від зламу; насправді, було встановлено, що будь-яка адекватна криптографічна схема залишається у безпеці, навіть за умови доступу сторонніх. Збереження в таємниці ключа має бути достатньою умовою захисту інформації нормальним шифром. Цей фундаментальний принцип було вперше проголошено в 1883 Огюстом Керкгофсом, і загальновідомий як принцип Керкгоффза; різкіший варіант озвучив Клод Шеннон як максиму Шеннона — ворог знає систему.
Було створено різні механічні прилади та інструменти для допомоги в шифруванні. Одним з найперших є скітала в стародавній Греції, палиця, що, як вважається, використовувалась Спартанцями як перестановочний шифр. В середньовіччя, було винайдено інші засоби, такі як дірковий шифр, що також використовувався для часткової стеганографії. Разом із винаходом поліалфавітних шифрів, було розроблено досконаліші засоби, такі як власний винахід Альберті — шифрувальний диск, табула ректа Йогана Тритеміуса, та мультициліндр Томаса Джефферсона (повторно винайдений Базерієсом приблизно в 1900 році). Декілька механічних шифрувально/дешифрувальних приладів було створено на початку 20-го століття і багато запатентовано, серед них роторні машини — найвідомішою серед них є Енігма — автомат, що використовувася Німеччиною з кінця 20-х і до кінця Другої світової війни.[5] Шифри, реалізовані прикладами покращених варіантів цих схем призвели до істотного підвищення криптоаналітичної складності після Другої світової війни..[6]
Поява цифрових комп'ютерів та електроніки після Другої світової війни зробило можливим появу складніших шифрів. Більше того, комп'ютери дозволяли шифрувати будь-які дані, які можна представити в комп'ютері у двійковому виді, на відміну від класичних шифрів, які розроблялись для шифрування письмових текстів. Це зробило непридатними для застосування лінгвістичні підходи в криптоаналізі. Багато комп'ютерних шифрів можна характеризувати за їхньою роботою з послідовностями бінарних бітів (інколи в блоках або групах), на відміну від класичних та механічних схем, які, зазвичай, працюють безпосередньо з літерами. Однак, комп'ютери також знайшли застосування у криптоаналізі, що, в певній мірі, компенсувало підвищення складності шифрів. Тим не менше, гарні сучасні шифри залишались попереду криптоаналізу; як правило, використання якісних шифрів дуже ефективне (тобто, швидке і вимагає небагато ресурсів), в той час як злам цих шифрів потребує набагато більших зусиль ніж раніше, що робить криптоаналіз настільки неефективним та непрактичним, що злам стає практично неможливим.
Широкі академічні дослідження криптографії з'явились порівняно нещодавно — починаючи з середини 1970-х, разом із появою відкритої специфікації стандарту DES (Data Encryption Standard) Національного Бюро Стандартів США, публікацій Діффі та Хелмана[7] та оприлюдненням алгоритму RSA. Відтоді, криптографія перетворилась на загальнопоширений інструмент для передачі даних, в комп'ютерних мережах, та захисті інформації взагалі. Сучасний рівень безпеки багатьох криптографічних методів базується на складності деяких обчислювальних проблем, таких як розклад цілих чисел, або проблеми з дискретними логарифмами. В багатьох випадках існують докази безпечності криптографічних методів лише за умови неможливості ефективного розв'язання певної обчислювальної проблеми.[2] За одним суттєвим винятком — схема одноразових блокнотів.
Разом із пам'яттю про історію криптографії, розробники криптографічних алгоритмів та систем також мають брати до уваги майбутній поступ технологій в своїх розробках. Наприклад, постійне підвищення обчислювальної потужності комп'ютерів розширило поле для атак грубої сили. Тому, відповідно і оновлюються стандарти в сенсі вибору довжини ключа. Можливі наслідки розвитку квантових комп'ютерів вже враховуються деякими розробниками криптографічних систем; анонсована поява малих реалізацій цих комп'ютерів робить важливою попередню підготовку.[8]
Взагалі кажучи, до початку 20-го століття, криптографія, в основному, була пов'язанна з лінгвістичними схемами. Після того, як основний акцент було зміщено, зараз криптографія інтенсивно використовує математичний апарат, включно з теорією інформації, теорією обчислювальної складності, статистикою, комбінаторикою, абстрактною алгеброю та теорією чисел. Криптографія є також відгалуженням інженерії, але не звичним, оскільки вона має справу з активним, розумним та винахідливим супротивником; більшість інших видів інженерних наук мають справу з нейтральними силами природи. Існують дослідження з приводу взаємозв'язків між криптографічними проблемами та квантовою фізикою.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/International_Data_Encryption_Algorithm_InfoBox_Diagram.svg/220px-International_Data_Encryption_Algorithm_InfoBox_Diagram.svg.png)
До алгоритмів симетричного шифрування належать методи шифрування, в яких і відправник, і отримувач повідомлення мають однаковий ключ (або, що менш поширено, ключі різні, але споріднені та легко обчислюються). Ці алгоритми шифрування були єдиними загально відомими до липня 1976.[7]
Сучасні дослідження симетричних алгоритмів шифрування зосереджено, в основному, навколо блочних та потокових алгоритмів шифрування та їхнього застосування. Блочний шифр подібний до поліалфавітного шифру Алберті: блочні шифри отримують фрагмент відкритого тексту та ключ, і видають на виході шифротекст такого самого розміру. Оскільки повідомлення зазвичай довші за один блок, потрібен деякий метод склеювання послідовних блоків. Було розроблено декілька методів, що відрізняються в різних аспектах. Вони є режимами дії блочних шифрів та мають обережно обиратись під час застосування блочного шифру в криптосистемі.
Шифри Data Encryption Standard (DES) та Advanced Encryption Standard (AES) є стандартами блочних шифрів, затверджених урядом США (однак, стандартизацію DES було скасовано після прийняття стандарту AES).[9] Не зважаючи на те, що стандарт DES було визнано застарілим, він (та особливо його все ще дійсний варіант triple DES) залишається досить популярним; він використовується в багатьох випадках, від шифрування в банкоматах[10] до забезпечення приватності електронного листування[11] та безпечного доступу до віддалених терміналів.[12] Було також розроблено багато інших шифрів різної якості. Багато з них було зламано.[8][13]
Потокові шифри, на відміну від блочних, створюють ключ довільної довжини, що накладається на відкритий текст побітово або політерно, в дечому подібно до одноразової дошки. В потокових шифрах, потік шифротексту обчислюється на основі внутрішнього стану алгоритму, який змінюється протягом його дії. Зміна стану керується ключем, та, в деяких алгоритмах, ще і потоком відкритого тексту. RC4 є прикладом добре відомого, та широко розповсюдженого потокового шифру.[8]
Криптографічні гешувальні функції (англ. cryptographic hash functions, або англ. message digest functions) не обов'язково використовують ключі, але часто використовуються і є важливим класом криптографічних алгоритмів. Ці функції отримують дані (часто, ціле повідомлення), та обчислюють коротке, фіксованого розміру число (хеш). Якісні хешувальні функції створені таким чином, що дуже важко знайти колізії (два відкритих тексти, що мають однакове значення хешу).
Коди аутентифікації повідомлень (англ. Message authentication code, MAC) подібні до криптографічних хешувальних функцій, за винятком того, що вони використовують секретний ключ для аутентифікації значення хешу[8] при отриманні повідомлення. Ці функції пропонують захист проти атак на прості хешувальні функції.
На відміну від симетричних, асиметричні алгоритми шифрування використовують пару споріднених ключів — відкритий та секретний.[14] При цьому, не зважаючи на пов'язаність відкритого та секретного ключа в парі, обчислення секретного ключа на основі відкритого вважається технічно неможливим.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Diffie_and_Hellman.jpg/220px-Diffie_and_Hellman.jpg)
В асиметричних криптосистемах, відкритий ключ може вільно розповсюджуватись, в той час як приватний ключ має зберігатись в таємниці. Зазвичай, відкритий ключ використовується для шифрування, в той час як приватний (секретний) ключ використовується для дешифрування. Діффі та Хелман показали, що криптографія з відкритим ключем можлива за умови використання протоколу обміну ключами Діффі-Хелмана.[7]
![](http://upload.wikimedia.org/wikipedia/commons/a/a2/Firefox-SSL-padlock.png)
Інформація, що може бути прочитана, осмислена і зрозуміла без яких-небудь спеціальних заходів, називається відкритим текстом (plaintext, clear text). Метод перетворення відкритого тексту таким чином, щоб сховати його суть, називається зашифруванням (encryption або enciphering). Шифрування відкритого тексту приводить до його перетворення в незрозумілу абракадабру, іменовану шифротекстом (ciphertext). Шифрування дозволяє сховати інформацію від тих, для кого вона не призначається, попри те, що вони можуть бачити сам шифротекст. Протилежний процес перетворення шифротексту в його вихідний вид називається розшифруванням (decryption або deciphering).
«У світі розрізняють два типи криптографії: криптографія, що перешкодить вашій молодшій сестрі читати ваші файли, і криптографія, що перешкодить читати ваші файли урядам великих країн. Ми будемо розглядати криптографію другого типу.»
Криптографія може бути стійкою, а може бути і слабкою, як описано в наведеному прикладі. Криптографічна стійкість вимірюється тим, скільки знадобиться часу і ресурсів, щоб із шифротексту відновити вихідний відкритий текст. Результатом стійкої криптографії є шифротекст, який винятково складно зламати без володіння визначеними інструментами дешифрування. Але наскільки складно? Використовуючи весь обчислювальний потенціал сучасної цивілізації — навіть мільярд комп'ютерів, що виконують мільярд операцій у секунду — неможливо дешифрувати результат стійкої криптографії до кінця існування Всесвіту.
Хтось може вирішити, що стійка криптографія зможе встояти навіть проти найсерйознішого криптоаналітика. Але хто про це говорить? Ніким ще не доведено, що доступне сьогодні стійке шифрування, яке однак не є абсолютно стійким як шифр Вернама (схема одноразових блокнотів, використовувана розвідувальними службами провідних держав світу), зможе встояти проти обчислювальних можливостей комп'ютерів, доступних завтра. Проте, стійка криптографія, задіяна в PGP, — найкраща стійка криптографія на сьогоднішній день.
Що стосується абсолютно стійкої криптографії, то математичний доказ того, за яких умов шифр Вернама є абсолютно стійким шифром, тобто таким шифром, який неможливо зламати за будь-яких обставин, зробив американський дослідник К. Е. Шеннон у своїй класичній праці «Теорія зв'язку у секретних системах», що була розсекречена та вперше опублікована у США у відкритому друці у 1949 р. (докладніше див. Шеннон К. Теория связи в секретных системах // Работы по теории информации и кибернетике / Перевод С. Карпова. — М.: ИЛ, 1963. — С. 243—322. — 830 с.)
Криптографічний алгоритм, або шифр, — математична формула, що описує процеси шифрування і розшифрування. Щоб зашифрувати відкритий текст, криптоалгоритм працює в сполученні з ключем — словом, числом або фразою. Те саме повідомлення одним алгоритмом, але різними ключами буде перетворюватися в різний шифротекст. Захищеність шифротексту цілком залежить від двох речей: стійкості криптоалгоритму і таємності ключа. Криптоалгоритм плюс усілякі ключі і протоколи, що приводять їх у дію, складають криптосистему. PGP — криптосистема.
У традиційній криптографії, також називаної шифруванням таємним, або симетричним, той самий ключ використовується як для шифрування, так і для розшифрування даних. Data Encryption Standard (DES) — приклад симетричного алгоритму, що широко застосовувався на Заході з 70-х років у банківській і комерційних сферах. В наш час (2002) його заміняє Advanced Encryption Standard (AES). Малюнок 2 ілюструє процес симетричного шифрування.
Юлій Цезар не довіряв гінцям. Тому, відправляючи листа своїм генералам, він замінював кожну букву A у своєму повідомленні на D, кожну B на E, і т. д. Тільки той, хто знав правило «зсуву на 3» міг розшифрувати його послання.
Украй простий приклад симетричного шифрування — підставний шифр. Підставний шифр заміняє кожну частину інформації іншою інформацією. Найчастіше це досягається зсувом букв алфавіту. Пари прикладів — секретне кільце-декодер капітана Міднайта, що могло бути у вас у дитинстві, і шифр Юлія Цезаря. В обох випадках алгоритм полягає в тому, щоб зрушити алфавіт, а ключ — число букв, на яке зроблений зсув. Допустимо, якщо ми вирішимо зашифрувати слово «SECRET», використовуючи ключ Цезаря, рівний 3, то зрушимо латинський алфавіт так, щоб він починався з третьої букви (D).
Отже, беручи вихідний варіант: ABCDEFGHIJKLMNOPQRSTUVWXYZ, і зміщаючи усі на 3, одержуємо: DEFGHIJKLMNOPQRSTUVWXYZABC, де D=A, E=B, F=C, і т. д.
Використовуючи цю схему, відкритий текст «SECRET» перетворюється в «VHFUHW». Щоб хтось міг відновити вихідний текст, ви повідомляєте йому, що ключ — 3. Очевидно, що за сьогоднішніми мірками це надзвичайно слабкий алгоритм, проте, навіть він допомагав Цезареві. І прекрасно демонструє, як діє симетричне шифрування.
Симетричне шифрування має низку переваг. Перше — швидкість криптографічних операцій. Воно особливо корисне для шифрування даних, що залишаються у вас. Однак, симетричне шифрування, використане саме по собі як засіб захисту коштовних даних, що пересилаються, може виявитися досить витратним просто через складність передачі таємного ключа.
Згадайте персонажа з вашого улюбленого шпигунського фільму: людина з запечатаним кейсом, пристебнутим наручниками до руки. Як ви вважаєте, що в цьому кейсі? Навряд чи в ньому коди запуску ракет / формула хімічної зброї / плани вторгнення. Імовірніше, там — ключ, що розшифрує секретну інформацію. Для встановлення криптографічного зв'язку за допомогою симетричного алгоритму, відправникові й одержувачеві потрібно попередньо погодити ключ і тримати його в таємниці. Якщо вони знаходяться в географічно віддалених місцях, то повинні вдатися до допомоги довіреного посередника, наприклад, надійного кур'єра, щоб уникнути компрометації ключа в ході транспортування. Зловмисник, що перехопив ключ на шляху, зможе пізніше читати, змінювати і підробляти будь-яку інформацію, зашифровану або завірену цим ключем. Глобальна проблема симетричних шифрів (від Кільця-декодера капітана Міднайта до DES і AES) полягає в складності керування ключами: як ви доставите ключ одержувачеві без ризику, що його перехоплять?
Ключ — деяка величина, що, працюючи в сполученні з криптоалгоритмом, робить визначений шифротекст. Ключі, як правило, — дуже великі числа. Розмір ключа виміряється в бітах; число, що представляє 2048-бітовий ключ, скаженно велике. В асиметричній криптографії, чим більший ключ, тим більш захищеним буде отриманий шифротекст.
Однак, розмір асиметричного ключа і розмір симетричного таємного ключа, абсолютно непорівнянні. Симетричний 80-бітовий ключ еквівалентний у стійкості 1024-бітовому відкритому ключеві. Симетричний 128-бітовий ключ приблизно дорівнює 3000-бітовому відкритому. Знову ж, більший ключ — вища надійність, але механізми, що лежать в основі кожного з типів криптографії зовсім різні, і порівнювати їхні ключі в абсолютних величинах неприпустимо.
Попри те, що ключова пара математично зв'язана, практично неможливо з відкритого ключа обчислити закритий; у той же час, обчислення закритого ключа завжди залишається можливим, якщо мати в розпорядженні достатній час і обчислювальні потужності. От чому критично важливо створювати ключ правильної довжини: досить великий, щоб був надійним, але досить малий, щоб залишався швидким у роботі. Для цього подумайте й оцініть, хто може спробувати «прочитати ваші файли», наскільки вони можуть бути таємні, скільки часу потрібно для їхнього розшифрування та якими ресурсами.
Більші ключі будуть криптографічно захищені за більший проміжок часу. Якщо те, що треба зашифрувати, повинно зберігатися в таємниці довгі-довгі роки, то, можливо, варто скористатися дуже великим ключем. Хто знає, скільки буде потрібно часу, щоб розкрити ключ, використовуючи завтрашні швидші, ефективніші комп'ютери? Були часи, коли 56-бітовий симетричний ключ DES вважався вкрай надійним.
За сучасними уявленнями 128-бітові симетричні ключі цілком надійні і не піддаються зломові, принаймні сьогодні, поки хтось не побудує функціонуючий квантовий суперкомп'ютер. 256-бітові ключі за оцінками криптологів не можуть бути зламані навіть теоретично і навіть на гіпотетичному квантовому комп'ютері. Саме з цієї причини алгоритм AES підтримує ключі довжиною 128 і 256 біт. Однак історія вчить нас тому, що всі ці запевняння впродовж десятиліть можуть виявитися порожньою балаканиною.
PGP зберігає ключі в зашифрованому вигляді. Вони утримуються в двох файлах на твердому диску; один файл для відкритих ключів, інший — для закритих. Ці файли називаються з'єднувальними (keyrings). Використовуючи PGP, Ви, час від часу, будете додавати відкриті ключі своєї кореспонденції на зв'язування відкритих. Ваші закриті ключі знаходяться на зв'язуванні закритих. Якщо ви втратите (видалите) зв'язування закритих ключів, то вже ніяким чином не зможете розшифрувати інформацію, зашифровану для ключів з цього зв'язування. Отже, збереження пари резервних копій цього файлу є необхідною.
Додаткова перевага від використання криптосистем з відкритим ключем полягає в тому, що вони надають можливість створення електронних цифрових підписів (ЕЦП). Цифровий підпис дозволяє одержувачеві повідомлення переконатися в автентичності джерела інформації (іншими словами, у тім, хто є автором інформації), а також перевірити, чи була інформація змінена (перекручена), поки перебувала в дорозі. Таким чином, цифровий підпис є засобом автентифікації автора документу (підписувача) і контролю цілісності даних. Крім того, ЕЦП несе принцип незречення, що означає, що відправник не може відмовитися від факту свого авторства підписаної ним інформації. Ці можливості настільки ж важливі для криптографії, як і таємність.
ЕЦП служить тій же меті, що печатка або власноручний автограф на папері. Однак внаслідок своєї цифрової природи ЕЦП перевершує ручний підпис і печатку в ряді дуже важливих аспектів. Цифровий підпис не тільки підтверджує особу, що підписала, але також допомагає визначити, чи був змінений зміст підписаної інформації. Власноручний підпис і печатка не мають подібної якості, крім того, їх набагато легше підробити. У той же час, ЕЦП аналогічний фізичній печатці в тому плані, що, як печатка може бути поставлений будь-якою людиною, що одержала в розпорядження печатку, так і цифровий підпис може бути згенеровано ким завгодно з копією потрібного закритого ключа.
Деякі люди використовують цифровий підпис набагато частіше, ніж шифрування. Наприклад, ви можете не хвилюватися, якщо хтось довідається, що ви тільки-но помістили $1000 на свій банківський рахунок, але ви повинні бути абсолютно упевнені, що робили транзакцію через банківського касира. Замість Шифрування інформації чужим відкритим ключем, ви шифруєте її своїм власним закритим. Якщо інформація може бути розшифрована вашим відкритим ключем, значить її джерелом є ви.
Однак описана вище схема має ряд істотних недоліків. Вона вкрай повільна і робить занадто великий обсяг даних — щонайменше вдвічі більше обсягу вихідної інформації. Поліпшенням такої схеми стає введення в процес перетворення нового компонента — однобічної хеш-функції. Одностороня хеш-функція отримує ввід довільної довжини, називаний прообразом, — у цьому випадку, повідомлення будь-якого розміру, хоч тисячі або мільйони біт — і генерує строго залежне від прообразу значення фіксованої довжини, допустимо, 160 біт. Хеш-функція гарантує, що якщо інформація буде будь-як змінена — навіть на один біт, — у результаті вийде зовсім інше хеш-значення.
У процесі цифрового підпису PGP обробляє повідомлення криптографічно стійким однобічним хеш-алгоритмом. Ця операція приводить до генерації рядка обмеженої довжини, називаної дайджестом повідомлення (message digest). (Знову ж, будь-яка зміна прообразу приведе до абсолютно іншого дайджесту.) Потім PGP зашифровує отриманий дайджест закритим ключем відправника, створюючи «електронний підпис», і прикріплює його до прообразу. PGP передає ЕЦП разом з вихідним повідомленням. Після одержання повідомлення, адресат за допомогою PGP заново обчислює дайджест підписаних даних, розшифровує ЕЦП відкритим ключем відправника, тим самим звіряючи, відповідно, цілісність даних і їхнє джерело; якщо обчислений адресатом і отриманий з повідомленням дайджести збігаються, значить інформація після підписання не була змінена. PGP може як зашифрувати саме повідомлення, що підписується, так і не робити цього; підписання відкритого тексту без шифрування корисно в тому випадку, якщо хто-небудь з одержувачів не зацікавлений або не має можливості звірити підпис (допустимо, не має PGP).
Якщо в механізмі формування ЕЦП застосовується стійка однобічна хеш-функція, немає ніякого способу взяти підпис з одного документа і прикріпити його до іншого, або ж будь-якимось чином змінити підписане повідомлення. Найменша зміна в підписаному документі буде виявлено в процесі звірення ЕЦП.
ЕЦП відіграють найважливішу роль у посвідченні і завіренні ключів інших користувачів PGP.
Одна з головних проблем асиметричних криптосистем полягає в тому, що користувачі повинні постійно стежити, чи зашифровують вони повідомлення власними ключами своїх кореспондентів. У середовищі вільного обміну відкритими ключами через суспільні сервери-депозитарії атаки являють собою серйозну потенційну загрозу. У цьому виді атак зловмисник підсуває користувачеві підроблений ключ з ім'ям передбачуваного адресата; дані зашифровуються підставним ключем, перехоплюються його власником-зловмисником, потрапляючи в чужі руки. У середовищі криптосистем з відкритим ключем критично важливо, щоб ви були абсолютно упевнені, що відкритий ключ, яким збираєтеся щось зашифрувати — не майстерна імітація, а власність вашого кореспондента. Можна просто шифрувати тільки тими ключами, що були передані вам їхніми власниками з рук у руки на дискетах. Але припустимо, що потрібно зв'язатися з людиною, що живе на іншому кінці світу, з якою ви навіть не знайомі; як ви можете бути упевнені, що одержали її справжній ключ?
Цифрові сертифікати ключів спрощують задачу визначення приналежності відкритих ключів передбачуваним власникам. Сертифікат — форма посвідчення. Інші види посвідчень включають ваші права водія, паспорт, свідоцтво про народження, тощо. Кожне з них несе на собі деяку ідентифікуючу вас інформацію і визначений запис, що не підробляється, щоб хтось інший міг встановити вашу особу. Деякі сертифікати, такі як паспорт, — самодостатнє підтвердження вашої особи; буде досить неприємно, якщо хтось викраде його, щоб видати себе за вас.
Цифровий сертифікат у своєму призначенні аналогічний фізичному. Цифровий сертифікат ключа — інформація, прикріплена до відкритого ключа користувача, що допомагає іншим встановити, чи є ключ справжнім і вірним. Цифрові сертифікати потрібні для того, щоб унеможливити спробу видати ключ однієї людини за ключ іншої.
Цифровий сертифікат складається з трьох компонентів:
- відкритого ключа, до якого він прикладений;
- даних, або записів сертифіката (відомості про особу користувача, ім'я, електронна пошта і т. д., а також, у разі необхідності, додаткові обмежуючі відомості: права доступу, робочі ліміти та інше);
- одного або декількох цифрових підписів, «з'єднаних» ключем з сертифікатом.
Завдання ЕЦП на сертифікаті — указати, що відомості сертифіката були завірені довіреною третьою особою або організацією. У той же час цифровий підпис не підтверджує достовірність сертифіката як цілого; він є тільки свідченням того, що підписаний запис сертифіката (ідентифікуюча інформація) зв'язаний з даним відкритим ключем.
Таким чином, сертифікат, зазвичай, — це відкритий ключ із прикріпленими до нього однією або декількома формами ID плюс оцінка підтвердження від довіреної особи, «єднальна» ID і відкритий ключ.
Більшість користувачів як знак обмеження доступу до комп'ютера або комп'ютерних ресурсів використовують пароль, що являє собою унікальну послідовність символів, що вводиться як ідентифікаційний код.
PGP використовує ключову фразу щоб зашифрувати ваш закритий ключ. Закритий ключ зберігається на диску, зашифрований хеш-значенням ключової фрази як симетричним таємним ключем. Ви ж використовуєте ключову фразу, щоб розшифрувати і застосовувати закритий ключ. Ключова фраза повинна бути такою, щоб вам було її важко забути, а іншим — здогадатися. Вона повинна бути чимось, що вже давно і надійно зберігається в довгостроковій пам'яті вашого мозку, а не придуманим з нуля. Чому? Тому, що якщо ви забудете ключову фразу — ви маєте величезну проблему. Закритий ключ абсолютно і зовсім марний без його ключової фрази, і з цим нічого не можна поробити. Пам'ятаєте цитату на початку? PGP — криптографія, що не дозволить урядам могутніх держав читати ваші файли. І тим більше вона не дозволить читати їх вам. Врахуйте це, якщо раптом вирішите змінити ключову фразу на уривок з анекдоту, який ніколи не могли до пуття запам'ятати.
Говорять, що секрет — вже не секрет, коли його знають два чоловіки. Поділ закритого ключа спростовує таку думку. Хоча це і практика, що не рекомендується, поділ закритого ключа у певних ситуаціях буває необхідним. Наприклад, корпоративні ключі підписання (Corporate Signing Keys, CSK) — особливо важливі закриті ключі, використовувані організацією, наприклад, для запевняння правових документів, особистої інформації співробітників або прес-релізів для посвідчення авторства. У цьому випадку буде корисно, щоб кілька членів компанії мало доступ до закритого ключа. Але це буде означати, що кожний із членів команди зможе вільно і повною мірою виступати від імені компанії.
Рішенням подібної проблеми є поділ і розподіл закритого ключа між декількома особами таким чином, що для відновлення його до робочого стану необхідною є присутність більше одного або двох хоронителів частин (часток) ключа.
Наприклад, можна розділити ключ на три частки з вимогою будь-яких двох з них для реконструкції або розділити його на дві частки з необхідністю використання обох. Якщо для процедури реконструкції застосовується захищене мережне з'єднання, хоронителям часток ключа не потрібно бути присутніми разом в одній географічній точці.
Для сучасної криптографії властиве застосування відкритих алгоритмів шифрування, що припускають використання обчислювальних засобів. Відомо більше десятка перевірених алгоритмів шифрування, які, при використанні ключа достатньої довжини і коректної реалізації алгоритму, роблять шифрований текст недоступним для практичного криптоаналізу. Поширені такі алгоритми шифрування як Twofish, IDEA, RC4 та ін.
У багатьох країнах прийняті національні стандарти шифрування.
У 2001 році в США прийнятий стандарт симетричного шифрування AES на основі алгоритму Rijndael з довжиною ключа 128, 192 і 256 біт. Алгоритм AES прийшов на зміну колишньому алгоритмові DES, який тепер рекомендовано використовувати тільки в режимі Triple DES (3DES).
В Україні діють такі стандарти криптографічних перетворень: ДСТУ ГОСТ 28147:2009 — шифрування та формування імітовставки, ДСТУ 4145-2002 — електронний цифровий підпис та ГОСТ 34.311 — геш-функція
Поняття криптології
Алгоритми криптографії
- Алгоритми шифрування
- Псевдовипадкові послідовності
- Хешувальна функція
- Рюкзаковий алгоритм
- Паралельні обчислення
- Систематичний пошук (brute-force-атака)
Криптографічні пристрої
- ↑ а б в David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9.
- ↑ а б Oded Goldreich, Foundations of Cryptography, Volume 1: Basic Tools, Cambridge University Press, 2001, ISBN 0-521-79172-3
- ↑ Cryptology (definition). Merriam-Webster's Collegiate Dictionary (вид. 11th edition). Merriam-Webster. Архів оригіналу за 21 лютого 2010. Процитовано 1 лютого 2008.
- ↑ Kama Sutra, Sir Richard F. Burton, translator, Part I, Chapter III, 44th and 45th arts.
- ↑ Hakim, Joy (1995). A History of Us: War, Peace and all that Jazz. New York: Oxford University Press. ISBN 0-19-509514-6.
- ↑ James Gannon, Stealing Secrets, Telling Lies: How Spies and Codebreakers Helped Shape the Twentieth Century, Washington, D.C., Brassey's, 2001, ISBN 1-57488-367-4.
- ↑ а б в Whitfield Diffie and Martin Hellman, «New Directions in Cryptography», IEEE Transactions on Information Theory, vol. IT-22, Nov. 1976, pp: 644—654. (pdf)
- ↑ а б в г AJ Menezes, PC van Oorschot, and SA Vanstone, Handbook of Applied Cryptography ISBN 0-8493-8523-7.
- ↑ FIPS PUB 197: The official Advanced Encryption Standard [Архівовано 2015-04-07 у Wayback Machine.].
- ↑ NCUA letter to credit unions [Архівовано 2008-09-10 у Wayback Machine.], July 2004
- ↑ RFC 2440 — Open PGP Message Format
- ↑ SSH at windowsecurity.com [Архівовано 29 жовтня 2009 у Wayback Machine.] by Pawel Golen, July 2004
- ↑ Bruce Schneier, Applied Cryptography, 2nd edition, Wiley, 1996, ISBN 0-471-11709-9.
- ↑ Whitfield Diffie and Martin Hellman, «Multi-user cryptographic techniques» [Diffie and Hellman, AFIPS Proceedings 45, pp109-112, June 8, 1976].
- І. Н. Войцехівська. Криптографія [Архівовано 18 серпня 2016 у Wayback Machine.] // Енциклопедія історії України : у 10 т. / редкол.: В. А. Смолій (голова) та ін. ; Інститут історії України НАН України. — К. : Наукова думка, 2009. — Т. 5 : Кон — Кю. — С. 390. — ISBN 978-966-00-0855-4.
- О. В. Гомонай. Криптографія [Архівовано 21 квітня 2016 у Wayback Machine.] // Енциклопедія сучасної України / ред. кол.: І. М. Дзюба [та ін.] ; НАН України, НТШ. — К. : Інститут енциклопедичних досліджень НАН України, 2001–2024. — ISBN 966-02-2074-X.
- Вербіцький О. В. Вступ до криптології. — Л. : ВНТЛ, 1998. — 248 с.
- Alfred J. Menezes; Paul C. van Oorschot; Scott A. Vanstone (August 2001). Handbook of Applied Cryptography (вид. Fifth printing). CRC Press. ISBN 0-8493-8523-7. (англ.)
- Бауэр Ф. Расшифрованные секреты. — М. : Мир, 2007. — 550 с. (рос.)
- Брассар Ж. Современная криптология. — М. : Полимед, 1999. — 176 с. (рос.)
- Земор Ж. Курс криптографии. — Ижевск : РХД, 2006. — 256 с. (рос.)
- Мао В. Современная криптография. — М. : Диалектика, 2005. — 768 с. (рос.)
- ван Тилборг Х. К. А. Основы криптологии. — М. : Мир, 2006. — 472 с. (рос.)
- Фергюсон Н., Шнайер Б. Практическая криптография. — М. : Диалектика, 2004. — 431 с. (рос.)
- Шнайер Б. Прикладная криптография. — М. : Триумф, 2002. — 816 с. (рос.)
- Шнайер Б. Секреты и ложь. — СПб. : Питер, 2003. — 368 с. (рос.)
- Ященко В. В. Введение в криптографию. — М. : МЦНМО, 2012. — 352 с. (рос.)
- Oleshchuk V. A. On Public-Key Cryptosystem Based on Church-Rosser String-Rewriting Systems // Computing and Combinatorics: First Annual International Conference, COCOON '95. — Springer, 1995. — С. 264–269. (англ.)
- Криптографія [Архівовано 21 квітня 2016 у Wayback Machine.] // ЕСУ
- Криптографія // Літературознавча енциклопедія : у 2 т. / авт.-уклад. Ю. І. Ковалів. — Київ : ВЦ «Академія», 2007. — Т. 1 : А — Л. — С. 532.
- Статті з криптографічного захисту інформації