IT用語/PKI

PKI(Public Key Infrastructure:公開鍵基盤)(2014-09-14、更新:2016-12-01)



概要

Webブラウザでhttps接続するときに
「このWeb サイトのセキュリティ証明書には問題があります」
みたいな文言を見た事ありませんか?
これは、https(SSL/TLSで暗号化接続)するために使う公開鍵は取得できたものの、
その公開鍵自体の身元が信用できない、というケースになります。
逆に、問題の無い公開鍵というのは認証局(後述)に登録されていて、
有名な認証局/公開鍵証明書(後述)のリストは予めWebブラウザに登録されている、
という仕組みになります。

このような公開鍵の正当性を証明する一連のシステムをPKI(公開鍵基盤)といいます。
PKIは主にWebを見るためのHTTPS(SSL/TLS)、
安全なメールを送信するためのS/MIME や 電子署名、
インターネット上で鍵交換するための IKE 等で使われています。

認証局(CA:Certification Authority)

後述の公開鍵証明書を発行する機関。
証明を受けたい人・組織は、予め認証局に自分の公開鍵を預けて、
その公開鍵の正当性を証明して貰えるように準備しておきます。

信頼できる第三者機関(TTP*1:Trusted Third Party)

名前の通り。認証局は信頼できる機関でなければ意味がないよ、ということ。
また、認証局が他の認証局を証明する*2場合があります。
(親子関係の階造モデルだったり、対等な相互認証モデルだったり)。

EV証明書(Extended Validation証明書)

CA自体が信頼できなくなったので、それをどうにかしましょうという仕組み。
(・・・ひどい話だ [sad]
CAが公開鍵証明書を発行するにあたって、
まともな審査を通さずに信頼に値しないWebサイトにまで発行してしまうケースが増えてきたため、
CA/Browser Forum という組織が、より厳格かつ業界で統一された審査ガイドラインを定めました。
(例えば、Webサイト所有者の法的実在性の証明が必要、とか)
このガイドラインに沿って取得された証明書を EV証明書 と呼びます。

InternetExplorer7以降で、アドレスバーが緑に変わるのは、
このEV証明書を使っている(EV SSLで接続している)ことを示しています。

・・・と2014年時点にこの記事書いていましたが、
今(2016年現在)は大半のWebブラウザが対応していますね。

重要なのは、ユーザがWebブラウザを使ったときに
「信頼できるサイトが一目で分かる」仕組みになっているところです。

検証局(VA:Validation Authority)

公開鍵証明書の「失効状態」の問合せに応答する機関。
後述のCRLを使ったり、OCSPレスポンダのことだったり。

「失効状態」の説明は後述(「証明書失効リスト」にて)

公開鍵証明書

証明書の標準的な規格はITU-T(国際電気通信連合の一部門*3)が策定したX.509で、
以下のような内容になります。

  • 証明書のバージョン
  • 証明書のシリアル番号
  • デジタル署名のアルゴリズムID
  • 発行者
  • 有効期間
  • 主体者(証明される人)
    • 主体者の公開鍵情報 公開鍵アルゴリズムID
    • 主体者の公開鍵
  • 認証局自身のデジタル署名
    • 認証局の署名アルゴリズムID
    • 認証局の署名
  • あと、拡張フィールド

Windowsなどでも「証明書の詳細」みたいな項目から見れる内容ですが、
見たことあります?
ちなみに、ご覧の通り有効期間があるわけです。
(賞味期限過ぎても、ガッツで食べて後悔するケースもあるわけです)

証明書失効リスト(CRL:Certificate Revocation List)

指定した公開鍵証明書を、強制的に停止 or 失効させるためのリスト。

例えば証明を受けていた人・組織が
秘密鍵を盗難された疑いがあれば即時「停止」させて、
盗難が断定できたら「失効」させる、といった流れになります。*4
そのため、失効リストには即時性が求められるので、
比較的短い周期(1日くらい?)で発行されています。
発行元は認証局だったり検証局だったり、自社内で用意した信頼できるリポジトリだったり。

参考まで、同じような理由から、
認証局が信頼できなくなった場合に使われる
認証局失効リスト(ARL:Authority Revocation List)というのももあります。

OCSPレスポンダ

OCSP(Online Certificate Status Protocol)は、
公開鍵証明書の失効状態を取得するための通信プロトコルで、HTTP/HTTPS上でやりとりします。
そのOCSPの応答を返してくれるサーバがOCSPレスポンダです。
前述の証明書失効リスト(CRL)との違いは、

  • 扱う情報が少ない。(例:失効状態は分かるが、有効期限は分からない)
    つまり処理が早い。
    公開鍵証明書使用のたびに問い合わせたり、よりタイムリーな処理に向いている。
  • CRLの様に「リスト」では無いから、
    必要な証明書の情報だけが得られる。
    他の失効した(自分が知りたい情報とは無関係なサイトの)情報は知る必要が無いので。

なお、OCSPレスポンダ側の通信やアクセス履歴の扱いには注意が必要です。
誰が何時どこへアクセスしようとしたかという情報を、
OCSPレスポンダは把握していることになるので、その情報を盗まれないように。

オレオレ証明書(自己署名証明書)

PKIにはお金がかかります。
認証局(CA)と契約して公開鍵を預かって貰わねばならないからです。
通信相手が不特定多数の場合(一般企業で運用するようなケース)ならともかく、
もっとプライベートな使用でいちいち認証局と契約しませんよね。
そこで、公開鍵の持ち主が認証局も兼ねるケースが自己署名証明書になります。

さらにいえば、
認証局の自身の公開鍵の安全性は、誰が証明するのでしょうか?
他の認証局?ではその他の認証局の公開鍵は・・・。
と追って行ったときに行きつく先は ルート証明書 です。
ルート証明書は発行者と主体者が同一であるような、
つまり自分で発行した自己署名証明書です。

証明書の大元はオレオレ証明書なんですね。

GPKI(政府認証基盤)

Gは「Government」(せいふ)のG。
行政機関と国民とのやりとりで使うPKIで、
認証局(CA)が民間では無く政府で運営しているものになります。
とはいえ、行政機関と国民の双方向で認証する場合は、
「国民」側は民間の認証局を使う訳ですが。*5


*1 ん?TTP?似たような単語どこかで聞いたことが・・・。何でも略せばいいってもんじゃねぇぞ、っていつも思う
*2 信頼関係モデル(Trust Model)や信頼点(Trust Point)という概念です。
 実はこれが曲者で、
 認証局自体が攻撃されて信頼を失うという事件もありました。
 そうすると、その「お友達(認証局によって証明されていた、他の認証局)」も全滅です。
 PKIの基盤になっているのは暗号化等の技術ではなく、この「信頼の連鎖」なんですね。

*3 国際電気通信連合の、電気通信標準化部門。International Telecommunication Union Telecommunication Standardization Sector。
*4 組織側で重要なのは、この「鍵の運用ルール」が機能しているかです。CAは鍵は預かりますが、事故が起きたときに即時失効を依頼するのは組織側の責任、という事です。
*5 余談:行政機関側の認証局と民間認証局等との相互認証を仲介・効率化するのが、ブリッジ認証局。GPKIのサイトを見ると、検証局の役割もやるっぽい。

  最終更新のRSS