Top PageSecurity TopAlgorithm

署名アルゴリズム

ここでは、CMSでサポートされる手法DSA及びRSA (PKCS #1 v1.5)について言及する。

DSA

DSA関数についての詳細は、"FIPS Pub 186 [DSS]"を参照。
DSA関数を用いる場合は、ダイジェスト・ハッシュ関数はSHA-1で無ければならない。
電子証明書(公開鍵証明書)に格納する公開鍵の為のoidは以下の通り。

DSA
1.2.840.10040.4.1

parametersは、以下のASN.1構造を持ち、3つの整数p,q,gで構成される。
parametersは省略可能であるが、 その場合は電子証明書(公開鍵証明書)中の公開鍵のパラメータと、同じ値が適用される。

parameters ::= SEQUENCE {
  p INTEGER,
  q INTEGER,
  g INTEGER  }

公開鍵は、以下のASN.1で定義される。

Dss-Pub-Key ::= INTEGER

アルゴリズムのoidは以下の通り。

DSA with SHA-1
  1.2.840.10040.4.3

parameterは、無しで無ければならない。
署名値は、DSA関数は2つの値を生成するので、1つの署名値として見せるために以下の様にエンコードする。

Dss-Sig-Value ::= SEQUENCE {
  r INTEGER,
  s INTEGER }

RSA

RSA関数についての詳細は、"RFC 2437 [NEWPKCS#1]"を参照。
電子証明書(公開鍵証明書)に格納する公開鍵の為のoidは以下の通り。

RSA
1.2.840.113549.1.1.1
parameters ::= NULL

公開鍵は、以下のASN.1で定義される。

RSAPublicKey ::= SEQUENCE {
  modulus INTEGER,
  publicExponent INTEGER } 

アルゴリズムのoidは以下の通り。

RSA with MD2
 1.2.840.113549.1.1.2 (PKCS#1で追加定義)
RSA with MD5
 1.2.840.113549.1.1.4
RSA with SHA-1
 1.2.840.113549.1.1.5
RSA with SHA-256
 1.2.840.113549.1.1.11 (PKCS#1で追加定義)
RSA with SHA-384
 1.2.840.113549.1.1.12 (PKCS#1で追加定義)
RSA with SHA-512
 1.2.840.113549.1.1.13 (PKCS#1で追加定義)

parameterは、何れも、以下のASN.1構造に示したとおり、NULLで無ければならない。
署名値は、RSA関数が生成する値は1つなので、そのままエンコードする。

parameters ::= NULL