EternalWindows
PKCS #7 / PKCSの規格

PKCS(Public Key Cryptography Standards)とは、公開鍵暗号技術を標準化するための規格セットのことです。 これは、RSA Security社によって策定され、様々なプラットフォーム上で認識されます。 PKCSの一部とされる各規格には、PKCS #1のようにそれぞれ番号が割り当てられており、 各番号によって規格されている技術情報も異なります。 次に、よく使われる規格とその説明を示します。

規格 説明
PKCS #7 暗号化データや署名データを証明書と共に格納できる形式。RFC2315に詳細が記述されている。
PKCS #10 CAに対して証明書を要求する際のメッセージの形式。RFC2986に詳細が記述されている。
PKCS #11 暗号トークン(スマートカードなど)に証明書を格納したり、 暗号トークン内で署名を行ったりするための関数群の定義。 このような関数群は、Cryptokiと呼ばれる。
PKCS #12 単一、または複数の証明書と秘密鍵を共に格納できる形式。 フォーマットの際にはパスワードを指定する。
PKCS #15 スマートカードのファイル構造を記述した仕様の格納場所を定義する。

公開鍵暗号で利用される様々な技術を標準化することにより、 各規格は通信するアプリケーション同士のプロトコルとなるだけでなく、 コードの記述を簡素にします。 たとえば、PKCS #7形式は暗号化データや署名データを含むことができますから、 これらのデータを作成して保存するアプリケーションは、その出力形式をPKCS #7形式にすることができます。 つまり、独自の形式を考えてフォーマットをする必要がなく、 用意された関数を呼び出すだけでデータを処理することができます。 PKCS #7形式が利用されている身近な例としては、メールの暗号方式であるS/MIMEなどがあります。

CryptoAPIでPKCS #7形式のデータを作成する方法は主に2つあります。 1つは、Simplified Message Functionsと呼ばれる関数群を利用する方法で、 それぞれ暗号化と署名に特化した関数が用意されています。 もう1つは、Low-Level Message Functionsを利用する方法で、 これらの関数はPKCS #7形式へのエンコードとデコードを主な作業とします。 基本的には、Simplified Message Functionsの使いやすいといえますが、 どちらの関数群も出力する形式はPKCS #7形式となるため、 作成されたデータに差異が生じるようなことはありません。


戻る