生成した鍵を保管したり他のシステムに転送したりする場合に,利用できる情報形式の規定である.
公開鍵証明書 | PKCS#7 | CMS | PKCS#8 |
PKCS#10 | PKCS#12 |
公開鍵を偽ることによるなりすましを防止するために,公開鍵証明書が導入されている. 公開鍵証明書とは,ユーザ識別名,公開鍵,発行者名,有効期限などの情報を信頼できる認証局 (CA) の秘密鍵で署名を付与したものである.CA の公開鍵を知っている者ならば誰でもその正当性を確かめることができ,一種の身元証明と考えられる.
ユーザ A が B に自分の公開鍵を正しく B に伝える手順は次のようになる.
公開鍵証明書として普及している標準形式に X509証明書(Ver.3)がある.
公開鍵証明書 (Certificate) は,次のように署名されるべき証明書情報 (tbsCertificate),署名アルゴリズム(signatureAlgorithm) および署名値(signatureValue)から構成されている.
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
以下に,証明書情報 (X509証明書) の構成を示す.X509証明書には,バージョン番号,シリアル番号,有効期間,署名アルゴリズムなどの情報が記載されている.
version | : 証明書のバージョン番号 |
serialNumber | : 同一CAが発行した証明書を一意に識別するための識別番号 |
signature | : 署名アルゴリズム |
issuer | : 証明書を発行するCAのディレクトリ名 |
validity | : 証明書の有効期限 |
subject | : 公開鍵の所有者のディレクトリ名 |
subjectPublicKeyInfo | : 公開鍵 |
issuerUniqID | : 同一名のCAを区別するために用いる識別子 |
subjectUniqID | : 同一名の公開鍵所有者を区別するために用いる識別子 |
alternative name | : メールアドレス,DNS名などの識別子 |
certificate policy | : ポリシーの識別番号 |
key attribute | : 鍵自身の識別子,寿命,用途等 |
key usage restriction | : 鍵の利用制限 |
basic constraints | : 発行局となることの制限 |
information access | : 発行局アドレスと参照 |
authority key identifier | : 署名鍵の識別子 |
CRL distribution point | : CRL配布先 |
PKCS#7 (Cryptographic Message Syntax Standard) は,暗号化データや署名を含むメッセージの交換形式を定める規定である.
PKCS#7メッセージには,暗号化されたメッセージやメッセージに対する署名値に加えて,復号や署名検証に必要なアルゴリズムや公開鍵証明書などの情報が全て同梱されるので,PKCS#7 に従ってメッセージを符号化することで,事前の取り決めや付加的な通信を行うことなく,暗号処理が施されたメッセージの交換が可能となる.
通常は,PKCS#7ファイルは拡張子 p7b を使用し,ITU-T X.509標準と互換性がある. PKCS#7では,副署名などの属性を署名に関連付けたり,署名時刻などの属性をメッセージの内容と共に認証したりできる.
PKCS#7 では,次の5つのタイプのコンテンツタイプを定義している.
CMS (Cryptographic Message Syntax) は,PKCS#7 を拡張して作られた暗号と署名を扱うデータフォーマットであり RFC3369 で規定されている. 今後は PKCS#7 ではなく,CMS が署名文書や暗号文書の標準として用いられることになると予想される.
PKCS#7に対する主な拡張点は以下である.
PKCS#8 (Private-Key Information Syntax Standard) は,秘密鍵情報を格納する形式を規定している. 秘密鍵はパスワード暗号を使って暗号化して保管することができる.
PKCS#8 は,以下の形式を持つ
証明書の発行を要求するメッセージ形式(証明書署名要求:CSR, certificate signing request または certification request) に関する規約である.
CSR には (X.509証明書の場合はディレクトリ名などの) 申請者を識別する情報と,申請者によって選択された公開鍵が含まれる.対応する秘密鍵はCSRに含まれないが,要求全体の電子署名に使われる.
PKCS#10 は,次の形式を持つ.
PKCS#12 (Personal Information Exchange Syntax) は,秘密鍵や公開鍵証明書などの個人情報の交換のための情報形式を規定している.この形式をサポートするアプリケーション間では,相互に個人情報のやり取りが行える. ディジタル署名や暗号化により個人情報の保護や完全性の保証が行われる.
PKCS#12には,次の privacyモード integrityモードの 4 つの組合せがある.