web-dev-qa-db-ja.com

複数のスマートカードに関するGPG暗号化サブキーの問題

GPGに何かを解読する必要がある場合、2つのスマートカードのいずれかで秘密暗号化キーを見つけることができることを伝える方法はありますか?

私の(簡略化された)設定は次のとおりです。

  • 暗号化サブキーを使用してマスターキーをオフラインで生成しました。
  • 暗号化サブキーをYubikey 1に転送しました。
  • Yubikey 1では、生成された認証および署名サブキー。
  • 暗号化サブキーをYubikey 2に転送しました。
  • Yubikey 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を実行しても害はありません。これにより、現在差し込まれているスマートカードから秘密鍵スタブが取り込まれます。

13
Brady

運が悪いと思いますが、これは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

コードを覗く 、複数のシリアル番号がサポートされているようには思えません。

8
Jens Erat
resetcard() {
  rm -rf ~/.gnupg/private-keys-v1.d
  killall -9 ssh-agent gpg-agent
}

このキャッシュされたフォルダーを削除して(それが何のためにあるかは100%わかりませんが、何らかのキーキャッシュである必要があると思いますか??)これを行う必要がなかったことを望みます

0
zackify