【PKI 基礎】デジタル証明書とは

  • 2020年6月6日
  • 2021年1月3日
  • PKI
PKI

証明書とは

証明書とは、配布する公開鍵とその持ち主の正当性を保証するための技術です。

前回デジタル署名の回で説明した通り、デジタル署名など様々な技術で公開鍵暗号化方式は利用されていますが、公開鍵暗号化方式を利用するためには、公開鍵の正当性を保証する技術が必要となります。

例えば、なつめぐさんがぱせりさんの公開鍵を入手したいと考えているとします。

その時、悪意のある第三者せろりがなりすましにより公開鍵をインターネット上に公開している場合、どの公開鍵が本当にぱせりさんの公開鍵なのかわかりません。

この問題を解決する技術が証明書であり、公開鍵を権威のある機関に保証してもらいます。

証明書には、以下の情報が含まれています。

証明書 = 公開鍵 + 各種情報(持ち主の名前、発行者名など) + デジタル署名

証明書を発行するためには、自身と身元情報と公開鍵を申込書に記載して権威のある機関に証明書の発行要求を申請します。

権威のある機関は証明書の発行要求の申請を受けた取ったら、申し込みの身元調査を行い証明書を発行しても問題ないか審査します。

審査に通ったら、申込書に記載されている身元情報と公開鍵が記載された証明書を作成し、その証明書が公的な機関が発行してデータが改ざんされていないことを証明するためにデジタル署名を付与します。

デジタル署名は、証明書のデータ(身元情報と公開鍵)を元データとしてハッシュ値を算出し、そのハッシュ値を公的な機関の秘密鍵を利用して暗号化したデータとなります。

そうすることで、証明書に記載されたデータ(身元情報と公開鍵)が公的な機関が作成したことを証明することができます。

公的な機関では独自のポリシーに従って、証明書を要求してくる人や組織・団体の審査も行っているため、公的な証明機関が発行した証明書を保持していれば、身元の正当性や、証明書に付与されている公開鍵の正当性は保証されていることになります。

この証明書を発行する公的な機関は、証明機関と呼ばれます。(その他、認証局や “CA(Certificate Authority の略)” 等の呼ばれ方もあります)

文章だけだとイメージにしにくいと思うので、証明機関に証明書を発行してもらうまでの流れや、公開鍵の正当性を確認する流れを図でみてみましょう。

 

A. 証明書の発行までの流れ

1.キーペアを生成して、公開鍵を用意します。

2. CSR (証明書署名要求) を証明機関に提出します。

CSR は証明機関に証明書を要求する時に提出するデータです。CSR には証明書に記載する登録情報や公開鍵などの情報が含まれています。

CSR とは、”証明書の申込書” のようなものです。

3.証明書の発行依頼者の審査

証明機関は CSR を受け取ったら、発行要求を行ってきた依頼者の身元調査を行い、証明書を発行して問題ないか人もしくは組織なのかの審査を行います。

どのような審査を行うかは証明機関ごとのポリシーによって異なります。

 

4. CSRから証明書を発行

依頼者の身元調査の審査に通ったら、CSR に記載されている証明書の登録情報と公開鍵をもとに証明書を発行します。

証明書のデータの正当性を示すために、証明機関は証明書にデジタル署名を付与します。

証明書に付与するデジタル署名は、証明書のデータを元にハッシュ値を算出し、証明機関の秘密鍵を利用してデジタル署名を生成します。

 

B. 証明書の検証の流れ

発行された証明書は、インターネット上で通信を行う時に自身の正当性を証明する身分証明として利用できます。

通信相手に身分証明として証明書を提示しますが、相手は証明書を受け取ったら、本当に信頼できる証明機関から発行される証明書であるのかを検証します。

1. 証明機関の公開鍵で、デジタル署名を復号しハッシュ値を得ます。
証明書の検証を行う際、証明書の公開鍵が必要となります。
証明機関の公開鍵も証明書として一般公開しており、これを CA 証明書と呼びます。
CA 証明書の公開鍵を使って、提示された証明書のデジタル署名を復号してハッシュ値を得ます。

 

2. 証明書データのハッシュ値を算出し、デジタル署名のハッシュ値と一致するか確認します。
証明書データからハッシュ値を算出して、デジタル署名のハッシュ値と比較して一致していれば、その証明書の正当性
(CA 証明書をもつ証明機関が発行した証明書であること) を確認することができます。

ここまで説明してきた通り、証明書とは公開鍵を権威のある機関に正当性を保証するためのものです。

証明機関の公開鍵も証明書として正当性を保証していますが、一般の人や組織、団体の証明書のデジタル署名の検証に使用する証明機関の CA 証明書は、もともと検証をするクライアントのコンピューターに信頼される CA 証明書としてインストールされているものを利用します。

インターネット上のどこかに転がっている証明書を、信頼できる CA 証明書として利用することはありません。

クライアントへの CA 証明書のインストールは、システム管理者が行ったり、OS 標準の CA 証明書を管理する機能(1)により自動で行われています。

そのため、CA 証明書については、正当な証明機関の CA 証明書のみがインストールされるような仕組みが出来上がっています。

CA 証明書のみを厳密に管理する仕組みさえあれば、インターネット上で入手できる一般の人や組織、団体の証明書も信頼して問題のないものなのかどうかの判断は、都度、証明書を検証して判断することができるようになります。

 

(1) 補足:

Windows OS では、ルート証明機関とよばれる最上位の権威の証明機関の CA 証明書(ルート証明書)を管理する機能があります。

この機能のことを、ルート証明書更新プログラムと呼びます。

ルート証明書更新プログラムでは、Microsoft が審査を行い信頼しても問題ないと判断されたサードパーティーのルート証明機関(Verisign Symantec など) のルート証明書を配布しているプログラムです。

Windows OS で稼働しているコンピューターを利用している場合、必要があれば都度、ルート証明書更新プログラムの機能が動作して、ルート証明書を自動でインストールしています。

 

結局、証明書って何?

証明書は公開鍵暗号化方式を利用するにあたって、自分のもっている公開鍵の正当性を権威のある機関に証明してもらったものとなります。

証明書には公開鍵や身元情報、公開鍵暗号化方式のアルゴリズムの種類などの序不応が記載されており、その情報が改ざんされていないことを示すデジタル署名が付与されています。

デジタル署名により証明書に含まれる公開鍵や身元情報などの各データが正当であることを示しているので、証明書は利用用途の観点から見ると自分の身分証明書であり、技術的な観点から見ると自分の公開鍵を権威者から証明されたものとなります。

技術的な観点から証明書がどのようなものか理解できると、証明書の発行までの各プロセスを覚えやすくなります。

証明書には大きく分けて 2 つ種類があり、一つはユーザー()が自身の正当性を証明するためのユーザー証明書、もう一つはコンピューターが自身の正当性を証明するためのコンピューター証明書となります。

 

証明書ってどのようなシナリオで使うの?

ここまで証明書の技術的な観点での説明をしてきましたが、実際にはどのようなシナリオで利用されるのかイメージしにくいと思います。

利用用途の観点から見ると証明書は ”自分の身分証明書” となり、様々なシナリオにおいて自身の正当性を証明するために利用されます。

証明書を提示した時、受け取った相手はその証明書が自身が信頼している証明機関が発行した証明書であるかをチェックします。

証明書を利用する一般的なシナリオとして、以下の 2 つの例を見ていきましょう。

 

ユーザーの認証を行う時に証明書を提示する

ネット銀行や amazon での買い物など、個人情報に関連するシステムをインターネット上で利用するとき、ユーザー名やパスワードを入力して個人アカウントでログオンするという経験をしたことがあるかと思います。

個人アカウントにログオンする際に入力するユーザー名とパスワードは本人しか知らないということを前提としているため、それを正しく入力できれば本人であることが確認できたことになります。ユーザーの正当性を確認することをユーザー認証といいます。

証明書は自身の身分証明書となるという話をしましたが、ユーザー認証の際にユーザー名とパスワードを入力する代わりに証明書を提示することがあります。

コンピューターの正当性を判断する時に証明書を検証する

またネット銀行や amazon などのインターネット ショッピング サイトを利用するシナリオを考えてみましょう。

何気なくインターネット上のサイトを利用している場合、接続しているサイトが本当に普段自分が利用しているネット銀行や amazon のサイトであるかを意識することは少ないでしょう。

ただ、インターネットは不特定多数の人が利用できるオープンなネットワークであるため、悪意のある第三者が amazon のサイトと見た目が全く同じサイトを偽造したとします。

ユーザーは amazon のサイトにアクセスした時に、このサイトが本当に amazon のサイトなのかを考えることはせず、サイトの見た目が同じであれば正当なサイトとみなして利用してしまう場合がほとんどです。

(サイトの見た目が公式サイトと全く同じ偽造されたサイトのことをフィッシング サイトと呼びます。)

もし、偽造された amazon サイトであることにも関わらず使用してしまうと、悪意のある第三者にクレジット情報を送信してしまい、不正に情報を盗まれてしまう恐れがあります。

インターネット上にある各 Web サイトでは、自身のサイトの正当性を証明するためにコンピューター証明書を利用します。

例えば、amazon の公式サイトであることを証明するために、amazon.co.jp のように公式のドメイン名で証明書を取得しサイト上で公開します。

ユーザーが amazon にサクセスした際、Chrome IEFirefox のような Web ブラウザが、サーバー証明書を検証し amazon.co.jp の証明書が、公的な証明機関から発行されたものであるかの検証を行います。

検証の結果、amazon.co.jp の証明書が正当な証明書であれば、そのまま amazon サイトを表示しますが、証明書が何らかの問題が確認できた場合はユーザーに警告画面を表示する動作となります。

このように、ネット銀行やインターネット ショッピング サイトを安全に利用できている技術的な背景に、この証明書という技術が深く関わっています。

 

Windows で証明書を見てみよう

それでは、デジタル証明書をイメージするために、実際にデジタル証明書はどのようなものなのか見てみましょう!

Windows OS の端末をお持ちの方は、コンピューター内で利用する証明書を一括で管理している証明書ストアを開いて、その中に登録されている証明書を見てみましょう。

証明書ストアに登録されている証明書は、OS にて利用されているものとなりますので、間違って削除しないように気を付けてください。

証明書ストアの開き方

1) Windows キーを押しながら、R キーを押し [ファイル名を指定して実行] を開きます。

2) certmgr.msc と入力して、[OK] をクリックします。

3) 画面の左ペインより、[証明書 – 現在のユーザー] – [個人] – [証明書] を選択し、登録されている証明書を一つダブルクリックして開いてみましょう。

※もし [個人] のストアの中に証明書が登録されていない場合は、[信頼されたルート証明機関] や [中間証明機関] など、

他のストアに登録されている証明書を見てみましょう。

これが証明書と呼ばれるものです。

[詳細] のタブを選択すると、証明書の登録情報を確認できます。

現時点では証明書の各項目の詳細までを理解する必要はありませんが、証明書の持ち主の名前を示すサブジェクトや有効期間、また公開鍵のデータ (公開鍵そのものです) などの情報が含まれていることが確認できます。