Усі статті

PGP: як працює шифрування з відкритим і приватним ключем

PGP (Pretty Good Privacy) — один з перших широко застосовуваних інструментів асиметричного шифрування для звичайних людей, що дозволяє шифрувати повідомлення та ставити цифрові підписи без попереднього обміну секретним ключем із співрозмовником.

Пара ключів: публічний і приватний

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

Як це вирішує проблему обміну ключем

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

Цифровий підпис — та сама ідея навпаки

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

Навіщо це потрібно

  • Шифрувати конфіденційні повідомлення для отримувача без попереднього обміну секретами.
  • Підписувати випуски програмного забезпечення чи коміти, щоб підтвердити авторство.
  • Перевіряти автентичність підписаних електронних листів чи файлів.

Web of Trust замість центрального CA

На відміну від X.509-сертифікатів, де довіру гарантує централізований центр сертифікації, PGP покладається на «павутину довіри»: користувачі самі підписують публічні ключі одне одного, підтверджуючи, що особисто перевірили належність ключа конкретній людині. Довіра до незнайомого ключа виникає опосередковано — через ланцюжок підписів людей, яким ви вже довіряєте, а не через єдиний авторитетний центр.

Спробувати інструмент