|
|
|
電子メールのセキュリティ ~ デジタル証明書(電子証明書)とPKI ~
|
|
| 暗号通信において防止しなければならない要素は、盗聴・改ざん・なりすまし・否認の4つであり、さらに具体的には、前述した8つの疑問を解決しなければなりません。 |
|
| なかでも、「なりすまし」を防止しなければ、他の要素もすべて防ぐことができなくなります。そこで、前項では「デジタル署名」を用いて「なりすまし」を防ぐことができるかを検証しました。 |
|
| しかし、デジタル署名だけでは「なりすまし」を完全に防ぐことができません。それは、 |
|
| 公開鍵がその人本人のものである根拠がない |
|
| ためであり、公開鍵暗号化方式の前提が、鍵の作成者は「受信者」本人に間違いないという前提で成り立っているからです。したがって、 |
|
| 公開鍵のなりすまし |
|
| が行われてしまうと、公開鍵暗号化通信そのものが崩壊してしまいます。ただ、逆をいえば、公開鍵がその人本人のものであるという証明ができれば、問題は解決できるといえます。そこで、 |
|
| 信頼できる第三者によって、公開鍵の作成者を証明する |
|
| という仕組みが出来上がりました。信頼できる第三者となる、「公的な機関」によって、その公開鍵は誰が作成したのかということを証明するのです。 |
|
| つまり、信頼できる第三者が、その公開鍵にお墨付きを与えれば、その公開鍵は「なりすまし」をされておらず、本人のもので間違いないという認証になるのです。 |
|
| たとえば、公開鍵で暗号文を送る場合、またデジタル署名を公開鍵で復号化する場合、どちらも、その公開鍵が通信相手のものであるという根拠はありません。悪意ある第三者が「公開鍵のなりすまし」を行っていた場合には、すべてが崩壊してしまいます。 |
|
| そこで、使おうとする公開鍵が、通信相手本人のものであるか確証が持てない場合は、その第三者機関に、その公開鍵の作成者が誰であるのか証明してもらえばよいというわけです。ここでも、「あなた」が「Aさん」にメールを送る(Aさんの公開鍵で)場合を考えてみましょう。 |
|
|
信頼できる第三者 |
|
|
公開鍵の証明(公的な機関:認証局) |
|
| |
↑ 信頼 |
↓ 「Aさん」の公開鍵である証明 |
↑ 公開鍵の証明を申請 |
|
あなた |
|
Aさん |
「Aさん」の公開鍵を、信頼できる
第三者が証明しているというこは、
「Aさん」本人のものと確信できる |
→ |
信頼できる第三者に、自分の
公開鍵を証明してもらうことで、
「あなた」に認証してもらえる |
| 送信者 |
|
受信者(鍵作成者) |
|
|
| このように、「あなた」が、公開鍵を証明する第三者を信頼すれば、「Aさん」の公開鍵は、本人のものと間違いないという確証を得ることができます。したがって、この第三者は、信頼できる公的な存在でなければなりません。詳しくは後述しますが、この証明する第三者は、実は誰でも可能です。 |
|
| さて、通常の通信では、上記のように、暗号通信のたびにその機関(第三者)に申請したり、問い合わせしていたのでは、時間も手間もかかるので、 |
|
| 公開鍵の証明書を発行 |
|
| してもらい、その証明書を確認する(確認してもらう)ことで公開鍵の認証をします。この発行してもらう証明書のことを、 |
|
| 電子証明書(デジタル証明書、デジタルID) |
|
| といいます。公開鍵を印鑑(デジタル署名は印影)だとすると、電子証明書は「印鑑証明」といえます。その印がその人本人のものか確証が持てない場合は、印鑑証明を確認すれば、認証することができます。その印鑑証明は役所が発行するものであるので、疑いようがありません。 |
|
| それと同じで、この電子証明書(デジタル証明書)も公的な機関が発行します。実は、誰でも証明書を発行することができますが、それについては後述します。この第三者機関のことを、 |
|
| 認証局(CA:シーエー) |
|
| といいます。電子証明書は、認証局(CA)に申請して発行してもらいます。認証局(CA)は、政府や自治体が運営する認証局や、民間企業の認証局など多数存在します。また、認証局(CA)はその役割に応じて、階層別に分けられています。詳しくは後述します。 |
|
| まず、電子証明書とは具体的にどういうものかを知らなければなりません。電子証明書は、もうお解かりのように、公開鍵の証明書であり、印鑑の印鑑証明に当たるものです。そこには、何が書かれているのでしょうか? |
|
| 電子証明書の様式(フォーマット)は、規格が決まっていて、 |
|
| X.509(エックス ゴ マル キュー) |
|
| という仕様です。まず、電子証明書の本物を見てみましょう。 |
|
Windosメールは、「ツール」→「オプション」→「セキュリティ」タブ →「デジタルID」
Outlook Expressは、「ツール」→「オプション」→「セキュリティ」タブ →「デジタルID」
で確認できます。 |
|
また、Internet Explorerでも確認することができます。
IE7では、「ツール」→「インターネットオプション」→「コンテンツ」タブ →「証明書」 |
|
| 電子証明書を発行してもらった覚えがないのに、どうしてブラウザやメーラーで確認できるのかというと、有名なCAの電子証明書は、元から事前にインストールされているからです。そもそも、電子証明書がインストールされているとはどういうことか疑問だと思いますが、それについては後述します。下図が、電子証明書の詳細な内容を表示したウィンドウ図です。 |
|
 |
|
 |
|
| 上図は、ベリサイン社という有名なCAの電子証明書になります。スクロールバーを下にもっていくと、画面には収まっていませんが、まだ項目がいくつかあります。 |
|
| バージョン |
そのCAが発行している証明書のバージョン |
| シリアル番号 |
そのCAが証明書に付ける識別番号 |
| 署名アルゴリズム |
証明書にCAがしたデジタル署名のアルゴリズム。アルゴリズムとは、処理の手順を意味する。 |
| 発行者 |
発行したCAの名称 |
| 有効期間の開始 |
証明書の有効期限(開始) |
| 有効期間の終了 |
証明書の有効期限(終了) |
| サブジェクト |
公開鍵の所有者 |
| 公開キー |
申請者の公開鍵とその種類 |
| 拇印アルゴリズム |
CAのメッセージダイジェストのアルゴリズム。拇印とはメッセージダイジェストのこと。指紋と同様に、同じものはほぼ存在しないため、「フィンガープリント」とも呼ばれる。 |
| 拇印 |
CAのメッセージダイジェスト(ハッシュ)情報 |
|
|
| 上表がすべてではありませんが、基本的なものは、上表の項目です。まず、「署名アルゴリズム」のところで、「CAのデジタル署名」とあるのに疑問を持たれたと思います。デジタル署名とは、前項で解説したとおりのデジタル署名のことです。つまり、 |
|
| CAは、電子証明書にデジタル署名をする |
|
| のです。デジタル署名だけでは、公開鍵がその人本人のものであることが証明できないため、第三者に、その公開鍵を証明してもらうために発行してもらうのが電子証明書です。その電子証明書に、さらに、その第三者がデジタル署名をするのです。 |
|
| その電子証明書は、CAが発行したものであるという根拠が必要になる |
|
| ため、CAは、デジタル署名によって、電子証明書の「改ざん」や「なりすまし」を防止するということです。しかし、デジタル署名は、それだけでは何も証明することができない(完全に防止できない)ものでした。前項の攻略例で示したように、「CAの公開鍵のなりすまし」をされてしまう可能性はないのでしょうか? |
|
| つまり、CAのデジタル署名を認証するときに用いるCAの公開鍵は誰が証明するのでしょうか?このことについても後述しますので、ひとまず、次に行きます。 |
|
| 次に、その「署名アルゴリズム」と同じような「拇印アルゴリズム」というのに疑問を持たれたと思います。違いは一体なんでしょうか? |
|
| 拇印(メッセージダイジェスト)は、ハッシュ関数により抽出したものです。何からメッセージダイジェスト(拇印)を作成するのかというと、X.509の仕様で書かれた電子証明書に、ハッシュ関数を当てはめて抽出します。ここまでが「拇印」になります。 |
|
| 「署名」は、秘密鍵を用いて、さらにそこから、拇印(メッセージダイジェスト)の暗号化が必要になります。したがって、拇印アルゴリズムが、「sha1」というアルゴリズムで、署名アルゴリズムが暗号方式を足して、「sha1RSA」という具合になります。 |
|
| つまり、メッセージダイジェストを作成するときは、「sha1」という方法を用い、それの暗号化には、RSA方式を用いているという意味になります。ほとんど同じ内容のものです。 |
|
| では次に、電子証明書を入手する流れをみてみましょう。電子証明書は、どうやって手に入れるのでしょうか? 先ほど、有名なCAの電子証明書は、事前にインストールされていると解説しましたが、実は、その電子証明書(上図の電子証明書)は、多少性質の異なる電子証明書なのです。 |
|
| なぜなら、電子証明書とは、「公開鍵の持ち主は自分である」と証明してくれるものですが、元からインストールされている電子証明書は、自分の公開鍵を証明するためのものではないからです。(そもそも鍵を作成していません) |
|
| したがって、自分の公開鍵を証明してくれる電子証明書を入手するには、CAに申請して、作成してもらわなければなりません。 |
|
| まず、専用のソフトウェアなどで、秘密鍵と公開鍵のペアを作成します。(実は、電子証明書の申し込み後、CAで秘密鍵と公開鍵を作成してくれる場合の方が多いです。その場合は、自分の秘密鍵は、そのCAのサイトからダウンロードするか、郵送等により入手します) |
|
| 次に、身分証明書(戸籍謄本など)と共に、自分の公開鍵をCAに送ります。審査後、CAのデジタル署名付きで「公開鍵」と「電子証明書」が返送されてきます。(前述のとおり、CA側で鍵を作成する場合もあります) |
|
| このとき、上図の電子証明書(X.509)にも「公開キー」とあるように、 |
|
| 公開鍵は、電子証明書に含まれるかたちで返送される |
|
| ことになります。つまり、 |
|
| 「X.509の仕様に基づく情報」と「公開鍵」、「CAのデジタル署名」を併せたものが電子証明書 |
|
| なのです。したがって、電子証明書を入手して送付するということは、公開鍵を送付することにもなるのです。このことは何気ないことですが、重要なポイントになります。なぜなら、電子証明書の形式でない公開鍵を受け取らないようにすれば、安全性が高まるからです。 |
|
あなた |
|
CA |
| 「あなた」の公開鍵 |
→ |
審査 |
| 必要書類(身分証明書など) |
| |
|
|
電子証明書
(3つがそろって電子証明書になる) |
← |
公開鍵の証明書(署名前証明書:X.509) |
| デジタル署名 |
| 「あなた」の公開鍵 |
|
|
| 電子証明書が届いたら、CAのデジタル署名を検証して、改ざんがないことを確かめます。このときの認証に使うCAの公開鍵は、 |
|
| CAが自分で自分の公開鍵を証明する「自己署名証明書」 |
|
| という、CAが自分自身に対して発行した証明書を用いて認証します。公開鍵は、電子証明書に含まれるかたちで取り扱われるので、自己署名証明書からCAの公開鍵を入手することができます。CAは、公開鍵を電子証明書のかたちで公開しているのです。 |
|
| もっとも、その「自己署名証明書」というのは、CAは自分のほかに、自分の公開鍵を証明してくれる第三者が存在しないので、自分で自分を証明(自己証明)するしかないのです。CAは階層構造になっていて、他のCAに証明してもらう場合もありますが、それも元をたどっていくと、自分で自分を証明しなければならなくなります。このため、「ルート証明書」とも呼ばれます。 |
|
| 「ルート」とは、「階層構造とは」 で解説しましたが、「根」の意味です。つまり、根っこ(ルート)となるCAは、自分で自分を証明するしかありません。 |
|
| さて、このCAの「自己署名証明書(ルート証明書)」をどこから手に入れるのかというと、先ほどの、有名なCAの電子証明書は事前にインストールされているというのを思い出してください。 |
|
| 上図にある、有名なCA「ベリサイン」の電子証明書は、まさしく自己署名証明書になります。 |
|
| 事前にインストールされているのは、有名なCAの自己署名証明書(ルート証明書) |
|
| なのです。したがって、たいていのCAの公開鍵は、事前にお持ちのパソコンの中にインストールされていることになります。 |
|
 |
|
| このように、「信頼されたルート証明機関」として、有名なCAのルート証明書は、すでにパソコンにインストールされています。 |
|
| また、上図(X.509の図)では、CAたる「発行者」と公開鍵の持主である「サブジェクト」が同じ名前になっています。下図は、同じ電子証明書の「全般」タブの表示ですが(上図は「詳細」タブ)、発行者と発行先が同じ名前です。自分で自分に証明書を発行していることがわかります。 |
|
 |
|
| したがって、発行された電子証明書に付けられているCAのデジタル署名を、パソコンにインストールされている(またはCAからダウンロードした)CAの自己署名(ルート)証明書の公開鍵で認証し、ダイジェストが一致すれば、「改ざん」も「なりすまし」も行われていないことになります。 |
|
| さて、電子証明書を入手したら、いよいよ本題の相手との通信について、検証したいと思います。ここでも、前例と同じように、「あなた」と「Aさん」が通信を行う場合を例にします。今回は、電子証明書を入手した「あなた」が、「Aさん」にデジタル署名付きの暗号文を送信します。 |
|
あなた |
|
Aさん |
本文
「こんにちは、お元気ですか?」 |
→ |
本文からメッセージダイジェスト作成 |
| デジタル署名 |
デジタル署名を電子証明書の公開鍵で復号化し、ダイジェストを比較する |
| 電子証明書 |
電子証明書より公開鍵を「あなた」のものと確認する |
| 電子証明書(CAのデジタル署名)を認証する |
|
|
| 「あなた」は、本文と、本文から抽出したメッセージダイジェストを秘密鍵で暗号化したデジタル署名と、CAから発行された電子証明書の3つを、「Aさん」に送ります。 |
|
| 受けとった「Aさん」は、まず、電子証明書が改ざんされておらず、本当にCAが発行したものなのかを認証する必要があります。この電子証明書が信用できる正しいものと確信できなければ、公開鍵を信用することができなくなります。ひいては、通信相手である「あなた」を「Aさん」は信用できません。 |
|
| そこでまず、「Aさん」は、「あなた」が送付した電子証明書(CAのデジタル署名)を検証します。 |
|
あなた |
|
Aさん |
電子証明書
(公開鍵は「あなた」のものという証明書)
(CAのデジタル署名) |
→ |
その電子証明書は本物?本当にCAが発行した信用できるもの? |
| 電子証明書が信用できなければ、その通信自体が信用できなくなる。 |
|
|
| 「あなた」の電子証明書に付けられたCAのデジタル署名を検証するには、その署名を復号化する、「CAの公開鍵」が必要になります。 |
|
| CAの公開鍵は、先ほど解説したとおり、CAの自己署名証明書(ルート証明書)を入手することで手に入れることができます。CAの自己署名証明書は、たいてい事前にパソコンにインストールされているので、「Aさん」は、その自己署名証明書からCAの公開鍵を取り出します。(「取り出す」という表現は、あくまでわかりやすくするための表現です) |
|
| そして、入手したCAの公開鍵で、「あなた」が送付した電子証明書の、CAのデジタル署名を検証します。多少難解ですが、ポイントは、 |
|
| CAの公開鍵は、通信相手から受け取るのではなく、CAから受け取る(たいていは事前にインストールされているが) |
|
| ことで、安全性を高めているということです。つまり、「あなた」が電子証明書と一緒に、CAの公開鍵を送付したのでは、どちらもなりすましの可能性がありますが、CAの公開鍵を「Aさん」はCAから受け取ることで、「あなた」から「Aさん」への通信経路の途中で、改ざんやなりすましが行われていないことが認証できるのです。 |
|
|
CA |
|
|
電子証明書の発行/自己署名(ルート)証明書の配布 |
|
| |
↓ 電子証明書 |
↓ 自己署名(ルート)証明書 |
|
あなた |
|
Aさん |
| 電子証明書 |
|
ルート証明書からCAの公開鍵を入手 |
| 「あなた」の公開鍵の証明書 |
→ |
CAのデジタル署名を検証 |
| CAのデジタル署名 |
正しく認証できたら、「あなた」の公開鍵は「あなた」のものと確定 |
| 「あなた」の公開鍵 |
| 送信者(鍵作成者) |
|
受信者 |
|
|
| もっとも、たいていの自己署名証明書は、事前にパソコンにインストールされているので、それが改ざんされていたり、なりすましによって差し替えられているというのは考えられません。したがって、その公開鍵で、送られてきた電子証明書のデジタル署名が正しく認証されれば、その電子証明書は、そのCAが発行した証明書に間違いないということができます。 |
|
| 仮に、自己署名(ルート)証明書が改ざんやなりすましをされていたとしても、「あなた」の電子証明書のCAのデジタル署名を正しく認証することができず、それを検知することができます。 |
|
| こうして、「あなた」の電子証明書が、CAが発行したもので間違いないことが確認できたら、その証明書が証明している「あなた」の公開鍵は、「あなた」のもので間違いないことも確認できます。 |
|
| そして、最後に、「あなた」のデジタル署名を認証して、問題がなければ、「あなた」のメールは、途中で「なりすまし」も「改ざん」もされていないことになります。(デジタル署名を付けるということは、「あなた」の秘密鍵で暗号化するので、「盗聴」される可能性はあります) |
|
| 以上が、前項のデジタル署名に電子証明書を加えた暗号通信の流れになります。多少難解でしたが、順を追って考えると必ず理解できます。もう一度、簡単におさらいしてみましょう。 |
|
あなた |
| CAに電子証明書(あなたの公開鍵の証明書)の発行を申請する。 |
| ↓ |
| 電子証明書を入手。(電子証明書には「あなた」の公開鍵、CAのデジタル署名が含まれる) |
| ↓ |
| 「Aさん」にメールを送信。 |
| 本文 |
あなたの
デジタル署名 |
電子証明書 |
| 公開鍵の証明書 |
あなたの公開鍵 |
CAのデジタル署名 |
|
Aさん |
| 電子証明書がCAが発行した本物かどうか、CAのデジタル署名を検証する。 |
| ↓ |
| CAのデジタル署名を検証するために、CAの公開鍵を入手する。 |
| ↓ |
| CAの公開鍵は、CAの自己署名(ルート)証明書に含まれている。 |
| ↓ |
| CAの自己署名(ルート)証明書は、事前にパソコンにインストールされている。 |
| ↓ |
| CAの公開鍵で、電子証明書のCAのデジタル署名を検証する。 |
| ↓ |
| 問題なければ(メッセージダイジェストが一致すれば)、「あなた」の電子証明書はCAが発行したもので間違いなく、改ざんもされていないことが確定する。 |
| ↓ |
| また、その電子証明書が保証している「あなた」の公開鍵(電子証明書に含まれる)は、「あなた」のもので間違いないことが確定する。 |
| ↓ |
| その公開鍵で「あなた」のデジタル署名が正しく認証できれば、メールの送信者が「あなた」に間違いなく、改ざんされていないことが確定する。 |
|
|
| 以上のような流れになります。 |
|
| さて、これまで解説してきたように、公開鍵暗号化方式だけでも、デジタル署名だけでも完璧に安全な通信を行うことができず、脅威に対抗することはできません。 |
|
| 誰からも信頼される第三者である認証局(CA)に、公開鍵を保証してもらうことで、はじめて安全な通信を行うことができるのです。 |
|
| つまり、公開鍵暗号化方式による暗号通信は、様々な技術や仕組みを組み合わせて、またそれらの要素が互いに作用しあうことによってはじめて、安全な通信が可能になります。こうした、 |
|
| 公開鍵暗号化方式をとりまく技術や仕組みの総称を、「PKI」(ピーケーアイ) |
|
| といいます。つまり、PKIとは公開鍵暗号による通信を行ううえでの「インフラ(基盤・環境)」のことです。 |
|
| では、このPKIによって、8つの疑問はすべて解決できるでしょうか? しかし、その前に、もうひとつ疑問を持たれたかもしれません。それは、 |
|
| 信用できるCAの基準は何か、CAが信用できると信じる根拠は何か |
|
| ということです。実際、電子証明書は誰でも作成することができます。事前にインストールされていない電子証明書を受け取った場合、何をもってそのCAを信用するのでしょうか? |
|
| PKIのキモはCAの存在です。事項では、CAについてもう少し詳しく解説し、その後、8つの疑問について考察したいと思います。 |
|
|
|
|
|
|
「電子メールのセキュリティ(3)」 / 「電子メールのセキュリティ(5)」 |
 |