Top PageSecurity Top

暗号メッセージ構文(CMS)

暗号メッセージ構文(CMS)は、以下のタイプのデータを格納できる。
タイプによって拡張子が異なる(ファイルには保存されなく拡張子が定義されないタイプも有る)。

CMSの種類
OID タイプ ファイルの内容
1.2.840.113549.1.7.1 data データ
1.2.840.113549.1.7.2 signed-data 電子署名データ  (公開鍵証明書のみの場合あり)
1.2.840.113549.1.7.3 enveloped-data 封筒化データ  (暗号化データ + 宛先情報)
1.2.840.113549.1.7.5 digested-data ダイジェストデータ
1.2.840.113549.1.7.6 encrypted-data 暗号化データ
1.2.840.113549.1.9.16.1.2 authenticated-data 資格認証データ

暗号メッセージ構文(CMS)は、ContentInfo構造でなければならず、ContentInfoは以下のASN.1による記述で定義される。

[ASN.1] ContentInfo (oid = 1.2.840.113549.1.9.16.1.6)
ContentInfo ::= SEQUENCE {
  contentType ContentType,
  content [0] EXPLICIT ANY DEFINED BY contentType }
ContentType ::= OBJECT IDENTIFIER
ContentInfoについて
フィールド名 内容
contentType contentに格納されるデータのタイプを示すoidが書かれる
oidの値は、上の表「CMSの種類」の参照。
content contentTypeで定義されたデータが格納される。
このフィールドに、各タイプで定義されるそれぞれのデータが入る。

つまり、BERで符号化したと仮定すると、以下のように符号化される。

30 size   … 0x06タグ(OID)及びそのデータと、0xA0タグ(Content)及びそのデータの、合計サイズ。
  06 size   … 以下oidフィールドのデータサイズ[Byte]。
    oid   … 各タイプのOID
  A0 size   … 以下contentフィールドのデータサイズ[Byte]。
    content   … 各タイプで規定されたデータ列