PKIとは何か、その仕組みと公開鍵基盤における証明書と認証局についてご紹介します。
SSL (Secure Sockets Layer)は、Netscape社によって提唱された暗号化プロトコルで、ある。セキュリティ付きソケット層とも呼ばれる。クライアント・サーバー相互間の認証を行い、クライアント・サーバー間で認証され暗号化された接続の確立を可能にする。 TCP/IP上で、かつHTTP、LDAP、IMAP、NNTP、その他上位のネットワークプロトコルの下で動く。
このプロトコルを使い、Netscape Navigator等のWWWブラウザでは"http"の暗号化通信を実現している。なお、Navigatorで暗号通信を行う場合は"http://"の表記ではなく"https://"の表記によってプロトコル指定を行う。
SSLの機能は、暗号通信、認証通信、データ完全性の機能の3つに分けられる。認証は、RSAなどの公開鍵方式で行い、通信データの暗号化は共有鍵方式で行われる。データの完全性は、データのダイジェスト(フィンガープリント)を取る事で得られるMAC(Massage Authentication Codes)と呼ばれる数値でチェックする事で選られる。
以下に暗号化通信の確立までの、サーバとクライアント間のSSLシーケンスを示す。
SSL はOSI参照モデルでのセッション層で機能するように作られている。プロセス間通信などで使われるSocketに対し暗号通信、認証通信、データ完全性の機能を追加したものである。そのため、"http"の他に"ftp"や"telnet"など、ポートを新たに割り付ければ、どのアプリケーションでも透過的に暗号通信、認証通信等を利用する事ができる。
SSL内でのプロトコルの区分としては
の2種類に大別する事ができる。
これらのプロトコルを利用する上で、SSLではセッションとコネクションという2種類の接続状態を持っている。セッションでは、通信に用いるデータ圧縮や暗号のアルゴリズムの種類などを保持し、その上で複数のコネクションを利用する事が可能になる。コネクションは、暗号化や復号化の鍵など、実際の通信で使用するデータを保持している。
証明機関 (CA: Certificate Authority) とは、暗号化通信などで使用する証明書を発行する機関です。デジタル証明書の発行、更新、一時停止、取消、管理を行います。認証局ともいいます。
第三者認証局。世界中で絶対的に信頼されるデジタル証明書というのはありませんが、一般的に信頼度の高い認証局ならば多数存在します。会社概要、業務形態、証明書の発行ポリシー等を公開し、証明書発行のシステムに不正侵入されない強固なシステムを持ち、火災等の災害時の対策、物理的な建物への侵入対策まで入念に設計された 第三者認証機関と呼ばれるのがそれです。日本国内では、日本ベリサイン社 やサイバートラスト・ジャパン社が代表的です。 それら信頼できる認証局の公開鍵は Netscape Communicator やInternet Exproler といったSSL対応ブラウザ、S/MIME 対応メーラーにはあらかじめ組み込まれており、送られてきたデジタル証明書の確認 (認証局の公開鍵を利用)がスムーズに行われるようになっています。
プライベート認証局。Public CAでは年間の契約料金が発生することや、証明書を持つ世界中の不特定多数のインターネットユーザがアクセスできては逆に不都合が発生する運用ポリシーを持つ場合もある為、企業で独自の認証局を立てる必要が出てきます。これを、プライベート認証局といいます。 プライベート認証局から発行されたデジタル証明書はそのままでは利用することができません。何故ならばブラウザの中にこの認証局の証明書(公開鍵)が入っていない為です。
サーバ認証の処理の流れを以下に示す。
サーバーとクライアント認証は、SSL接続にとって必須のものではなく、暗号化された情報を引き続き交換できるが、暗号化情報を正しい当事者に送っていることを両当事者に確約する。また、クライアントとサーバーは認証なしでも通信できるが、サーバーがアクセス制御に対するクライアント認証を要求すると、クライアントが有効な証明書を持たない場合、そのクライアントは拒否される。
クライアント認証は、以下のステップを通じて達成される。
クライアント認証を行う為には、予め証明書を取得しておかなければならない。証明書取得の流れを次に示す。
証明書は証明書リポジトリに格納され、各種アプリケーションから利用することができる。「リポジトリ」とは証明書の配布を可能にするネットワークサービスのことである。
ここ数年間でリポジトリの技術として最もすぐれているのはLDAP に対応したX.500ディレクトリシステムである。
ITU-TのX.509証明書をインターネットで使用するために証明書のプロファイルを定めたRFC2459が発行されている。ディレクトリに証明書を格納し、ユーザーの代わりにアプリケーションが自動的に証明書を検索することによって、ほとんどの企業で必要になる透過性が実現できる。また、LDAPをサポートする多くのディレクトリ技術は、項目数がきわめて多くても対応でき、検索要求に効率よく応答できるだけの情報記憶装置と検索方法を備え、ネットワークの隅々にまで適用できるため、どれほど広範囲に分散した組織であっても、その組織の要件を満足することができる。
発行された公開鍵証明書は、様々な理由により失効することがある。例えば、あるエンティティの秘密鍵が盗まれてしまった場合には、その秘密鍵に対応する公開鍵は無効としなければならないため、公開鍵証明書も失効する。また、学校を卒業すると学生証が無効になるように、ある組織から抜けた場合には、その組織から発行されていた公開鍵証明書を無効にしなければならない場合もある。あるいは、期限が過ぎた証明書や公開鍵が不要になったときにも証明書を取り消さねばならない。
そこで、ある公開鍵証明書が有効であるかをチェックする仕組みが必要となる。PKIでは、失効した公開鍵証明書を破棄証明書リスト(Certificate Revocation Lists:CRL)と呼ばれるリストに登録し証明書の検証の際に参照できるようにしている。CRLは証明書を使用する前に毎回確認される。このCRLも証明書リポジトリに格納される。
公開鍵暗号化標準 (Public-Key Cryptography Standard: PKCS) とは、米RSA Security社の RSA Laboratories が、米 Microsoft社、米DEC社 (現Compaq Computer 社) 、米Novell社、MIT (マサチューセッツ工科大学) などの協力を得て策定した公開鍵暗号化のための標準規格です。公開鍵を管理する機関CAへの電子証明書発行要求など、暗号化、認証に関するさまざまな事柄が盛り込まれており、現在PKCS #1から #15 までが RSA Security社のサイト (http://www.rsasecurity.com) で公開されています。
公開鍵暗号化標準その5。パスワードベースの暗号化、例えば保管しておくための秘密鍵の暗号化を受け持ちます。
公開鍵暗号化標準その7。デジタル署名などのデータの暗号化を受け持ちます。
公開鍵暗号化標準その8。鍵の格納を定めたものです。公開鍵および秘密鍵を単独でファイル化することは殆ど無く、通常PKCS #12を使用することが多い。
公開鍵暗号化標準その11。スマートカードなど暗号を用いる通貨とのやり取りを受け持ちます。
公開鍵暗号化標準その12。スマートカードなど暗号を用いる通貨とのやり取りを受け持ちます。秘密鍵や認定証、その他秘密にしておくものの保存や転送の方式を管理します。
ITU-T が策定した、電子認証や電子証明書に関する国際勧告。秘密鍵 と公開鍵、メッセージダイジェスト (あるいはハッシュ) と呼ばれる暗号化技術を使用して、データの完全性・信頼性・機密性が保たれた暗号・認証を実現するためのフレームワーク(骨組み) が記されている。公開鍵はCAで管理されており、ここからの公開鍵の入手方法も定義されている。
現在広く用いられている公開鍵証明書はX.509第3版(X.509v3)である。X.509v3の公開鍵証明書は基本領域、拡張領域および発行者の署名から構成される。このうち基本領域は必須情報である。
基本領域 | 証明書形式の版番号 |
証明書のシリアル番号 | |
署名アルゴリズム識別子 | |
発行者名 | |
有効期間 | |
対象者名 | |
対象者の公開鍵情報 | |
発行者のユニーク識別子 | |
拡張領域 | |
署名アルゴリズム | |
発行者の署名 |
拡張領域には鍵使用目的などを格納できる。
鍵使用目的は秘密鍵と公開鍵のペアをどのような用途に使えるかを複数指定できる。
名称 | 鍵使用目的 |
---|---|
digitalSignatue | デジタル署名の検証 |
nonRepudiation | 否認防止を目的としたデジタル署名の検証 |
keyEnciperment | 鍵配送を目的とした共通鍵等の鍵の暗号化 |
dataEncipherment | データの暗号化 |
keyAgreement | DHアルゴリズム等による鍵合意 |
keyCertSign | 証明書の署名を検証 |
cRLSign | 証明書失効リスト(CRL)の署名を検証 |
encipherOnly | データの暗号化のみに利用 |
decipherOnly | データの複合化のみに利用 |
OCSP (Online Certificate Status Protocol) とは、PKIX のプロトコルで、デジタル認証の現在の状態を決めるものである。
ディジタル証明書の失効情報を問い合わせるのに利用される。