Що таке PGP? Повний посібник з шифрування Pretty Good Privacy
Що таке шифрування PGP?
PGP (Pretty Good Privacy) — це програма шифрування, яка забезпечує криптографічну конфіденційність та автентифікацію для передачі даних. Шифрування PGP використовує комбінацію симетричної криптографії та криптографії з відкритим ключем, що дозволяє користувачам шифрувати повідомлення, файли та інші дані таким чином, щоб їх міг прочитати лише призначений одержувач. Спочатку створений Філом Циммерманом у 1991 році, PGP став найпоширенішим стандартом шифрування електронної пошти у світі та є основою специфікації OpenPGP, визначеної в RFC 4880. Незалежно від того, чи вам потрібно надіслати конфіденційний лист, перевірити ідентичність видавця програмного забезпечення чи захистити конфіденційні файли, PGP надає перевірену криптографічну систему, якій довіряють журналісти, дослідники безпеки, уряди та звичайні користувачі.
Якщо ви хочете спробувати шифрування PGP прямо зараз, без встановлення програм, KeychainPGP пропонує онлайн-інструмент PGP, який працює повністю у вашому браузері.
Історія PGP
Філ Циммерман випустив PGP 1.0 у червні 1991 року як вільне програмне забезпечення, керуючись переконанням, що надійна криптографія повинна бути доступною для всіх громадян — а не лише для урядів та військових. У той час сильне шифрування класифікувалося як боєприпаси згідно з американськими правилами експортного контролю, і Циммерман став об'єктом трирічного кримінального розслідування Митної служби США за поширення PGP за кордон. Розслідування було закрите у 1996 році без пред'явлення обвинувачень, і ця справа стала знаковою подією в історії цифрових свобод.
PGP пройшов через кілька комерційних перевтілень. Циммерман заснував PGP Inc. у 1996 році, яку придбала Network Associates (пізніше McAfee) у 1997 році, а потім — Symantec у 2010 році. Протягом усіх цих переходів основний криптографічний протокол був стандартизований під назвою OpenPGP Інженерною радою Інтернету (IETF), що гарантує відкритість та інтероперабельність протоколу незалежно від комерційної власності.
Публікація стандарту OpenPGP означала, що будь-хто може створювати сумісні реалізації. Це призвело до створення GNU Privacy Guard (GnuPG або GPG) — вільної реалізації з відкритим вихідним кодом, яка залишається одним із найпоширеніших інструментів PGP сьогодні. Щоб зрозуміти відмінності між цими реалізаціями, зверніться до нашого посібника PGP проти GPG.
Як працює шифрування PGP
Шифрування PGP ґрунтується на складній комбінації криптографічних методів. Замість використання одного методу, PGP застосовує гібридну модель шифрування, яка поєднує швидкість симетричного шифрування з перевагами розподілу ключів асиметричного (з відкритим ключем) шифрування.
Криптографія з відкритим ключем
В основі PGP лежить криптографія з відкритим ключем, також відома як асиметрична криптографія. Кожен користувач PGP генерує пару ключів, що складається з двох математично пов'язаних ключів:
- Відкритий ключ — вільно поширюється серед будь-кого. Інші використовують цей ключ для шифрування повідомлень на вашу адресу та для перевірки ваших цифрових підписів.
- Закритий ключ (також називається секретним ключем) — зберігається в суворій таємниці. Ви використовуєте цей ключ для дешифрування повідомлень, надісланих вам, та для створення цифрових підписів.
Фундаментальна властивість цієї системи полягає в тому, що дані, зашифровані відкритим ключем, можуть бути розшифровані лише відповідним закритим ключем, і навпаки. Це усуває необхідність передачі спільного секрету між сторонами до того, як вони зможуть спілкуватися конфіденційно.
Гібридна модель шифрування
Хоча криптографія з відкритим ключем вирішує проблему розподілу ключів, асиметричні алгоритми, такі як RSA, є обчислювально затратними для шифрування великих обсягів даних. PGP вирішує цю проблему, використовуючи гібридний підхід:
- Генерація сеансового ключа — PGP генерує випадковий унікальний симетричний сеансовий ключ (зазвичай 128 або 256 біт) для кожного повідомлення.
- Шифрування даних — Вміст повідомлення шифрується за допомогою швидкого симетричного шифру (наприклад, AES-256) з використанням сеансового ключа.
- Шифрування сеансового ключа — Сам сеансовий ключ потім шифрується за допомогою відкритого ключа одержувача (асиметрична операція).
- Пакування — Зашифроване повідомлення та зашифрований сеансовий ключ об'єднуються та надсилаються одержувачу.
Коли одержувач отримує повідомлення, процес відбувається у зворотному порядку: він використовує свій закритий ключ для дешифрування сеансового ключа, а потім дешифрований сеансовий ключ використовується для дешифрування вмісту повідомлення.
Цифрові підписи PGP
Крім шифрування, PGP забезпечує цифрові підписи, які виконують дві основні функції: автентифікацію (підтвердження того, хто надіслав повідомлення) та цілісність (підтвердження того, що повідомлення не було змінено під час передачі).
Процес підпису працює наступним чином:
- PGP обчислює криптографічний хеш (дайджест фіксованої довжини) вмісту повідомлення за допомогою алгоритму, такого як SHA-256 або SHA-512.
- Хеш потім шифрується закритим ключем відправника, створюючи цифровий підпис.
- Підпис додається до повідомлення.
Будь-який одержувач може перевірити підпис, розшифрувавши підпис за допомогою відкритого ключа відправника для відновлення оригінального хешу, незалежно обчисливши хеш отриманого повідомлення, а потім порівнявши два хеші. Якщо вони збігаються — повідомлення справжнє та не було змінене.
Стандарт OpenPGP
OpenPGP — це відкритий стандарт, що визначає формати повідомлень, алгоритми та процедури, які використовуються PGP-сумісним програмним забезпеченням. Це не програмний продукт, а швидше специфікація, яку може реалізувати будь-який розробник.
Основні документи:
- RFC 4880 (листопад 2007) — Чинна основна специфікація формату повідомлень OpenPGP.
- RFC 6637 (червень 2012) — Розширює OpenPGP підтримкою криптографії на еліптичних кривих (ECC).
- RFC 9580 (2024) — Остання ревізія, що модернізує стандарт обов'язковою підтримкою Ed25519/X25519, режимами шифрування AEAD та покращеними відбитками ключів.
OpenPGP гарантує інтероперабельність: повідомлення, зашифроване в KeychainPGP, може бути дешифроване за допомогою GnuPG, Mailvelope або будь-якої іншої сумісної реалізації.
Мережа довіри
Однією з відмінних рис PGP є його децентралізована модель мережі довіри (Web of Trust) для встановлення автентичності відкритих ключів. На відміну від централізованої моделі центрів сертифікації (CA), що використовується TLS/SSL, PGP дозволяє самим користувачам підтверджувати автентичність один одного.
Мережа довіри працює через підписання ключів: коли ви перевіряєте ідентичність когось і підтверджуєте, що він контролює певний відкритий ключ, ви підписуєте його ключ своїм. Цей підпис є публічною заявою про те, що ви вірите, що ключ належить саме тій особі, яку він представляє.
Такі інструменти, як KeychainPGP, спрощують цей процес, дозволяючи користувачам працювати з ключами через інтуїтивний інтерфейс, використовуючи шифрування через буфер обміну для легкого обміну зашифрованими повідомленнями та відкритими ключами.
Алгоритми та типи ключів PGP
PGP підтримує широкий спектр криптографічних алгоритмів, які еволюціонували разом з розвитком галузі.
Класичні алгоритми
- RSA (Rivest-Shamir-Adleman) — Найпоширеніший асиметричний алгоритм в історії PGP. Ключі RSA довжиною 2048 біт вважаються мінімальним рівнем безпеки сьогодні, з рекомендацією 4096 біт для довгострокового захисту.
- DSA (Digital Signature Algorithm) — Використовувався для підписів у комбінації з ElGamal для шифрування. Сьогодні менш популярний.
- AES (Advanced Encryption Standard) — Домінуючий симетричний шифр, що використовується для шифрування вмісту повідомлень. Підтримуються AES-128 та AES-256.
- SHA-2 (SHA-256, SHA-384, SHA-512) — Криптографічні хеш-функції, що використовуються для обчислення дайджестів у цифрових підписах.
Сучасні алгоритми
Найновіше покоління реалізацій OpenPGP підтримує криптографію на еліптичних кривих (ECC), яка забезпечує безпеку, еквівалентну RSA, з суттєво меншими розмірами ключів:
- Ed25519 — Алгоритм цифрового підпису на основі Curve25519. Створює швидкі та компактні підписи. Рекомендований у RFC 9580.
- X25519 (Curve25519 ECDH) — Використовується для обміну ключами (шифрування). Забезпечує чудову продуктивність з надійними властивостями безпеки.
- NIST P-256 / P-384 / P-521 — Еліптичні криві, стандартизовані NIST. Підтримуються OpenPGP, але зазвичай менш популярні за алгоритми на основі Curve25519.
Сучасні інструменти, такі як KeychainPGP, підтримують ці сучасні алгоритми, що робить генерацію ключів з Ed25519 та X25519 простою та зрозумілою.
Типові випадки використання PGP
- Захищена електронна пошта — Оригінальний та найвідоміший випадок використання. PGP дозволяє шифрувати вміст листів та підписувати повідомлення для підтвердження їх автентичності.
- Шифрування файлів — PGP може шифрувати окремі файли або цілі архіви для безпечного зберігання або передачі.
- Верифікація програмного забезпечення — Проєкти з відкритим вихідним кодом регулярно підписують свої релізи ключами PGP. Користувачі можуть перевірити ці підписи, щоб підтвердити автентичність завантаження.
- Безпечний обмін повідомленнями — PGP може використовуватися для шифрування будь-якого текстового повідомлення, що особливо корисно на платформах, які не пропонують наскрізного шифрування.
- Підтвердження ідентичності — Відбитки ключів PGP слугують як верифіковані цифрові ідентичності. Розробники на GitHub можуть підписувати свої коміти за допомогою PGP.
- Підписання документів — Юридичні робочі процеси іноді використовують підписи PGP для забезпечення неспростовності.
PGP сьогодні
Понад три десятиліття після свого створення PGP залишається одним з найважливіших доступних криптографічних інструментів. Стандарт OpenPGP продовжує розвиватися, а RFC 9580 вносить суттєві модернізації, включаючи обов'язкову підтримку сучасних алгоритмів на еліптичних кривих та режимів шифрування AEAD.
Екосистема інструментів PGP значно збагатилася. GnuPG залишається еталонною реалізацією для використання в командному рядку. Сучасні інструменти, такі як KeychainPGP, пропонують нативні настільні застосунки (Windows, macOS, Linux), застосунок для Android, CLI для скриптів та вебзастосунок у браузері — все побудовано на тому самому движку Sequoia-PGP на Rust.
Початок роботи з PGP
Готові почати використовувати шифрування PGP? Ось найкращі наступні кроки:
- Спробуйте у браузері — Скористайтеся онлайн-інструментом PGP KeychainPGP для генерації пари ключів, шифрування повідомлення або перевірки підпису без будь-якого встановлення.
- Прочитайте посібник для початківців — Якщо ви новачок у криптографії, наш посібник PGP для початківців проведе вас крок за кроком.
- Вивчіть практичний робочий процес — Наш посібник Як використовувати PGP охоплює генерацію ключів, шифрування та дешифрування, керування зв'язкою ключів та найкращі практики.
- Зрозумійте шифрування через буфер обміну — Дізнайтеся про шифрування PGP через буфер обміну для шифрування та дешифрування тексту безпосередньо з вашого буфера обміну.
- Знайте інструменти — Зрозумійте відмінності між PGP та GPG, щоб обрати правильний інструмент для вашого робочого процесу.
Шифрування PGP захищає конфіденційні комунікації вже понад тридцять років. З сучасними інструментами та стандартами воно доступніше, ніж будь-коли.