GPGに何かを解読する必要がある場合、2つのスマートカードのいずれかで秘密暗号化キーを見つけることができることを伝える方法はありますか?
私の(簡略化された)設定は次のとおりです。
だから私は残っています:
gpg2 --list-keys
/Users/scott/.gnupg/pubring.gpg
-------------------------------
pub 3072R/600955C7 2016-09-09
uid [ultimate] Scott Cariss
uid [ultimate] Scott Cariss (msn.com)
uid [ultimate] Scott Cariss (bigfish.co.uk)
uid [ultimate] [jpeg image of size 12378]
sub 2048R/6FE6415F 2016-09-09
sub 2048R/D6DBBCAC 2016-09-09
sub 2048R/01A208C9 2016-09-09
sub 2048R/8D2A1368 2016-10-23
sub 2048R/65B08C5B 2016-10-23
暗号化サブキーはスマートカード間で共有され、各スマートカードに個別の認証キーと署名キーがあります。
しかし、何かを解読しようとすると、常に最初のスマートカードに送信され、他のスマートカードで暗号化キーを見つけることができません。 gpg-agent/pinエントリは、正しいスマートカードを挿入するように要求するだけです。
UPDATE(回避策)
すでに答えたように、それはGPGがサポートするものではありませんが、私のために機能する実用的なソリューションを見つけました。
Mac OS Xでは https://www.controlplaneapp.com/ を使用して、スマートカード(yubikey)の1つが到着したことを検出し、スクリプトを実行します。
#!/bin/bash
{
killall -9 ssh-agent gpg-agent
for keystub in $(/usr/local/MacGPG2/bin/gpg2 --with-keygrip --list-secret-keys {{EMAIL ADDRESS}} | grep Keygrip | awk '{print $3}'); do rm /Users/{{USERNAME}}/.gnupg/private-keys-v1.d/$keystub.key; done;
/usr/local/MacGPG2/bin/gpg2 --card-status
eval $(/usr/local/MacGPG2/bin/gpgconf --launch gpg-agent)
ssh-add -l
} &> /Users/{{USERNAME}}/bin/gpg-card-change-log.txt
exit 0
秘密鍵はすべてオフラインに保たれているため、それらを削除して--card-status
を実行しても害はありません。これにより、現在差し込まれているスマートカードから秘密鍵スタブが取り込まれます。
運が悪いと思いますが、これはGnuPGではサポートされていません。 OpenPGPスマートカードを使用する場合、秘密鍵ダミーがキーリングに格納され、格納されているスマートカードへの参照を保持します。 gpg --list-packets
で表示すると、秘密鍵サブパケットは次のようになります。
:secret sub key packet:
version 4, algo 1, created 1358985314, expires 0
pkey[0]: [2048 bits]
pkey[1]: [17 bits]
gnu-divert-to-card S2K, algo: 0, simple checksum, hash: 0
serial-number: 01 23 45 67 89 ab cd ef 01 23 45 67 89 ab cd ef
keyid: 9FF7E53ACB4BD3EE
コードを覗く 、複数のシリアル番号がサポートされているようには思えません。
resetcard() {
rm -rf ~/.gnupg/private-keys-v1.d
killall -9 ssh-agent gpg-agent
}
このキャッシュされたフォルダーを削除して(それが何のためにあるかは100%わかりませんが、何らかのキーキャッシュである必要があると思いますか??)これを行う必要がなかったことを望みます