# Kleopatra

<https://habr.com/ru/articles/551138/>

Программы семейства [GPG](https://www.gnupg.org/) *(GNU Privacy Guard)* / [PGP](https://ru.wikipedia.org/wiki/PGP) *(Pretty Good Privacy)* позволяют "прозрачно" подписывать и зашифровывать все типы цифровой информации. По своей сути, названные инструменты являются лишь удобной обёрткой, упрощающей практическое использование открытых алгоритмов асимметричной криптографии.

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

В этой статье рассмотрим приложение с открытым исходным кодом для работы с инструментарием GPG в графической оболочке — находка для новичков и тех, кто просто избегает загадочного черного окна командной строки. Благодаря кроссплатформенности Клеопатры, статья одинаково полезна для пользователей Windows, Linux и FreeBSD.

## **Установка**

Во многих unix-like операционных системах Клеопатра имеется в репозиториях по умолчанию. В Debian установка выглядит так: `sudo apt-get install kleopatra`.

Для Windows программа распространяется в пакете [GPG4Win](https://www.gpg4win.org/download.html), объединяющем в себе несколько полезных инструментов: непосредственно **Kleopatra**, **GpgEX** - удобный плагин для проводника Windows, который добавляет в контекстное меню пункты "Зашифровать", "Подписать", "Расшифровать", "Проверить контрольные суммы" и некоторые другие, **GPA** — еще один более простой на вид и менее функциональный менеджер ключей, **GpgOL** — плагин для почтового клиента Outlook).

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

## **Создание пары ключей**

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/74ab1e649dc27b80565b3f3c1e7df611.jpg)

На выбор предлагаются типы ключей [X.509](https://habr.com/ru/post/194664/) (практически применяется в корпоративной среде) и OpenPGP. Выбираем OpenPGP. Вводим контактые данные, которые будут отображаться у всех владельцев нашего открытого ключа. Вместо настоящего имени можно указать никнейм. В дальнейшем некоторую информацию ключа будет возможно изменить.

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

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/e72da1f34db1ee0be32d858b2d9161e0.jpg)

Чтобы создать пару ключей на эллиптических кривых, переходим в дополнительные параметры. Пункт ECDSA/EdDSA — то, что нам надо. Дополнительный чекбокс (галочка) *"*+ECDH" \*\*даст ключу возможность шифровать, без нее сертификат можно будет использовать только для подписи и идентификации, так как ECDSA/EdDSA — алгоритмы подписи, а не шифрования. В выпадающих списках предлагается выбрать один из алгоритмов: ed25519, brainpool и NIST.

1. ed25519 (Curve25519) — эталонная и непатентованной реализация криптографии на эллиптической кривой, имеет 128-битную длину. Является ключом EdDSA — самым актуальным алгоритмом цифровой подписи (считается, что без закладок от силовых структур каких-либо стран).
2. brainpool — алгоритм, разработанный немецким сообществом криптографоф, в число которых входят университеты, государственные ведомства и коммерческие организации, например, компания Bosch. Поддерживает длины в 256, 384 и 512 бит. При подписи использует несколько устаревший алгоритм ECDSA.
3. NIST — американский алгоритм, разработанный [Национальным Институтом Стандартов и Технологий](https://www.nist.gov/). Рекомендован для использования государственными органами США. Поддерживает длины в 256, 384 и 521 бит. По оценке некоторых специалистов, [NIST лучше brainpool по производительности.](https://tls.mbed.org/kb/cryptography/elliptic-curve-performance-nist-vs-brainpool) При подписи использует несколько устаревший алгоритм ECDSA.

Для примера в обоих случаях используется алгоритм brainpool с максимальной длиной ключа. По умолчанию ключ создается со сроком годности в два года. Этот параметр можно изменить, либо вовсе отключить, тогда ключ будет бессрочным.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/10b02ba2fd9c118973ddbc325d2c88a7.jpg)

На следующем шаге задается пароль, который является последним рубежом защиты секретного ключа. Не следует передавать кому-то секретный ключ, но если так все-таки вышло, будет лучше, когда вы задали очень надежный пароль. Рекомендуется использовать специальные знаки (символы пунктуации и прочее) для надежной защиты от брутфорса. Лучшим вариантом будет длинный пароль, полученный из генератора случайных символов, однако не забывайте про золотую середину между использованием и безопасностью. Например, вводить на телефоне очень длинный и сложный пароль с символами из расширенной таблицы ASCII, не имея возможности его скопировать из менеджера паролей, будет весьма проблематично.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/678448e69c5033056515b5c481d9f47c.jpg)

Итак, пара ключей создана! Обратите внимание на отпечаток, это уникальный идентификатор вашего ключа. Даже если кто-то захочет представиться вами, создав ключ с такими же именем и электронной почтой, его отпечаток будет отличаться. Именно поэтому важно сверять отпечатки получаемых ключей.

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

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/98dd76370ee7a6c6f374e63f10cde77b.jpg)

Открыв экспортированный ключ в текстовом редакторе, мы увидим специфичный фрагмент текста, начинающийся словами "BEGIN PGP **PRIVATE** KEY BLOCK". Будьте внимательны, не отправьте его кому-то по ошибке! Открытые ключи, предназначенные для передачи вторым лицам, начинаются со слов "BEGIN PGP **PUBLIC** KEY BLOCK".

Большое преимущество GPG перед другими средствами идентификации заключается в легкой переносимости ключа. Например, его можно распечатать на бумаге ~~или выучить наизусть~~. Хранить можно только приватный ключ, так как при необходимости кому-то передать публичный, мы всегда можем экспортировать его из секретного (выводится математическим путём).

## **Экспорт и импорт**

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/63f93e18d9a455638110890b09c845a2.jpg)

Для операций с ключом, щелкните по нему правой кнопкой мыши.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/6ce32c46fdab8dead79d28b408d873d2.jpg)

Для импорта ключей (нашего уже существующего на новом устройстве или полученного публичного), воспользуемся кнопкой "Импорт". Также можно использовать двойной клик по файлу ключа, это автоматически откроет Клеопатру и импортирует выбранный ключ. GPG-файлы встречаются с расширениями \*.asc, \*.pgp и \*.gpg. Это не имеет большого значения, так как расширение нужно больше для удобства пользователя и лишь немного — приложений. Файл будет корректно прочитан и в случае, когда специальное расширение изменено или удалено.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/e24c415e6251e751cccb38a4819d5c02.jpg)

Очень часто ключи распространяются в виде текстового блока. В таком случае, скопировав ключ, можно импортировать его через меню операций с буфером обмена.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/cb331f4f9cf40e4808fcfeb5bdba82fc.jpg)

Программа попросит удостовериться в подлинности ключа. В настоящее время самым простым и эффективным способом является сравнение отпечатка, поэтому его публикуют вместе с ключом. Если отпечаток совпадает с заявленным, заверяем сертификат.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/a098dc2a154381bbb1c083b41259bf51.jpg)

Теперь мы можем проверять подпись владельца нового ключа и шифровать для него информацию.

## **Шифрование и подпись**

Чтобы зашифровать и подписать файл, воспользуемся соответствующим пунктом меню на верхней панели.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/5da774f8833630e2adee17a6ff70740a.jpg)

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

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/a43956eced57ca0984ba540b2e0de030.jpg)

Распространненым способом безопасного хранения данных на облачном хранилище является GPG-шифрование файлов "для себя". В таком случае расшифровать информацию можно будет только нашим ключом.

Также возможна подпись без шифрования. Чаще всего применимо к текстовой информации. Механизм подписания строится на хеш-сумме: позволяет сравнить актуальное состояние информации с тем, какой она была, когда ее подписывал отправитель. Для примера откроем "блокнот".

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/5543ca73c71c781cac051ad588cfbc48.jpg)

Назначив отсутствие шифрования для кого-либо, оставляем только подпись и нажимаем кнопку "Подписать".

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/1e14238548abf042ae455b98a14f3b4b.jpg)

После ввода пароля от ключа, видим, что к фразе "Отличная работа" добавился дополнительный текстовый блок с хеш-суммой SHA512.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/2a994d5b6341d9047fd5ce683663227b.jpg)

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

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/acbac4b3c816c9d5f706703b018a6fbb.jpg)

В случае подписи файла без шифрования, в директории файла создается сигнатура с расширением \*.sig, которую следует передавать вместе с исходным файлом. Если в файле изменится хотя бы один бит, проверка подписи выдаст ошибку.

![](https://gitlab.com/johnmkane/tech-recipe-book/-/blob/main/Book/Architect/Cryptography/OpenPGP/Kleopatra/94c4a8f94502045ac340631320ad1858.jpg)

## **Постскриптум**

Все локальные ключи централизованно хранятся на устройстве в специальной папке. Все программы, взаимодействующие с GPG, будут их видеть. Для общения по протоколу XMPP (Jabber), защищенного GPG-шифрованием, можно использовать [Gajim](https://gajim.org/), который также является кроссплатформенным. Для ведения защищенной почтовой переписки удобно использовать этичный клиент [Thunderbird](https://www.thunderbird.net/ru/), в который необходимо будет импортировать секретный ключ, так как он имеет свое изолированное хранилище ключей. Об использовании Thunderbird написано [тут](https://habr.com/ru/post/565212/).

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