GnuPG
GNU Privacy Guard (GnuPG, GPG) — свободная программа для шифрования информации и создания электронных цифровых подписей. Разработана как альтернатива PGP и выпущена под свободной лицензией GNU General Public License. GnuPG полностью совместима со стандартом IETF OpenPGP. Текущие версии GnuPG могут взаимодействовать с PGP и другими OpenPGP-совместимыми системами.
GnuPG | |
---|---|
| |
Тип | шифрующее программное обеспечение и программное обеспечение неприкосновенности частной жизни[d] |
Автор | Вернер Кох[1] |
Разработчик | Проект GNU |
Написана на | Си[2] |
Операционная система | GNU/Linux[1], BSD[1], Microsoft Windows[1] и macOS[1] |
Языки интерфейса | несколько языков[d] |
Первый выпуск | 20 декабря 1997[3] |
Последняя версия | |
Тестовая версия | |
Читаемые форматы файлов | GNU Privacy Guard public keyring (generic)[d] |
Создаваемые форматы файлов | GNU Privacy Guard public keyring (generic)[d] |
Лицензия | GPL 3.0+[1] |
Сайт | gnupg.org (англ.) |
Медиафайлы на Викискладе |
История
Первоначальное название проекта было не GnuPG, a G10 (в честь десятой статьи Конституции (нем. Grundgesetz) Германии). Эта статья аналогична 23-й статье Конституции РФ, гарантирующей тайну переписки, переговоров и иных сообщений. Американский программист Филипп Циммерманн опубликовал исходный код своей программы PGP (предназначенной для защиты сообщений электронной почты) в Интернете. Ограничения в США не позволяли экспортировать криптографическое программное обеспечение за границу. Правительство США стало преследовать Циммерманна, и тогда он обошёл это ограничение — опубликовал исходный код в книге, а уже за границей можно было набрать этот исходный код из книги и скомпилировать на компьютере. Жёсткие ограничения правительства США не давали возможность другим странам использовать сильную криптографию в программном обеспечении американских компаний (в том числе и Microsoft Windows). Разрабатывать криптографическое ПО в США с возможностью дальнейшего экспорта в другие страны разрешается только с соблюдением некоторых требований, и поэтому часть такого ПО создавалось за границами США (например, OpenBSD — в Канаде, GnuPG — в Германии). Правительство Германии, желая получить сильную криптографию в операционной системе Microsoft Windows, спонсировало портирование GnuPG на платформу Windows в 2000 году. Правительство США пыталось заставить правительство Германии пересмотреть позицию по выпуску сильной криптографии на платформе Windows, но, так ничего и не добившись, в конце концов, ослабило свои экспортные ограничения на криптографическое ПО.
Проект создан Вернером Кохом (нем. Werner Koch).
Версия 0.0.0 выпущена 20 декабря 1997 года. Версия 1.0.0 была выпущена 7 сентября 1999 года.
1 августа 2006 года вышла версия 1.4.5; 13 ноября 2006 года — версия 2.0; 3 октября 2014 года — версия 2.1.
В настоящее время существуют следующие версии:
- GnuPG «classic» (1.4) — для старых платформ.
- GnuPG «stable» (2.2) — текущая стабильная разработка для общего пользования.
Все ветви версий GnuPG развиваются параллельно.
Особенности
- Полная альтернатива PGP.
- Не использует патентованные алгоритмы.
- Распространяется под GNU General Public License.
- Полная реализация OpenPGP.
- Расшифрование и аутентификация почтовых сообщений, созданных с помощью PGP 5, 6 и 7.
- Поддержка электронной подписи с помощью алгоритмов ElGamal, DSA, RSA и хеш-функций MD5, SHA-1, SHA-2, RIPEMD-160 и TIGER. Начиная с версии 2.2[8] в разряд стабильных переведены алгоритмы эллиптической криптографии с использованием кривых Curve25519, NIST P-256/P-384/P-521, Brainpool[9] P-256/P-384/P-512 и Secp256k1[10].
- Работа с асимметричным шифрованием ElGamal и RSA (длина ключа от 1024 до 4096 бит).
- Поддержка блочных алгоритмов симметричного шифрования AES, CAST5, 3DES, Twofish, Blowfish, Camellia, а также IDEA с помощью плагина.
- Поддержка алгоритмов сжатия: ZIP, ZLIB, BZIP2.
- Лёгкая реализация новых алгоритмов с помощью дополнительных модулей.
- Поддержка просроченных ключей и подписей.
- Интегрированная поддержка HKP серверов ключей.
- Встроенный сервер и клиент WKD[11] для распространения публичных ключей.
Использование
GnuPG — программа, которая работает почти на всех операционных системах: от Microsoft Windows и GNU/Linux до Mac OS X, FreeBSD, OpenBSD, NetBSD и т. д.
Хотя в основном интерфейсом GnuPG является командная строка, существуют различные внешние дополнения, которые делают доступной функциональность этой программы через графический интерфейс пользователя. Например, GnuPG интегрирован в графические клиенты электронной почты KMail и Evolution. Механизм плагинов полностью совместим со стандартом OpenPGP.
С помощью расширения Enigmail GnuPG работает в почтовом клиенте Mozilla Thunderbird для шифрования и аутентификации сообщений. Также поддержка GnuPG имеется в почтовых клиентах Mutt, The Bat! и Gnus.
При помощи программы GPGrelay шифровать и подписывать электронные письма через GnuPG можно любыми почтовыми клиентами, работающими по протоколам POP3, IMAP4, SMTP.
Для пользователей операционной системы Microsoft Windows вторая ветка GnuPG поставляется сразу с графическим интерфейсом. Начиная с 2005 года разработчиками проекта GnuPG выпускается Gpg4win (GNU Privacy Guard for Windows) — инсталляционный пакет, который включает в себя:
- версию GnuPG для Windows (ядро пакета, само средство шифрования);
- Kleopatra (менеджер сертификатов для OpenPGP и X.509);
- GPA (альтернативный менеджер сертификатов (GNU) для OpenPGP и X.509);
- GpgOL (плагин для Outlook);
- GpgEX (плагин для проводника Windows, используется при шифровании файлов);
- Claws Mail (полноценная почтовая программа с поддержкой функций GnuPG); — начиная с версии 2.2.6 был удален из пакета
- документацию на английском и немецком языке.
По сути Gpg4win — это официальная версия GnuPG для платформы Windows и все включённые в этот пакет компоненты также свободны.
Также, используя дополнительные плагины GnuPG или SecureIM, можно достичь шифрования сообщений с помощью GnuPG в клиенте сетей мгновенных сообщений Miranda IM.
GnuPG поддерживается Jabber-клиентами Psi и Gajim.
Плагины для браузеров
До 7 июня 2010 года велась разработка FireGPG[12] — дополнения для Firefox, которое позволяло добавить в этот браузер поддержку GnuPG. Помимо прочих функций оно позволяло интегрировать GnuPG в Gmail. Из-за того, что веб-интерфейс Gmail постоянно менялся, автор плагина прекратил сначала поддерживать шифрование Gmail почты, а затем и всего плагина. Этим плагином FireGPG пользовалось около 30 тысяч человек.
Другой плагин для браузеров WebPG существует в версиях для Firefox (Seamonkey, Thunderbird) и Chrome (Chromium). Поддерживает функции: шифрование, расшифровывание, цифровая подпись, управление ключами. Текущая версия 0.9.2 от 24 января 2013 года. Есть экспериментальная интеграция с Gmail.
Другой действующий плагин, позволяющий использовать криптозащиту (шифрование и ЭЦП) в сообщении на странице в Интернете для браузера Chrome — это GPG4Browsers. Этот плагин первоначально выпущен немецкой компанией Recurity Labs, но затем передан в отдельный проект OpenPGP.js.
Использование плагинов в браузерах позволяет гарантировать принадлежность того или иного сообщения тому или иному человеку (через ЭЦП) или позволяет прочитать сообщение, находящееся в публичном доступе, кому-то одному (для кого зашифровано данное сообщение). В том числе возможно использование данных плагинов в социальных сетях или электронной почте.
Принцип работы
GnuPG шифрует сообщения, используя асимметричные пары ключей, генерируемые пользователями GnuPG. Открытыми ключами можно обмениваться с другими пользователями различными путями, в том числе и через Интернет с помощью серверов ключей. Также GnuPG позволяет добавлять криптографическую цифровую подпись к сообщению, при этом целостность и отправитель сообщения могут быть проверены.
GnuPG не использует запатентованное или иначе ограниченное программное обеспечение и/или алгоритмы, включая алгоритм IDEA, который представлен в PGP почти с самого начала. GnuPG использует другие непатентованные алгоритмы CAST5, 3DES, AES, Blowfish и Twofish. Тем не менее, возможно использование в GnuPG и алгоритма IDEA с помощью дополнительного модуля.
GnuPG — это гибридное криптографическое программное обеспечение, которое использует комбинацию стандартного шифрования с помощью симметричных ключей и шифрования с открытым ключом для безопасного обмена ключами, открытый ключ получателя необходим для шифрования ключа сессии, используемого единожды. Такой режим работы является частью стандарта OpenPGP и частью PGP в его первой версии.
Проблемы
Подпись
Стандарт OpenPGP определяет несколько методов для подписанных цифровой подписью сообщений. Из-за ошибки, допущенной в результате попытки сделать эти методы более эффективными, появилась уязвимость. Это затрагивает только один метод в цифровой подписи сообщений, только для некоторых выпусков GnuPG (1.0.2 до 1.2.3), и было меньше чем 1000 таких ключей, перечисленных на ключевых серверах.[13]
CVE-2016-6313
Уязвимость (CVE-2016-6313) была найдена специалистами Технологического института Карлсруэ, Феликсом Дёрре и Владимиром Клебановым; баг присутствует во всех версиях GnuPG и Libgcrypt, вышедших до 17 августа 2016 года.
Суть проблемы: если атакующему удастся извлечь 4620 бит данных из генератора случайных чисел, то последующие 160 бит последовательности он сумеет легко предсказать.
В заявлении разработчиков отдельно сообщается, что проблема не должна сказываться на безопасности существующих RSA-ключей. Также специалисты считают крайне маловероятным, что кто-то сумеет использовать публичную информацию для предсказания приватных ключей DSA и Elgamal, однако в документе сообщается, что проблему все ещё продолжают изучать.
Уязвимость устранена выпуском Libgcrypt 1.7.3, 1.6.6 и 1.5.6 и выпуском GnuPG 1.4.21.[14]
См. также
- Список ПО для шифрования
- Сравнение ПО для шифрования (англ.)
Примечания
- Free Software Directory
- https://www.openhub.net/p/gnupg/analyses/latest/languages_summary
- Release Notes (англ.)
- GnuPG 2.3.4 released (англ.) — 2021.
- https://dev.gnupg.org/source/gnupg/browse/master/NEWS;gnupg-2.2.34 — 2022.
- GnuPG 1.4.23 released (2018-06-11) important — 2018.
- Koch W. GnuPG 2.3.2 released (англ.) — 2021.
- Объявление о выпуске GnuPG 2.2.0 .
- RFC 5639 — Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation .
- Описание кривой Secp256k1 на Bitcoin Wiki .
- WKD — GnuPG wiki .
- Maximilien Cuony. FireGPG discontinued (7 июля 2010). Дата обращения: 22 апреля 2014.
- Werner Koch. [Announce] GnuPG's ElGamal signing keys compromised (27 ноября 2003). Дата обращения: 22 апреля 2014.
- Мария Нефёдова. В GNUPG И БИБЛИОТЕКЕ LIBGCRYPT ИСПРАВИЛИ КРИТИЧЕСКИЙ БАГ, СУЩЕСТВУЮЩИЙ С 1998 ГОДА (22 августа 2016). Дата обращения: 28 августа 2016.