公開鍵証明書の仕組み
皆さん、こんにちは。技術開発グループのn-ozawanです。
12月になり、忘年会シーズンが始まりましたね。泥酔してセキュリティ事故を起こさないように気を付けましょう。
本題です。
ページを開こうとすると「証明書が信頼されていません」のようなメッセージが表示されて、何か悪いことしたのかなとドキドキしたことありませんか?この証明書、一体何を証明しているんでしょうか?何故、証明書がないと危ないのでしょうか。今回は公開鍵証明書のお話です。
目次
公開鍵証明書
なしすまし攻撃
これまでのおさらいです。これまで公開鍵暗号方式などの暗号技術を取り上げてきましたが、常に問題としてあがるのが「なりすまし攻撃」です。例えばボブが公開鍵をアリスへ送信する際に、中間に攻撃者マロニーが公開鍵をすり替えることにより、データの盗聴や改ざんなどが行われてしまうものです。デジタル署名などにより改ざん防止は行えるものの、公開鍵暗号方式を利用しているため、なりすまし攻撃の問題は残ってしまいます。

公開鍵証明書
TLS通信で言われる証明書というのは「公開鍵証明書」です。公開鍵証明書とは、公開鍵とその所有者を紐付けて、この公開鍵は確かにこの人の公開鍵ですよ、と証明するものになります。公開鍵証明書は、信頼できる第3者機関である認証局により、デジタル署名されることで発行されます。公開鍵証明書には、公開鍵とその所有者の情報に加えて、発行した第3者機関の情報と証明書の有効期限などが含まれています。

証明書のプロセス
では、この証明書はどのように使われるのでしょうか。まず、ボブは自身の公開鍵に対して証明書を発行してもらうように、認証局に依頼します。認証局は本人確認を行い、問題なければ証明書を発行します。アリスはボブから証明書を受け取り、その証明書の検証を行います。

アリスが証明書を検証するには、証明書にデジタル署名した認証局の公開鍵が必要になります。この認証局の公開鍵は公開鍵証明書として予めPC端末にインストールされています(※)。Windows10であれば、コントロールパネルからインターネットオプションを開き、コンテンツの証明書ボタンをクリックすると、事前にインストールされた(信頼された)公開鍵証明書を確認することが出来ます。
※インストールされていない場合もあります。詳細は後述。
信頼できる公開鍵証明書として事前にインストールされているため、検証に用いられる公開鍵をなりすましにより偽造される心配はありません。また、信頼できる公開鍵により、証明書のデジタル署名を検証できるため、ボブから受け取った公開鍵も安全に利用することが出来るようになります。
ルート証明書と証明書チェーン
認証局はトップダウンのツリー構造となっています。例えば認証局Aはボブの公開鍵を証明し、認証局Bは認証局Aの公開鍵を証明する、といった具合です。もし認証局Bがツリー構造のルートに位置する場合、認証局Bを「ルート認証局」と呼びます。認証局Aは「中間認証局」と呼びます。

この繋がりを、証明書をチェーンのように繋ぐことで表現します。ルート認証局が発行した証明書を「ルート証明書」と呼びます。また、自分自身で公開鍵を証明していることから「自己署名証明書」とも呼ばれます。

この証明書チェーンにより、事前にインストールされていない認証局から証明書を発行してもらうことも可能になります。仮にアリスのPCに中間認証局の公開鍵証明書がインストールされていなくとも、その中間認証局の公開鍵証明書を証明するルート認証局の公開鍵証明書がインストールされていれば、ボブの証明書は信頼できると判断できるようになります。
おわりに
ページを開く際に表示される「証明書が信頼されていません」というメッセージは、証明書の有効期限が切れたか、自分のPCに証明書を検証するための公開鍵証明書がインストールされていないために表示されるメッセージです。相手から受け取った証明書の検証を行うことが出来ないため、このまま開くとなりすましで盗聴されるよ、というブラウザからの強い警告なのです。もちろんそのまま無視してページを開くことも出来ますが、特別な理由がない限りは開かない方が良いかと思います。
ではまた。