Что такое 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 организацией Internet Engineering Task Force (IETF), гарантируя, что протокол остаётся открытым и совместимым независимо от коммерческой принадлежности.

Публикация стандарта OpenPGP означала, что любой может создавать совместимые реализации. Это привело к появлению GNU Privacy Guard (GnuPG или GPG) — свободной реализации с открытым исходным кодом, которая остаётся одним из наиболее используемых инструментов PGP на сегодняшний день. Чтобы понять различия между реализациями, ознакомьтесь с нашим руководством PGP vs GPG.

Как работает шифрование PGP

Шифрование PGP основано на сложной комбинации криптографических методов. Вместо использования одного метода PGP применяет гибридную модель шифрования, объединяющую скорость симметричного шифрования с преимуществами распределения ключей асимметричного (с открытым ключом) шифрования.

Криптография с открытым ключом

В основе PGP лежит криптография с открытым ключом, также называемая асимметричной криптографией. Каждый пользователь PGP генерирует пару ключей, состоящую из двух математически связанных ключей:

  • Открытый ключ — свободно распространяется среди всех. Другие используют этот ключ для шифрования сообщений, предназначенных вам, и для проверки ваших цифровых подписей.
  • Закрытый ключ (также называемый секретным ключом) — хранится строго конфиденциально. Вы используете этот ключ для расшифровки отправленных вам сообщений и создания цифровых подписей.

Фундаментальное свойство этой системы заключается в том, что данные, зашифрованные открытым ключом, могут быть расшифрованы только соответствующим закрытым ключом, и наоборот. Это устраняет необходимость передачи общего секрета между сторонами до начала конфиденциальной коммуникации.

Гибридная модель шифрования

Хотя криптография с открытым ключом решает проблему распределения ключей, асимметричные алгоритмы, такие как RSA, требуют значительных вычислительных ресурсов для шифрования больших объёмов данных. PGP решает эту проблему с помощью гибридного подхода:

  1. Генерация сеансового ключа — PGP генерирует случайный уникальный симметричный сеансовый ключ (обычно 128 или 256 бит) для каждого сообщения.
  2. Шифрование данных — Содержимое сообщения шифруется с помощью быстрого симметричного шифра (например, AES-256) с использованием сеансового ключа.
  3. Шифрование сеансового ключа — Сам сеансовый ключ затем шифруется с помощью открытого ключа получателя (асимметричная операция).
  4. Упаковка — Зашифрованное сообщение и зашифрованный сеансовый ключ объединяются и отправляются получателю.

Когда получатель получает сообщение, процесс выполняется в обратном порядке: он использует свой закрытый ключ для расшифровки сеансового ключа, а затем расшифрованный сеансовый ключ используется для расшифровки содержимого сообщения.

Цифровые подписи PGP

Помимо шифрования, PGP обеспечивает цифровые подписи, выполняющие две важнейшие функции: аутентификацию (подтверждение того, кто отправил сообщение) и целостность (подтверждение того, что сообщение не было изменено при передаче).

Процесс подписания работает следующим образом:

  1. PGP вычисляет криптографический хеш (дайджест фиксированной длины) содержимого сообщения, используя алгоритм, такой как SHA-256 или SHA-512.
  2. Хеш затем шифруется закрытым ключом отправителя, создавая цифровую подпись.
  3. Подпись прикрепляется к сообщению.

Любой получатель может проверить подпись, расшифровав её открытым ключом отправителя для получения исходного хеша, независимо вычислив хеш полученного сообщения, а затем сравнив оба хеша. Если они совпадают, сообщение является подлинным и не было изменено.

Стандарт 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? Вот лучшие следующие шаги:

  1. Попробуйте в браузере — Используйте онлайн-инструмент PGP KeychainPGP для генерации пары ключей, шифрования сообщения или проверки подписи без какой-либо установки.
  2. Прочитайте руководство для начинающих — Если вы новичок в криптографии, наше руководство PGP для начинающих проведёт вас шаг за шагом.
  3. Изучите практический рабочий процесс — Наше руководство Как использовать PGP охватывает генерацию ключей, шифрование и расшифровку, управление связкой ключей и лучшие практики.
  4. Разберитесь в шифровании через буфер обмена — Узнайте о шифровании PGP через буфер обмена для шифрования и расшифровки текста прямо из буфера обмена.
  5. Узнайте об инструментах — Разберитесь в различиях между PGP и GPG, чтобы выбрать правильный инструмент для вашего рабочего процесса.

Шифрование PGP защищает конфиденциальные коммуникации уже более тридцати лет. Благодаря современным инструментам и стандартам оно доступнее, чем когда-либо.