Открыть сервис

OpenPGP

OpenPGP (Pretty Good Privacy) — это открытый криптографический стандарт, определяющий форматы и процедуры для шифрования, дешифрования, создания и проверки электронных подписей, а также управления ключами. Стандарт основан на оригинальной программе Pretty Good Privacy (PGP), разработанной Филипом Циммерманном в 1991 году. OpenPGP обеспечивает конфиденциальность, целостность и аутентификацию данных, передаваемых по незащищённым каналам связи, и широко применяется для защиты электронной почты, файлов и цифровых подписей.

История

Разработка PGP

Первая версия PGP была создана американским программистом и активистом Филипом Циммерманном в 1991 году. Первоначально программа предназначалась для защиты электронной почты от перехвата и прослушивания. Циммерманн опубликовал PGP в свободном доступе в интернете, что вызвало обеспокоенность правительства США, так как программное обеспечение для шифрования классифицировалось как «военная техника» и подлежало экспортным ограничениям. В 1993 году началось расследование в отношении Циммерманна по обвинению в нарушении законов об экспорте криптографии, которое было прекращено в 1996 году.

Стандартизация OpenPGP

В 1997 году для обеспечения совместимости различных реализаций PGP и создания открытого стандарта была сформирована рабочая группа OpenPGP в рамках Internet Engineering Task Force (IETF). Результатом её работы стал документ RFC 2440 «OpenPGP Message Format», опубликованный в 1998 году. Позднее стандарт был обновлён: в 2007 году вышел RFC 4880, который остаётся основной спецификацией OpenPGP на 2025 год. В 2015 году была опубликована дополнительная спецификация RFC 6637 для использования эллиптических кривых.

Развитие и современное состояние

После стандартизации OpenPGP появилось множество реализаций, включая коммерческие (PGP Desktop, Symantec Encryption Desktop — разработка компании Symantec) и свободные (GnuPG, OpenPGP.js, Sequoia-PGP). Наиболее известной и широко используемой реализацией является GNU Privacy Guard (GnuPG), разработанная немецким программистом Вернером Кохом. В 2024 году IETF начала работу над новой версией стандарта (OpenPGP v6), которая предусматривает использование современных алгоритмов, таких как криптография на эллиптических кривых (EdDSA, ECDH), и улучшенные методы защиты ключей.

Основные принципы работы

Гибридное шифрование

OpenPGP использует гибридную криптосистему, сочетающую симметричное и асимметричное шифрование. Асимметричное шифрование (с открытым и закрытым ключом) используется для безопасной передачи симметричного ключа (сеансового ключа), который затем применяется для шифрования основного сообщения. Это позволяет сочетать удобство управления ключами (асимметричная криптография) с высокой скоростью обработки больших объёмов данных (симметричная криптография).

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

Для аутентификации отправителя и обеспечения целостности сообщения OpenPGP использует цифровые подписи. Отправитель создаёт хеш-функцию от сообщения и шифрует её своим закрытым ключом. Получатель, используя открытый ключ отправителя, расшифровывает подпись и сравнивает её с вычисленным хешем. Совпадение подтверждает, что сообщение не было изменено и отправлено именно владельцем закрытого ключа.

Сертификаты и сеть доверия

OpenPGP не использует централизованную иерархию сертификационных центров (как в X.509). Вместо этого применяется модель «сети доверия» (Web of Trust). Каждый пользователь может подписывать открытые ключи других пользователей, подтверждая их подлинность. Степень доверия к ключу определяется количеством и качеством подписей от доверенных лиц. Этот подход децентрализован и не требует обращения к единому центру сертификации.

Структура данных OpenPGP

Пакеты (Packets)

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

Ключи

Каждый пользователь OpenPGP имеет пару ключей: открытый (публикуется для всех) и закрытый (хранится в секрете). Ключи могут быть защищены парольной фразой. Открытый ключ обычно содержит:

Алгоритмы

Стандарт OpenPGP поддерживает несколько криптографических алгоритмов:

Применение

Защита электронной почты

Наиболее распространённое применение OpenPGP — шифрование и подписание электронных писем. Для этого используются плагины и расширения к почтовым клиентам, такие как Enigmail (для Mozilla Thunderbird), GPG Suite (для Apple Mail), Gpg4win (для Microsoft Outlook). Пользователь может зашифровать письмо так, что прочитать его сможет только получатель, имеющий соответствующий закрытый ключ.

Цифровые подписи файлов

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

Управление ключами

Для обмена открытыми ключами используются специальные серверы ключей (keyservers), такие как keys.openpgp.org. Пользователи могут загружать свои открытые ключи на серверы и скачивать ключи других. Серверы ключей не хранят закрытые ключи и не проверяют подлинность загружаемых данных, полагаясь на сеть доверия.

Критика и ограничения

OpenPGP критикуется за сложность использования для неспециалистов. Процесс генерации ключей, обмена ими, проверки подписей и управления доверием требует определённых знаний. Кроме того, модель «сети доверия» может быть уязвима для атак, если злоумышленник получает контроль над ключами доверенных лиц. Также отмечается, что стандарт OpenPGP не обеспечивает защиты метаданных (например, темы письма, адресов отправителя и получателя), которые передаются в открытом виде. В 2024 году началась работа над версией 6 стандарта, которая призвана устранить некоторые из этих недостатков, включая поддержку современных алгоритмов и улучшенную защиту ключей.

Реализации

GnuPG (GNU Privacy Guard)

GnuPG — свободная реализация OpenPGP, написанная на C. Она является стандартной в большинстве дистрибутивов Linux и доступна для Windows и macOS. GnuPG поддерживает все основные функции OpenPGP и может использоваться как через командную строку, так и через графические интерфейсы.

Sequoia-PGP

Sequoia-PGP — современная реализация OpenPGP на языке Rust, ориентированная на безопасность и производительность. Она предоставляет библиотеку для разработчиков и набор инструментов командной строки.

OpenPGP.js

OpenPGP.js — реализация OpenPGP на JavaScript, работающая в браузере и в среде Node.js. Она используется для шифрования данных в веб-приложениях.

Другие

Существуют также коммерческие реализации, такие как PGP Desktop (ранее Symantec Encryption Desktop) и GPG Suite для macOS.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →