PGP (Pretty Good Privacy) — один з перших широко застосовуваних інструментів асиметричного шифрування для звичайних людей, що дозволяє шифрувати повідомлення та ставити цифрові підписи без попереднього обміну секретним ключем із співрозмовником.
Пара ключів: публічний і приватний
На відміну від симетричного шифрування (як AES), де один ключ шифрує й розшифровує дані, PGP використовує пару математично пов'язаних ключів. Публічний ключ можна вільно поширювати — ним будь-хто може зашифрувати повідомлення саме для вас. Розшифрувати це повідомлення можна лише відповідним приватним ключем, який ви нікому не показуєте.
Як це вирішує проблему обміну ключем
Головна складність симетричного шифрування — обидві сторони мають якось безпечно домовитися про спільний ключ заздалегідь. З PGP цього не потрібно: відправник просто бере опублікований публічний ключ отримувача, і лише власник відповідного приватного ключа зможе прочитати повідомлення.
Цифровий підпис — та сама ідея навпаки
Щоб підписати повідомлення, автор шифрує (точніше, хешує й шифрує хеш) його своїм приватним ключем. Будь-хто може перевірити підпис відповідним публічним ключем автора — успішна перевірка підтверджує, що повідомлення дійсно створив власник приватного ключа і воно не було змінено.
Навіщо це потрібно
- Шифрувати конфіденційні повідомлення для отримувача без попереднього обміну секретами.
- Підписувати випуски програмного забезпечення чи коміти, щоб підтвердити авторство.
- Перевіряти автентичність підписаних електронних листів чи файлів.
Web of Trust замість центрального CA
На відміну від X.509-сертифікатів, де довіру гарантує централізований центр сертифікації, PGP покладається на «павутину довіри»: користувачі самі підписують публічні ключі одне одного, підтверджуючи, що особисто перевірили належність ключа конкретній людині. Довіра до незнайомого ключа виникає опосередковано — через ланцюжок підписів людей, яким ви вже довіряєте, а не через єдиний авторитетний центр.