Online Certificate Status Protocol
Online Certificate Status Protocol(OCSP)は、X.509公開鍵証明書の失効状態を取得するための通信プロトコルである。RFC 6960 で規定されており、インターネット標準トラック上にある。証明書失効リスト (CRL) の代替として策定されたもので、CRLを公開鍵基盤 (PKI) で使う際の問題に対応している。OCSP のメッセージは ASN.1 で符号化されており、主に HTTP を使ってやり取りされる。要求/応答型メッセージであることから、OCSPのサーバを「OCSPレスポンダ」と呼ぶ。
CRL との比較
編集- OCSP応答は典型的なCRLよりも情報が少ないため、OCSPは証明書の失効状態をよりタイムリーに提供できる。しかし、クライアントが応答をキャッシュしないと、要求回数の増大によって利点が生かせなくなる可能性がある。
- OCSPを使えば、クライアントがCRLを構文解析する必要がなくなり、クライアント側の複雑さが低減される。しかし、これもキャッシュを保持する必要性によって相殺される。実際には、X.509 関連の機能をアプリケーションが独自に実装することは滅多になく、サードパーティ製ライブラリを使うため、このような考慮はあまり意味がない。
- CRL はクレジットカード会社の「悪質顧客リスト」のようなものと考えられるかもしれない。つまり、知らせる必要のない情報まで公開しているとも考えられる。
- OCSPは特定のネットワークホストが特定の時間に特定の証明書を使っただろうことをレスポンダに明らかにする。OCSPは暗号化を強制していないので、この情報は第三者に横取りされるかもしれない。
基本的なPKI実装
編集- アリスとボブは、認証局 (CA) であるイバンの発行した公開鍵証明書を持っている。
- アリスはボブと取引したいので、彼に自身の公開鍵証明書を送る。
- ボブはアリスの秘密鍵が失効していないかを確認するため、アリスの公開鍵のメッセージダイジェストを含むOCSP要求を作成し、イバンに送る。
- OCSPレスポンダであるイバンはアリスの証明書の失効状態をCAデータベースで参照する。アリスの秘密鍵が失効しているかどうかについて信頼できる記録があるのは、CAデータベースだけである。
- イバンはアリスの証明書の有効性を確認すると、デジタル署名付きのOCSP応答をボブに返す。
- ボブは応答の署名を検証し(ボブはイバンの公開鍵を持っており、イバンは信頼できるレスポンダである)、それが最新のものであることを確認する。
- ボブはアリスとの取引を実行する。
プロトコルの詳細
編集OCSPレスポンダは要求の中で指定された証明書について「有効」、「失効」、「不明」のいずれかの応答を署名付きで返す。要求を処理できない場合は、エラーコードを返すこともある。
OCSP要求のフォーマットには付加的な拡張がある。これにより、特定のPKI方式にカスタマイズすることが可能である。
OCSPは反射攻撃に対して耐性がある。署名された「有効」な応答を悪意ある第三者が横取りした場合、その証明書が失効になった後でクライアントに対してそれを使う攻撃である。OCSPでは、Nonce(使い捨ての数字)を要求に含め、対応する応答に同じものを含めなければならないとすることで対処している。
しかし、反射攻撃は1つの可能性ではあるが、認証システムでは主要な脅威ではない。これはその脆弱性を利用した攻撃の手順に起因する。攻撃者は以下のことをしなければならない。
- トラフィックを監視して、その後にそのトラフィックに応答する。
- 証明書の状態を監視して、それが変更されたことを確認する。
- 応答の妥当な時間内に証明書の状態を要求するトランザクションを実施する。
失効した証明書が有効になることは滅多にないので(停止されているだけならば可能性はある)、攻撃者は有効な応答を捉え、証明書が失効するのを待ち、それを使う必要がある。
OCSPは複数レベルのCAをサポートできる。OCSP要求をレスポンダ間で連鎖させ、発行元のCAがその証明書を発行するのに適切かどうかを調べることができる。レスポンダは自身のOCSP要求を使ってルートCAに対して相互の妥当性を保証する。
OCSPレスポンダは、Delegated Path Validation (DPV) サーバから失効情報を要求されることがある。OCSP自身は供給された証明書についてDPVを実行することはない。
ブラウザでのサポート状況
編集- Internet Explorer は、Windows Vista(XPではない)上のInternet Explorer 7で OCSP チェックのサポートを開始した。
- Firefox は全バージョンで OCSP チェックをサポートしている。Firefox 3 では既定でチェックが有効となる。
- Mac OS X 上の Safari は OCSP チェックをサポートしている。
- Opera の最新[いつ?]版は OCSP チェックをサポートしている。
- Google Chrome は待ち時間やプライバシーの問題を理由に、2012年に OCSP チェックをデフォルトでは無効にした[1][2]。ただし、OCSP staplingは引き続き有効である[3]。
脚注
編集- ^ https://www.imperialviolet.org/2012/02/05/crlsets.html
- ^ “Google Chrome、SSL証明書のオンライン失効チェックを無効に”. ITmedia (2012年2月9日). 2020年12月4日閲覧。
- ^ “Issue 361230: SSL Certificate Revocation not enabled by default” (英語) (2014年4月11日). 2020年12月4日閲覧。 “If you mean OCSP stapling, then Chrome always enables OCSP stapling on platforms that support it. (Windows, Linux, ChromeOS)”