GNU Privacy Guard ( GnuPG или GPG ) — это бесплатная замена пакета криптографического программного обеспечения PGP от Symantec . Программное обеспечение совместимо с RFC 4880, спецификацией OpenPGP , соответствующей стандартам IETF . Современные версии PGP совместимы с GnuPG и другими системами, совместимыми с OpenPGP. [4] Однако ожидается, что GnuPG нарушит соответствие предстоящей версии OpenPGP и, следовательно, другим реализациям, которые продолжат соответствовать. [5]
GnuPG является частью проекта GNU и получила крупное финансирование от правительства Германии в 1999 году. [6]
GnuPG — это программа гибридного шифрования , поскольку она использует комбинацию традиционной криптографии с симметричным ключом для повышения скорости и криптографии с открытым ключом для простоты безопасного обмена ключами, обычно с использованием открытого ключа получателя для шифрования сеансового ключа , который используется только один раз. Этот режим работы является частью стандарта OpenPGP и был частью PGP с его первой версии.
Серия GnuPG 1.x использует интегрированную криптографическую библиотеку, а серия GnuPG 2.x заменяет ее Libgcrypt .
GnuPG шифрует сообщения, используя пары асимметричных ключей, индивидуально сгенерированные пользователями GnuPG. Полученными открытыми ключами можно обмениваться с другими пользователями различными способами, например, через серверы ключей в Интернете . Их всегда следует обменивать осторожно, чтобы предотвратить подделку личности путем повреждения соответствий открытого ключа ↔ личности «владельца». Также можно добавить к сообщению криптографическую цифровую подпись , чтобы можно было проверить целостность сообщения и отправителя, если конкретная переписка, на которую полагаются, не была повреждена.
GnuPG также поддерживает симметричные алгоритмы шифрования. По умолчанию GnuPG использует симметричный алгоритм AES , начиная с версии 2.1, [7] CAST5 использовался в более ранних версиях. GnuPG не использует запатентованное или иным образом ограниченное программное обеспечение или алгоритмы. Вместо этого GnuPG использует множество других незапатентованных алгоритмов. [8]
Долгое время он не поддерживал алгоритм шифрования IDEA , используемый в PGP. На самом деле можно было использовать IDEA в GnuPG, загрузив для него плагин, однако для некоторых видов использования в странах, в которых IDEA была запатентована, могла потребоваться лицензия. Начиная с версий 1.4.13 и 2.0.20, GnuPG поддерживает IDEA, поскольку срок действия последнего патента IDEA истек в 2012 году. Поддержка IDEA предназначена «избавиться от всех вопросов со стороны людей, пытающихся расшифровать старые данные или перенести ключи из PGP». to GnuPG", [9] и, следовательно, не рекомендуется для регулярного использования.
Более поздние выпуски GnuPG 2.x («современная» и ныне устаревшая «стабильная» серия) предоставляют большинство криптографических функций и алгоритмов, предоставляемых Libgcrypt (ее криптографическая библиотека), включая поддержку криптографии на основе эллиптических кривых (ECDH, ECDSA и EdDSA) [10 ] в «современной» серии (т.е. начиная с GnuPG 2.1).
Начиная с версий 2.3 или 2.2, GnuPG поддерживает следующие алгоритмы:
GnuPG изначально был разработан Вернером Кохом . [11] [12] Первая производственная версия, версия 1.0.0, была выпущена 7 сентября 1999 года, почти через два года после первого выпуска GnuPG (версия 0.0.0). [13] [11] Федеральное министерство экономики и технологий Германии профинансировало документацию и порт на Microsoft Windows в 2000 году . [12]
GnuPG — это система, совместимая со стандартом OpenPGP, поэтому история OpenPGP имеет важное значение; он был разработан для взаимодействия с PGP , программой шифрования электронной почты, первоначально разработанной Филом Циммерманном . [14] [15]
7 февраля 2014 г. завершился краудфандинговый проект GnuPG, в результате которого было собрано 36 732 евро на новый веб-сайт и улучшение инфраструктуры. [16]
С момента выпуска стабильной версии GnuPG 2.3, начиная с версии 2.3.3 в октябре 2021 года, активно поддерживаются три стабильные ветки GnuPG: [17]
До GnuPG 2.3 активно поддерживались две стабильные ветки GnuPG:
Различные версии GnuPG 2.x (например, из ветвей 2.2 и 2.0) не могут быть установлены одновременно. Однако можно установить «классическую» версию GnuPG (т.е. из ветки 1.4) вместе с любой версией GnuPG 2.x. [10]
Перед выпуском GnuPG 2.2 («современный») для общего использования была рекомендована устаревшая «стабильная» ветка (2.0), первоначально выпущенная 13 ноября 2006 года. [20] Срок службы этой ветки завершился в декабре. 31, 2017; [21] Последняя версия — 2.0.31, выпущенная 29 декабря 2017 года. [22]
До выпуска GnuPG 2.0 все стабильные выпуски происходили из одной ветки; т.е. до 13 ноября 2006 г. параллельно не поддерживалось несколько ветвей выпуска. Этими предыдущими, последовательно последующими (до версии 1.4) ветвями выпуска были:
(Обратите внимание, что до выпуска GnuPG 2.3.0 ветки с нечетным младшим номером версии (например, 2.1, 1.9, 1.3) были ветвями разработки, ведущими к стабильной ветке выпуска с номером версии выше «+ 0,1» (например, 2.2, 2.0). , 1.4); следовательно, ветви 2.2 и 2.1 принадлежат обе к «современной» серии, 2.0 и 1.9 — к «стабильной», а ветви 1.4 и 1.3 — к «классической» серии.
С выпуском GnuPG 2.3.0 эта номенклатура была изменена и теперь состоит из «стабильной» и «LTS» веток из «современной» серии, а также 1.4 как последней поддерживаемой «классической» ветки. Также обратите внимание, что четные или нечетные номера второстепенных выпусков больше не указывают на стабильную или разрабатываемую ветку выпуска.)
Хотя базовая программа GnuPG имеет интерфейс командной строки , существуют различные внешние интерфейсы , которые предоставляют ей графический интерфейс пользователя . Например, поддержка шифрования GnuPG была интегрирована в KMail и Evolution , графические почтовые клиенты , имеющиеся в KDE и GNOME , самых популярных рабочих столах Linux . Существуют также графические интерфейсы GnuPG, например Seahorse для GNOME и KGPG и Kleopatra для KDE.
GPGTools предоставляет ряд интерфейсов для интеграции шифрования и управления ключами в ОС , а также установки GnuPG через пакеты установщика [26] для macOS . GPG Suite [27] устанавливает все связанные приложения OpenPGP (GPG Keychain), плагины ( GPG Mail ) и зависимости (MacGPG), а также службы GPG (интеграция в меню служб macOS) для использования шифрования на основе GnuPG.
Приложения для обмена мгновенными сообщениями, такие как Psi и Fire, могут автоматически защищать сообщения, когда GnuPG установлен и настроен. Его также использует веб-программное обеспечение, такое как Horde . Кроссплатформенное расширение Enigmail обеспечивает поддержку GnuPG для Mozilla Thunderbird и SeaMonkey . Аналогично, Enigform обеспечивает поддержку GnuPG для Mozilla Firefox . Выпуск FireGPG был прекращен 7 июня 2010 г. [28]
В 2005 году компании g10 Code GmbH и Intevation GmbH выпустили Gpg4win — пакет программного обеспечения, включающий GnuPG для Windows, GNU Privacy Assistant и плагины GnuPG для Windows Explorer и Outlook . Эти инструменты включены в стандартный установщик Windows, что упрощает установку и использование GnuPG в системах Windows. [29]
Стандарт OpenPGP определяет несколько методов цифровой подписи сообщений. В 2003 году из-за ошибки в изменении GnuPG, призванном сделать один из этих методов более эффективным, была обнаружена уязвимость безопасности. [30] Это затронуло только один метод цифровой подписи сообщений, только для некоторых выпусков GnuPG (с 1.0.2 по 1.2.3), и на серверах ключей было зарегистрировано менее 1000 таких ключей. [31] Большинство людей не использовали этот метод, и в любом случае их отговаривали от этого, поэтому нанесенный ущерб (если таковой имелся, поскольку о нем публично не сообщалось), по всей видимости, был минимальным. Поддержка этого метода была удалена из версий GnuPG, выпущенных после этого открытия (1.2.4 и более поздние).
Еще две уязвимости были обнаружены в начале 2006 года; во-первых, использование GnuPG по сценарию для проверки подписи может привести к ложным срабатываниям , [32] во-вторых, сообщения, отличные от MIME, были уязвимы для внедрения данных, которые, хотя и не покрыты цифровой подписью, будут считаться частью подписанное сообщение. [33] В обоих случаях на момент анонса были доступны обновленные версии GnuPG.
В июне 2017 года Бернштейн, Брайтнер и другие обнаружили уязвимость (CVE-2017-7526) в Libgcrypt : библиотеке, используемой GnuPG, которая позволила полностью восстановить ключ для RSA-1024 и примерно более 1/8 RSA-1024. 2048 ключей. Эта атака по побочному каналу использует тот факт, что Libgcrypt использовал метод скользящего окна для возведения в степень , что приводит к утечке битов экспоненты и полному восстановлению ключа. [34] [35] Опять же, на момент анонса была доступна обновленная версия GnuPG.
В октябре 2017 года было объявлено об уязвимости ROCA , которая затрагивает ключи RSA, генерируемые токенами YubiKey 4, которые часто используются с PGP/GPG. Многие опубликованные ключи PGP оказались уязвимыми. [36]
Примерно в июне 2018 года было объявлено об атаках SigSpoof . Это позволило злоумышленнику убедительно подделать цифровые подписи. [37] [38]
В январе 2021 года была выпущена версия Libgcrypt 1.9.0, в которой была обнаружена серьезная ошибка, которую было легко использовать. Исправление было выпущено 10 дней спустя в Libgcrypt 1.9.1. [39]