コンテンツにスキップ

GPGの信用データベースの使い方 (2022/07/31)

謎の表示

GPGで鍵を管理してるときに、

gpg --list-keys
みたいなコマンドを実行することってあるじゃないですか。
このとき、ほとんどの場合「[究極]」とか「[不明]」みたいな表示があります。
では、これは一体どういうことなのかという話です。

信用データベース

実はGPGには「信用データベース」というものがあって、鍵がどのくらい信用できるかが保存されています。
例えば自分が作った鍵の場合、[究極]とあります。これは、自分自身なのでなりすましなわけないよね、ということで究極的に信用ができると記録されています。
また、自分で作った鍵を別PCに移行してインポートした直後とか、他人の公開鍵をインポートした直後では[不明]が記録されています。これは、まだこの鍵をどのくらい信用できるかがわからないので不明になっているのです。

鍵を信用?

鍵を信用ってなんやねんってことです。
GPGとかを使うと簡単に鍵を作れるわけですが、そのときにメールアドレスとかを登録しますよね。
ですが、その登録した情報が信用できるかはわかりません。
悪意を持った人が勝手に他の人のメールアドレスなどを使用して鍵を作ったとしても、それが本当に正しいのかはわかりません。
他人が偽物の秘密鍵を使って署名すると簡単にその人になりすませてしまいます。
それを防ぐため、信用データベースがあるのです。
もし鍵の信用情報が[不明]なら、署名を検証するときに「この鍵、本当にあってるの?」みたいな警告がでてきます。逆に[究極]なら、出てきません。
このように信用度を管理することで、なりすましを防ぐことをできるのです。

信用データベースの変更

信用データベースがあっても、それを編集できなければ何も起こりません。
信用データベースは、自分自身の秘密鍵を使って信用情報に署名することで適用できます。
つまり、信用データベースを更新したあとは署名をします。
信用データベースの変更に使うのが「--edit-key 対象鍵id」、署名に使うのが「--sign-with 自分自身の鍵id --sign-key 対象鍵id」です。
ちなみに--edit-keyを使うと信用データベースを調整する以外にも、副鍵を作ったりいろいろできます。
たとえば鍵83B593C7BE6DB6A89FB7CBFFD058A05E90C4ECFEC(Ubuntuのapt用署名鍵)の信用情報を更新して、鍵86D1E161CC748989CAE07E8220AE621F85888B81(筆者の鍵)で署名する場合、こんな感じになります。

$ gpg --edit-key 3B593C7BE6DB6A89FB7CBFFD058A05E90C4ECFEC
gpg (GnuPG) 2.3.8-beta2; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

pub  dsa1024/058A05E90C4ECFEC
     作成: 2005-05-24  有効期限: 無期限      利用法: SC  
     信用: 不明の     有効性: 不明の
sub  elg2048/90EC593740A3E9B2
     作成: 2005-05-24  有効期限: 無期限      利用法: E   
[  不明  ] (1). Ubuntu-ja Archive Automatic Signing Key <archive@ubuntulinux.jp>

gpg> trust
pub  dsa1024/058A05E90C4ECFEC
     作成: 2005-05-24  有効期限: 無期限      利用法: SC  
     信用: 不明の     有効性: 不明の
sub  elg2048/90EC593740A3E9B2
     作成: 2005-05-24  有効期限: 無期限      利用法: E   
[  不明  ] (1). Ubuntu-ja Archive Automatic Signing Key <archive@ubuntulinux.jp>

他のユーザの鍵を正しく検証するために、このユーザの信用度を決めてください
(パスポートを見せてもらったり、他から得たフィンガープリントを検査したり、などなど)

  1 = 知らない、または何とも言えない
  2 = 信用し ない
  3 = まぁまぁ信用する
  4 = 充分に信用する
  5 = 究極的に信用する
  m = メーン・メニューに戻る

あなたの決定は? 4

pub  dsa1024/058A05E90C4ECFEC
     作成: 2005-05-24  有効期限: 無期限      利用法: SC  
     信用: 充分        有効性: 不明の
sub  elg2048/90EC593740A3E9B2
     作成: 2005-05-24  有効期限: 無期限      利用法: E   
[  不明  ] (1). Ubuntu-ja Archive Automatic Signing Key <archive@ubuntulinux.jp>
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。

gpg> save
鍵は無変更なので更新は不要です。



$ gpg --sign-with 86D1E161CC748989CAE07E8220AE621F85888B81 --sign-key 3B593C7BE6DB6A89FB7CBFFD058A05E90C4ECFEC
pub  dsa1024/058A05E90C4ECFEC
     作成: 2005-05-24  有効期限: 無期限      利用法: SC  
     信用: 充分        有効性: 不明の
sub  elg2048/90EC593740A3E9B2
     作成: 2005-05-24  有効期限: 無期限      利用法: E   
[  不明  ] (1). Ubuntu-ja Archive Automatic Signing Key <archive@ubuntulinux.jp>


pub  dsa1024/058A05E90C4ECFEC
     作成: 2005-05-24  有効期限: 無期限      利用法: SC  
     信用: 充分        有効性: 不明の
  主鍵フィンガープリント: 3B59 3C7B E6DB 6A89 FB7C  BFFD 058A 05E9 0C4E CFEC

     Ubuntu-ja Archive Automatic Signing Key <archive@ubuntulinux.jp>

本当にこの鍵にあなたの鍵"okaits#7534 <okaits7534@gmail.com>"で署名してよいですか
(20AE621F85888B81)

本当に署名しますか? (y/N) y



$ gpg --list-key 3B593C7BE6DB6A89FB7CBFFD058A05E90C4ECFEC
pub   dsa1024 2005-05-24 [SC]
      3B593C7BE6DB6A89FB7CBFFD058A05E90C4ECFEC
uid           [  充分  ] Ubuntu-ja Archive Automatic Signing Key <archive@ubuntulinux.jp>
sub   elg2048 2005-05-24 [E]

まとめ(?)

ということで、信用データベースの概要とその編集方法でした。
とは言っても筆者自身あまりGPGとかPGPとか詳しくないので、間違っているところや紛らわしい表現方法などを発見したら、是非Discordで指摘してもらえると助かります。