Криптографія

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Німецька шифрувальна машина Лоренца, що використовувалась під час Другої світової війни для шифрування повідомлень для вищого військового керівництва.

Криптогра́фія (від грецького kryptós — прихований і gráphein — писати) — наука про математичні методи забезпечення конфіденційності (неможливості прочитання інформації стороннім) і автентичності (цілісності і справжності авторства) інформації. Розвинулась з практичної потреби передавати важливі відомості найнадійнішим чином. Для математичного аналізу криптографія використовує інструментарій абстрактної алгебри та теорії ймовірностей.

Зміст

Термінологія[ред.ред. код]

Тривалий час під криптографією розумілось лише шифрування — процес перетворення звичайної інформації (відкритого тексту) в незрозуміле «сміття» (тобто, шифротекст).[1] Дешифрування — це зворотний процес відтворення інформації із шифротексту. Шифром називається пара алгоритмів шифрування/розшифрування. Дія шифру керується як алгоритмами, та, в кожному випадку, ключем. Ключ — це секретний параметр (в ідеалі, відомий лише двом сторонам) для окремого контексту під час передачі повідомлення. Ключі мають велику важливість, оскільки без змінних ключів алгоритми шифрування легко зламуються і непридатні для використання в більшості випадків. Історично склалось так, що шифри часто використовуються для шифрування та дешифрування, без виконання додаткових процедур, таких як аутенифікація або перевірка цілісності.

В англійській мові слова криптографії та криптології інколи мають однакове значення, в той час, як деколи під криптографією може розумітись використання та дослідження технологій шифрування, а під криптологією — дослідження криптографії та криптології.[2][3]

Дослідження характеристик мов, що мають будь-яке відношення до криптології, таких як частоти появи певних літер, комбінацій літер, загальні шаблони тощо, називається криптолінгвістикою.

Історія криптографії[ред.ред. код]

На фото показано сучасну реконструкцію шифра «скітала», що використовувався в Давній Греції, ймовірно був першим пристроєм для шифрування.

До нашого часу, криптографія займалася виключно забезпеченням конфіденційності повідомлень (тобто шифруванням) — перетворенням повідомлень із зрозумілої форми в незрозумілу і зворотне відновлення на стороні одержувача, роблячи його неможливим для прочитання для того, хто перехопив або підслухав без секретного знання (а саме ключа, необхідного для дешифровки повідомлення). В останні десятиліття сфера застосування криптографії розширилася і включає не лише таємну передачу повідомлень, але і методи перевірки цілісності повідомлень, ідентифікування відправника/одержувача (аутентифікація), цифрові підписи, інтерактивні підтвердження, та технології безпечного спілкування тощо.

Найперші форми тайнопису вимагали не більше ніж аналог олівця та паперу, оскільки в ті часи більшість людей не могли читати. Поширення писемності, або писемності серед ворогів, викликало потребу саме в криптографії. Основними типами класичних шифрів є перестановочні шифри, які змінюють порядок літер в повідомленні, та підстановочні шифри, які систематично замінюють літери або групи літер іншими літерами або групами літер. Прості варіанти обох типів пропонували слабкий захист від досвідчених супротивників. Одним із ранніх підстановочних шифрів був шифр Цезаря, в якому кожна літера в повідомленні замінювалась літерою через декілька позицій із абетки. Цей шифр отримав ім'я Юлія Цезаря, який його використовував, зі зсувом в 3 позиції, для спілкування з генералами під час військових кампаній, подібно до коду EXCESS-3 в булевій алгебрі.

Шляхом застосування шифрування намагаються зберегти зміст спілкування в таємниці, подібно до шпигунів, військових лідерів, та дипломатів. Збереглися також відомості про деякі з ранніх єврейських шифрів. Застосування криптографії радиться в Камасутрі як спосіб спілкування закоханих без ризику незручного викриття.[4] Стеганографія (тобто, приховування факту наявності повідомлення взагалі) також була розроблена в давні часи. Зокрема, Геродот приховав повідомлення — татуювання на поголеній голові раба — під новим волоссям. До сучасних прикладів стеганографії належать невидимі чорнила, мікрокрапки, цифрові водяні знаки, що застосовуються для приховування інформації.

Шифротексти, отримані від класичних шифрів (та деяких сучасних), завжди видають деяку статистичну інформацію про текст повідомлення, що може бути використано для зламу. Після відкриття частотного аналізу (можливо, арабським вченим аль-Кінді) в 9-тому столітті, майже всі такі шифри стали більш-менш легко зламними досвідченим фахівцем. Класичні шифри зберегли популярність, в основному, у вигляді головоломок (див. криптограмма). Майже всі шифри залишались беззахисними перед криптоаналізом з використанням частотного аналізу до винаходу поліалфавітного шифру, швидше за все, Альберта Леоном-Баттіста приблизно в 1467 році (хоча, існують свідчення того, що знання про такі шифри існували серед арабських вчених). Винахід Альберті полягав в тому, щоб використовувати різні шифри (наприклад, алфавіти підстановки) для різних частин повідомлення. Йому також належить винахід того, що може вважатись першим шифрувальним приладом: колесо, що частково реалізовувало його винахід (див. Шифрувальний диск Альберті). В поліалфавітному шифрі Віженера (англ. Vigenère cipher), алгоритм шифрування використовує ключове слово, яке керує підстановкою літер в залежності від того, яка літера ключового слова використовується. В середині 1800-тих, Чарльз Беббідж показав, що поліалфавітні шифри цього типу залишились частково беззахисними перед частотним аналізом.[1]

Енігма, автомат, варіанти якого використовувались німецькими військовими починаючи з другої половини 1920-тих і до кінця Другої світової війни. Цей автомат реалізовував складний електро-механічний поліафавітний шифр для захисту таємних повідомлень. Злам шифру Енігми в Бюро Шифрів, та, слід за цим, дешифрування повідомлень в Блетчі Парк (англ. Bletchley Park), було важливим чинником перемоги Союзників у війні.[1]

Хоча частотний аналіз є потужною та загальною технікою, шифрування, на практиці, часто було ефективним; багато із криптоаналітиків не знали цю техніку. Дешифрування повідомлень без частотного аналізу практично означало необхідність знання використаного шифру, спонукаючи, таким чином, до шпигунства, підкупу, крадіжок, зрад, тощо для отримання алгоритму. Згодом, в 19-тому столітті, було визнано, що збереження алгоритму шифрування в таємниці не забезпечує захист від зламу; насправді, було встановлено, що будь-яка адекватна криптографічна схема залишається у безпеці, навіть за умови доступу сторонніх. Збереження в таємниці ключа має бути достатньою умовою захисту інформації нормальним шифром. Цей фундаментальний принцип було вперше проголошено в 1883 Огюстом Керкгофсом, і загальновідомий як принцип Керкгоффза; різкіший варіант озвучив Клод Шеннон як максиму Шеннона — ворог знає систему.

Було створено різні механічні прилади та інструменти для допомоги в шифруванні. Одним з найперших є скітала в стародавній Греції, палиця, що, як вважається, використовувалась Спартанцями в якості перестановочного шифру. В середньовіччя, було винайдено інші засоби, такі як дірочний шифр, що також використовувася для часткової стеганографії. Разом із винаходом поліалфавітних шифрів, було розроблено досконаліші засоби, такі як власний винахід Альберті шифрувальний диск, табула ректа Йогана Тритеміуса, та мультициліндр Томаса Джефферсона (повторно винайдений Базерієсом приблизно в 1900 році). Декілька механічних шифрувально/дешифрувальних приладів було створено на початку 20-го століття і багато запатентовано, серед них роторні машини — найвідомішою серед них є Енігма, автомат, що використовувася Німеччиною з кінця 20-тих і до кінця Другої світової війни. [5] Шифри, реалізовані прикладами покращених варіантів цих схем призвели до істотного підвищення криптоаналітичної складності після Другої світової війни..[6]

Поява цифрових комп'ютерів та електроніки після Другої світової війни зробило можливим появу складніших шифрів. Більше того, комп'ютери дозволяли шифрувати будь-які дані, які можна представити в комп'ютері у двійковому виді, на відміну від класичних шифрів, які розроблялись для шифрування письмових текстів. Це зробило непридатними для застосування лінгвістичні підходи в криптоаналізі. Багато комп'ютерних шифрів можна характеризувати за їхньою роботою з послідовностями бінарних бітів (інколи в блоках або групах), на відміну від класичних та механічних схем, які, зазвичай, працюють безпосередньо з літерами. Однак, комп'ютери також знайшли застосування у криптоаналізі, що, в певній мірі, компенсувало підвищення складності шифрів. Тим не менше, гарні сучасні шифри залшались попереду криптоаналізу; як правило, використання якісних шифрів дуже ефективне (тобто, швидке і вимагає небагато ресурсів), в той час як злам цих шифрів потребує набагато більших зусиль ніж раніше, що робить криптоаналіз настільки неефективним та непрактичним, що злам стає практично неможливим.

Широкі академічні дослідження криптографії з'явились порівняно нещодавно — починаючи з середини 1970-тих, разом із появою відкритої специфікації стандарту DES (Data Encryption Standard) Національного Бюро Стандартів США, публікацій Діффі-Хелмана[7] та оприлюдненням алгоритму RSA. Відтоді, криптографія перетворилась на загальнопоширений інструмент для передачі даних, в комп'ютерних мережах, та захисті інформації взагалі. Сучасний рівень безпеки багатьох криптографічних методів базується на складності деяких обчислювальних проблем, таких як розклад цілих чисел, або проблеми з дискретними логарифмами. В багатьох випадках, існують докази безпечності криптографічних методів лише за умови неможливості ефективного розв'язання певної обчислювальної проблеми.[2] За одним суттєвим винятком — схема одноразових блокнотів.

Разом із пам'яттю про історію криптографії, розробники криптографічних алгоритмів та систем також мають брати до уваги майбутній поступ технологій в своїх розробках. Наприклад, постійне підвищення обчислювальної потужності комп'ютерів розширило поле для атак грубої сили. Тому, відповідно і оновлюються стандарти в сенсі вибору довжини ключа. Можливі наслідки розвитку квантових комп'ютерів вже враховуються деякими розробниками криптографічних систем; анонсована поява малих реалізацій цих комп'ютерів робить важливою попередню підготовку.[8]

Взагалі кажучи, до початку 20-го століття, криптографія, в основному, була пов'язанна з лінгвістичними схемами. Після того, як основний акцент було зміщено, зараз криптографія інтенсивно використовує математичний апарат, включно з теорією інформації, теорією обчислювальної складності, статистики, комбінаторики, абстрактної алгебри та теорії чисел. Криптографія є також відгалуженням інженерії, але не звичним, оскільки вона має справу з активним, розумним та винахідливим супротивником; більшість інших видів інженерних наук мають справу з нейтральними силами природи. Існують дослідження з приводу взаємозв'язків між криптографічними проблемами та квантовою фізикою.

Сучасна криптографія[ред.ред. код]

Симетричне шифрування[ред.ред. код]

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

До алгоритмів симетричного шифрування належать методи шифрування, в яких і відправник, і отримувач повідомлення мають однаковий ключ (або, менш поширено, ключі різні але споріднені та легко обчислюються). Ці алгоритми шифрування були єдиними загально відомими до липня 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] При цьому, не зважаючи на пов'язаність відкритого та секретного ключа в парі, обчислення секретного ключа на основі відкритого вважається технічно неможливим.

Вітфілд Діффі та Мартін Хелман, автори першої доповіді про асиметричні алгоритми шифрування.

В асиметричних криптосистемах, відкритий ключ може вільно розповсюджуватись, в той час як приватний ключ має зберігатись в таємниці. Зазвичай, відкритий ключ використовується для шифрування, в той час як приватний (секретний) ключ використовується для дешифрування. Діффі та Хелман показали, що криптографія з відкритим ключем можлива за умови використання протоколу обміну ключами Діффі-Хелмана.[7]

Іконка з замком в браузері Firefox, має показувати, що сторінку було відправлено через канал захищений SSL або TLS. Однак, подібна іконка не є гарантією безпеки; будь-який зламаний браузер може заводити користувачів в оману показуючи таку іконку в той час, як сторінка передається без захисту SSL або TLS.

Шифрування і розшифрування[ред.ред. код]

Інформація, що може бути прочитана, осмислена і зрозуміла без яких-небудь спеціальних заходів, називається відкритим текстом (plaintext, clear text). Метод перетворення відкритого тексту таким чином, щоб сховати його суть, називається зашифруванням (encryption або enciphering). Шифрування відкритого тексту приводить до його перетворення в незрозумілу абракадабру, іменовану шифртекстом (ciphertext). Шифрування дозволяє сховати інформацію від тих, для кого вона не призначається, попри те, що вони можуть бачити сам шифртекст. Протилежний процес перетворення шифртекста в його вихідний вид називається розшифруванням (decryption або deciphering).

Стійка криптографія[ред.ред. код]

«У світі розрізняють два типи криптографії: криптографія, що перешкодить вашій молодшій сестрі читати ваші файли, і криптографія, що перешкодить читати ваші файли урядам великих країн. Ми будемо розглядати криптографію другого типу.»

Криптографія може бути стійкою, а може бути і слабкою, як описано в приведеному прикладі. Криптографічна стійкість виміряється тим, скільки знадобиться часу і ресурсів, щоб із шифртекста відновити вихідний відкритий текст. Результатом стійкої криптографії є шифртекст, який винятково складно зламати без володіння визначеними інструментами дешифрування. Але наскільки складно? Використовуючи весь обчислювальний потенціал сучасної цивілізації — навіть мільярд комп'ютерів, що виконують мільярд операцій у секунду — неможливо дешифрувати результат стійкої криптографії до кінця існування Всесвіту.

Хтось може вирішити, що стійка криптографія зможе встояти навіть проти найсерйознішого криптоаналітика. Але хто про це говорить? Ніким ще не доведено, що доступне сьогодні стійке шифрування, яке однак не є абсолютно стійким як шифр Вернама (схема одноразових блокнотів, використовувана розвідувальними службами провідних держав світу), зможе встояти проти обчислювальних можливостей комп'ютерів, доступних завтра. Проте, стійка криптографія, задіяна в PGP, — найкраща стійка криптографія на сьогоднішній день.

Що стосується абсолютно стійкої криптографії, то математичний доказ того, за яких умов шифр Вернама є абсолютно стійким шифром, тобто таким шифром, який неможливо зламати за будь-яких обставин, зробив американський дослідник К.Е.Шеннон у своїй класичній праці "Теорія зв'язку у секретних системах", що була розсекречена та вперше опублікована у США у відкритому друці у 1949 р. (докладніше див. Шеннон К. Теория связи в секретных системах // Работы по теории информации и кибернетике / Перевод С. Карпова. — М.: ИЛ, 1963. — С. 243-322. — 830 с.)

Дія криптографії[ред.ред. код]

Криптографічний алгоритм, або шифр, — це математична формула, що описує процеси шифрування і розшифрування. Щоб зашифрувати відкритий текст, криптоалгоритм працює в сполученні з ключем — словом, числом або фразою. Те саме повідомлення одним алгоритмом, але різними ключами буде перетворюватися в різний шифртекст. Захищеність шифртекста цілком залежить від двох речей: стійкості криптоалгоритму і таємності ключа. Криптоалгоритм плюс усілякі ключі і протоколи, що приводять їх у дію, складають криптосистему. PGP — це криптосистема.

У традиційній криптографії, також називаної шифруванням таємним, або симетричним, той самий ключ використовується як для шифрування, так і для розшифрування даних. Data Encryption Standart (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) складається в складності керування ключами: як ви доставите ключ одержувачеві без ризику, що його перехоплять?

PGP[ред.ред. код]

PGP поєднує в собі найкращі сторони симетричної криптографії і криптографії з відкритим ключем. PGP — це гібридна криптосистема.

Коли користувач зашифровує дані за допомогою PGP, програма для початку їх стискає. Стиск скорочує час модемної передачі і заощаджує дисковий простір, а також, що важливіше, підвищує криптографічну стійкість. Більшість криптоаналітичних техніків засновано на статистичному аналізі шифртекста в пошуках ознак відкритого тексту. Стиск зменшує число таких ознак, що істотно підсилює опірність криптоаналізу.

Потім, PGP створює сеансовий ключ, тобто одноразовий симетричний ключ, застосовуваний тільки для однієї операції. Цей сеансовий ключ являє собою псевдовипадкове число, згенероване від випадкових рухів мишки і натискання клавіш. Сеансовий ключ працює на основі дуже надійного, швидкого симетричного алгоритму, яким PGP зашифровує стиснуте повідомлення; у результаті виходить шифртекст. Як тільки дані зашифровані, сеансовий ключ також шифрується, але уже відкритим ключем одержувача. Цей зашифрований відкритим ключем сеансовий ключ прикріплюється до шифртексту і передається разом з ним одержувачеві.

Розшифрування відбувається в зворотному порядку. PGP одержувача використовує його закритий ключ для витягу сеансового ключа з повідомлення, яким шифртекст вихідного послання відновлюється у відкритий текст.

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

Ключі[ред.ред. код]

Ключ — це деяка величина, що, працюючи в сполученні з криптоалгоритмом, робить визначений шифртекст. Ключі, як правило, — це дуже великі числа. Розмір ключа виміряється в бітах; число, що представляє 2048-бітовий ключ, скажено велике. В асиметричній криптографії, чим більший ключ, тим захищеніший отриманий шифртекст. Однак, розмір асиметричного ключа і розмір симетричного таємного ключа, абсолютно непорівнянні. Симетричний 80-бітовий ключ еквівалентний у стійкості 1024-бітовому відкритому ключеві. Симетричний 128-бітовий ключ приблизно дорівнює 3000-бітовому відкритому. Знову ж, більший ключ — вища надійність, але механізми, що лежать в основі кожного з типів криптографії зовсім різні, і порівнювати їхні ключі в абсолютних величинах неприпустимо.

Попри те, що ключова пара математично зв'язана, практично неможливо з відкритого ключа обчислити закритий; у той же час, обчислення закритого ключа завжди залишається можливим, якщо мати в розпорядженні достатній час і обчислювальні потужності. От чому критично важливо створювати ключ вірної довжини: досить великий, щоб був надійним, але досить малий, щоб залишався швидким у роботі. Для цього подумайте й оцініть, хто може спробувати «прочитати ваші файли», наскільки вони можуть бути таємні, скільки часу потрібно для їхнього розшифрування та якими ресурсами.

Більші ключі будуть криптографічно захищені за більший проміжок часу. Якщо те, що треба зашифрувати, повинно зберігатися в таємниці довгі-довгі роки, то, можливо, варто скористатися дуже великим ключем. Хто знає, скільки буде потрібно часу, щоб розкрити ключ, використовуючи завтрашні швидші, ефективніші комп'ютери? Були часи, коли 56-бітовий симетричний ключ DES вважався вкрай надійним.

За сучасними уявленнями 128-бітові симетричні ключі зовсім надійні і не піддані зломові, принаймні сьогодні, поки хтось не побудує функціонуючий квантовий суперкомп'ютер. 256-бітові ключі за оцінками криптологів не можуть бути зламані навіть теоретично і навіть на гіпотетичному квантовому комп'ютері. Саме з цієї причини алгоритм AES підтримує ключі довжиною 128 і 256 біт. Однак історія вчить нас тому, що всі ці запевняння впродовж десятиліть можуть виявитися порожньою балаканиною.

PGP зберігає ключі в зашифрованому виді. Вони утримуються в двох файлах на твердому диску; один файл для відкритих ключів, іншої — для закритих. Ці файли називаються з'єднувальними (keyrings). Використовуючи PGP, Ви, час від часу, будете додавати відкриті ключі своєї кореспонденції на зв'язування відкритих. Ваші закриті ключі знаходяться на зв'язуванні закритих. Якщо ви втратите (видалите) зв'язування закритих ключів, то вже ніяким чином не зможете розшифрувати інформацію, зашифровану для ключів з цього зв'язування. Отже, збереження пари резервних копій цього файлу є необхідною.

Цифрові підписи[ред.ред. код]

Додаткова перевага від використання криптосистем з відкритим ключем полягає в тому, що вони надають можливість створення електронних цифрових підписів (ЕЦП). Цифровий підпис дозволяє одержувачеві повідомлення переконатися в автентичності джерела інформації (іншими словами, у тім, хто є автором інформації), а також перевірити, чи була інформація змінена (перекручена), поки знаходилася в шляху. Таким чином, цифровий підпис є засобом авторизації і контролю цілісності даних. Крім того, ЕЦП несе принцип незречення, що означає, що відправник не може відмовитися від факту свого авторства підписаної ним інформації. Ці можливості настільки ж важливі для криптографії, як і таємність.

ЕЦП служить тієї ж мети, що печатка або власноручний автограф на паперовому листі. Однак внаслідок своєї цифрової природи ЕЦП перевершує ручний підпис і печатку в ряді дуже важливих аспектів. Цифровий підпис не тільки підтверджує особистість що підписала, але також допомагає визначити, чи був зміст підписаної інформації змінений. Власноручний підпис і печатка не мають подібної якості, крім того, їх набагато легше підробити. У той же час, ЕЦП аналогічна фізичної печатки в тім плані, що, як печатка може бути проставлена будь-якою людиною, що одержала в розпорядження печатку, так і цифровий підпис може бути згенерована ким завгодно з копією потрібного закритого ключа.

Деякі люди використовують цифровий підпис набагато частіше ніж шифрування. Наприклад, ви можете не хвилюватися, якщо хтось довідається, що ви тільки що помістили $1000 на свій банківський рахунок, але ви повинні бути абсолютно упевнені, що робили транзакцію через банківського касира. Простий спосіб генерації цифрових підписів показаний на малюнку 6. Замість Шифрування інформації чужим відкритим ключем, ви шифруєте її своїм власним закритим. Якщо інформація може бути розшифрована вашим відкритим ключем, значить її джерелом є ви.

Хеш-функція[ред.ред. код]

Однак описана вище схема має ряд істотних недоліків. Вона вкрай повільна і робить занадто великий обсяг даних — щонайменше вдвічі більше обсягу вихідної інформації. Поліпшенням такої схеми стає введення в процес перетворення нового компонента — однобічної хеш-функції. Одностороня хеш-функція отримує ввід довільної довжини, називаний прообразом, — у цьому випадку, повідомлення будь-якого розміру, хоч тисячі або мільйони біт — і генерує строго залежний від прообразу значення фіксованої довжини, допустимо, 160 біт. Хеш-функція гарантує, що якщо інформація буде будь-як змінена — навіть на один біт, — у результаті вийде зовсім інше хеш-значення.

У процесі цифрового підпису PGP обробляє повідомлення криптографічно стійким однобічним хеш-алгоритмом. Ця операція приводить до генерації рядка обмеженої довжини, називаної дайджестом повідомлення (message digest). (Знову ж, будь-яка зміна прообразу приведе до абсолютно іншого дайджесту.) Потім PGP зашифровує отриманий дайджест закритим ключем відправника, створюючи «електронний підпис», і прикріплює її до прообразу. PGP передає ЕЦП разом з вихідним повідомленням. Після одержання повідомлення, адресат за допомогою PGP заново обчислює дайджест підписаних даних, розшифровує ЕЦП відкритим ключем відправника, тим самим звіряючи, відповідно, цілісність даних і їхнє джерело; якщо обчислений адресатом і отриманий з повідомленням дайджести збігаються, значить інформація після підписання не була змінена. PGP може як зашифрувати саме повідомлення, що підписується, так і не робити цього; підписання відкритого тексту без шифрування корисно в тому випадку, якщо хто-небудь з одержувачів не зацікавлений або не має можливості звірити підпис (допустимо, не має PGP).

Якщо в механізмі формування ЕЦП застосовується стійка однобічна хеш-функція, немає ніякого способу взяти або підпис з одного документа і прикріпити неї до іншого, або ж будь-якимось чином змінити підписане повідомлення. Найменша зміна в підписаному документі буде виявлено в процесі звірення ЕЦП.

ЕЦП відіграють найважливішу роль у посвідченні і запевнянні ключів інших користувачів PGP.

Цифрові сертифікати[ред.ред. код]

Одна з головних проблем асиметричних криптосистем полягає в тому, що користувачі повинні постійно стежити, чи зашифровують вони повідомлення власними ключами своїх кореспондентів. У середовищі вільного обміну відкритими ключами через суспільні сервери-депозитарії атаки являють собою серйозну потенційну загрозу. У цьому виді атак зловмисник підсуває користувачеві підроблений ключ з ім'ям передбачуваного адресата; дані зашифровуються підставним ключем, перехоплюються його власником-зловмисником, потрапляючи в чужі руки. У середовищі криптосистем з відкритим ключем критично важливо, щоб ви були абсолютно упевнені, що відкритий ключ, яким збираєтеся щось зашифрувати — не митецька імітація, а власність вашого кореспондента. Можна попросту шифрувати тільки тими ключами, що були передані вам їхніми власниками з рук у руки на дискетах. Але припустимо, що потрібно зв'язатися з людиною, що живе на іншому краї світу, з яким ви навіть незнайомі; як ви можете бути упевнені, що одержали його справжній ключ?

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

Цифровий сертифікат у своєму призначенні аналогічний фізичному. Цифровий сертифікат ключа — це інформація, прикріплена до відкритого ключа користувача, що допомагає іншим встановити, чи є ключ справжнім і вірним. Цифрові сертифікати потрібні для того, щоб унеможливити спробу видати ключ однієї людини за ключ іншого.

Цифровий сертифікат складається з трьох компонентів:

  1. відкритого ключа, до якого він прикладений;
  2. даних, або записів сертифіката (зведення про особистості користувача, ім'я, електронна пошта і т. д., а також, у разі необхідності, вказати додаткові обмежуючі зведення : права доступу, робочі ліміти та інше);
  3. однієї або декількох цифрових підписів, «з'єднаних» ключем з сертифікатом.

Ціль ЕЦП на сертифікаті — указати, що зведення сертифіката були завірені довіреною третьою особою або організацією. У той же час цифровий підпис не підтверджує вірогідність сертифіката як цілого; вона є дорученням тільки того, що підписаний запис сертифіката (ідентифікуюча інформація) зв'язані з даним відкритим ключем.

Таким чином, сертифікат, звичайно, — це відкритий ключ із прикріпленими до нього однієї або декількома формами ID плюс оцінка підтвердження від довіреної особи, «єднальна» ID і відкритий ключ.

Поширення сертифікатів[ред.ред. код]

Сертифікати застосовуються, коли потрібно обмінятися з ким-небудь ключами. Невеликим групам людей, що бідує в захищеному зв'язку, не складе праці просто передати один одному дискети або відправити електронні листи, що містять копії їхніх ключів. Це — ручне поширення відкритих ключів, і воно ефективно тільки до визначеного етапу. Подальше — за межами можливостей даного методу, і тоді виникає необхідність розгортання системи, яка б забезпечувала достатню надійність і безпеку, надавала можливості збереження й обміну ключами, так що колеги, бізнеси-партнери або незнайомці змогли б відправляти один одному зашифровані повідомлення, якщо в тім виникне необхідність. Така система може реалізуватися у формі простого сховища-депозитарію, називаного сервером сертифікатів, або сервером-депозитарієм відкритих ключів, або мати складнішу і комплексну структуру, що припускає додаткові можливості адміністрування ключів, і називану інфраструктурою відкритих ключів (Public Key Infrastructure, PKI).

Сервери-депозитарії[ред.ред. код]

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

Інфраструктури відкритих ключів (PKI)[ред.ред. код]

PKI, як і простий сервер-депозитарій, має базу даних для збереження сертифікатів, але, у той же час, надає сервіси і протоколи для керування відкритими ключами. У них входять можливості випуску (видання), відкликання (анулювання) і системи довіри сертифікатів. Головною же особливістю PKI є наявність компонентів, відомих як Центр сертифікації (Certification Authority, CA) і Центр реєстрації (Registration Authority, RA). Центр сертифікації (ЦС) видає цифрові сертифікати і підписує їх своїм закритим ключем. Через важливість своєї ролі, ЦС є головним компонентом інфраструктури PKI. Використовуючи відкритий ключ ЦС, будь-який користувач, що бажає перевірити дійсність конкретного сертифіката, звіряє підпис Центра сертифікації і, отже, засвідчується в цілісності інформації, що утримується в сертифікаті, і, що важливіше, у взаємозв'язку зведень сертифіката і відкритого ключа.

Як правило, Центром реєстрації (ЦР) називається система людей, механізмів і процесів, що служить цілям зарахування нових користувачів у структуру PKI і подальшого адміністрування постійних користувачів системи. Також ЦР може робити «веттинг» — процедуру перевірки того, чи належить конкретний відкритий ключ передбачуваному власникові.

ЦР — це людське співтовариство: особа, група, департамент, компанія або інша асоціація. З іншого боку, ЦС — звичайно, програма, що видає сертифікати своїм зареєстрованим користувачам. Існують і захищені від злому апаратні реалізації ЦС, споруджені з куленепробивних матеріалів і постачені «червоною кнопкою», що анулює в критичній ситуації усі видані ключі. Роль ЦР-ЦС аналогічна тієї, що виконує державний паспортний відділ: одні його співробітники перевіряють, потрібно чи видача паспорта (робота ЦР), а інші виготовляють сам документ і передають його власникові (робота ЦС). Наявність ЦР для ЦС не обов'язково, але воно забезпечує поділ функцій, що іноді необхідно. Формат сертифікатів Цифровий сертифікат — це набір ідентифікуючих зведень, зв'язаних з відкритим ключем і підписаних довіреною третьою особою, щоб довести їхня дійсність і взаємозв'язку. Сертифікат може бути представлений безліччю різних форматів. PGP підтримує два формати сертифікатів:

  • Сертифікати OpenPGP (частіше називані просто ключами PGP)
  • Сертифікати X.509

Формат сертифікату PGP[ред.ред. код]

Сертифікат PGP містить:

  • Відкритий ключ власника сертифіката — відкрита частина ключової пари і її алгоритм: RSA v4, RSA Legacy v3, DH або DSA.
  • Зведення про власника сертифіката — інформація, що ідентифікує особистість користувача: його ім'я, адреса електронної пошти, номер ICQ, фотографія і т. д.
  • ЕЦП власника сертифіката — підпис ключової пари, зв'язаної із сертифікатом (т.зв. автопідпис).
  • Період дії сертифіката — дата початку дії сертифіката і дата закінчення його дії; указує на те, коли сертифікат стане недійсним (аналогічно терміну дії посвідчення водія). Якщо ключова пара містить додаткові підключи шифрування, то тут буде зазначений період дії кожного з них .
  • Найкращий алгоритм шифрування — указує на те, зашифровану яким алгоритмом інформацію воліє одержувати власник сертифіката. Підтримуються такі: CAST, AES, IDEA, Triple-DES і Twofish.

Ви можете представити сертифікат PGP у виді відкритого ключа з однієї або декількома прив'язаними до нього «бирками». На цих «бирках» зазначена інформація, що ідентифікує власника ключа, а також підпис цього ключа, що підтверджує, що ключ і ідентифікаційні зведення взаємозалежні. (Цей вид підпису називається автопідписом (self-signature); її містить кожен PGP-сертифікат.)

Унікальний аспект формату сертифікатів PGP у тім, що кожен сертифікат може містити безліч підписів. Будь-яка людина може підписати ідентифікаційно-ключову пару, щоб завірити, покладаючись на своє особисте переконання, що відкритий ключ належить саме зазначеному в ID користувачеві. Якщо пошук на суспільних серверах-депозитаріях, то можете знайти деякі ключі, як, наприклад, що належить авторові PGP Філу Ціммерману, що містять величезну кількість підписів. Деякі PGP-сертифікати складаються з відкритого ключа з декількома «бірками», кожна з яких містить власні зведення, що ідентифікують власника ключа (наприклад, ім'я власника і його робітник e-mail, прізвисько власника і його домашній e-mail, фотографія власника — усі на одному сертифікаті). Список підписів на кожній з «бірок» може бути різним; підпису вказують на вірогідність визначеної «бірки» і її приналежність відкритому ключеві, а не на те, що всі «бірки» достовірні. (Врахуйте, що «вірогідність» залежить від встоновленого неї : підпису — це думки, і різні люди приділяють різний ступінь уваги перевірці дійсності перед підписанням ключа.)

Формат сертифіката Х.509[ред.ред. код]

Х.509 — це інший дуже розповсюджений формат. Усі сертифікати Х.509 відповідають міжнародному стандартові ITU-T X.509; у такий спосіб (теоретично), сертифікат Х.509, створений для одного додатка, може бути використаний у будь-якому іншому, підтримуючий цей стандарт. На практиці, однак, склалася ситуація, що різні компанії створюють власні розширення для Х.509, не усі з яких між собою сумісні. Усякий сертифікат вимагає, щоб хтось завірив взаємозв'язок відкритого ключа й ідентифікуючого власника ключа інформації. Маючи справу з PGP-сертифікатом, кожний може виступати як завіритель зведень, що утримуються в ньому, (за винятком випадків, коли ця можливість навмисно обмежена політикою безпеки). Але у випадку сертифікатів Х.509 завірителем може бути тільки Центр сертифікації або хтось, спеціально вповноважений їм на цю роль. (Майте на увазі, що PGP-сертифікати також повною мірою підтримують ієрархічне структурування системи довіри, що використовує ЦС для посвідчення сертифікатів.) Сертифікат Х.509 — це набір стандартних полів, що містять зведення про користувача або пристрій, і їх відповідний відкритий ключ. Стандарт Х.509 визначає, які зведення входять у сертифікат і як вони кодуються (формат даних).

Сертифікат Х.509 містить такі зведення :

  • Версія Х.509 — указує, на основі якої версії стандарту Х.509 побудований даний сертифікат, що визначає, яка інформація може в ньому утримуватися.
  • Відкритий ключ власника сертифіката — відкритий ключ поряд з ідентифікатором використовуваного алгоритму (вказуючим криптосистему, до якої належить даний ключ) і інша інформація про параметри ключа.
  • Серійний номер сертифіката — організація-видавець сертифіката зобов'язаний привласнити йому унікальний серійним (порядковий) номер для його впізнання серед інших сертифікатів, виданих даною організацією. Ця інформація застосовується в ряді випадків; наприклад, при анулюванні сертифіката, його серійний номер міститься до реєстру анульованих сертифікатів (Certificate Revocation List, CRL).
  • Унікальний встановлювач власника ключа (або DN, distinguished name — унікальне ім'я) — це ім'я повинне бути унікальному і єдиним у всьому Інтернету . DN складається з декількох підпунктів і може виглядати приблизно так:

CN=Bob Davis, EMAI=bdavis@pgp.com, OU=PGP Engineering, O=PGP Corporation, C=US

(Що позначає Зрозуміле ім'я суб'єкта, Електронну пошту, Підрозділ організації, Організацію і Країну відповідно.)

  • Період дії сертифіката — дата початку дії сертифіката і дата закінчення його дії; указує на те, коли сертифікат стане недійсний.
  • Унікальне ім'я видавця — унікальне ім'я організації, що підписав сертифікат. Звичайно, це найменування Центра сертифікації. Використання сертифіката має на увазі довіра організації, його що підписала. (У випадках з кореневими сертифікатами організація, що видала — цей же ЦС — підписує його сама.)
  • ЕЦП видавця — електронний підпис, створений закритим ключем організації, що видав сертифікат.
  • Ідентифікатор алгоритму підпису — вказує алгоритм, використаний ЦС для підписання сертифіката.

Існує ряд фундаментальних розходжень між форматами сертифікатів Х.509 і PGP:

  • ви можете особисто створити власний сертифікат PGP; ви повинні запросити й одержати сертифікат Х.509 від Центра сертифікації;
  • сертифікати Х.509 містять тільки одне ім'я власника сертифіката;
  • сертифікати Х.509 містять тільки одну ЕЦП, що підтверджує дійсність сертифіката.

Щоб одержати сертифікат Х.509, ви повинні попросити ЦС видати його вам. Ви надаєте системі свій відкритий ключ, чим доводите, що володієте відповідно закритим, а також деякі ідентифікуючі ваші зведення . Потім ви электронно підписуєте ці зведення і відправляєте весь пакет — запит сертифіката — у Центр сертифікації. ЦС виконує визначений процес перевірки дійсності наданої інформації і, якщо усе сходиться, створює сертифікат, підписує і повертає вам. Ви можете представити сертифікат Х.509, як звичайний паперовий сертифікат або атестат із приклеєним до нього відкритим ключем. На ньому зазначене ваше ім'я, а також деякі зведення про вас, плюс підпис видавця сертифіката.

Імовірно, найбільша користь від сертифікатів Х.509, це їхнє застосування у Веб-браузерах.

Дійсність і довіра[ред.ред. код]

Будь-який користувач у середовищі криптосистем з відкритим ключем ризикує рано або пізно прийняти помилково підроблений ключ (сертифікат) за дійсний. Вірогідність (дійсність) є в тому, що конкретний відкритий ключ належить передбачуваному власникові, чия ідентифікаційна інформація зазначена в сертифікаті ключа. Дійсність є одним з найважливіших критеріїв у середовищі системи відкритих ключів, де ви повинні визначати автентичність кожного конкретного сертифіката.

Переконавши, що чужий відкритий ключ достовірний (тобто дійсно належить саме передбачуваному власникові), ви можете підписати копію цього ключа на своєму зв'язуванні, чим засвідчите факт, що ви його перевірили і прийняли за достовірний. Якщо захочете, щоб інші знали ваш ступінь довіри цьому сертифікатові, ви можете експортувати свій підтверджуючий підпис на сервер-депозитарій для того, щоб інші могли неї бачити і могли на неї покластися при визначенні дійсності цього ключа.

Деякі компанії вповноважують один або кілька Центрів сертифікації (ЦС) на перевірку дійсності сертифікатів. В організації, що використовує PKI із сертифікатами Х.509, задача Центрів реєстрації складається в прийомі запитів на сертифікати, а задача Центрів сертифікації — у видачі сертифікатів кінцевим користувачам: процес відповіді на запит користувача на одержання сертифіката. В організації, що використовує сертифікати PGP без PKI, задача ЦС — у перевірці вірогідності всіх PGP-сертифікатів і підписанні справжніх. Як правило, основна мета ЦС — власним підписом «зв'язати» відкритий ключ з ідентифікаційною інформацією, що утримується в сертифікаті, чим завірити третіх осіб, що були прийняті визначені заходи для встановлення зв'язку між ключем і ідентифікаційними зведеннями.

Центр сертифікації в організації — це камінь системи дійсності і довіри; у деяких організаціях, як, наприклад, у тих, котрі використовують PKI, жоден сертифікат не вважається справжнім, поки не буде підписаний довіреним ЦС.

Перевірка дійсності[ред.ред. код]

Один зі способів визначення дійсності сертифіката — деяка механічна процедура. Існує кілька методик її проведення. Наприклад, ви можете попросити свого кореспондента передати копію його відкритого ключа «фізично», тобто вручити на твердому носії — магнітному або оптичному диску тощо Але найчастіше це буває незручно і неефективно.

Інший варіант — звірити відбиток (fingerprints) сертифіката. Наскільки унікальні відбитки пальців людей, настільки ж унікальні і відбитки кожного сертифіката PGP. Відбиток — це хеш-значення сертифіката користувача, що показано як одне з його властивостей. У PGP відбиток може бути представлений або як шістнадцяткове число, або як набір біометричних слів, фонетично чіткого і застосовуваних для спрощення вербальної ідентифікації відбитка.

Ви можете визначити дійсність сертифіката подзвонивши власникові ключа і попросивши його прочитати відбиток з його ключа; вам же потрібно звірити цей відбиток проти того, котрий знаходиться на отриманій вами копії. Такий спосіб допустимо, якщо вам знайомий голос кореспондента, але як ви встановите особистість того, з ким навіть незнайомі? Деякі з цією метою поміщають відбитки ключів на свої візитні картки. Ще один метод визначення дійсності чужого сертифіката — покластися на думку третьої сторони, що вже установила його дійсність.

ЦС, наприклад, відповідає за детальну перевірку приналежності відкритого ключа передбачуваному власникові перед видачею йому сертифіката. Будь-який користувач, що довіряє ЦС, буде автоматично розцінювати справжніми всі сертифікати, підписані ЦС. Рівнобіжний аспект перевірки дійсності і вірогідності полягає в тому, щоб переконатися, що сертифікат не був анульований (відкликаний).

Установлення довіри[ред.ред. код]

Ви самі засвідчуєте сертифікати. Але ви також довіряєте людям. Тому ви можете довірити людям і право засвідчувати сертифікати. Як правило, якщо тільки власник сам не вручив вам копію ключа, ви повинні покластися на чиюсь чужу думку про його дійсність.

Позначки-поручителі і довірені поручителі[ред.ред. код]

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

ЦС також може бути поручителем (позначкою-представником). Позначка-поручитель не тільки сам завіряє ключі, але надає й іншим особам (організаціям) повноваження запевняння. За аналогією з тим, як король передає свою особисту печатку або факсиміле наближеним радникам, щоб ті могли діяти від його імені, так і позначка-поручитель вповноважує інших діяти як довірених поручителів (довірених представників). Ці довірені поручителі можуть засвідчувати ключі з тим же результатом, що і позначка-поручитель. Однак, вони не можуть створювати нових довірених поручителів.

«Позначка-поручитель» і «довірений поручитель» — це терміни PGP. У середовищі Х.509 позначка-поручитель називається кореневим Центром сертифікації (root CA), а довірені поручителі — підлеглими, або проміжними, Центрами сертифікації (subordinate CAs, intermediate CAs).

Кореневий ЦС для підписання ключів використовує закритий ключ, зв'язаний з особливим типом сертифіката, названим кореневим сертифікатом ЦС. Будь-який сертифікат, підписаний кореневим ключем ЦС, стає достовірним будь-якому іншому сертифікатові, підписаному кореневим. Такий процес посвідчення діє навіть для сертифікатів, підписаних іншим ЦС у [зв'язаній ] системі — якщо ключ проміжного ЦС підписаний ключем кореневого ЦС, будь-який сертифікат підписаний першим розцінюється вірним у межах ієрархії. Цей процес відстеження уздовж галузей ієрархії того, хто підписав які сертифікати, називається відстеженням шляху, або ланцюга, сертифікатів.

Моделі відносин довіри[ред.ред. код]

У відносно закритих системах, таких як невеликі організації і фірми, можна без праці відстежити шлях сертифіката назад до кореневого ЦС. Однак, користувачам найчастіше приходиться зв'язуватися з людьми за межами їхнього корпоративного середовища, включаючи і таких, з якими вони ніколи не зустрічалися, наприклад, з постачальниками, споживачами, клієнтами й ін. Установлення лінії довіри з тими, хто не був явно засвідчений ЦС, стає непростою задачею.

Організації виходять з однієї з декількох моделей відносин довіри, що диктують користувачам їхні дії по визначенню дійсності сертифікатів. Існують три різні моделі:

  • Пряма довіра
  • Ієрархічна довіра
  • Мережа довіри (Web of Trust)

Пряма довіра[ред.ред. код]

Пряма довіра — це найпростіша з моделей відносин довіри. У цій схемі користувач переконаний, що ключ справжній, оскільки точно знає, від кого одержав цей ключ. Усі криптосистеми тією чи іншою мірою використовують цю форму довіри. Наприклад, у веб-браузерах кореневі ключі Центрів сертифікації довіряються прямо, тому що знаходилися в дистрибутиві даного програмного продукту. Якщо й існує який-небудь вид ієрархії, то він поширюється з цих сертифікатів, що прямо довіряються. У PGP користувач, що завіряє ключі самостійно, не прибігаючи до допомоги довірених поручителів, використовує схему прямої довіри.

Ієрархічна довіра[ред.ред. код]

В ієрархічній системі існує ряд кореневих сертифікатів, від яких розповсюджується довіра. Ці сертифікати можуть або самі завіряти сертифікати кінцевих користувачів, або вони можуть вповноважують інші сертифікати, що будуть завіряти сертифікати користувачів по деякому ланцюзі. Представте, що це велике «дерево» довіри. Дійсність сертифікатів-„листків“ (сертифікатів кінцевих користувачів) визначається відстеженням ланцюжка до їхніх посвідчувачів, а від них уже до посвідчувачів цих посвідчувачів, і так доти, поки не буде знайдений кореневий сертифікат, що довіряється прямо.

Мережа довіри[ред.ред. код]

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

Можливо, вам знайоме поняття «шість ступенів поділу», що означає, що будь-який індивід може встановити деякий ланцюжок до будь-якого іншого індивіда на планеті, використовуючи шість або менш чоловік як посередників. Це — мережа представників.

Таке ж і представлення PGP про довіру. PGP використовує цифрові підписи як власний вид поручительства. Коли один користувач підписує ключ іншого, він стає поручителем цього ключа (відповідає за дійсність ключа і його приналежність передбачуваному власникові). Цей процес, розширюючи, і утворить мережа довіри.

У середовищі PGP будь-який користувач може виступати як центр сертифікації. Кожен користувач може завірити відкритий ключ іншого користувача. Однак, такий сертифікат буде розцінений справжнім іншим користувачем тільки тоді, коли останній визнає завірителя своїм довіреним поручителем. (Іншими словами, ви довіряєте моїй думці про дійсність інших ключів, тільки якщо вважаєте мене своїм довіреного поручителем. У противному випадку, моя суб'єктивна оцінка дійсності чужих ключів для вас щонайменше неоднозначна.) На зв'язуванні відкритих ключів кожного користувача утримуються такі показники:

  • чи вважає користувач визначений ключ справжнім;
  • рівень довіри, наданий користувачем визначеному ключеві, з яким його власник буде виступати поручителем у дійсності інших ключів.

Ви вказуєте на своїй копії мого ключа, наскільки вагомим вважаєте мою думку про дійсність підписаних мною ключів. Це винятково система репутації: деякі користувачі відомі тим, що ретельно перевіряють ключі і дають гарні підписи, яким люди довіряють як беззастережному показникові дійсності.

Ступені довіри в PGP[ред.ред. код]

Найвищий рівень довіри — безумовна довіра (Implicit Trust) — це довіра вашій власній ключовій парі. PGP думає, що якщо ви володієте закритим ключем, то повинні довіряти і діям відповідного відкритого. Усі ключі, підписані вашим довір'ям безумовно, для вас вірні і справжні. Існує три ступені довіри, що ви можете привласнити чужому відкритому ключеві:

  • Повна довіра
  • Часткова довіра
  • Немає довіри

Щоб ще більше все заплутати, існує також три рівні дійсності:

  • Справжній
  • Можливо справжній
  • Невизначений

Щоб дати іншому ключеві повноваження поручительства, ви:

  1. Берете справжній ключ, який або підписаний вами, або іншим довіреним поручителем.
  2. Встановлюєте рівень довіри, який, на вашу думку, заслуговує власник.

Для прикладу представимо, що на вашому зв'язуванні є ключ Олесі. Ви визначили дійсність її ключа і, підписуючи його, указуєте на це. Вам відомо, що Олеся — активний прихильник ретельної перевірки чужих ключів. Тому ви наділяєте її Повною довірою, що, фактично, перетворює її в Центр сертифікації: якщо Олеся підпише чужий ключ, він буде вірним на вашому зв'язуванні апріорі.

PGP вимагає одну довіру Цілком або дві довірі частково, щоб встановити ключ як справжній. Метод PGP прирівнювання двох Часткових до одній Повного аналогічний тому, як іноді від вас вимагають два види документів, що засвідчують особистість. Ви можете порахувати Олесю частково надійної, також порахувати Олександра, який частково заслуговує довіри. Є ризик, що кожний з них окремо може випадково підписати липовий ключ, так що ви, імовірно, не станете надавати Повної довіри жодному. Однак, імовірність того, що обоє вони підпишуть той самий липовий ключ, досить мала.

Анулювання сертифіката[ред.ред. код]

Застосування сертифіката припустиме тільки поки він достовірний. Небезпечно покладатися на те, що сертифікат буде захищений і надійний вічно. У більшості організацій і у всіх PKI сертифікат має обмежений термін «життя». Це звужує період, у який система може виявитися під погрозою, якщо сертифікат буде зламаний.

Таким чином, сертифікат створюється з визначеним заданим періодом вірогідності, що починається з дати створення і закінчується датою витікання (аналогічно терміну придатності харчових продуктів або дії прав водія). Сертифікат може бути використаний протягом усього періоду дії, після закінчення якого перестає бути вірним, оскільки вірогідність його ідентификаційно-ключової пари більш не може бути гарантована. (Проте, сертифікат як і раніше може застосовуватися для підтвердження інформації, зашифрованої або підписаної ним раніше протягом періоду життя; однак він стає незастосовний для майбутніх криптографічних нестатків.) Але іноді з'являється потреба зробити сертифікат недійсним до закінчення терміну його життя, наприклад, у випадку звільнення власника сертифіката з дійсного місця роботи або коли у власника виникає підозра, що закритий ключ даного сертифіката був зкомпроментований. Такий процес називається відкликанням або анулюванням. Анульований сертифікат набагато підозріліший, ніж минулий. Минулий сертифікат більш непридатний до використання, однак, не несе такої погрози скомпрометованості, як анульований.

Будь-який користувач, що завірив сертифікат (що доручився за взаємозв'язку ключа і зведень сертифіката), у будь-який момент може відкликати з нього свій підпис, використовуючи той же закритий ключ, яким його створював. Відкликаний підпис указує на те, що завіритель рахував, що відкритий ключ і ідентифікаційна інформація більше не зв'язані один з одним, або що відкритий ключ сертифіката (або відповідний закритий) був скомпрометований. Відкликаний підпис має практично таке ж значення, як і анульований сертифікат.

У випадку сертифікатів Х.509 відкликаний підпис фактично представляє те саме, що й анульований сертифікат, оскільки взагалі лише один підпис був поручительством дійсності сертифіката — підпис Центра сертифікації. PGP надає додаткову можливість анулювання всього сертифіката (а не тільки підписів на ньому), якщо ви раптом порахуєте, що він був яким-небудь чином скомпрометований.

Тільки власник сертифіката (власник відповідного закритого ключа) або хтось, спеціально уповноважений власником (т.зв. «довірений відмінювач», designated revoker), може анулювати PGP-сертифікат. (Доручення третій особі функції анулювання досить корисно, тому що втрата пароля до закритого ключа, що найчастіше і є приводом до анулювання, робить виконання цієї процедури самим власником сертифіката неможливої .) Сертифікат Х.509 може бути відкликаний тільки його видавцем — ЦС — за запитом власника.

Повідомлення про анулювання сертифіката[ред.ред. код]

Після анулювання сертифіката украй важливо сповістити всіх потенційних кореспондентів, що він більше не дійсний. Найпростіший спосіб оповіщення в середовищі PGP — це розміщення анульованого сертифіката на сервері-депозитарії; таким чином, усі, хто можуть вирішити зв'язатися з вами, будуть попереджені не використовувати цей відкритий ключ.

У середовищі PKI повідомлення про анулювання сертифікатів здійснюється за допомогою спеціального механізму, називаного реєстром анульованих сертифікатів (Certificate Revocation List, CRL), публікуючого Центром сертифікації. CRL містить датований, завірений список всіх анульованих непрострочених сертифікатів системи. Анульовані сертифікати залишаються в списку тільки до моменту свого фактичного витікання, після чого віддаляються відтіля — це запобігає нескінченному розростанню списку. ЦС обновляє CRL через регулярні проміжки часу. Теоретично, це повинно звести до мінімуму ризик ненавмисного використання анульованого сертифіката. Хоча, усе-таки залишається імовірність випадкового застосування скомпрометованого сертифіката в тимчасовому проміжку між публікаціями CRL.

Ключова фраза[ред.ред. код]

Більшість користувачів як знак обмеження доступу до комп'ютера або комп'ютерних ресурсів використовують пароль, що являє собою унікальну послідовність символів, що вводиться як ідентифікаційний код.

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 - геш-функція

Література[ред.ред. код]

  • Бауэр Ф. Расшифрованные секреты. — М.: Мир, 2007. — 550 с.
  • Брассар Ж. Современная криптология. — М.: Полимед, 1999. — 176 с.
  • Земор Ж. Курс криптографии. — Ижевск: РХД, 2006. — 256 с.
  • Мао В. Современная криптография. — М.: Диалектика, 2005. — 768 с.
  • ван Тилборг Х. К. А. Основы криптологии. — М.: Мир, 2006. — 472 с.
  • Фергюсон Н., Шнайер Б. Практическая криптография. — М.: Диалектика, 2004. — 431 с.
  • Шнайер Б. Прикладная криптография. — М.: Триумф, 2002. — 816 с.
  • Шнайер Б. Секреты и ложь. — СПб.: Питер, 2003. — 368 с.
  • Ященко В. В. Введение в криптографию. — М.: МЦНМО, 2012. — 352 с.
  • Vladimir A. Oleshchuk On Public-Key Cryptosystem Based on Church-Rosser String-Rewriting Systems. — Proceedings of COCOON’95, Lecture Notes in Computer Science 959, 1995. — pp. 264–269 с.

Поняття криптології[ред.ред. код]

Алгоритми криптографії[ред.ред. код]

Посилання[ред.ред. код]

  1. а б в David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9.
  2. а б Oded Goldreich, Foundations of Cryptography, Volume 1: Basic Tools, Cambridge University Press, 2001, ISBN 0-521-79172-3
  3. «Cryptology (definition)». Merriam-Webster's Collegiate Dictionary (11th edition вид.). Merriam-Webster. http://www.merriam-webster.com/dictionary/cryptology/. Процитовано 2008-02-01. 
  4. Kama Sutra, Sir Richard F. Burton, translator, Part I, Chapter III, 44th and 45th arts.
  5. Hakim, Joy (1995). A History of Us: War, Peace and all that Jazz. New York: Oxford University Press. ISBN 0-19-509514-6. 
  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.
  7. а б в Martin Hellman, «New Directions in Cryptography», IEEE Transactions on Information Theory, vol. IT-22, Nov. 1976, pp: 644—654. (pdf)
  8. а б в г AJ Menezes, PC van Oorschot, and SA Vanstone, Handbook of Applied Cryptography ISBN 0-8493-8523-7.
  9. FIPS PUB 197: The official Advanced Encryption Standard.
  10. NCUA letter to credit unions, July 2004
  11. RFC 2440 — Open PGP Message Format
  12. SSH at windowsecurity.com by Pawel Golen, July 2004
  13. Bruce Schneier, Applied Cryptography, 2nd edition, Wiley, 1996, ISBN 0-471-11709-9.
  14. Whitfield Diffie and Martin Hellman, «Multi-user cryptographic techniques» [Diffie and Hellman, AFIPS Proceedings 45, pp109-112, June 8, 1976].

Див. також[ред.ред. код]

Ресурси інтернету[ред.ред. код]