[ Пред. ] [ Содержание ] [ След. ]

GPG

[ @gpg @kgpg ]

 


Подразумевается, что концепция ключей шифрования уже понятна:


Для порядка уточним, что в 1991-ом году появилась программа для шифрования сообщений «PGP» (Pretty Good Privacy), что переводится как «Достаточно надежная конфиденциальность», и да, в этом есть ирония. В 1999 году появилась свободная реализация этой «PGP» по стандартам OpenPGP, которую назвали «GnuPG» (GNU Privacy Guard), сокращённо «GPG». Сегодня все по-умолчанию пользуются «GPG», само слово стало синонимом технологии шифрования файлов и почтовых сообщений с помощью публичного и личного ключа.


Есть консольная утилита:


Есть GUI-утилиты:


В KDE было бы логично управлять ключами gpg в KWallet, но он для такого не предназначен.


Установка



Обычно это входит в стандартный набор, поэтому можно даже начать с проверки версии:


gpg --version && kgpg --version


Создать новую связку ключей


gpg --generate-key


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


Есть опция «gpg --full-generate-key» — рекомендуется для начинающих, которым интересно знать, как всё устроено.


Есть опция «gpg --quick-generate-key ИМЯ_ЮЗЕРА» — для тех, кто точно знает, что/зачем надо делать. Минимум вопросов, но легко что-то запороть или забыть указать.


Выбор размера ключа и алгоритма его шифрования всегда зависят от окружения, в котором будущий ключ будет использоваться. По-умолчанию принято генерировать ключи с размером 2048 по алгоритму «RSA & RSA». Может показаться, что чем больше эти значения, тем лучше, но есть системы/сервера, в которых тип и макс. значения шифровальных ключей ограничены по каким-то соображениям — это надо выяснять заранее.


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

  1. «private key» — его надо хранить в секрете, на флэшке, в сейфе, в банке, на Аляске.
  2. «public key» — его можно раздавать кому угодно, в том числе и опубликовать у себя на сайте.

Наладить постоянный экспорт содержимого каталога /~/.gnupg


Посмотреть существующие ключи


gpg --list-keys


Если в системе не зарегистрирован ни один ключ, в ответ вернется тишина.


Файл-БД для хранения всех gpg-ключей:


/home/$USER_NAME/.gnupg/pubring.kbx


Можно прочитать его содержимое и так:


gpg --list-secret-keys --keyid-format LONG



Посмотреть только публичные ключи


gpg --list-public-keys


Будет прочитан файл /~/.gnupg/pubring.kbx


Посмотреть только личные ключи


gpg --list-secret-keys


Будет прочитан файл /~/.gnupg/pubring.kbx


Посмотреть определённый ключ


gpg --fingerprint $USER_EMAIL


Значением переменной $USER_EMAIL может быть и полное имя, и его часть, или (любая) часть указанного при создании емайла. Разумно указывать полностью емайл, чтобы не ошибиться.


Отредактировать определённый ключ


gpg --edit-key $USER_EMAIL


Здесь тот самый момент, когда GUI-приложение (KGpg или Kleopatra) может быть удобнее. Но и из консоли можно делать всякое, то же добавление/удаление фотографии владельца. Да, в файл ключа можно добавить фотографию. Она влияет на итоговый размер файла, поэтому должна быть маленькой, ч/б и не более 100х100 пикселей.


Удалить определённый ключ


gpg --delete-keys $USER_EMAIL


Также работает команда --delete-key


$USER_EMAIL может быть и полное имя, и его часть, или (любая) часть указанного при создании емайла.


Если надо удалить связку ключей, надо сперва использовать опцию --delete-secret-keys


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


Экспортировать ключи в plain text


Ещё это называют ASCII format, но суть одна — содержимое файлов с ключами можно буквально экспортировать из системной базы данных в текстовые файлы. Личный ключ, конечно, нельзя никому показывать, а публичный можно кому-то послать в виде файла или просто открытым текстом.


Экспортировать публичный ключ


  1. Перейти в каталог, в котором будем хранить ключи
  2. gpg --armor --output $PUBLIC.key --export $USER_EMAIL

Оция «armor» нужна для того, чтобы получить удобочитаемое содержимое файла. По-умолчанию экспорт происходит в binary-формате.


После этого содержимое файла можно даже распечатать или продиктовать по телефону. Мало ли…


Переменная $USER_EMAIL нужна для того, чтобы не ошибиться с ключом при экспорте — разумно явно указать емайл, который был прошит в ключ.


Переменная $PUBLIC.key тоже важна — лучше указать наиболее удобочитаемое и глазовоспринимаемое имя файла.


После экспорта можно сразу проверить содержимое нового файла:


cat public.key


Экспортировать личный ключ


  1. Перейти в каталог, в котором будем хранить ключи
  2. gpg --output $PRIVATE.key --export-secret-key $USER_EMAIL

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


Импортировать ключи в систему


Восстановить весь каталог с ключами


Обычно это делается после переустановки системы. Надо просто достать из бэкапа весь каталог ‘/~/.gnupg’ и целиком скопировать его в новое окружение. Всё подхватится автоматически.


Также можно перетащить содержимое этого каталога на новый компьютер.


Восстановить/установить ключи по-отдельности (импорт)


  1. Перейти в каталог с бэкапом своих ключей. Условно там находятся два файла — “public.key” и “private.key.

Важно учесть — в названии файла с ключами не должно быть скобок.

  1. Выполнить импорт:
    1. gpg --batch --import private.key
    2. gpg --import public.key

Проверить существующие ключи.


Установить новые


Предположим, что кто-то прислал нам свой ключ в файле “external_public.key


gpg --import external_public.key


Если по каким-то причинам надо импортировать личный ключ (свой, конечно), то команда та же, просто будет предложено сообщить и пароль.


Зашифровать файл с помощью ключа GPG


Зашифруем условный файл Confeta.txt


gpg --encrypt --recipient $USER_EMAIL --output Confeta_Encoded.txt.enc Confeta.txt


Если в системе есть только один личный ключ, команда будет проще:


gpg --encrypt --sign --output Confeta_Encoded.txt.enc Confeta.txt


Расшифровать файл с помощью ключа GPG


Расшифруем условный файл Confeta_Encoded.txt.enc


gpg --decrypt Confeta_Encoded.txt.enc > 123.txt


На диске появится новый файл 123.txt, а также будет выведено сообщение о ключе, которым файл был зашифрован. Он же будет использован для декодирование.


Настройка KGpg


При первом запуске KGpg будет предложено указать расположение исполняемого файле GnuPG


/usr/bin/gpg2


и будет создан конфигурационный файл GnuPG


/~/.gnupg/gpg.conf


Запрет открывания KGpg в трее


KGpg запускается в трее, и при первом запуске возникнет ложное ощущение о том, что ничего не происходит. Развернуть «Системный лоток», тыкнуть по иконке «KGpg» — откроется окно «Key Management».


Настройка
> Настроить KGpg
> Misc
> Applet & Menus
> System Tray Applet


Убрать галочку «Show system tray icon».


Отображение ключей в KGpg


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


Можно скрыть отображение этих «системных» ключей — останутся только свои (если есть).


Вид > Поставить галочку «Show Only Secret Keys» (Только закрытые ключи)


Группирование ключей в KGpg


Можно разнести ключи по группам, если создано ключей с десяток.


Закатать в группы можно только те ключи, которые помечены Full Trust — это ограничение настраивается одной галочкой.


Делается это так:

  1. выделить нужные ключи одиночными кликами
  2. Groups > Create group…

В итоге будут отображаться все ключи А ТАКЖЕ условные группы, которые можно раскрыть/свернуть.


Разное