PGP-шифрование
В 2026 году компании Pretty Good Privacy исполняется 35 лет, и по-прежнему нет ничего, что могло бы делать то, что она делает: сквозное шифрование произвольных данных с моделью ключей, не зависящей от какого-либо центрального органа. Пользовательский опыт ужасен, современная архитектура безопасности превзошла его, и все же для некоторых конкретных задач PGP остается ответом.
Полный текст статьи на английском языке представлен ниже.
PGP (Pretty Good Privacy) был создан Филом Циммерманом в 1991 году первоначально как способ шифрования электронной почты активистов под угрозой судебного преследования США за экспортный контроль. После юридических баталий и стандартизации в IETF как OpenPGP (RFC 4880, обновленный в RFC 9580 в 2024 году), он стал фактическим стандартом для данных, зашифрованных не в реальном времени. Реализация GnuPG с открытым исходным кодом присутствует практически в каждом дистрибутиве Linux и во многих других местах.
Что дает вам PGP
Четыре возможности, используемые независимо или вместе:
- Шифрование — шифрование файла/сообщения с использованием открытых ключей одного или нескольких получателей; его расшифровывают только их закрытые ключи.
- Signing — создайте криптографическую подпись поверх файла с помощью вашего закрытого ключа; любой, у кого есть ваш открытый ключ, может проверить подлинность и целостность файла.
- Комбинированное шифрование и подпись — оба одновременно.
- Сертификация ключа — подпишите чужой открытый ключ, чтобы выразить свою уверенность в том, что ключ действительно принадлежит этому человеку, создавая сеть Trust.
Как на самом деле выглядит ключ OpenPGP
Ключ OpenPGP представляет собой структурированный большой объект, содержащий:
- A первичный ключ (долгосрочный, используется для сертификации)
- Один или несколько подразделов (среднесрочные, используются для шифрования и подписи) изо дня в день)
- Идентификаторы пользователей (адреса электронной почты и имена, привязанные к этому ключу)
- Самоподписи и подписи третьих лиц, связывающие все вышеперечисленное.
Разделение на первичный и подразделы позволяет пользователям держать основной в автономном режиме и регулярно менять подразделы. Большинство пользователей не беспокоятся. Режимы генерации ключей по умолчанию делают все это автоматически. Модель идентификации
The Web of Trust
PGP децентрализована: нет центрального органа. Вместо этого пользователи подписывают ключи друг друга на «сторонах, подписывающих ключи» или посредством личной проверки. Если Алиса подпишет ключ Боба, Кэрол, которая доверяет подписи Алисы, может распространить доверие на ключ Боба. Сеть доверия объединяет пользователей посредством цепочек взаимных подписей.
На практике Сеть доверия никогда не работала в больших масштабах за пределами небольших сообществ шифропанков. Для большинства пользователей модель доверия сводится к «Я доверяю этому ключу, потому что кто-то отправил его мне по электронной почте» или «Я доверяю этому ключу, потому что я скачал его с официальной страницы ключей». Современные альтернативы, такие как Web Key Directory (WKD), автоматизируют получение нужного ключа из домена получателя.
Почему PGP сложно использовать
Ошибки взаимодействия с пользователем известны:
- Управление ключами требует понимания открытых/частных ключей, подразделов, срока действия, отзыва и ключей. серверы.
- Инструменты по умолчанию (gpg, kleopatra) имеют поверхности, предназначенные для криптографов.
- Зашифрованная электронная почта достаточно редка, поэтому у получателей часто нет ключей, они не могут расшифровать ваше сообщение или не знают, как настроить свой клиент.
- Поддержка мобильных устройств плохая.
- Key отзыв осуществляется по желанию и происходит редко; старые скомпрометированные ключи хранятся на серверах ключей десятилетиями. Исправлены ошибки; более общий урок усвоился: инструменты для шифрования электронной почты действительно сложно понять правильно.
Там, где PGP по-прежнему побеждает
Несмотря на критику, PGP остается ответом для нескольких случаев использования:
- Подписание выпусков программного обеспечения. Дистрибутивы Linux, менеджеры пакетов и многие проекты с открытым исходным кодом используют подписи PGP в выпусках. Инфраструктура развита, подписи передаются вместе с файлами, и для их проверки не требуется двустороннее соединение по сети.
- Подписание коммитов Git. GitHub, GitLab и Gerrit проверяют подписи PGP на коммитах и тегах. Модель такая же, как и для выпусков.
- Конфиденциальная передача файлов известному получателю. Шифрование конфиденциального файла с помощью ключа PGP коллеги и отправка его по любому каналу работает асинхронно, без участия третьей стороны.
- Информирование о нарушениях и журналистика. SecureDrop и подобные системы по-прежнему используют OpenPGP для связи между источником и журналистом, когда модели угроз превосходят модели Signal.
- Зашифрованные резервные копии. Резервное копирование в ненадежное облако и шифрование с помощью PGP на ключ, который вы контролируете, — одно из немногих распространенных применений, где трение приемлемо.
Современная реформа усилия
Несколько проектов пытались сделать PGP пригодным для использования. Web Key Directory (WKD) позволяет пользователям публиковать ключи на
https://example.com/.well-known/openpgpkey/..., которые автоматически запрашиваются клиентами. Sequoia-PGP — это переработка OpenPGP на Rust с современной криптографией и более чистым API. Proton Mail внутренне использует OpenPGP, но скрывает сложность пользовательского интерфейса веб-почты. Mailvelope добавляет OpenPGP в обычную веб-почту. Реформы улучшили ситуацию; PGP по-прежнему редко является подходящим инструментом для повседневного общения.OpenPGP против протокола Signal
Для обмена сообщениями в реальном времени, когда пользователи находятся в сети, протокол Signal значительно превосходит его — лучшая секретность пересылки, лучший пользовательский интерфейс, развитые мобильные клиенты. Для асинхронного шифрования файлов/данных с постоянными идентификаторами и вариантами автономного использования у OpenPGP до сих пор нет реального конкурента. Эти два решения решают смежные, но разные проблемы.
Часто задаваемые вопросы
- Должен ли я использовать PGP для электронной почты?
- Вероятно, не по умолчанию. Если ваши корреспонденты уже используют PGP и этого требует ваша модель угроз (журналисты, юристы, исследователи безопасности, активисты), да. Для обычного общения более удобен Signal или другой современный зашифрованный мессенджер. Для асинхронной передачи файлов с сильными моделями угроз PGP по-прежнему подходит.
- В чем разница между PGP и OpenPGP?
- PGP — оригинальное коммерческое программное обеспечение от Фила Циммермана (позже проданное Symantec). OpenPGP — это открытый стандарт, согласованный широким сообществом и определенный в RFC IETF. GnuPG (GPG) — наиболее используемая бесплатная реализация OpenPGP. В повседневном использовании «PGP» обычно означает «программное обеспечение, совместимое с OpenPGP».
- Является ли PGP квантовобезопасным?
- Текущие комплекты шифров OpenPGP (RSA, ECDH) — нет. В обновлении RFC 9580 OpenPGP добавлены постквантовые гибридные режимы; принятие происходит медленно, потому что ничто не заставляет менять ключи. «Собрать сейчас, расшифровать позже» — это реальная проблема для данных, зашифрованных с помощью PGP, имеющих долгосрочную ценность.
- Почему EFAIL сломал PGP?
- Он не сломал криптографию — он сломал почтовые клиенты, которые расшифровывали сообщения PGP, а затем автоматически отображали HTML и загружали удаленные изображения. Созданное сообщение может заставить клиента отправить расшифрованный контент обратно злоумышленнику через URL-адреса изображений. Криптографический конверт был в порядке; прикладной уровень просочился. Почтовые клиенты с тех пор устранили уязвимости.
- Могу ли я использовать один и тот же ключ PGP для нескольких адресов электронной почты?
- Да — ключ OpenPGP может иметь несколько идентификаторов пользователя, по одному на адрес электронной почты. Вы можете добавлять или отзывать идентификаторы пользователей с течением времени, не меняя сам ключ. Такие инструменты, как Web Key Directory, ожидают этого; некоторые клиенты все еще путаются, особенно если некоторые идентификаторы пользователей отозваны.