Защита конфиденциальности GNU

Полная реализация стандартов OpenPGP и S/MIME
Оригинальный автор(ы)Вернер Кох
Разработчик(и)Проект GNU
Первоначальный выпуск7 сентября 1999 г .; 25 лет назад ( 1999-09-07 )
Стабильный релиз(ы)
Стабильный2.4.7 [1] / 25 ноября 2024 г.
ЛТС2.2.43 [2] / 16 апреля 2024 г.
Предварительный просмотр релиза(ов)
2.5.2 [3]  / 6 декабря 2024 г.
Репозиторийdev.gnupg.org/source/gnupg/
Написано вС
Операционная системаMicrosoft Windows , macOS , RISC-ОС , Android , Linux
ТипOpenPGP
Лицензия2007: GPL-3.0 или более поздняя версия [a]
1997: GPL-2.0 или более поздняя версия [b]
Веб-сайтgnupg.org

GNU Privacy Guard ( GnuPG или GPG ) — это свободное программное обеспечение , заменяющее криптографический программный пакет PGP от Symantec . Программное обеспечение соответствует устаревшему [4] RFC  4880, спецификации IETF standards-track OpenPGP . Современные версии PGP совместимы с GnuPG и другими системами, совместимыми с OpenPGP v4. [5]

В ноябре 2023 года были представлены два проекта, направленные на обновление спецификации OpenPGP v4 2007 года (RFC4880), что в конечном итоге привело к появлению стандарта RFC 9580 в июле 2024 года. Предложение разработчиков GnuPG, которое называется LibrePGP, не было принято рабочей группой OpenPGP, и будущие версии GnuPG не будут поддерживать текущую версию OpenPGP. [6]

GnuPG является частью проекта GNU и получил крупное финансирование от правительства Германии в 1999 году. [7]

Обзор

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

Серия GnuPG 1.x использует интегрированную криптографическую библиотеку, тогда как серия GnuPG 2.x заменяет ее на Libgcrypt .

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

GnuPG также поддерживает симметричные алгоритмы шифрования . По умолчанию GnuPG использует симметричный алгоритм AES с версии 2.1, [8] В более ранних версиях использовался CAST5 . GnuPG не использует запатентованное или иным образом ограниченное программное обеспечение или алгоритмы. Вместо этого GnuPG использует множество других, не запатентованных алгоритмов. [9] Долгое время он не поддерживал алгоритм шифрования IDEA , используемый в PGP. Фактически, было возможно использовать IDEA в GnuPG, загрузив плагин для него, однако для некоторых видов использования в странах, в которых IDEA был запатентован, это может потребовать лицензии. Начиная с версий 1.4.13 и 2.0.20, GnuPG поддерживает IDEA, поскольку последний патент IDEA истек в 2012 году. Поддержка IDEA предназначена «для того, чтобы избавить от всех вопросов людей, пытающихся либо расшифровать старые данные, либо перенести ключи из PGP в GnuPG», [10] и, следовательно, не рекомендуется для регулярного использования.

Более поздние выпуски GnuPG 2.x («современная» и ныне устаревшая «стабильная» серии) предоставляют большинство криптографических функций и алгоритмов, предоставляемых Libgcrypt (ее криптографической библиотекой), включая поддержку криптографии на эллиптических кривых (ECDH, ECDSA и EdDSA) [11] в «современной» серии (т. е. начиная с GnuPG 2.1).

Алгоритмы

Начиная с версий 2.3 или 2.2, GnuPG поддерживает следующие алгоритмы:

Открытый ключ
RSA , Эль-Гамаль , DSA , ECDH ( cv25519 , cv448 , [c] nistp256, nistp384, nistp521 , brainpoolP256r1, brainpoolP384r1, brainpoolP512r1 , secp256k1), ECDSA (nistp256, nistp384, nistp521, brainpoolP256r1, brainpoolP384r1, brainpoolP512r1, secp256k1), EdDSA (ed25519, ed448 [c] )
Шифр
3DES , IDEA (для обратной совместимости), CAST5 , Blowfish , Twofish , AES-128, AES-192, AES-256 , Camellia-128, -192 и -256
Хэш
МД5 , ША-1 , РИПЭМД-160 , ША-256, ША-384, ША-512, ША-224
Сжатие
Несжатый, ZIP , ZLIB , BZIP2

История

GnuPG изначально был разработан Вернером Кохом . [12] [13] Первая промышленная версия, версия 1.0.0, была выпущена 7 сентября 1999 года, почти через два года после первого выпуска GnuPG (версия 0.0.0). [14] [12] Федеральное министерство экономики и технологий Германии профинансировало документацию и портирование на Microsoft Windows в 2000 году. [13]

GnuPG — это система, соответствующая стандарту OpenPGP, поэтому история OpenPGP имеет важное значение; она была разработана для взаимодействия с PGP , программой шифрования электронной почты, изначально спроектированной и разработанной Филом Циммерманном . [15] [16]

7 февраля 2014 года завершился краудфандинговый проект GnuPG, в ходе которого было собрано 36 732 евро на новый веб-сайт и улучшение инфраструктуры. [17]

Филиалы

С момента выпуска стабильной версии GnuPG 2.3, начиная с версии 2.3.3 в октябре 2021 года, активно поддерживаются три стабильные ветки GnuPG: [18]

  • « Стабильная ветвь», которая в настоящее время (по состоянию на 2021 год) является ветвью 2.3.
  • « Ветка LTS (долгосрочная поддержка) », которая в настоящее время (по состоянию на 2021 год) является веткой 2.2 (которая ранее называлась «современной веткой», в отличие от ветки 2.0).
  • Старая « ветвь legacy » (ранее называвшаяся «ветвью classic»), которая есть и останется ветвью 1.4.

До GnuPG 2.3 активно поддерживались две стабильные ветки GnuPG:

  • «Modern» (2.2) с многочисленными новыми функциями, такими как эллиптическая криптография , по сравнению с бывшей «stable» (2.0) веткой, которую она заменила с выпуском GnuPG 2.2.0 28 августа 2017 года. [19] Первоначально она была выпущена 6 ноября 2014 года. [11]
  • "Classic" (1.4), очень старая, но все еще поддерживаемая автономная версия, наиболее подходящая для устаревших или встроенных платформ. Первоначально выпущена 16 декабря 2004 года. [20]

Различные версии GnuPG 2.x (например, из веток 2.2 и 2.0) не могут быть установлены одновременно. Однако, можно установить "классическую" версию GnuPG (например, из ветки 1.4) вместе с любой версией GnuPG 2.x. [11]

До выпуска GnuPG 2.2 («современный»), ныне устаревшая «стабильная» ветка (2.0) была рекомендована для общего использования, первоначально выпущенная 13 ноября 2006 года. [21] Эта ветка достигла конца своего жизненного цикла 31 декабря 2017 года; [22] Ее последняя версия — 2.0.31, выпущенная 29 декабря 2017 года. [23]

До выпуска GnuPG 2.0 все стабильные релизы исходили из одной ветки; т. е. до 13 ноября 2006 года не поддерживалось параллельно ни одной ветви релиза. Этими бывшими, последовательно следующими (до 1.4) ветками релиза были:

  • Ветка 1.2, первоначально выпущенная 22 сентября 2002 г. [24] с 1.2.6 в качестве последней версии, выпущенной 26 октября 2004 г. [25]
  • Ветка 1.0, первоначально выпущенная 7 сентября 1999 года, [14] с 1.0.7 в качестве последней версии, выпущенной 30 апреля 2002 года. [26]

(Обратите внимание, что до выпуска 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: как ключ подписи репозитория программного обеспечения для openSUSEZYpp )

Хотя базовая программа GnuPG имеет интерфейс командной строки , существуют различные внешние интерфейсы , которые предоставляют ей графический пользовательский интерфейс . Например, поддержка шифрования GnuPG была интегрирована в KMail и Evolution , графические клиенты электронной почты, найденные в KDE и GNOME , самых популярных рабочих столах Linux . Существуют также графические внешние интерфейсы GnuPG, например Seahorse для GNOME и KGPG и Kleopatra для KDE.

GPGTools предоставляет ряд интерфейсов для интеграции шифрования и управления ключами в ОС , а также установки GnuPG через пакеты установщика [27] для 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-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]

Смотрите также

Примечания

  1. ^ GPL-3.0 или более поздняя версия с 04.07.2007 для 2.x и 23.10.2007 для 1.x.
  2. ^ GPL-2.0 или более поздняя версия с 18.11.1997 по 04.07.2007 для 2.x и 23.10.2007 для 1.x.
  3. ^ ab доступно только в версии 2.3

Ссылки

  1. Вернер Кох (28 ноября 2024 г.). «GnuPG 2.4.7 и Gpg4win 4.4.0 выпущены» . Получено 28 ноября 2024 г.
  2. ^ "Важные изменения в версии 2.2.43". 16 апреля 2024 г. Получено 27 мая 2024 г.
  3. Вернер Кох (6 декабря 2024 г.). "GnuPG 2.5.2 released" . Получено 10 декабря 2024 г. .
  4. ^ Воутерс, Пол; Хюигенс, Дэниел; Зима, Юстус; Ютака, Ниибе (июль 2024 г.). «RFC 9580 OpenPGP». IETF . Проверено 19 декабря 2024 г.
  5. ^ "Gnu Privacy Guard". GnuPG.org. Архивировано из оригинала 29-04-2015 . Получено 26-05-2015 .
  6. ^ "Раскол в мире OpenPGP". Linux Weekly News . Получено 2023-12-09 .
  7. ^ "Bundesregierung fördert Open Source" (на немецком языке). Хейзе Онлайн. 15 ноября 1999 г. Архивировано из оригинала 12 октября 2013 года . Проверено 24 июля 2013 г.
  8. ^ "[Анонс] Возможно, финальная бета-версия GnuPG 2.1". Архивировано из оригинала 2019-05-02 . Получено 2019-03-28 .
  9. ^ "GnuPG Features". Архивировано из оригинала 4 октября 2009 г. Получено 1 октября 2009 г.
  10. ^ Кох, Вернер (21.12.2012). "GnuPG 1.4.13 выпущен" (список рассылки). gnupg-users. Архивировано из оригинала 12.02.2013 . Получено 19.05.2013 .
  11. ^ abc Кох, Вернер (2014-11-06). "[Анонс] GnuPG 2.1.0 "modern" released". gnupg.org. Архивировано из оригинала 2014-11-06 . Получено 2014-11-06 .
  12. ^ ab Angwin, Julia (5 февраля 2015 г.). «Программное обеспечение для шифрования электронной почты в мире полагается на одного парня, который разоряется». ProPublica . Архивировано из оригинала 6 февраля 2015 г. Получено 6 февраля 2015 г.
  13. ^ ab Wayner, Peter (19 ноября 1999 г.). «Германия присуждает грант за шифрование». The New York Times . Архивировано из оригинала 25 августа 2014 г. Получено 2014-08-08 .
  14. ^ ab "Release Notes". GnuPG. Архивировано из оригинала 2014-02-09 . Получено 2014-01-30 .
  15. ^ "Gnu Privacy Guard". OpenPGP.org. Архивировано из оригинала 2014-02-27 . Получено 2014-02-26 .
  16. ^ "Где взять PGP". Philzimmermann.com. Архивировано из оригинала 2014-02-26 . Получено 2014-02-26 .
  17. ^ "GnuPG: Новый веб-сайт и инфраструктура". goteo.org. Архивировано из оригинала 2014-03-30 . Получено 2014-03-09 .
  18. ^ "Выпущен GnuPG 2.3.3".
  19. ^ Кох, Вернер (28.08.2017). "[Анонс] GnuPG 2.2.0 выпущен". gnupg-announce (список рассылки). Архивировано из оригинала 29.08.2017 . Получено 21.09.2017 .
  20. ^ Кох, Вернер (16.12.2004). "[Анонс] GnuPG stable 1.4 released". gnupg.org. Архивировано из оригинала 03.01.2005 . Получено 16.12.2004 .
  21. ^ Кох, Вернер (13.11.2006). "[Анонс] GnuPG 2.0 выпущен". gnupg.org. Архивировано из оригинала 14.02.2014 . Получено 30.01.2014 .
  22. ^ Кох, Вернер (2017-01-23). ​​"[Анонс] GnuPG 2.1.18 выпущен". gnupg.org. Архивировано из оригинала 2017-02-11 . Получено 2017-02-04 .
  23. ^ "GnuPG 2.0.31". 2017-12-29 . Получено 2017-12-30 .
  24. ^ Кох, Вернер (2002-09-06). "[Анонс]GnuPG 1.2 выпущен". gnupg.org. Архивировано из оригинала 2014-06-17 . Получено 2014-11-06 .
  25. ^ Кох, Вернер (2004-08-26). "[Анонс] GnuPG 1.2.6 выпущен". gnupg.org. Архивировано из оригинала 2014-06-17 . Получено 2014-11-06 .
  26. ^ Кох, Вернер (2002-04-30). "[Анонс] GnuPG 1.0.7 выпущен". gnupg.org. Архивировано из оригинала 2014-06-17 . Получено 2014-11-06 .
  27. ^ ab "GPG Suite". GPGTools . Получено 24.12.2017 .
  28. ^ "Блог разработчиков FireGPG". 7 июня 2010 г. Архивировано из оригинала 27 июля 2013 г. Получено 24 июля 2013 г.
  29. ^ "Gpg4win – О Gpg4win". gpg4win.org . Получено 2021-03-23 ​​.
  30. ^ Нгуен, Фонг К. «Можем ли мы доверять криптографическому программному обеспечению? Криптографические недостатки в GNU Privacy Guard v1.2.3». EUROCRYPT 2004: 555–570. Архивировано из оригинала 2017-12-04 . Получено 2019-08-23 .
  31. Кох, Вернер (27 ноября 2003 г.). «Скомпрометированы ключи подписи GnuPG ElGamal». Архивировано из оригинала 18 марта 2004 г. Получено 14 мая 2004 г.
  32. ^ Кох, Вернер (15 февраля 2006 г.). "Ложная положительная проверка подписи в GnuPG". Архивировано из оригинала 17 июня 2006 г. Получено 23 мая 2006 г.
  33. Кох, Вернер (9 марта 2006 г.). «GnuPG не обнаруживает инъекцию неподписанных данных». Архивировано из оригинала 5 мая 2006 г. Получено 23 мая 2006 г.
  34. Edge, Jake (5 июля 2017 г.). «Взлом Libgcrypt RSA через сторонний канал». LWN.net . Архивировано из оригинала 28 июля 2017 г. Получено 28 июля 2017 г.
  35. ^ "Скольжение вправо в катастрофу: течь раздвижных окон слева направо" (PDF) . Архивировано (PDF) из оригинала 2017-06-30 . Получено 2017-06-30 .
  36. ^ Возвращение атаки Копперсмита: практическая факторизация широко используемых модулей RSA Архивировано 12 ноября 2017 г. на Wayback Machine , Матус Немец, Марек Сис, Петр Свенда, Душан Клинец, Вашек Матьяс, ноябрь 2017 г.
  37. ^ «Десятилетняя ошибка PGP позволяла хакерам подделывать подпись практически любого человека». 14 июня 2018 г. Архивировано из оригинала 2018-09-07 . Получено 2018-09-07 .
  38. ^ "Pass получает отказ: Simple Password Store страдает от ошибки подмены GnuPG". The Register . Архивировано из оригинала 2018-06-30 . Получено 2018-09-07 .
  39. ^ "Серьёзная ошибка в Libgcrypt, используемом GPG и другими, создаёт кучу проблем, требует исправления". Архивировано из оригинала 21.02.2021.
  • Официальный сайт
  • Краткая история GNU Privacy Guard, написанная Вернером Кохом и опубликованная в 10-й день рождения GnuPG
Взято с "https://en.wikipedia.org/w/index.php?title=GNU_Privacy_Guard&oldid=1266666595"