HTTP + GPG でファイルを配布する際に、鍵はどうやって共有される想定なのか?

投稿者: Anonymous

HTTP サーバーでファイルを配布する際に、 .sig ファイルを一緒に置いておきながら配布するパターンを見かけます。 例: http://ftp.gnu.org/gnu/emacs/

.sig ファイルによる検証を gpg で行うには、その公開鍵をどうにかして取得する必要があると考えていますが、この公開鍵の情報はどうやって取得する想定なのでしょうか。

HTTP通信における、中間の攻撃者による内容の改竄について で述べられた通り HTTP 通信は信用できないと思っています。というのも、「公開鍵は何であるか」を HTTP で送ってしまっては、その情報自体が改竄されえてしまうと考えているからです。

鍵の情報だけを https で配布する、という構成ならば健全な方法だと思いますが、だったら最初からすべて https でいいのでは・・・?と思ったりなどします。

解決

PGPの公開鍵の正当性の確認には、信頼の網(web of trust)という方法を用います。

入手手段(経路)としては、以下の2つが考えられます。

  1. 本人から直接手渡しで入手する。
  2. 既に信頼している人が署名した公開鍵を入手する。

そして、入手した公開鍵(a)に署名し、信頼度を設定します。

別の公開鍵(b)を入手した場合、その公開鍵(b)に署名している公開鍵(a)の信頼度が

  • 「常に信頼する(Fully trusted)」であれば、それ一つで公開鍵(b)も信頼します。
  • 「部分的に信頼する(Marginally trusted)」であれば、それ一つでは信頼しませんが、複数(個数は設定による)の部分的に信頼する公開鍵(a)で署名されていれば、公開鍵(b)も信頼します。
  • 「信頼しない(Never trust this key)」であれば、公開鍵(b)も信頼しません。

全てをHTTPSで配布しないのは、サーバーの負荷を抑えるためだと思います。

ちなみに、GnuPGはミラーサイトではHTTPやFTPで配布されていますが、公開鍵はHTTPSで配布されています。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *