SSLも電子署名も、証明書所持者の信頼性を担保するものではない


「悪意ある拡張機能ではないこと」、「作者に悪意が無いこと」は証明できないですよねっ。ねっ。……と、往生際の悪い食い下がり方をしてみる僕なのでした。

SSL電子署名は、証明書がベリサインやジオトラスト等の機関から発行されていたとしても、証明書所持者が善人である事を証明しない。金さえだせば悪人でも正規の証明書が手に入る。
“本物”のSSL証明書を持つフィッシング・サイト出現:ITpro
例えば、はてなはジオトラストから発行された証明書を所持しており、ログイン時のSSLで使用している。しかし、ジオトラストは、はてなが善良な会社であることを保証しない。id:jkondoid:naoyaが、[非モテ]タグを多用するユーザの個人情報をひそかに収集し、出会い系サイトや風俗情報業者に売り払ったりしない、ということを保証しない。はてなという会社の信頼性は、ユーザ自身がはてなを信頼することで担保されている。

では電子署名SSLの役割は何か?

電子署名
署名者を確認し、署名された後ファイルが一切変更されていないことを証明する。
SSL
「接続先が本物のサーバであることを証明する」「通信経路を暗号化する」等の手段によって安全な通信を提供する。

電子署名は、そのファイルが署名された時点から、まったく変更が加えられていないことを証明するものである。よって第三者によって悪意あるプログラムに改変されていない事は保障される。しかし、署名されたファイルそのものが最初から悪意あるプログラムではない、ということは保障しない。

一方、SSLは、はてなを例にすると

  • 「hatena.ne.jp」は「はてな」所有のサーバである。
  • 間違いなく本物の「hatena.ne.jp」に接続している。

ということを証明するものである。

ユーザが「はてな」という企業を信頼して始めて、「hatena.ne.jp」は信頼できるサイトとなる。SSL接続時に警告が出ないからといって、即信頼できる相手と考えてはいけない。接続先が信頼できるのは

  • ユーザがはてなを信頼し、
  • hatena.ne.jpがはてなのドメインだと知っており、
  • ホンモノのSSL証明書が使われている

場合である。

もし、はてなの証明書がオレオレ証明書だった場合、「hatena.ne.jp」が「はてなのサーバ」であることを証明する手段は無い。つまり、はてなが信頼のおける企業だったとしても、通信相手である「hatena.ne.jp」が「私が信頼しているはてなのサーバ」とは限らないのだ。

さて、Firefoxのアドオンだが、なぜSSLだけでは駄目なのか。
まず、アドオンが、その作者のサイトで公開されており証明書がオレオレだった場合、接続先がアドオン作者のサーバであることは保障されない。クラッカーのサイトに接続している可能性を否定できない。問題外である。
証明書が正規のものであった場合、アドオン作者のページやAMOに接続していることは保障される。しかし、サーバ上で公開されているアドオンがクラッカーによって改竄されているかもしれない。そこで電子署名によるバイナリの保証が必要になる。
しかし、そのバイナリが元から本当に安全かどうか、悪意の無いプログラムなのか、それは保証されない。アドオン作者を信頼できなければ、SSL通信だろうが電子署名がされていようが安全性を確認することはできない。