GnuPGを使用しています。コマンドラインからgpg encryptが呼び出されると、暗号化を行うためにどのようにキーが選択されますか? -rまたは--recipientがユーザーIDを提供しているように見えますが、それは簡単な答えです。私が見た例はすべて、受信者のメールアドレスを示しています。これは、キーを作成するときに必要な入力です。ただし、ユーザー名、コメント、メールアドレスがまったく同じ2つのキーを作成できました。同じ電子メールアドレスを持つ2つのキーがあり、その電子メールアドレスが受信者に使用されている場合、gpgはどのようにキーを選択しますか?これを行うにはキーIDを使用するのが最善の方法のようですが、そのオプションが表示されません。
多くの場合、複数のキーに一致するパラメーターにフィルターを提供するときは常に、それらのすべてを使用します(例:--list-keys
または--export
)。ここでも同じことを期待していました。ただし、基本的なチェックでは、すべてに対して暗号化されているのではなく、キーリングに最初にインポートされた単一のキーに対してのみ暗号化されていることが示されています(選択が別の順序でインポートされた場合は選択が変更されます)。コマンド--delete-keys
は-r
と同じように機能し、キーリングにある最初のコマンドのみを選択します。
実際のパケットを解析することで、(復号化を試行する以外の方法で)暗号化されたキーを確認できます。
echo Hello world | gpg -e -r jdoe | gpg --list-packets
また、CBHackingで指摘されているように、どこでもキーIDを使用できます。テキスト形式のユーザーIDを使用することは、使いやすさを向上させるための単純化です。
https://lists.gnupg.org/pipermail/gnupg-users/2005-June/026022.html (「GPG重複キー」を検索して見つけた)からヒントを取得すると、次のように指定できますIDでキーを指定した場合は、それらすべてで指定します(gpg -sear 104763A0
、署名、暗号化、base64エンコードなど、公開鍵IDが104763A0と一致する受信者に署名します)。私は自分のマシンでこれをテストしましたが、うまくいきました。
あいまいなキーを指定するとどうなるかわかりません。可能性が高いオプションは、キーリングの最初のキー(これは、上記のリンクの人物が言っていたことでした)、有効期限から最も遠いキー、最も信頼できるキー、またはその他の種類のキー(つまり、最初のキーに影響する可能性があります)ですキーリングにあるもの」)。