2005-10-04 [長年日記]

GnuPGのユーザID

GnuPGでは鍵を生成した後でユーザIDを追加することができます。ここで、Aさんが自分の鍵に二つのユーザID、A1とA2を設定したとします。その公開鍵をエクスポートして、Bさんに渡し、Bさんは自分の鍵輪にインポートします。そして、Bさんは自分の秘密鍵でそのうちの一方であるA2(とAさんの公開鍵)に対して署名を付加したとします。

この状態で、Aさんが署名したメッセージを受け取ったBさんが署名を検証すると、

gpg: Signature made Tue Oct  4 12:01:47 2005 JST using RSA key ID 0A04D4DA
gpg: Good signature from "A1 <a1@example.org>"
gpg:                 aka "A2 <a2@example.org>"

のように表示されます。実際にはA1に対しては署名を付加していないので、検証に使用した公開鍵がA1のものであるかどうかの確認はまったくできていません。実際、--verify-options show-uid-validityオプションをつけると、

gpg: Signature made Tue Oct  4 12:01:47 2005 JST using RSA key ID 0A04D4DA
gpg: Good signature from "A1 <a1@example.org>" [unknown]
gpg:                 aka "A2 <a2@example.org>" [full]

のように、A1の有効性はunknownであることがわかります。つまり、本当にA1(つまり、a1@example.orgの持ち主)が署名したかどうかはわからないということです。しかし、このオプションをつけないと、Aさんが勝手に好きなメールアドレスのユーザIDを追加すると、あたかもその人から来たように見えてしまいます。

逆にこのとき、A1を指定して暗号化しようとすると、

gpg: A06A152C: There is no assurance this key belongs to the named user

pub  2048g/A06A152C 2005-10-04 A1 <a1@example.org>
 Primary key fingerprint: C4A3 9691 5A23 8F99 04B2  D7E2 06A9 A723 281B 1026
      Subkey fingerprint: 9127 27E2 18C6 2A62 B4AB  9CDA 79D3 F1A8 A06A 152C

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

のように警告されます。

実際のところこのような動きをするのは何故なんでしょう?

[]