| Тип | Шифрувальне програмне забезпечення |
|---|---|
| Автори | Філіп Р. Ціммерманн[1] |
| Розробник | Broadcom |
| Перший випуск | 1.0 (1991[2]) |
| Версії | 8.1 |
| Операційна система | Linux, macOS, Windows |
| Мова програмування | C |
| Стан розробки | активний |
| Ліцензія | комерційна, пропрієтарна |
| Вебсайт | broadcom.com/products/advanced-threat-protection/encryption |
PGP (англ. Pretty Good Privacy) — комп'ютерна програма, також бібліотека функцій, що дозволяє виконувати операції шифрування і цифрового підпису повідомлень, файлів та іншої інформації, поданої в електронному вигляді, у тому числі прозоре шифрування даних на запам'ятовуючих пристроях, наприклад, на твердому диску. Програма була написана Філом Циммерманом в 1991 році[3].
Загальна інформація
PGP — це гібридна криптосистема, яка поєднує в собі симетричну криптографію і криптографію з відкритим ключем.
Коли користувач зашифровує дані за допомогою PGP, програма для початку їх стискає. Стиск скорочує час модемної передачі і заощаджує дисковий простір, а також, що важливіше, підвищує криптографічну стійкість. Більшість криптоаналітичних техніків засновано на статистичному аналізі шифротексту в пошуках ознак відкритого тексту. Стиск зменшує число таких ознак, що істотно підсилює опірність криптоаналізу.
Потім, PGP створює сеансовий ключ, тобто одноразовий симетричний ключ, застосовуваний тільки для однієї операції. Цей сеансовий ключ являє собою псевдовипадкове число, згенероване від випадкових рухів мишки і натискання клавіш. Сеансовий ключ працює на основі дуже надійного, швидкого симетричного алгоритму, яким PGP зашифровує стиснуте повідомлення; у результаті виходить шифротекст. Як тільки дані зашифровані, сеансовий ключ також шифрується, але уже відкритим ключем одержувача. Цей зашифрований відкритим ключем сеансовий ключ прикріплюється до шифротексту і передається разом з ним одержувачеві.
Розшифрування відбувається в зворотному порядку. PGP одержувача використовує його закритий ключ для витягу сеансового ключа з повідомлення, яким шифротекст вихідного послання відновлюється у відкритий текст.
Таким чином, комбінація цих двох криптографічних методів поєднує зручність шифрування відкритим ключем зі швидкістю роботи симетричного алгоритму. Симетричне шифрування в тисячі разів швидше асиметричного. Шифрування відкритим ключем, у свою чергу, надає просте рішення проблеми керування ключами і передачі даних. При використовувані їх спільно, швидкість виконання і керування ключами взаємно доповнюються і поліпшуються без якого-небудь збитку безпеки.
Історія
Філ Циммерманн написав першу версію в 1991 році. Його метою було надати всім громадянам, і особливо групам громадянського суспільства, можливість безпечно обмінюватися зашифрованими повідомленнями, навіть захищаючи їх від доступу спецслужб (надійне шифрування)[4][5].
У перші роки свого існування PGP не можна було експортувати з США без ліцензії, оскільки, як і зброя, вона підлягала експортному контролю США. Після цього криптосистеми з ключами довжиною понад 40 біт для симетричного шифрування підпадали під спеціальні експортні правила. Перші версії PGP використовували IDEA з довжиною ключа 128 біт. Наприкінці 1990-х років США лібералізували ці закони[4][5].
Щоб обійти експортні обмеження, повний вихідний код був опублікований у 1995 році в книзі Філа Циммермана «Вихідний код та внутрішня структура PGP». Як книгу, програмне забезпечення можна було легально експортувати з США. Його набирали вручну понад 60 волонтерів. З набраного коду потім було складено міжнародно доступну версію PGP (PGPi)[4][5].
Корпорація PGP виникла в результаті злиття команди Філа Циммермана з ViaCrypt, якій Філ Циммерманн продав деякі комерційні права та безпосередньо ліцензував RSA. До версії 8 компанія пропонувала окремий продукт для некомерційних користувачів, PGP Freeware. Починаючи з версії 9, доступна лише пробна версія PGP Desktop Professional . 9. Його можна використовувати без обмежень протягом 30 днів. Після цього періоду діапазон функцій та прав використання зменшуються до рівня, приблизно еквівалентного колишньому безкоштовному програмному забезпеченню PGP. Шифрування та розшифрування електронних листів все ще можливе після пробного періоду, але лише для некомерційних цілей.
PGP була придбана NAI (McAfee) у 1997 році та інтегрована у власну лінійку продуктів. Оскільки McAfee тимчасово приховувала вихідний код PGP та впроваджувала функції, що дозволяли автоматичне шифрування для додаткового одержувача (Additional Decryption Key ADK), PGP за цей час зазнала жорсткої критики. У 2002 році McAfee відмовилася від бренду PGP та продала його групі колишніх співробітників PGP на чолі з Філом Циммерманом. Ця новостворена корпорація PGP викупила всі права на PGP у McAfee та з самого початку знову розкрила весь вихідний код.
Нова PGP зараз представлена в багатьох країнах, зокрема в Німеччині, де корпорація PGP придбала німецьку компанію Glück & Kanja Technology AG у 2005 році[6], заснувавши PGP Deutschland AG, яка зараз базується в Оффенбаху-на-Майні. П'ять років по тому PGP також придбала німецьку компанію TC Trustcenter у Гамбурзі[7], таким чином зарекомендувавши себе на ринку як сертифікований центр довіри для сертифікатів відповідно до Закону Німеччини про підписи (для кваліфікованих підписів).
Не в останню чергу через відсутність прозорості в той час, коли PGP належав McAfee, стандарт OpenPGP був розроблений до 1998 року[7][8]. Програма GnuPG, ліцензована за ліцензією GNU GPL, була першою реалізацією OpenPGP і була розроблена як безкоштовна альтернатива PGP. Зараз існує багато розширень стандарту OpenPGP, які виходять за рамки функціональності PGP, тому безперебійний обмін даними та ключами не завжди гарантований.
Корпорацію PGP придбала Symantec у червні 2010 року за 300 мільйонів доларів[9].
Специфікація

PGP використовує так званий метод відкритого ключа, в якому існує унікальна пара ключів:
Використовується відкритий ключ, за допомогою якого будь-хто може зашифрувати дані для одержувача та перевірити його підписи, а також закритий секретний ключ, яким володіє лише одержувач і який зазвичай захищений паролем. Повідомлення одержувачу шифруються його відкритим ключем, а потім можуть бути розшифровані лише за допомогою його закритого ключа. Ці методи також називаються асиметричними методами, оскільки відправник і одержувач використовують два різні ключі.
Першу версію було написано в 1991 році та використовувала алгоритм RSA для шифрування даних. Пізніші версії використовували алгоритм Ельгамаля.
Однак у PGP все повідомлення не шифрується асиметрично, оскільки це було б занадто обчислювально ресурсоємно, і було б непрактично надсилати одне й те саме повідомлення кільком одержувачам. Натомість, фактичне повідомлення шифрується симетрично, і лише використаний ключ шифрується асиметрично (гібридне шифрування). Для цього щоразу випадковим чином генерується симетричний ключ (ключ сеансу).
Цей симетричний ключ потім використовується, наприклад, Наприклад, його шифрують за допомогою криптосистеми RSA або Elgamal з відкритим ключем одержувача та додають до повідомлення. Це дає змогу зашифрувати повідомлення для кількох одержувачів одночасно. Повідомлення, зашифроване для кількох одержувачів, виглядатиме так:
| асиметричний для одержувача 1 зашифрований ключ повідомлення |
| асиметричний для одержувача n зашифрованого ключа повідомлення |
| симетрично зашифроване повідомлення |
PGP базується на так званій Веб-довірі, де немає центрального центру сертифікації, а довірою керують самі користувачі.
Оскільки PGP розроблений для постійного розшифрування повідомлень, якщо зловмиснику вдається отримати закритий ключ, вся історія зв'язку з цим ключем стає скомпрометованою. Обмін повідомленнями поза записом (OTR) був розроблений як альтернатива PGP для обміну миттєвими повідомленнями; цей метод залишає зашифроване повідомлення нечитабельним для зловмисника (хоча воно залишається нечитабельним для законного власника ключа), навіть якщо закритий ключ пізніше буде скомпрометовано.
Принцип роботи

За допомогою PGP можна або підписати повідомлення, або зашифрувати його, або підписати та зашифрувати одночасно. Підпис служить для гарантії автентичності повідомлення, тобто того, що воно від заявленого відправника і не було змінено після підписання (цілісність). На практиці, коли ви шифруєте повідомлення, ви зазвичай також їх підписуєте.
Створення цифрового підпису
Щоб пізніше переконатися, що отримане повідомлення не було підроблено або замінено (цілісність), а також що воно походить від заявленого відправника (автентичність), відправник повинен створити цифровий підпис для повідомлення (або його частин). Це передбачає застосування криптографічної хеш-функції до повідомлення у відкритому тексті (раніше часто використовувалася SHA-1, але зараз вона застаріла і замінена, зокрема, на SHA-256). Це створює дайджест повідомлення (унікальний відбиток) повідомлення, який значно коротший за саме повідомлення, що спрощує створення цифрового підпису. Потім підпис генерується з дайджесту повідомлення за допомогою закритого ключа відправника.
Шифрування
Як другий крок (або перший, якщо підпис не потрібен), відправник тепер може зашифрувати повідомлення. Це включає об'єднання повідомлення у відкритому тексті та цифрового підпису з першого кроку в єдиний набір даних та його стиснення, щоб зменшити його розмір і ускладнити криптоаналіз. Ці стиснуті дані потім шифруються симетрично до шифротексту за допомогою випадково згенерованого сеансового ключа KM. Оскільки це випадково згенерований одноразовий ключ, його необхідно повідомити одержувачу. Для цього ключ KM асиметрично шифрується за допомогою відкритого ключа одержувача, а перед ним стоїть зашифроване повідомлення. Тому зашифроване повідомлення є настільки безпечним, наскільки безпечним є слабший елемент асиметричного ключа, що використовується для шифрування, та сеансовий ключ. Нарешті, байти шифротексту та зашифрованого ключа повинні бути зручними для електронної пошти. Для цього вони кодуються (як і інші двійкові дані в електронних листах) за допомогою варіанта Base64 (Radix-64) у певні друковані символи ASCII. Повідомлення PGP тепер можна надіслати одержувачу. Окрім електронної пошти, PGP також можна використовувати для інших каналів обміну повідомленнями шляхом підписання та/або шифрування файлів чи тексту (для цього існує окремий метод підпису через невідповідність кодування закінчення рядків у різних операційних системах).
Зовнішній вигляд зашифрованого повідомлення
Якщо зашифрувати текст
http://de.teknopedia.teknokrat.ac.id/wiki/Pretty_Good_Privacy
тоді закодоване повідомлення виглядає так (у форматі PGP/INLINE; електронний лист у форматі PGP/MIME буде виглядати дещо інакше):
-----BEGIN PGP MESSAGE----- Version: GnuPG v2.0.16 (GNU/Linux)
hQEMA1PUVhZb8UnsAQf+KS9PNvkWYFONnoStveMc4KwvGT7WlRFv/ZACvdyFsKDO icurhL57uh56KCof1m5drfftwjDQWgNyMy0cixqV/2WzeQgjZILE0Z1FDg7cgAbs UZvy2hmaJf0dhHEUziALotfUMhoSeHeObxmomzb7vovJv5tWDtQ9W+p2tbQ4tiin LAsJtwQhEVPNltootBteC0dTgOdISe6kfqUSoN3A22SiSUihmjxMPiiO6iZB8gBS hhfiSPa4khNwODncRe2BjqW+YQHf7L6CfLjx2S1BCSr+KWLmUnVdWSUonhHPF9mI E/q7t2uoBWg0iQgCjQubgYeqSUYN/xWpqAUX9O71zdKUAbVjjLVT0qTjNLLvms2H s4BDzHEqKeuGuMAWFzyfuW+VNofTxtcHhzrdjPuYi7sRL3YNUvqUpcGeKGyTApW2 k/fd7U32av7Pq63NoKK2g3RFcyBUiSdNlNhW8TYS1NdMSMXNw1R9dWVgFmsLj2vs Rv89ufRiPbNLDXcx7CkRrTf13q0miy1850d6k5nt8qUFrnh4xQ== =z6Xk -----END PGP MESSAGE-----
Розшифрування
Спочатку одержувач повинен декодувати існуючі символи ASCII за допомогою Base64, щоб отримати доступ до шифротексту та зашифрованого ключа сеансу. Потім ключ сеансу можна розшифрувати за допомогою закритого ключа одержувача, який потім можна використовувати для розшифрування шифротексту назад у стиснуту комбінацію відкритого тексту та цифрового підпису. Нарешті, щоб отримати доступ до повідомлення, його просто потрібно розпакувати.
Однак, також необхідно забезпечити автентичність відправника та цілісність повідомлення. Для цього до відкритого тексту застосовується та сама хеш-функція, що й у відправника, а цифровий підпис розшифровується за допомогою відкритого ключа відправника. Якщо відповідний закритий ключ фактично використовувався для створення підпису, два відкриті тексти дайджесту повідомлення збігаються; і можна припустити, що повідомлення не було змінено. Можна припустити, що повідомлення походить від певного відправника, якщо ключ підпису можна надійно призначити відправнику, що не залежить від обробки окремих повідомлень.
Безпека
У 1996 році криптограф Брюс Шнайер охарактеризував ранню версію PGP як «найближчу до криптосистем військового рівня». На даний момент не відомо жодного способу злому даних, зашифрованих PGP, за допомогою повного перебору або уразливості криптоалгоритма. Ранні версії PGP були теоретично уразливими, тому рекомендується користуватися сучасними версіями.
Криптографічна стійкість PGP заснована на припущенні, що використовувані алгоритми стійкі до криптоаналізу на сучасному обладнанні. Наприклад, у PGP перших версій для шифрування ключів сесії використовувався алгоритм RSA, заснований на односторонній функції (факторизація). У PGP версії 2 додатково можна використовувати алгоритм IDEA. Надалі були додані додаткові алгоритми шифрування. У жодного використовуваного алгоритму немає відомих вразливостей.
Вразливості
Одна з можливих атак виникає через практику спочатку підписання, а потім шифрування повідомлень[10]. Після розшифрування підписаного повідомлення одержувач може переслати його третій стороні з підробленим відправником. Якщо ім'я одержувача не вказано в повідомленні, дійсний підпис може створити враження, що його було надіслано безпосередньо від початкового відправника цій третій стороні.
Ще однією критикою було те, що відкриті ключі часто зберігаються на серверах, до яких кожен має доступ для читання та запису. Це призвело до зберігання там неправильних ключів. Одним із підходів до запобігання цьому є специфікація DANE/OPENPGPKEY від Internet Engineering Task Force[11][12].
Ступені довіри в PGP
Найвищий рівень довіри — безумовна довіра (Implicit Trust) — це довіра вашій власній ключовій парі. PGP думає, що якщо ви володієте закритим ключем, то повинні довіряти і діям відповідного відкритого. Усі ключі, підписані вашим довір'ям безумовно, для вас вірні і справжні. Існує три ступені довіри, що ви можете привласнити чужому відкритому ключеві:
- повна довіра;
- часткова довіра;
- немає довіри.
Щоб ще більше все заплутати, існує також три рівні дійсності:
- справжній;
- можливо справжній;
- невизначений.
Щоб дати іншому ключеві повноваження поручительства, ви:
- Берете справжній ключ, який або підписаний вами, або іншим довіреним поручителем.
- Встановлюєте рівень довіри, який, на вашу думку, заслуговує власник.
Для прикладу представимо, що на вашому зв'язуванні є ключ Олесі. Ви визначили дійсність її ключа і, підписуючи його, указуєте на це. Вам відомо, що Олеся — активний прихильник ретельної перевірки чужих ключів. Тому ви наділяєте її Повною довірою, що, фактично, перетворює її в Центр сертифікації: якщо Олеся підпише чужий ключ, він буде вірним на вашому зв'язуванні апріорі.
PGP вимагає одну довіру Цілком або дві довірі частково, щоб встановити ключ як справжній. Метод PGP прирівнювання двох Часткових до одній Повного аналогічний тому, як іноді від вас вимагають два види документів, що засвідчують особистість. Ви можете порахувати Олесю частково надійної, також порахувати Олександра, який частково заслуговує довіри. Є ризик, що кожний з них окремо може випадково підписати липовий ключ, так що ви, імовірно, не станете надавати Повної довіри жодному. Однак, імовірність того, що обоє вони підпишуть той самий липовий ключ, досить мала.
OpenPGP
Всередині PGP Inc., хвилювались щодо проблем з патентами. RSADSI оспорювало передачу ліцензії Viacrypt RSA у нову об'єднану компанію. Компанії довелося впровадити неформальний внутрішній стандарт, який вони назвали «Необтяжений PGP» (англ. Unencumbered PGP) що «не використовував жодних алгоритмів зі складнощами ліцензування». Через важливість PGP шифрування у світі, багато хто хотів написати власне програмне забезпечення, сумісне з PGP 5. Цимерман став переконаним в необхідності для компанії і криптографічної спільноти загалом відкритого стандарту PGP. В липні 1997, PGP Inc. запропонувало IETF стандарт, названий OpenPGP. Вони дали IETF дозвіл використовувати назву OpenPGP аби описувати цей стандарт і будь-яку програму, що його підтримує. IETF прийняло пропозицію і запустило робочу групу OpenPGP.
OpenPGP — це internet standard, який активно розробляється. Багато клієнтів e-mail надають OpenPGP-сумісну безпеку повідомлень, описану в RFC 3156. Поточною специфікацією є RFC 4880 (листопад 2007). RFC 4880 визначає набір необхідних алгоритмів, до якого входить Схема Ель-Гамаля, DSA, Triple DES та SHA-1. На додачу до цих алгоритмів, стандарт рекомендує RSA як описано в PKCS #1[en] v1.5 для шифрування та підписів, а також AES-128, CAST-128 та IDEA. Крім цих, підтримуються також інші алгоритми. Стардарт розширили підтримкою шифру Camellia у RFC 5581 у 2009, та підписом і обміном ключами на основі еліптичної криптографії (тобто ECDSA та ECDH) у RFC 6637 у 2012. Підтримка шифрування на основі еліптичної криптографії була додана запропонованим RFC 4880bis у 2014.
Цей розділ потребує доповнення. |
Див. також
Примітки
- ↑ Ціммерманн, Філіп Р. Домашня сторінка Філа Ціммерманна. philzimmermann.com. Архів оригіналу за 7 квітня 2025. Процитовано 20 серпня 2025.
- ↑ Histoire de PGP (OpenPGP en français). openpgp.vie-privee.org. Архів оригіналу за 4 грудня 2023. Процитовано 30 липня 2025.
- ↑ Zimmermann, Philip R. (1999). Why I Wrote PGP. www.philzimmermann.com (English) . Philip Zimmermann. Архів оригіналу за 13 серпня 2024. Процитовано 20 липня 2025.
- ↑ а б в Geheime Botschaften. ISBN 3-423-33071-6.
- ↑ а б в Singh, Simon (2023). Geheime Botschaften: die Kunst der Verschlüsselung von der Antike bis in die Zeiten des Internet. dtv (вид. 18. Auflage). München: dtv. ISBN 978-3-423-33071-8.
- ↑ Bachfeld, Daniel (7 березня 2005). PGP kauft Verschlüsselungsspezialisten Glück & Kanja. heise online (нім.). Архів оригіналу за 5 квітня 2024. Процитовано 20 серпня 2025.
- ↑ а б Finney, Hal; Thayer, Rodney L.; Donnerhacke, Lutz; Callas, Jon (1998-11). OpenPGP Message Format. № RFC 2440. Процитовано 20 серпня 2025.
- ↑ Finney, Hal; Donnerhacke, Lutz; Callas, Jon; Thayer, Rodney L.; Shaw, Daphne (2007-11). OpenPGP Message Format. № RFC 4880. Архів оригіналу за 9 липня 2025. Процитовано 20 серпня 2025.
- ↑ Ziegler, Peter-Michael (29 квітня 2010). Symantec kauft Verschlüsselungsspezialisten PGP und GuardianEdge. heise online (нім.). Архів оригіналу за 25 січня 2025. Процитовано 20 серпня 2025.
- ↑ Defective Sign & Encrypt in S/MIME, PKCS#7, MOSS, PEM, PGP, and XML. 2001. Архів оригіналу за 9 липня 2025.
- ↑ Wouters, Paul (2016-08). DNS-Based Authentication of Named Entities (DANE) Bindings for OpenPGP. № RFC 7929. Архів оригіналу за 20 липня 2025. Процитовано 20 серпня 2025.
- ↑ Zivadinovic, Dusan (10 березня 2015). Mail-Verschlüsselung: Mail.de bringt automatisierte PGP-Schlüsselverwaltung. heise online (нім.). Архів оригіналу за 2 грудня 2024. Процитовано 20 серпня 2025.
Посилання
- Symantec™ Enterprise Cloud Cyber Security – поточні комерційні версії PGP (безкоштовні бінарні версії більше не пропонуються для завантаження)
- [The International PGP Home Page у Wayback Machine (арх. 2014-12-30)] — міжнародна домашня сторінка PGP
- About - OpenPGP — непатентований формат, заснований на оригінальному Pretty Good Privacy
- Список серверів відкритих ключів PGP








