Введение

Компьютерная программа для шифрования данных, в первую очередь в электронной почте (PGP)

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

Дизайн

Шифрование PGP использует последовательную комбинацию хеширования, сжатия данных, симметричного шифрования и, наконец, асимметричного шифрования (криптографии с открытым ключом); на каждом шаге используется один из нескольких поддерживаемых алгоритмов. Каждый открытый ключ привязан к имени пользователя или адресу электронной почты. Первая версия этой системы обычно называлась «сеть доверия» в отличие от системы X.509, использующей иерархический подход, основанный на центрах сертификации, которая была добавлена в реализации PGP позднее. Современные версии шифрования PGP включают возможности использования автоматизированного сервера управления ключами.

Отпечаток пальца PGP

Отпечаток публичного ключа – это сокращённая версия публичного ключа. По отпечатку можно проверить соответствие правильному публичному ключу. Отпечаток, например C3A6 5E46 7B54 77DF 3C4C 9790 4D22 B3CA 5B32 FF66, можно напечатать на визитной карточке.

Совместимость

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

Конфиденциальность

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

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

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

Сеть доверия

Как при шифровании сообщений, так и при проверке подписей, крайне важно, чтобы открытый ключ, используемый для отправки сообщений кому-либо или какой-либо организации, действительно «принадлежал» предполагаемому получателю. Простое скачивание открытого ключа откуда-либо не является надежной гарантией этой связи; возможна преднамеренная (или случайная) подмена. С самой первой версии PGP всегда предусматривал механизмы распространения открытых ключей пользователей в виде «сертификата подлинности», который также построен криптографически, чтобы любое вмешательство (или случайное искажение) было легко обнаружимо. Однако одних лишь создание сертификата, который невозможно изменить незаметно, недостаточно; это может предотвратить повреждение только после создания сертификата, но не до него. Пользователи также должны каким-либо образом удостовериться, что открытый ключ в сертификате действительно принадлежит лицу или организации, заявляющей о его принадлежности. Конкретный открытый ключ (или, точнее, информация, связывающая имя пользователя с ключом) может быть цифровой подписью стороннего пользователя для подтверждения связи между кем-либо (фактически, именем пользователя) и ключом. В таких подписях можно указать несколько уровней доверия. Хотя многие программы читают и записывают эту информацию, немногие (если таковые имеются) учитывают этот уровень сертификации при определении, доверять ключу или нет. Протокол «сети доверия» впервые был описан Филом Циммерманом в 1992 году в руководстве к версии 2.0 PGP:

Механизм «сети доверия» имеет преимущества по сравнению с централизованно управляемой инфраструктурой открытых ключей, такой как используемая в S/MIME, но не получил широкого распространения. Пользователям необходимо быть готовыми принимать сертификаты и проверять их подлинность вручную или просто принимать их без проверки. Удовлетворительного решения этой основной проблемы пока не найдено.

Сертификаты

В (более поздней) спецификации OpenPGP подписи доверия могут использоваться для поддержки создания центров сертификации. Подпись доверия указывает как на принадлежность ключа заявленному владельцу, так и на то, что владелец ключа заслуживает доверия для подписания других ключей на один уровень ниже своего. Подпись уровня 0 сопоставима с подписью в сети доверия, поскольку сертифицируется только действительность ключа. Подпись уровня 1 аналогична доверию к центру сертификации, поскольку ключ, подписанный на уровне 1, может выдавать неограниченное количество подписей уровня 0. Подпись уровня 2 очень похожа на предположение о доверии, на которое пользователи должны полагаться при использовании списка центров сертификации по умолчанию (например, включенных в веб-браузеры); она позволяет владельцу ключа наделять другие ключи полномочиями центров сертификации. Версии PGP всегда включали возможность отзыва сертификатов открытых ключей. Потерянный или скомпрометированный закрытый ключ потребует этого, если пользователь хочет сохранить безопасность связи. Это в значительной степени эквивалентно спискам отзыва сертификатов централизованных систем PKI. Недавние версии PGP также поддерживают даты истечения срока действия сертификатов. Проблема корректной идентификации открытого ключа как принадлежащего конкретному пользователю не является уникальной для PGP. Все криптосистемы с открытым и закрытым ключом сталкиваются с той же проблемой, пусть и в несколько ином виде, и не существует полностью удовлетворительного решения. Изначальная схема PGP, по крайней мере, предоставляет пользователю возможность решать, использовать ли систему подтверждения/проверки, в то время как большинство других схем PKI этого не делают, требуя принятия каждого сертификата, заверенного центральным центром сертификации, как действительного.

Качество безопасности

По лучшей из общедоступной информации, не существует известного метода, позволяющего лицу или группе взломать шифрование PGP криптографическими или вычислительными средствами. Фактически, в 1995 году криптограф Брюс Шнайер охарактеризовал раннюю версию как "самую близкую к шифрованию военного уровня". Обнаружено, что ранние версии PGP содержат теоретические уязвимости, поэтому рекомендуется использовать текущие версии. Помимо защиты данных при передаче по сети, шифрование PGP также может использоваться для защиты данных при долгосрочном хранении, например, файлов на диске. Эти варианты долгосрочного хранения также известны как "данные в состоянии покоя", то есть хранящиеся, а не передаваемые данные. Криптографическая безопасность шифрования PGP основана на предположении, что используемые алгоритмы невозможно взломать прямым криптоанализом с использованием современного оборудования и методов. В исходной версии алгоритм RSA использовался для шифрования сеансовых ключей. Безопасность RSA зависит от односторонней функции математической факторизации целых чисел. Аналогично, алгоритм симметричного шифрования, использованный в PGP версии 2, был IDEA, который в будущем может быть обнаружен с ранее неизвестными криптоаналитическими недостатками. Конкретные случаи текущих уязвимостей PGP или IDEA (если они существуют) не являются общедоступными. Поскольку в текущих версиях PGP добавлены дополнительные алгоритмы шифрования, их криптографическая уязвимость варьируется в зависимости от используемого алгоритма. Однако, насколько известно, ни один из используемых в настоящее время алгоритмов не имеет криптоаналитических слабостей. Новые версии PGP выпускаются периодически, а уязвимости устраняются разработчиками по мере их обнаружения. Любое агентство, желающее прочитать сообщения PGP, вероятно, будет использовать более простые методы, чем стандартный криптоанализ, например, "криптоанализ резиновым шлангом" или "криптоанализ черным ящиком" (например, установка троянской программы или аппаратного/программного обеспечения для перехвата нажатий клавиш на целевом компьютере для захвата зашифрованных кольцевых ключей и их паролей). ФБР уже использовало эту тактику против PGP в своих расследованиях. Однако подобные уязвимости применимы не только к PGP, но и к любому стандартному программному обеспечению для шифрования. В 2003 году инцидент с изъятыми КПК Psion, принадлежавшими членам "Красных бригад", показал, что ни итальянская полиция, ни ФБР не смогли расшифровать зашифрованные файлы PGP, хранящиеся на них. Второй инцидент в декабре 2006 года (см. дело In re Boucher), с участием таможенных агентов США, изъявших ноутбук, предположительно содержащий детскую порнографию, указывает на то, что правительственные учреждения США считают "почти невозможным" доступ к зашифрованным файлам PGP. Кроме того, судья, вынесший решение по делу в ноябре 2007 года, заявил, что принуждение подозреваемого к раскрытию его пароля PGP нарушит его права, гарантированные Пятой поправкой, то есть конституционное право подозреваемого не свидетельствовать против себя. Вопрос Пятой поправки был вновь поднят, когда правительство обжаловало решение, после чего федеральный окружной судья приказал обвиняемому предоставить ключ. Имеющиеся данные свидетельствуют о том, что британские полицейские не могут взломать PGP и вместо этого прибегают к использованию законодательства RIPA для требования паролей/ключей. В ноябре 2009 года гражданин Великобритании был осужден по закону RIPA и приговорен к девяти месяцам тюремного заключения за отказ предоставить полицейским следователям ключи шифрования зашифрованных файлов PGP. PGP как криптосистема подвергалась критике за сложность стандарта, реализации и крайне низкую удобство использования пользовательского интерфейса, в том числе со стороны признанных экспертов в области криптографических исследований. Стандарт также критикуется за утечку метаданных, использование долгосрочных ключей и отсутствие прямой секретности. Популярные реализации для конечных пользователей страдали от различных уязвимостей, связанных с обрезкой подписей, понижением шифров и утечкой метаданных, что связано со сложностью стандарта.

Уголовное расследование

Вскоре после выпуска PGP-шифрование распространилось за пределы Соединенных Штатов, и в феврале 1993 года Циммерман стал официальной целью уголовного расследования, начатого правительством США, по обвинению в "экспорте вооружений без лицензии". В то время криптосистемы, использующие ключи длиной более 40 бит, считались вооружениями в соответствии с правилами экспорта США; PGP никогда не использовал ключи длиной менее 128 бит, и поэтому подпадал под это определение. Наказания за нарушение, в случае признания виновным, были бы значительными. После нескольких лет расследование в отношении Циммермана было закрыто без предъявления ему или кому-либо еще уголовных обвинений. Циммерман оспорил эти правила оригинальным способом. В 1995 году он опубликовал весь исходный код PGP в книге в твердом переплете, изданной MIT Press, которая широко распространялась и продавалась. Любой, желающий создать свою собственную копию PGP, мог бы удалить обложку, разделить страницы и отсканировать их с помощью программы оптического распознавания символов (OCR), либо ввести текст вручную, если программное обеспечение OCR было недоступно, создав таким образом набор текстовых файлов исходного кода. Затем можно было собрать приложение, используя свободно доступную GNU Compiler Collection. Таким образом, PGP стал доступен в любой точке мира. Заявленный принцип был прост: экспорт вооружений – оружия, бомб, самолетов и программного обеспечения – был (и остается) ограниченным; однако экспорт книг защищен Первой поправкой к Конституции США. Этот вопрос так и не был рассмотрен в суде в отношении PGP. Однако в делах, касающихся другого программного обеспечения для шифрования, два федеральных апелляционных суда установили, что исходный код криптографического программного обеспечения является формой выражения, защищенной Первой поправкой (Апелляционный суд девятого округа по делу Бернштейна и Апелляционный суд шестого округа по делу Юнгера). Правила экспорта США в отношении криптографии остаются в силе, но были существенно либерализованы в конце 1990-х годов. С 2000 года соблюдение этих правил стало значительно проще. PGP-шифрование больше не подпадает под определение оружия, экспорт которого запрещен, и может экспортироваться на международном уровне, за исключением семи конкретных стран и списка определенных групп и лиц (с которыми практически вся торговля США запрещена в соответствии с различными правилами экспортного контроля США). Уголовное расследование было прекращено в 1996 году.

PGP 3 и основание PGP Inc.

Во время этой неразберихи команда Циммермана работала над новой версией шифрования PGP, получившей название PGP 3. Эта новая версия должна была содержать существенные улучшения безопасности, включая новую структуру сертификатов, которая устраняла незначительные уязвимости в сертификатах PGP 2.x, а также позволяла сертификату содержать отдельные ключи для подписи и шифрования. Кроме того, опыт, связанный с проблемами патентов и экспорта, привел их к полному отказу от патентования. PGP 3 представил алгоритм симметричного шифрования CAST 128 (также известный как CAST5) и алгоритмы асимметричного шифрования DSA и ElGamal, ни один из которых не был обременен патентами. После завершения федерального уголовного расследования в 1996 году Циммерман и его команда основали компанию для разработки новых версий шифрования PGP. Они объединились с Viacrypt (которой Циммерман продал коммерческие права и которая лицензировала RSA непосредственно от RSADSI), которая затем сменила название на PGP Incorporated. Объединенная команда Viacrypt/PGP приступила к разработке новых версий шифрования PGP на основе системы PGP 3. В отличие от PGP 2, который представлял собой исключительно программу командной строки, PGP 3 изначально разрабатывался как программная библиотека, позволяющая пользователям работать как из командной строки, так и в графическом интерфейсе. Первоначальное соглашение между Viacrypt и командой Циммермана заключалось в том, что Viacrypt будет выпускать версии с четными номерами, а Циммерман – с нечетными. Таким образом, Viacrypt создала новую версию (на основе PGP 2), которую они назвали PGP 4. Чтобы устранить путаницу относительно того, как PGP 3 мог быть преемником PGP 4, PGP 3 был переименован и выпущен как PGP 5 в мае 1997 года.

Приобретение Network Associates

В декабре 1997 года компания PGP Inc. была приобретена компанией Network Associates, Inc. ("NAI"). Циммерман и команда PGP стали сотрудниками NAI. NAI стала первой компанией, разработавшей легальную стратегию экспорта, путем публикации исходного кода. Под управлением NAI команда PGP добавила в продуктовую линейку PGP шифрование дисков, персональные брандмауэры, системы обнаружения вторжений и IPsec VPN. После либерализации правил экспорта в 2000 году, отменившей требование публикации исходного кода, компания NAI прекратила его публикацию.

Разделение активов

В начале 2001 года Циммерман покинул NAI. Он занимал должность главного криптографа в Hush Communications, компании, предоставляющей сервис электронной почты Hushmail на основе OpenPGP. Он также сотрудничал с Veridis и другими компаниями. В октябре 2001 года NAI объявила о продаже своих активов PGP и о прекращении дальнейшей разработки шифрования PGP. Единственным оставшимся активом был PGP E Business Server (первоначальная версия PGP Commandline). В феврале 2002 года NAI прекратила поддержку всех продуктов PGP, за исключением переименованного продукта командной строки.

МакАфи

NAI, теперь известная как McAfee, продолжала продавать и поддерживать продукт командной строки под названием McAfee E Business Server до 2013 года. В 2010 году Intel Corporation приобрела McAfee. В 2013 году McAfee E Business Server был передан компании Software Diversified Services (SDS), которая теперь продает, поддерживает и разрабатывает его под названием SDS E Business Server, которая впоследствии стала PGP Deutschland AG. В 2010 году PGP Corporation приобрела гамбургский удостоверяющий центр TC TrustCenter и его материнскую компанию ChosenSecurity, чтобы сформировать подразделение PGP TrustCenter. После приобретения активов PGP у NAI в 2002 году, PGP Corporation предоставляла всемирную техническую поддержку PGP из своих офисов в Дрейпере (штат Юта), Оффенбахе (Германия) и Токио (Япония).

Симантек

29 апреля 2010 года компания Symantec Corp. объявила о приобретении PGP Corporation за 300 миллионов долларов с целью интеграции в свою группу Enterprise Security Group. Приобретение было завершено и обнародовано 7 июня 2010 года. Исходный код PGP Desktop 10 доступен для проверки. В мае 2018 года в определенных реализациях PGP была обнаружена уязвимость под названием EFAIL, которая, начиная с 2003 года, могла приводить к раскрытию содержимого зашифрованных электронных писем в открытом виде. В качестве способа устранения этой уязвимости в PGP Desktop было принято решение об обязательном использовании защищенных пакетов SEIP в зашифрованном тексте, что может привести к невозможности расшифровки старых электронных писем или других зашифрованных объектов после обновления до версии программного обеспечения, включающей это устранение.

Бродком

9 августа 2019 года компания Broadcom Inc. объявила о приобретении подразделения Symantec, занимающегося разработкой программного обеспечения для корпоративной безопасности, в которое входит PGP Corporation.

Приложения шифрования корпорации PGP

В этом разделе описываются коммерческие программы, предлагаемые PGP Corporation. Информацию о других программах, совместимых со спецификацией OpenPGP, можно найти в разделе «Внешние ссылки». Изначально продукты PGP использовались главным образом для шифрования содержимого электронных писем и вложений непосредственно с настольного клиента, однако начиная с 2002 года ассортимент расширился и теперь включает в себя набор приложений для шифрования, которыми можно управлять с помощью дополнительного центрального сервера политик. Приложения шифрования PGP включают в себя шифрование электронных писем и вложений, цифровые подписи, полное шифрование диска, защиту файлов и папок, защиту сеансов обмена мгновенными сообщениями, пакетное шифрование файлов при передаче, а также защиту файлов и папок, хранящихся на сетевых серверах. В последнее время появилась поддержка шифрования или подписи HTTP-запросов и ответов с помощью клиентского модуля (Enigform) и серверного модуля (mod openpgp). Также доступен плагин для WordPress под названием wp enigform authentication, использующий функции управления сеансами Enigform совместно с mod openpgp. Семейство PGP Desktop 9.x включает в себя PGP Desktop Email, PGP Whole Disk Encryption и PGP NetShare. Кроме того, доступны различные комплекты для настольных компьютеров. В зависимости от приложения, продукты предлагают функции настольной электронной почты, цифровые подписи, безопасность обмена мгновенными сообщениями, шифрование всего диска, защиту файлов и папок, зашифрованные самораспаковывающиеся архивы и безопасное удаление файлов. Функциональные возможности лицензируются по-разному в зависимости от требуемых функций. Консоль управления PGP Universal Server 2.x обеспечивает централизованное развертывание, управление политиками безопасности, принудительное соблюдение политик, управление ключами и отчетность. Она используется для автоматического шифрования электронной почты на шлюзе и управления клиентами PGP Desktop 9.x. Помимо локального сервера ключей, PGP Universal Server взаимодействует с сервером открытых ключей PGP, известным как PGP Global Directory, для поиска ключей получателей. Он также способен безопасно доставлять электронную почту, даже если ключ получателя не найден, через защищенное HTTPS-соединение в браузере. С PGP Desktop 9.x, управляемым PGP Universal Server 2.x, впервые выпущенным в 2005 году, все приложения шифрования PGP основаны на новой архитектуре, использующей прокси-серверы. Эти новые версии программного обеспечения PGP устраняют необходимость использования плагинов для электронной почты и защищают пользователя от изменений в других настольных приложениях. Все операции на рабочих станциях и серверах теперь основаны на политиках безопасности и выполняются в автоматическом режиме. PGP Universal Server автоматизирует создание, управление и истечение срока действия ключей, распространяя их между всеми приложениями шифрования PGP. Платформа Symantec PGP была переименована. PGP Desktop теперь известен как Symantec Encryption Desktop (SED), а PGP Universal Server – как Symantec Encryption Management Server (SEMS). В настоящее время доступны версии Symantec Encryption Desktop 10.3.0 (для платформ Windows и macOS) и Symantec Encryption Server 3.3.2. Также доступны PGP Command Line, позволяющий осуществлять шифрование и подпись информации из командной строки для хранения, передачи и резервного копирования, а также пакет поддержки PGP для BlackBerry, обеспечивающий устройствам RIM BlackBerry сквозное шифрование сообщений. Новые версии приложений PGP используют как OpenPGP, так и S/MIME, обеспечивая совместимость с любым пользователем, использующим стандарты, определенные NIST.

Реализация

Фонд свободного программного обеспечения разработал собственный программный пакет, соответствующий стандарту OpenPGP, под названием GNU Privacy Guard, который свободно доступен вместе со всем исходным кодом под лицензией GNU General Public License и поддерживается независимо от нескольких графических пользовательских интерфейсов, взаимодействующих с библиотекой GnuPG для выполнения функций шифрования, расшифровки и подписи (см. KGPG, Seahorse, MacGPG). Ряд других разработчиков также создали программное обеспечение, совместимое с OpenPGP. Разработка библиотеки OpenPGP.js с открытым исходным кодом, написанной на JavaScript и поддерживаемой Рамочной программой Европейского Союза "Горизонт 2020", позволила веб-приложениям использовать шифрование PGP непосредственно в веб-браузере.