- Вопрос или проблема
- Разблокировка
- Другие методы управления ключами
- Настройки GnuPG
- kMail
- Интеграция
- Редактировать
- Альтернатива
- Примечание о ssh-agent
- пример на Kubuntu 22.04 (Jellyfish), как использовать PGP ключи Keybase с Git (аутентификация и подпись)
- Ответ или решение
- Как использовать gpg-agent с KWallet
- Использование KWallet
- Интеграция с KMail
- Замечания по безопасности
- Заключение
Вопрос или проблема
У меня есть два PGP ключа, которые я использую для подписания и расшифровки электронных писем в kmail. При этом мне нужно вводить пароль ключа (в данный момент он хранится в KeePass).
Можно ли сохранить пароли в моем kwallet таким образом, чтобы они автоматически разблокировали ключи по мере необходимости? Если да, то как это можно сделать?
Редактировать: Я нашел что-то похожее здесь, но для SSH ключей, а не PGP. Может быть, это можно адаптировать?
Разблокировка
Можно ли сохранить пароли в моем kwallet таким образом, чтобы они автоматически разблокировали ключи по мере необходимости? Если да, то как это можно сделать?
Насколько я знаю, это нельзя сделать в kWallet. Вместо этого используйте gpg-agent
. Вы можете настроить его параметры так свободно, как хотите, сбалансировав между безопасностью и удобством доступа. В зависимости от используемого дистрибутива агент должен сразу работать. Возможно, он даже уже запущен в фоновом режиме?
Другие методы управления ключами
Я никогда не пользовался KeePass, поэтому не знаю его возможностей. Однако kGPG может оказаться полезным. Это графический интерфейс для системы GnuPG. В частности, он также позволяет настраивать параметры GPG на низком уровне, включая GPG агент.
Настройки GnuPG
Здесь вы можете настроить, какой бинарный файл gpg и какой
конфигурационный файл
и домашняя папка будут использоваться. Эти значения определяются автоматически при первом запуске и должны уже работать.Использование GnuPG агента делает работу с GnuPG более удобной, так как вам не нужно вводить свой пароль для каждого действия. Он кэшируется в памяти на некоторое время, так что любая операция, которая требует пароля, может быть выполнена немедленно. Учтите, что это может позволить другим людям использовать ваши закрытые ключи, если вы оставите свою сессию доступной для них.
kMail
Вопрос также содержит тег kmail, поэтому я также объясню это. Вам может быть полезно прочитать раздел настроек PGP и FAQ kmail, раздел GnuPG. Если вы настроили ключи с помощью вышеупомянутого kGPG, вам не нужно сильно беспокоиться о всех предупреждениях в верхней части страницы. Просто будьте в курсе.
Интеграция
Интеграция на самом деле проходит имплицитно. kGPG просто говорит GnuPG, какие ключи создавать, изменять, открывать и выполнять другие действия. Он отображает в своем интерфейсе, какие ключи есть в системе и их уровень доверия и т. д. Но в фоновом режиме все хранится в директории ~/.gnupg
в формате GnuPG. (Я не уверен, вызывает ли kGPG GPG или связан с библиотеками GPG, но эффект остается тем же)
kMail — это просто другой тип интерфейса. Он вызывает команду gpg
, чтобы получить доступ к ключам, хранящимся в той же директории. Например, для подписания, шифрования и расшифровки.
gpg-agent
работает на уровне сессии. Это означает, что если вы разблокируете закрытый ключ в kGPG, он также будет разблокирован для kMail и наоборот.
Редактировать
Я только что нашел kwalletcli, который предоставляет привязки kwallet для pinentry. Мой дистрибутив не предлагает пакет, поэтому на данный момент я не могу это попробовать.
Возможно, вам придется вручную установить пакет, если ваш дистрибутив также этого не поддерживает.
Еще раз вики arch приходит на помощь:
Совет: Для использования /usr/bin/pinentry-kwallet вам нужно установить пакет kwalletcli.
~/.gnupg/gpg-agent.conf:
#pinentry интерфейс с kdewallet
pinentry-program /usr/bin/pinentry-kwallet
Альтернатива
Если вы не хотите или не можете установить kwalletcli, возможно, вы сможете сделать некоторые сценарии, используя команду kwallet-query
. Вам нужно знать, какой кошелек открыть, чтобы получить пароль. Смотрите man kwallet-query
для получения дополнительной информации.
Однако gpg не позволяет вводить пароль из STDIN по умолчанию, поэтому вам нужно будет настроить gpg для этого.
Примечание о ssh-agent
Если вы заставите gpg-agent работать правильно, вы также можете использовать его как ssh-agent.
пример на Kubuntu 22.04 (Jellyfish), как использовать PGP ключи Keybase с Git (аутентификация и подпись)
# настройка Keybase, где вы храните PGP ключи в облаке
https://keybase.io/docs/the_app/install_linux
# Импортируйте открытый ключ
keybase pgp export | gpg --import
# Импортируйте закрытый ключ
keybase pgp export -s | gpg --allow-secret-key-import --import
# покажите все ключи
gpg --list-keys --with-keygrip
gpg --list-secret-keys --with-keygrip
# Должно быть 3 ключа: один главный [SC]==PUBKEY_USAGE_SIG&PUBKEY_USAGE_CERT и два подключа [A]==PUBKEY_USAGE_AUTH и [E]==PUBKEY_USAGE_ENC
# Теперь вам нужно отредактировать главный из них ([SC] ID), чтобы "доверять" ему
gpg --edit-key PUT_[SC]_ID_HERE
key 0
trust
5
y
key 1
trust
5
y
key 2
trust
5
y
quit
echo 'enable-ssh-support' >> ~/.gnupg/gpg-agent.conf
echo 'pinentry-program /usr/bin/pinentry-kwallet' >> ~/.gnupg/gpg-agent.conf
gpg -K --with-keygrip
echo 'PUT_[A]_keygrip_ID_HERE' >> ~/.gnupg/sshcontrol
echo 'export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)' >> ~/.bashrc
echo 'gpgconf --launch gpg-agent' >> ~/.bashrc
# настройка конфигураций git и установка вашего любимого редактора
echo 'export VISUAL="vim"' >> ~/.bashrc
git config --global commit.gpgsign true
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey [SC]_sec_id
git config --global user.name "stackexchange"
git config --global user.email [email protected]
# перезагрузите среду терминала и gpg-agent и проверьте, чтобы все работало
source ~/.bashrc
gpgconf --kill gpg-agent
ssh-add -L
ssh -T [email protected]
Вдохновленный kwalletcli, предложенным в ответе @Tim, я написал небольшой сценарий на python, чтобы искать пароли в kwallet, доступный на github. Его единственная зависимость — это модуль keyring для python.
Просто скажите gpg-agent, чтобы использовать его вместо вашего текущего pinentry, и он сделает свое волшебство. Он также будет запускать настоящий процесс pinentry в фоновом режиме для всего, что не требует паролей.
Ответ или решение
Использование KWallet для управления PGP-ключами возможно, но с определёнными ограничениями. Вместо KWallet, более удобным и безопасным решением будет использование gpg-agent
, который уже встроен в систему GnuPG и предоставляет возможность кэширования паролей ваших ключей.
Как использовать gpg-agent с KWallet
-
Установка и настройка gpg-agent:
Убедитесь, что у вас установлен GnuPG и его агент. gpg-agent автоматически запускается в фоновом режиме при необходимости. -
Конфигурация gpg-agent:
Вам нужно будет настроить gpg-agent для работы с KWallet. Для этого откройте файл конфигурации~/.gnupg/gpg-agent.conf
и добавьте следующие строки:pinentry-program /usr/bin/pinentry-kwallet
Это указывает gpg-agent использовать KWallet в качестве программы для ввода паролей.
-
Установка KWalletCLI:
Вам может понадобитьсяkwalletcli
, который предоставляет обертку для pinentry с поддержкой KWallet. Убедитесь, что этот пакет установлен. Если в вашем дистрибутиве он отсутствует, вы можете установить его вручную. -
Перезапуск gpg-agent:
После внесения изменений в конфигурацию gpg-agent, вам нужно перезапустить его. Это можно сделать с помощью команды:gpgconf --kill gpg-agent gpgconf --launch gpg-agent
Использование KWallet
Если вы хотите использовать KWallet для хранения паролей ваших PGP-ключей, вы можете написать небольшой сценарий на Python, который будет извлекать пароли из KWallet. Вам потребуется модуль keyring
, который упрощает доступ к KWallet. Вот пример простого сценария:
import keyring
# Получение пароля из KWallet
def get_pgp_passphrase(key_id):
return keyring.get_password("your_wallet_name", key_id)
# Использование gpg-agent
# Убедитесь, что gpg-agent настроен на использование этого сценария
Этот сценарий может быть использован для автоматизации процесса получения паролей для ваших PGP-ключей.
Интеграция с KMail
Если вы используете KMail для отправки и получения зашифрованной электронной почты, убедитесь, что KMail настроен на работу с GnuPG и gpg-agent. Правильная конфигурация обеспечит плавную работу между KMail и GnuPG, что позволит вам избегать постоянного ввода паролей.
Замечания по безопасности
Имейте в виду, что использование gpg-agent облегчает доступ к вашим ключам, но также снижает уровень безопасности. Убедитесь, что ваша сессия защищена, и другие пользователи не имеют доступа к вашему компьютеру, когда ваш пользовательский интерфейс открыт.
Заключение
В итоге, вы можете использовать KWallet косвенно для управления PGP-ключами, однако рекомендуется полагаться на gpg-agent как на более стандартное и интегрированное решение. С некоторыми дополнительными настройками и, возможно, с использованием стороннего программного обеспечения вы сможете автоматически извлекать пароли и управлять PGP-ключами более удобно.