PKI
PKI(Public Key Infrastructure)とは、公開鍵基盤。公開鍵を利用したセキュリティの枠組み。
PKIによって、機密性、完全性、真正性、否認防止性を保つことが可能になる。
PKIの概要
公開鍵暗号技術はアルゴリズムが公開されているため、誰でも公開鍵と秘密鍵を生成可能である。公開鍵暗号技術による認証、署名は、公開鍵や秘密鍵の正当性が保証されていることが重要
そのため、認証基盤をしっかり構築することが必要となる
【認証基盤の構築】
PKIを構成する要素
- 認証局の設置
- 電子証明書の発行と配布
また、証明書を運用するのに必要な技術がデジタル署名である。
デジタル署名
デジタル署名とは
デジタル署名は、文字通りデジタルな署名であり、ITの世界の署名である。 機能や目的も一般的な全く同じ。
デジタル署名の目的は
- 改ざん防止(完全性)
- なりすまし防止(真正性)
- 否認防止
しかし、それが保証されるのは、ルート証明書が正しいときだけ
PKIのセキュリティが保たれるのは、「公開鍵が正しい」ときだけ
電子証明書は何を証明するもの
情報処理技術者試験やインターネットにおける"証明書"とは、"公開鍵証明書"を意味する。インターネットの世界で安全な通信をするには公開鍵が重要な役割を持つ。公開鍵の真正性と完全性を保証するために公開鍵証明書が必要である。
XMLデジタル署名
XMLデジタル署名の特徴: | |
XML文書中の、指定したエレメントに対して署名することができる。 | |
XML署名において署名対象であるオブジェクトの参照を指定する表記形式: | |
URIの形式 |
デジタル署名の検証方法
- 送信者の秘密鍵を使って暗号化することで、送信者本人であることを証明する
- 送信後のメッセージダイジェストとメッセージ認証符号(送信前のメッセージダイジェスト)を比較することで、データが改ざんされていないことを保証する
通信のしくみ
デジタル署名の生成(Aさん)
- 公開鍵、秘密鍵を生成
- 公開鍵を公開する
- 署名する電子データからハッシュ関数を使いメッセージダイジェストを生成
- 生成したメッセージダイジェストを自分の秘密鍵で暗号化、署名を生成する
- 電子データと生成した署名をBさんに送信
デジタル署名の生成(Bさん)
- 受信した電子データからハッシュ関数を使いメッセージダイジェストを生成
- 受信した署名を、Aさんの公開鍵で復号、メッセージダイジェストを生成
- (6)と(7)のメッセージダイジェストを比較し、完全に一致することを確認する
署名の検証時には、その署名のデータを署名者の公開鍵で復号して元のデータと比較し、一致すれば元のデータが偽造や改ざんされていないことが確認できる
デジタル証明書(電子証明書)
証明書の種類
ルート(CA)証明書
認証局であるCAの公開鍵を証明する証明書
デジタル証明書を発行する認証局(CA)が、その正当性を証明するために自ら署名して発行するデジタル証明書
サーバ証明書やクライアント証明書のデジタル署名を照合するときに、CAの公開鍵が必要になる
サーバ証明書
- サーバの公開鍵を証明する証明書
- サーバが正当であることを証明するサーバ証明書
クライアント証明書
- クライアント(PC)の公開鍵を証明する証明書
- クライアント(PC)が正当であることを証明するサーバ証明書
デジタル証明書の概要
証明書の基本的な構造
- 証明書
- デジタル署名
※証明書はX.509に準拠したフォーマットになっている。
X.509
IETFのPKI(X.509)と証明書失効リストプロファイル(CRL)のこと
証明書の構造
X.509 v3 デジタル証明書の構造は、以下のとおり。
パラメータ | 説明 | 具体例 | |
---|---|---|---|
1 | 証明書バージョン | X.509証明書のバージョン | V5 |
2 | シリアル番号 | CAが一意に発行した番号 | 20オクテットまでの数値 |
3 | 署名アルゴリズム | CAがこの証明書を発行するときに 利用したアルゴリズム | SHA5 RSA |
4 | 発行者 | CAの名前 | BP Security |
5 | 有効期間 | 有効期間 | 開始及び満了の日付・時刻 |
6 | サブジェクト | 主体者(照明を受ける人)の名前 | Server X |
7 | 公開鍵アルゴリズム | 主体者の公開鍵アルゴリズム | RSA |
8 | 公開鍵 | 主体者の公開鍵 | Server Xの公開鍵【※1】 |
9 | 署名アルゴリズム | 3と同じものを記述 | SHA5 RSA【※2】 |
10 | 署名値 | CAがこの証明書に署名した値 | 【※3】 |
パラメータの8に主体者(サーバA)の公開鍵が含まれている。故に「サーバAのX.509証明書を送ってもらう」ということは、「サーバAの公開鍵を送ってもらう」と同義になる。
【※2】署名値を作るためのアルゴリズムが明記されている
パラメータの9に署名作成のためのハッシュ関数と公開鍵暗号方式の二つのアルゴリズムが明記される。(署名値はデジタル署名の仕組みにより作られている)。
なお、3と9は同じものを記述する。
【※3】署名値の作り方が決まっている
上記の場合、1〜8までを、9に記載されているハッシュ関数(ここではSHA5)を使用してハッシュ値を算出、そのハッシュ値に対して、同じく9に書かれている公開鍵暗号方式(ここではRSA)を使ってCAの個人鍵で暗号化する。これが署名値になる。
※注意※
- よく誤解されるのが、1のバージョン
SSLにもバージョンというのがあって、ここを見てSSLの3.0と言う人もいるが、実際にはSSLのバージョンではなく、X.509のバージョン情報 - SSLサーバ証明書には、SSLとかTLSのバージョン情報は含まれない。
電子証明書の署名
電子証明書は、元の文書である証明書部分にデジタル署名を付与したもの
では、署名をするのは誰か
証明書の種類 | デジタル署名をする人 | 備考 |
---|---|---|
クライアント証明書 | CA | |
サーバ証明書 | CA | |
CA証明書 | CA | 自己署名 |
※デジタル署名の電子商取引などの場合は、認証局であるCAではなく、署名者本人が署名する(注意)
CAのデジタル署名
CAのデジタル署名とは、CAの秘密鍵で証明書のダイジェストを暗号化したもの。
CRL(Certificate Revocation List:失効リスト)
- 証明書(Certificate)の失効(Revocation)のリスト(List)
- 有効期限内に失効したデジタル証明書のシリアル番号のリスト
- 有効期限内の公開鍵証明書のうち破棄されている公開鍵証明書と破棄された日時の対応を提示
※有効期限が切れたものは、CRLに登録しなくても、有効期限をチェックすれば無効かどうかが分かる。
デジタル証明書による認証基盤構成要素
認証局(CA:Certification Authority)
【役割】
- 公開鍵に対するデジタル証明書を発行する
- CRL(証明書失効リスト)を発行する
- CPS(認証局運用規定)を公開する
- 発行したデジタル証明書を検証するためのCA自身のデジタル証明書を公開する
- デジタル証明書に署名するためのCA自身の秘密鍵を厳重に管理する
CAは、「上位CAが下位CAを認証して証明書を発行する」という階層構造になっている
最上位のCAはルートCAと呼ばれる
証明書に正当性を検証する場合は、該当証明書を発行したCAからルートCAまでの経路(証明のパス)を順にたどり、経路上のすべてのCAの正当性を確認する必要がある

RA(登録局)
RA(登録局)では、証明書発行の受付をする
電子証明書申請者の本人性を審査・確認し、主として登録業務を行う機関。RAは本人性(間違いなく本人であること)に責任を負うが、証明書に署名したり、証明書を発行したりはしない。
【役割】
- 証明書発行や失効などの資格審査の実施
- デジタル証明書利用者情報の登録
- 鍵の一元管理
- 公開鍵を公開するためのディレクトリへの保管を実施
IA(発行局)
- IA(発行局)にて証明書の発行(および失効)を行う
- 物理的に別サーバであることもあれば、同一サーバであることもある。
証明書有効性検証局(VA:Validation Authority)
デジタル証明書の失効状態についての問合せに応答すること
- デジタル証明書の失効情報の集中管理
- CAの公開鍵での署名を検証
- デジタル証明書内に記載された有効期限の確認
- CRLの確認
受け取った電子証明書が有効かどうかは以下の3つで確認する。
- 署名値の照合
デジタル署名の照合
「証明書をハッシュしたもの」と「デジタル署名をCAの公開鍵で復号したもの」が一致するか。これにより、公開鍵が本人のものであること(真正性)と改ざんされていないこと(完全性)が確認できる
- 証明書の有効期限の確認
証明書が有効期限内であるか。
- 証明書の失効確認
「失効情報の確認」「証明書の失効確認」
CRL(Certificate Revocation List:失効リスト)を照合し、CRLに登録されていないか
またはOCSP(Online Certificate Status Protocol)プロトコルを使った失効確認を行う。OCSPの方が、リアルタイム性が高いが、OCSPレスポンダと呼ばれるサーバを立て、なおかつ事前にCRLを取り込んでおかなくてはいけない。仕組みが整っていない場合が多い。
ディレクトリ(リポジトリ)
PKIを運用するのに必要な情報を一元管理し,利用者に公開するためのデータベースのこと
CRLもここに登録される
OCSP(Online Certificate Status Protocol)
デジタル証明書の失効情報(有効性)をリアルタイムで問い合わせる(確認する)仕組み
OCSPを実装したサーバをOCSPレスポンダ(OCSPサーバ)といい、CAやVAが運営する
クライアントはOCSPレスポンダに問い合わせることにより、自力でCRLを取得したり紹介したりする手間が省ける
【OCSPの限界】
- OCSPレスポンスは要求のあったデジタル証明書の失効情報のみをチェックし、信頼関係(有効期間、署名など)などについてはチェックしない。
- 事前にCRLを取り込んでおかなくてはいけない。
- またネットワーク上のすべてのCAが発行しているCRLを保持しているわけではないので、ユーザが自主的に複数のOCSPレスポンスに問い合わせを行う必要がある
HTTPSでアクセスした場合、サーバ証明書に問題がある場合は、セキュリティ警告が表示される
このような証明書の有効性の確認を、ブラウザが自動で実施している
【証明書の警告の詳細説明】
1)「信頼されたルート証明機関」に登録されたCAから発行されているか
2)有効期限内であるか
3)証明書のCNとアクセスするURLが一致するか
- クライアント証明書のインストール方法
専用Webサイトからダウンロードしてインストールしたり、郵送等で送られた証明書をダブルクリックしてインストールすることができる
- 格納場所
インターネットエクスプローラの場合、「ツール」「インターネットオプション」「コンテンツ」「証明書」にて「個人」のタグに入る
また、SSLで使用する個人認証用のデジタル証明書は、ICカードなどに格納できるので、格納場所を特定のPCに限定する必要はない
- 証明書のCSR(Certificate Signing Request)について
証明書の署名要求
実際には証明書を発行してもらうが、証明書の内容は自分で決める
 

