터놓다

터놓다

kmail에서 이메일에 서명하고 암호를 해독하는 데 사용하는 두 개의 PGP 키가 있습니다. 이 작업을 수행할 때 키(현재 KeePass에 저장되어 있음)의 비밀번호를 입력해야 합니다.

요청 시 키가 자동으로 잠금 해제되도록 내 kwallet에 비밀번호를 저장할 수 있습니까? 그렇다면 이를 달성하는 방법은 무엇입니까?


편집 : 비슷한 것을 발견했습니다여기, 그러나 PGP 키 대신 SSH 키로 작동합니다. 어쩌면 이것이 조정될 수 있을까요?

답변1

터놓다

요청 시 키가 자동으로 잠금 해제되도록 내 kwallet에 비밀번호를 저장할 수 있습니까? 그렇다면 이를 달성하는 방법은 무엇입니까?

내가 아는 한, kWallet에서는 이 작업을 수행할 수 없습니다. 사용gpg-agent대신에. 보안과 액세스 용이성의 균형을 유지하면서 원하는 대로 자유롭게 설정을 지정할 수 있습니다. 실행 중인 배포에 따라 에이전트는 즉시 작동해야 합니다. 어쩌면 이미 백그라운드에서 실행 중일까요?

기타 키 관리

나는 사용한 적이 없다카이통, 그래서 그 특성을 모르겠습니다. 하지만,GPG한 번 볼만한 가치가 있을 것 같습니다. GnuPG 시스템의 GUI 프런트엔드입니다. 특히, 낮은 수준도 허용합니다.GPG 설정, GPG 프록시 포함.

GnuPG 설정

configuration file 여기에서 어떤 gpg 바이너리가 사용되는지와 어떤 홈 폴더를 구성할 수 있습니다 . 이 값은 처음 시작할 때 자동으로 감지되며 이미 작동하고 있습니다.

사용GnuPG 프록시모든 작업에 비밀번호를 입력할 필요가 없으므로 GnuPG를 더욱 편안하게 사용할 수 있습니다. 잠시 동안 메모리에 캐시되므로 비밀번호가 필요한 모든 작업을 즉시 완료할 수 있습니다. 다른 사람에게 귀하의 세션에 대한 액세스 권한을 부여하면 다른 사람이 귀하의 개인 키를 사용할 수도 있습니다.

우편

질문에는 kmail 태그도 포함되어 있으므로 이에 대해서도 자세히 설명하겠습니다. 당신은 읽고 싶을 수도 있습니다PGP 구성 섹션그리고kmail FAQ, GnuPG 섹션. 위의 kGPG를 사용하여 이미 키를 설정했다면 페이지 상단에 있는 모든 경고와 단계에 대해 너무 걱정할 필요가 없습니다. 그냥 알아두세요.

완성

통합은 실제로 암시적으로 발생합니다. kGPG는 GnuPG에게 생성, 수정, 열기 등의 키를 알려줍니다. 인터페이스에는 시스템의 키, 신뢰 수준 등이 나열됩니다. 그러나 그 이면에는 모든 것이 ~/.gnupgGnuPG 형식으로 디렉토리에 저장됩니다. (kGPG가 GPG를 호출하는지 GPG 라이브러리에 링크하는지 잘 모르겠지만 효과는 같습니다)

kMail은 또 다른 프런트엔드일 뿐입니다. gpg동일한 디렉터리에 저장된 키에 액세스하는 명령을 호출합니다 . 예를 들어 서명, 암호화 및 암호 해독에 사용됩니다.

이는 gpg-agent세션 범위입니다. 즉, kGPG에서 개인 키를 잠금 해제하면 kMail의 개인 키도 잠금 해제되며 그 반대의 경우도 마찬가지입니다.


편집하다

방금 알아냈어퀄라테클리, pinentry에 대한 kwallet 바인딩을 제공합니다. 내 배포판에서는 패키지를 제공하지 않으므로 지금은 사용해 볼 수 없습니다.

배포판에서도 패키지를 지원하지 않는 경우 수동으로 설치해야 할 수도 있습니다.

다시,아치스 위키나타나서 하루를 구했습니다.

팁: /usr/bin/pinentry-kwallet을 사용하려면 kwalletcli 패키지를 설치해야 합니다.

~/.gnupg/gpg-agent.conf:
#pinentry interface with kdewallet
pinentry-program /usr/bin/pinentry-kwallet

선택하다

원하지 않거나 설치할 수 없는 경우퀄라테클리kwallet-query, 이 명령을 사용하여 일부 스크립팅을 수행 할 수 있습니다 . 비밀번호를 얻으려면 어느 지갑을 열어야 하는지 알아야 합니다. 자세한 내용은 을 참조하세요 man kwallet-query.

그러나 gpg는 기본적으로 STDIN에서 비밀번호 입력을 허용하지 않으므로 다음이 필요합니다.GPG 구성그것을 위해.

ssh-agent에 대한 참고 사항

gpg-agent가 작동하게 되면 다음과 같이 사용할 수도 있습니다.SSH 에이전트.

Kubuntu 22.04의 예(Jellyfish) Git에서 Keybase PGP 키(인증 및 서명)를 사용하는 방법

# setup Keybase where you're storing PGP keys in cloud
https://keybase.io/docs/the_app/install_linux

# Import the public key
keybase pgp export | gpg --import

# Import the private key
keybase pgp export -s | gpg --allow-secret-key-import --import

# show all keys
gpg --list-keys --with-keygrip
gpg --list-secret-keys --with-keygrip

# There should be 3 keys: one main [SC]==PUBKEY_USAGE_SIG&PUBKEY_USAGE_CERT and two subkeys [A]==PUBKEY_USAGE_AUTH && [E]==PUBKEY_USAGE_ENC

# Now you have to edit main one ([SC] ID) of them to "trust" it
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

# setup git configs & set your favorite editor
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]


# reload terminal env & gpg-agent and check everything works
source ~/.bashrc
gpgconf --kill gpg-agent
ssh-add -L
ssh -T [email protected]

답변2

기반으로퀄라테클리@Tim의 답변에서 제안한 대로 kwallet에서 비밀번호를 찾기 위해 작은 Python 스크립트를 작성했습니다.github에서 찾을 수 있습니다. 유일한 종속성은열쇠 고리파이썬 모듈.

그냥 말해gpg-에이전트현재 대신 이것을 사용하십시오소나무, 그것은 마법을 발휘할 것입니다. 또한 비밀번호가 필요하지 않은 모든 작업을 처리하기 위해 백그라운드에서 실제 pinentry 프로세스를 실행합니다.

관련 정보