電子メールのセキュリティ(4) ~ 電子証明書とPKI

号通信において防止しなければならない要素は、盗聴・改ざん・なりすまし・否認の4つであり、さらに具体的には、前述した8つの疑問を解決することでした。

なかでも重要なのは「なりすまし」の防止で、なりすましを防止しなければ他の要素もすべて防ぐことができなくなります。そこで前項では「デジタル署名」を用いて「なりすまし」を防ぐことができるかを検証しました。

しかし、デジタル署名だけでは「なりすまし」を完全に防ぐことができません。

デジタル署名は「秘密鍵」で暗号化している以上、送信者は秘密鍵を持つ本人で間違いないという考え方です。

しかしこれだけでは不十分で、

公開鍵がその人のものである根拠がない

のです。

公開鍵は世間に公開するので、秘密鍵だけ大事に保管していればいいように思われがちですが、公開鍵暗号方式は鍵の作成者が本人であることを前提として成り立っています。

したがって、

公開鍵のなりすまし

をされてしまうと、公開鍵暗号通信の安全性は崩壊します。

その実例は前項のとおりで、デジタル署名付きのメールすべてを差し替えられてしまったら、デジタル署名のメッセージダイジェストは一致し、なりすましが成功してしまいます。

また、デジタル署名でなくても、通常の公開鍵暗号通信で公開鍵が他人のなりすましであった場合、暗号文はその他人の秘密鍵で簡単に盗聴されてしまいます。

そのため、公開鍵が本人ものであることを証明しなければ安全とは言えません。逆を言えば、公開鍵の作成者を証明することができれば問題は解決できるとも言えます。

しかしこれは難問でした。いくら私のものだと宣言しても、それ信じる根拠がどこにもないからです。

そこで考えられた方法が、

信頼できる第三者によって公開鍵の作成者を証明する

という方法です。

信頼できる第三者とは、どんな人物でしょうか。知り合いにいたとしても、世間一般の皆さんに信頼してもらえるとは限りませんし、信用のある有名人に頼むわけにもいきません。

そのため、いわゆる「公的な機関」によって証明することになります。公的と言っても国の機関のことではなく、国の認定を受けた事業者のことです。

じつは、2001年に「電子署名及び認証業務に関する法律(電子署名法)」が施行され、デジタル署名が紙面への署名や押印と同等に扱われるようになりました。すなわち、現在デジタル署名は実際に実印と同じ効力を持っているのです。

この電子署名法の認定基準を満たし、認定された事業者が公開鍵を証明してくれるということです。当然、民間企業も含まれるので証明には費用がかかります。

この第三者機関のことを、

認証局(CA

と言います。CA(シーエー)は「Certificate Authority」の略になります。

同様に「花子さん」の公開鍵で「花子さん」に暗号メールを送る場合を考えてみましょう。

第三者機関による公開鍵の証明イメージ

このように、信頼できる第三者機関によって「花子さん」の公開鍵にお墨付きを与えることで、「あなた」は公開鍵が「花子さん」本人のもので間違いないという確証を得ることができます。

したがって、この第三者は信頼できる公的な存在でなければなりません。詳しくは後述しますが、じつは誰でも(悪意のある人物でも)証明することが可能なのです。(誰でも認証局になれるという意味ではありません)

では、どのように証明しているのかということですが、上図のように暗号通信のたびに認証局に申請していたのでは、時間も手間もかかり、利便性が大きく損なわれます。

そこで認証局は、

公開鍵の証明書を発行する

ことでその手間を省いています。

つまり、その証明書を確認することで本人のものかどうかを判断します。「印鑑証明」をイメージするとわかりやすいでしょう。押印された実印の陰影は、印鑑証明によって正当性を確認することができます。

実印と印鑑証明がそろっていれば、たいていの契約はできてしまいます。これは印鑑証明を自治体が発行しているからです。公的な機関が証明しているからこそ、記載されている氏名と陰影を信頼することができるのです。

認証局が発行するこの証明書のことを、

電子証明書

と言います。

電子証明書は認証局に申請して発行してもらいますが、認証局は複数あるので、用途や価格等によって選択することになります。民間のメジャーな認証局の場合だと、有効期限が2年程度のもので1~2万円かかります。

ただ、現在では「マイナンバーカード」に個人の電子証明書が格納されています。

そのため、この電子証明書を利用させてほしいところですが、メール等の通信に利用できるまでは至っていません。健康保険証としての利用や確定申告(e-Tax)など限定的な利用にとどまっています。

こう言うと、なぜ電子証明書が様々な用途に利用されているのかイメージできないかもしれません。

簡単に言えば、電子証明書は本人確認として利用できるからです。公開鍵がその人のものであることを証明するわけですから、同時に本人であることの証明にもなるわけです。運転免許証や健康保険証のように、電子証明書はインターネットでの本人確認ツールとしての役割も担っています。

そのため、マイナンバーカードによって、コンビニで住民証や印鑑証明が取得できるようになるといった宣伝がされています。マイナンバーカードは個人番号だけに焦点が当てられがちですが、重要なポイントはこの電子証明書が格納されていることです。デジタル署名など利用したい場面は数多くありますが、今後の政府の方針に期待するしかありません。

では、電子証明書の具体的な記載内容をみていきましょう。

電子証明書は様式(フォーマット)が決まっていて、

X.509(エックス ゴ マル キュー)

という仕様になっています。

法律で定められた公的な様式になるため、どの認証局で発行されても同じ様式になるように書式や記載内容が決まっているのです。実際に電子証明書の本物を見てみましょう。

コントロールパネルから「インターネットオプション」→「コンテンツ」タブ →「証明書」ボタンを選択します。また、ブラウザでも確認することができます。Windows Edgeでは「設定」→「プライバシー、検索、サービス」→「証明書の管理」を選択します。

すると「証明書」画面が表示されます。

電子証明書がインストールされているイメージ

多くのタブがあり、これらタブのことを「証明書ストア」と呼びます。

それぞれのストアに電子証明書がすでに格納されていることと思います。電子証明書を発行してもらった覚えがないのにどうしてすでにあるのかというと、先述のとおり電子証明書は電子メールだけに使われるものではないからです。

マイナンバーカードをはじめ、ウェブサーバとブラウザ間の経路を暗号化するHTTPS通信、VPNと呼ばれるインターネットを利用した拠点間の暗号通信など、様々な用途に利用されています。(HTTPSについては SSL/TLSとはVPNについては VPNとは で学習します)

また後述しますが、もともと出荷状態のパソコンにインストールされているルート証明書や中間証明書、Webサーバにインストールするサーバ証明書などの種類も複数あり、それらの一部がもとからパソコンに入っているためです。

順を追って理解していきましょう。

まず「個人」ストアには、認証局から送付された電子証明書が格納されます。これが、これまで学習してきた電子証明書のことです。

よって認証局に発行を依頼していない場合はここに電子証明書は存在しません。しかし、事業者等とVPN通信を行っている場合など、契約の過程で電子証明書を取得している場合もあります。

また会社や学校などLANで利用する場合は、そのLANのサーバから、各クライアントのパソコンへ電子証明書が配布されている場合もあります。この場合はパソコンのユーザー名で電子証明書が格納されています。

個人ストアの電子証明書は「クライアント証明書」と呼ばれ、そのパソコンのユーザー(個人)の公開鍵を証明、ひいてはユーザーを証明するために利用されます。

例えば、これまで学習してきた電子メールでの通信や、クライアント証明書がインストールされている端末からのアクセスだけを許可するなどの制御が可能なため、IDとパスワードによる認証よりも安全で、セキュリティに厳しい企業では、クライアント証明書がインストールされている端末でのみインターネットの利用を許可することも多くなっています。

下図は「個人」ストアの電子証明書のイメージです。

「個人」ストアの電子証明書のイメージ

例えば「あなた」が自分の公開鍵の証明を依頼した場合、「発行先」が「あなたの名前」、「発行者」が証明を依頼した「認証局名」になります。

そして、ユーザー認証に利用するということはデジタル署名を行うということなので、秘密鍵も合わせて持つことになります。対となる秘密鍵がある場合は、電子証明書に「この証明書に対応する秘密キーを持っています」と表示されます。

この場合、秘密鍵は「あなた」がパソコン内もしくは他の記憶領域等に厳重に保管することになります。認証局が保管しているわけではありません。

そして、重要となるのは「信頼されたルート証明機関」ストアです。

ここにはすでに多くの電子証明書が格納されているはずです。なぜかというと、先述のとおり有名な認証局の電子証明書がもとからパソコンにインストールされているからです。

つまり、このストアに格納されている電子証明書は、パソコンの所有者である「あなた」を証明するものではなく、認証局自身を証明する電子証明書になります。

詳しくは後述しますが、このようにパソコンの購入時からすでに多くの認証局の電子証明書がインストールされた状態となっています。「信頼されたルート証明機関」ストアの電子証明書は「ルート証明書」と呼ばれ、認証局自身の公開鍵を証明、ひいては認証局自身を証明するために利用されます。

適当に選択して、電子証明書の中身をみてみましょう。

電子証明書の詳細画面の「全般」タブのイメージ

どのストアの電子用証明書も同じX.509の様式なので、すべて同じ画面構成になります。同様に3つのタブがあり、まず「全般」タブでは「目的」「発行先」「発行者」「有効期限」が記載されています。

「目的」とは、電子証明書の用途のことです。電子証明書は多くの用途に利用されているので、電子メールの場合は「電子メールを保護する」と書かれています。

電子証明書の詳細画面の「全般」タブのイメージ

次に「発行先」と「発行者」ですが、通常、個人が認証局に発行してもらった電子証明書の場合は「発行先=申請者名」、「発行者=認証局」となりますが、このストアでは自分自身を証明しているため、両者が一致します。

そして「有効期限」は、文字どおりその電子証明書の有効期限になります。これまで半永久的に使用できる暗号は存在しないことを学習してきました。期限は証明書の種類によって異なりますが、クライアント証明書はルート証明書に比べて期限が短くなっています。

次に「詳細」タブです。「詳細」タブでは証明書の中身の詳細を確認することができます。

電子証明書の詳細画面の「詳細」タブのイメージ

「フィールド」の項目を選択すると、値が下の枠内に表示されます。

電子証明書の詳細画面の「詳細」タブのイメージ

難しそうに見えますが、これまでの知識で十分理解することができます。

電子証明書のフォーマット
フィールド 値の説明
バージョン X.509のバージョン情報。現在はバージョン3となっている。
シリアル番号 認証局が発行した電子証明書に付与するシリアル番号。
署名アルゴリズム 認証局が電子証明書に付与するデジタル署名に使われているアルゴリズム。デジタル署名はメッセージダイジェストを暗号化したものなので、ハッシュアルゴリズムと公開鍵暗号方式のアルゴリズムの組み合せになる。
署名ハッシュアルゴリズム デジタル署名に使うメッセージダイジェストを生成したハッシュ関数のアルゴリズム。現在の推奨は「SHA2」。
発行者 発行した認証局の名称
有効期間の開始 証明書の有効期限(開始)
有効期間の終了 証明書の有効期限(終了)
サブジェクト 公開鍵の所有者(発行先)情報。組織名(O)、国名(C)、一般名またはウェブサイトに発行されている電子証明書の場合はドメイン名(CN)など。
公開キー 公開鍵とその種類(暗号方式)
拇印 人間の目での確認に使われる。
主流は「SHA-1」。「署名アルゴリズム」の「SHA-2」で生成されているわけではないので注意。

まず「署名アルゴリズム」のフィールドにあるように、

認証局は電子証明書にデジタル署名をする

ようになっています。

またややこしくなってきますが、

その電子証明書は認証局が発行したものである根拠が必要になる

からです。

認証局自身の証明のために、発行した電子証明書にデジタル署名を付与します。こうして、認証局も自らが発行する電子証明書の「なりすまし」や「改ざん」を防止しているのです。

デジタル署名のアルゴリズムやハッシュ関数のアルゴリズムについては、 前項で学習したとおりです。

何からハッシュ関数でメッセージダイジェストを生成しているのかというと、この電子証明書になります。電子証明書そのもののデータからメッセージダイジェストを作成して、自らの秘密鍵でデジタル署名を作成しています。

次に「サブジェクト」までは問題なく理解できると思いますが、「公開キー」については文字どおり「公開鍵」になります。

つまり、

申請者の公開鍵そのものが電子証明書に含まれている

のです。

電子証明書が公開鍵の証明書であるゆえんです。詳しくは後述しますが、電子証明書を受け取るということは、公開鍵を受け取ることと同義になります。

そして、もっとも混同しやすいのが「拇印」です。

前項で、メッセージダイジェストは「ハッシュ値」や「フィンガープリント(指紋)」とも呼ばれることを学習しましたが、拇印も同様にハッシュ関数によるメッセージダイジェストのことです。そのため、認証局のデジタル署名に使われているメッセージダイジェストのように思えますが、この値はそうではありません。

前項で学習のとおり、現在のハッシュアルゴリズムの主流は「SHA-2」であり、256桁(16進数で64桁)になります。ところが「拇印」は40桁となっており、アルゴリズムが「SHA-1」であることがわかります。

したがって、この「拇印」はデジタル署名に利用されているものではなく、

人間の目で確認するために利用される

数値になります。

つまり、桁数が多いと確認が困難となるため、現在でもSHA-1が主流で利用されています。認証局から送付された電子証明書は、デジタル署名によって認証されますが、人間の目でも改ざんされていないことを確認しましょうといったところです。

拇印は認証局のウェブサイトで公開されていたり、インストールマニュアルに記載されていたりします。その値と目視で比較し、一致を確認することで認証します。

例えば、電子証明書のインストール時に下図のように利用されます。

電子証明書のインストール画面のイメージ

この拇印が認証局のサイトやインストールマニュアルに記載されている拇印と一致していれば改ざんされていないことになり、一致していなければ改ざんが行われていることがまさに一目瞭然となります。

デジタル署名と混同しがちでややこしいところですが、拇印(「フィンガープリント」の名称で使われることも多い)は電子証明書を扱う場合には必ず出てきますので、しっかり整理して覚えておきましょう。

では次に、電子証明書を入手する流れをみていきましょう。

電子証明書を入手するには、認証局に申請して作成してもらわなければなりません。基本的には、申請者が秘密鍵と公開鍵のペアを作成し、認証局に申請書と公開鍵を提出する流れとなります。(秘密鍵は認証局には提出せずに自分だけで保管します)

厳格に本人確認が求められるので、身分証明書(戸籍謄本など)も必要です。認証局での審査のあと、認証局のデジタル署名付きで公開鍵と電子証明書が返送されてきます。

ただし実際には、電子証明書を申し込んでから認証局で秘密鍵と公開鍵を作成してくれる場合が多いです。その場合、秘密鍵はその認証局からダウンロードするか、郵送等により入手することとなります。(電子証明書とともにインストールすることができます)

現在では、電子申告や電子申請、電子入札などの様々な場面で電子証明書が利用されており、利用目的やシステムによって使用できる電子証明書を発行している認証局が提示されているので、その中から選択して申請するケースが多くなっています。

また、電子証明書は原則として「個人」に対してのみ発行可能とされています。(法人の場合は担当者や代表者に発行されます)

電子証明書発行フローのイメージ

上図のように、電子証明書は「申請者と認証局の情報」「申請者の公開鍵」「認証局のデジタル署名」の3つをあわせたものになります。

そのため、先述のとおり電子証明書を送付するということは公開鍵を送付することと同義になります。このことは何気ないことですが、とても重要なポイントになります。

なぜなら、

電子証明書の形式でない公開鍵を受け取らない

ことで安全性が高まるからです。

認証局がお墨付きを与えている電子証明書に含まれている公開鍵が、偽造やなりすましである可能性はほぼなくなります。それは、認証局自身のデジタル署名によって、認証局の電子証明書である正当性と改ざんを検証できるからです。

前項で学習したように、デジタル署名はそれだけでは何も証明できない不完全なものでしたが、認証局が間に入ることによって公開鍵の作成者を証明することができるようになり、この電子証明書によって、なりすましをされたとしても公開鍵の本当の持ち主を判断することが可能となります。

ただし、ここでまたひとつ疑問が生じてこないでしょうか。

認証局の公開鍵は誰が証明するのか?

という疑問です。

そもそも公開鍵を証明してくれる公的機関である認証局のデジタル署名は何を根拠にしているのでしょうか。つまり、認証局を証明する誰かが存在しない限り、認証局の公開鍵が信用できる根拠がないことになります。

認証局自身の証明ができないとなると、電子証明書の信用もなくなってしまいます。そのため、認証局の信用は何としても守らなければなりません。ではどのような方法で証明するのかというと、

認証局は自分で自分の公開鍵を証明する

ことになります。

これで信用が得られるのかと思いますが、他に証明する第三者が存在しない以上、他に方法がないのです。

他の認証局に証明してもらうことも当然あります。しかし、認証局同士で証明を続けていっても、最終的には他に証明してくれる第三者がいなくなってしまいます。

そうした最終的な認証局(最上位の認証局)は、自分自身で証明するしかありません。

このように認証局が自分自身の公開鍵を証明する電子証明書のことを、

自己署名証明書

と言います。

認証局は階層構造になっており、他の認証局に証明してもらうことが可能な認証局は「中間認証局」と呼ばれ、中間認証局が発行する証明書は「中間CA証明書(中間証明書)」と呼ばれます。

次項で詳しく学習しますが、中間認証局はリスク分散や安全性などの観点から重要な存在となります。これら中間認証局は上位の認証局から証明してもらうことが可能になりますが、最上位の認証局は証明してくれる認証局がありません。

最上位の認証局は、

ルート認証局

と呼ばれています。

このため自己署名証明書は「ルート証明書」とも呼ばれます。「ルート」とは、階層構造とは で学習した「根」の意味です。証明の最終的な根っこ(ルート)にあたる認証局です。

したがって、認証局はルート認証局と中間認証局の2種類があることになります。「証明書」画面の「信頼されたルート証明機関」タブがルート認証局が発行したルート証明書で、「中間証明機関」タブが中間認証局が発行した中間証明書になります。

電子証明書がインストールされているイメージ

このように、すでにルート証明書や中間証明書がお使いのパソコンにインストールされています。

その理由が、自分自身を証明するほかないルート認証局の信用を担保することにつながっています。つまり、ルート認証局は信用の最後の砦であるため、すべてのパソコンにルート証明書をインストールしてから出荷されるようになっているのです。

すでにパソコンにインストールされていることで信用することができる

ということです。

当然ダウンロードして入手することも可能ですが、インターネットのリスクに晒されていない電子証明書はそれだけ信用できることになります。また、拇印(フィンガープリント)が認証局のサイトで公開されているので、目視で確認することもできます。ほかにも信用を得るための仕組みがありますが、詳しくは次項で学習します。

こうして代表的な認証局の電子証明書はすでに誰もが持っていることになります。

個人の電子証明書(クライアント証明書)を発行してもらった場合、発行された電子証明書に付与されている認証局のデジタル署名は、すでに持っているその認証局のルート証明書から公開鍵を取り出して検証することができます。

では最後に、電子証明書を使った通信の流れを理解しておきましょう。

同様に「あなた」が「花子さん」にデジタル署名付きのメールを送る場合を例にしてみます。この場合「あなた」は、メール本文とデジタル署名と電子証明書の3つを「花子さん」に送ります。

電子証明書を添付した通信のイメージ

受けとった「花子さん」は、まず電子証明書を検証し、本当に認証局が発行したものなのかを確認します。電子証明書が信用できる正当なものだと確信できなければ、「あなた」の公開鍵を信用することができなくなります。

電子証明書の正当性を確認できたら、それが証明している「あなた」の公開鍵を信用することができます。そして、電子証明書に含まれている「あなた」の公開鍵で「あなた」のデジタル署名を検証します。

電子証明書の検証の流れのイメージ

ここでのポイントは、認証局の公開鍵を通信相手の「あなた」から受け取るのではなく、認証局から受け取る(たいていは事前にインストールされている)ということです。

クライアント証明書とルート証明書のイメージ

仮に「あなた」が電子証明書と一緒に認証局の公開鍵を送付したのでは、電子証明書も「あなた」のデジタル署名もどちらも差し替えられて「なりすまし」の可能性がありますが、認証局の公開鍵は事前にインストールされているものであり、改ざんやなりすましが行われていないことが確信できるのです。

そして、最後に「あなた」のデジタル署名を認証して問題がなければ、「あなた」のメールは途中で「なりすまし」も「改ざん」もされていないことになります。(デジタル署名は秘密鍵で暗号化するので「盗聴」される可能性はあります)

以上が、前項のデジタル署名に電子証明書を加えた暗号通信の流れになります。

あなたの流れ

認証局に電子証明書(あなたの公開鍵の証明書)の発行を申請する。

電子証明書を入手。(電子証明書には「あなた」の公開鍵と認証局のデジタル署名が含まれる)

「花子さん」にメールを送信。

電子証明書を添付した通信のイメージ

「花子さん」の流れ

「あなた」の電子証明書の認証局のデジタル署名を検証する。

事前にインストールされている認証局の自己署名証明書(ルート証明書)から公開鍵を取り出す。

メッセージダイジェストが一致すれば、「あなた」の電子証明書は認証局が発行したもので間違いなく、改ざんもされていないことが確定する。また、その電子証明書が証明している「あなた」の公開鍵は「あなた」のもので間違いないことが確定する。

「あなた」のデジタル署名を検証する。

「あなた」の電子証明書から「あなた」の公開鍵を取り出す。

メッセージダイジェストが一致すれば、送信者が「あなた」で間違いなく、改ざんもされていないことが確定する。

「あなた」の公開鍵で本当の暗号文を送る。

完全に安全な通信を行ためにはこれだけの行程が必要になります。実際にはメーラーやブラウザが自動的に処理してくれますが、認証局(CA)に公開鍵を保証してもらうことで初めて安全な通信を行うことができるようになるのです。

このように公開鍵暗号方式で安全な通信を行うための仕組みを、

PKI(ピーケーアイ)

と言います。

PKIは「Public Key Infrastructure」の略で「公開鍵暗号基盤」とも呼ばれています。つまり、PKIとは公開鍵暗号方式による通信を行うためのインフラ(基盤・環境)を意味しています。

では、このPKIによって8つの疑問はすべて解決できるでしょうか?

しかしその前にもうひとつ解決しなければならない疑問があります。それは、

信用できる認証局の基準は何か、認証局が信用できると信じる根拠は何か

ということです。

実際のところ、電子証明書は誰でも作成することができるのです。事前にインストールされていない電子証明書を受け取った場合、何をもってその認証局を信用するのでしょうか?

次項では認証局についてもう少し詳しく学習し、8つの疑問について考察したいと思います。

更新履歴

2008年11月24日
ページを公開。
2009年5月27日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2018年1月30日
ページをSSL化によりHTTPSに対応。
2023年3月19日
内容修正。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

情報セキュリティ入門:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060214/229302/?ST=security
電子証明書とPKI入門
http://www.verisign.co.jp/basic/pki/index.html
公的個人認証サービスによる電子証明書
https://www.soumu.go.jp/kojinbango_card/kojinninshou-01.html
電子証明書を選ぶ5つのポイント
http://sharo.jp/e-gov-14/
X.509 証明書
https://learn.microsoft.com/ja-jp/azure/iot-hub/reference-x509-certificates#certificate-extensions