ポイント

●PKIでは,X.509証明書(公開鍵証明書)が使われている
●X.509証明書の中には,主体者の公開鍵が入っている
●X.509証明書は,認証局の署名がある。このときの署名アルゴリズムは証明書内に明記されている
●PKIの仕組みを利用するには,事前にCAの公開鍵(公開鍵証明書)を入手しておく必要がある

 PKI(Public Key Infrastructure)とは,公開鍵(公開鍵証明書)を第三者が保証することで安全にやり取りするための基盤のことです。なぜ2者間認証ではなく3者間認証でやり取りをするのか,という点については「PKI(前編)」で解説しましたので,まだ読んでいない方は目を通しておいてください。後編では,PKIの構成と仕組み,公開鍵証明書の標準であるX.509証明書,およびPKIがうまく働くわけを学んで行きます。

PKIの登場人物と基本的なしくみ

 最初にPKIに出てくる用語を確認しておきましょう。

  • CA(certification authority)--- 認証局,または証明書発行局などと呼ばれます。PKIを利用する全員が信頼している機関です。PKIの規模が大きくなると,RA(registration authority--- 登録局)などを設け,CAの機能を分けて運用することもあります
  • CRL(certificate revocation list)--- 失効証明書リスト,または廃棄証明書リストのことです。通常,証明書は有効期限が設けられています。しかし,なりすましなどの不正利用が発覚した場合や,公開鍵証明書に含まれている公開鍵のペアである個人鍵を紛失した場合など,何らかの理由により有効期限内に証明書を無効にしなければならないときにCAはCRLに無効とする証明書のシリアルナンバーを登録します。利用者は,CRLを確認することによって,入手した証明書が無効になっていないか確認できます
  • リポジトリ--- PKIを運用するのに必要な情報を一元管理し,利用者に公開するためのデータベースのことです。CRLもここに登録されています

 続いて,サーバーAとBさんが公開鍵をやり取りするために,サーバーAの証明書を取得する流れを説明します(図1)。前提条件としてサーバーAもBさんも,CAのことを信頼しているものとします。

図1 サーバーAが証明書をCAから取得してBさんに送付する

(1)サーバーAは個人鍵と公開鍵のペアを作成します
(2)サーバーAは(1)で作った公開鍵をCAに送って証明を依頼します
(3)CAは自分の(認証局の)個人鍵を使って証明書に署名し,これを発行します
(4)サーバーAはBさんの要求に応じて証明書を送付します

PKIを実装するために必要なX.509証明書

 ところで,誰もがこの仕組みを利用できるようにするために,先ほど出てきた「証明書」のフォーマットが定められています。これがX.509証明書と呼ばれるもので,公開鍵証明書の標準として広く使われています。X.509証明書にはバージョンがいくつかあり,オプション領域などのパラメータが若干異なっています。この連載では,PKIのしくみを理解するのに必要なところに焦点を当てて解説していきます。パラメータの詳細を知りたい方は,RFC3280などを参照してください。

 それでは,サーバーAが認証局BP_Security(仮名)に発行してもらったX.509証明書を見てみます(図2)。パラメータそれぞれは,「ああ,こんなものがあるんだ」という具合に見ていただければ大丈夫です。ポイントは3点あります。このあとでPKIの仕組みを理解する際に必要になりますので,しっかり確認しておいてください。

図2 X.509証明書の内容

ポイント1:証明書の中に公開鍵が入っていること
 パラメータの(8)に主体者(サーバーA)の公開鍵が含まれています。つまり,「サーバーAのX.509証明書を送ってもらう」ということは,「サーバーAの公開鍵を送ってもらう」と同義になります。

ポイント2:署名値を作るためのアルゴリズムが明記されていること
 パラメータの(9)に署名作成のためのハッシュ関数と公開鍵暗号方式の二つのアルゴリズムが明記されています。つまり,署名値はデジタル署名の仕組みにより作られています。なお,(9)と(3)は同じものを記述します。

ポイント3:署名値の作り方が決まっていること
 図2の場合,(1)~(8)までを,(9)に記載されているハッシュ関数(ここではSHA1)を使用してハッシュ値を算出します。そして,そのハッシュ値に対して,同じく(9)に書かれている公開鍵暗号方式(ここではRSA)を使ってCAの個人鍵で暗号化します。これが署名値になります。