前のページ <<< >>> 次のページ

4.3 電子署名のデータ形式

 電子署名の形式は、インターネット標準 RFC3852 (Cryptgraphic Message Syntax; 以下CMSといいます。) によって規定されています。CryptoAPI は、このCMS形式のデータを取り扱うようになっています。CryptoAPIを使って電子証明書を扱う場合は、この形式を正しく理解していると、より詳細な利用ができるようになります。

 CMSデータには、さまざまな属性データを含めることができます。属性データには、署名されるものとそうでないものがあります。改ざん(改竄)されたくない情報を属性に含める場合は、CMSのデータ構造を理解してから利用してください。

4.3.1 CMSの概要

 CMSは、PKCS#7を拡張して規定されました。CMS形式は、データをカプセル化するために使用されます。多くの場合は、電子署名や暗号化されたデータに利用されていますが、独自にデータをカプセル化する形式を定義することもできます。
CMS形式は、S/MIMEなどのPKIアプリケーションで多く使われています。CMS形式のデータは、CryptoAPIで容易に生成できます(利用方法は、5.3で説明します)。

 CMSデータは、カプセル化するデータの型(ContentType)と実際のデータ(Content)で構成されています。
 ContentInfo
  ContentType
 Content

また、ContentType として以下の6っの形式が規定されています。
data基本的なデータ型
signed-data署名データ型
enveloped-data封筒化されたデータ型
digested-dataダイジェスト データ型
encrypted-data暗号化データ型
authenticated-data認証データ型

電子署名や暗号化(電子証明書を使ったもの)データは、それぞれ、signed-data、enveloped-data型を使います。ここでは、電子署名のデータ形式のsined-data型について説明します。暗号化のデータ形式enveloped-data型は、別項にて説明します。
以下では、これらの形式を説明します。
フォーマットは、ASN.1(4.1.2フォーマットの表記(ASN.1)[http://www.trustss.co.jp/smnDataFormat410.html]参照してください。)で表示します。

なお、暗号化データの形式は、Enveloped-data型で説明します。

4.3.2 ContentInfo 情報

 CMSデータ全体は、以下のように規定されています。
ContentInfo ::= SEQUENCE {
    contentType   ContentType,
    content       [0] EXPLICIT ANY DEFINED BY contentType
}

ContentType ::= OBJECT IDENTIFIER
contentに、カプセル化されたデータが格納されますが、格納されるデータによってその形式が規定されています。その形式は、contentType によって識別できます。
それぞれのデータ型は、オブジェクト識別子によって識別できます。以下にCMSによって規定されているオブジェクト識別子を記します。
Data1.2.840.113549.1.7.1
signed-data1.2.840.113549.1.7.2
enveloped-data1.2.840.113549.1.7.3
digested-data1.2.840.113549.1.7.5
encrypted-data1.2.840.113549.1.7.6
authenticated-data1.2.840.113549.1.9.16.1.2
ここでは、Signed-data型について説明します。

4.3.3 Signed-data 型

 一般的にSined-data型は、電子署名データをカプセル化するために使われます。それ以外にも、電子証明書や電子証明書失効リスト(Certificate Revocation List; 以下CRLと記します)の配布などに使用します。
電子署名の手順や方法は、6.電子署名の概要(準備中)で説明しますので参照してください。
 ここでは、データの形式について説明します。
 Signed-dataは、以下のように規定されています。
id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }

SignedData ::= SEQUENCE {
    version CMSVersion,
    digestAlgorithms      DigestAlgorithmIdentifiers,
    encapContentInfo      EncapsulatedContentInfo,
    certificates          [0] IMPLICIT CertificateSet OPTIONAL,
    crls                  [1] IMPLICIT RevocationInfoChoices OPTIONAL,
    signerInfos           SignerInfos }

DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier

SignerInfos ::= SET OF SignerInfo
versionは、データ自身のシンタックスバージョンです。この値は、certificate、eContentType、SignerInfoの値によって決定した値になります。

digestAlgorithmsは、電子署名に利用するメッセージダイジェスト(または、ハッシュ)値の計算アルゴリズムを示します。電子証明書の署名アルゴリズムと同様のものが多数セットになったものです。
encapContentInfoは、署名値そのものです。
certificatesは、署名者の電子証明書です。
crlsは、certificatesの失効情報です。
signerInfoは、署名者それぞれの情報です。

4.3.4 EnCapsulatedContentInfo 型

 EncapusulatedContentInfoは、以下のように規定されています。
EncapsulatedContentInfo ::= SEQUENCE {
    eContentType    ContentType,
    eContent        [0] EXPLICIT OCTET STRING OPTIONAL }

ContentType ::= OBJECT IDENTIFIER
eContentTypeは、オブジェクト識別子でデータの内容によってユニークな値をとります。
eContentは、署名されたデータそのもので、DERエンコードされる必要はありません。なお、eContentは、省略するとができ、このデータの外部にそれをおくことができます。

4.3.5 SignerInfo

 SignerInfoは、以下のように規定されています。
SignerInfo ::= SEQUENCE {
    version               CMSVersion,
    sid                   SignerIdentifier,
    digestAlgorithm       DigestAlgorithmIdentifier,
    signedAttrs           [0] IMPLICIT SignedAttributes OPTIONAL,
    signatureAlgorithm    SignatureAlgorithmIdentifier,
    signature             SignatureValue,
    unsignedAttrs         [1] IMPLICIT UnsignedAttributes OPTIONAL }

SignerIdentifier ::= CHOICE {
    issuerAndSerialNumber IssuerAndSerialNumber,
    subjectKeyIdentifier  [0] SubjectKeyIdentifier }

SignedAttributes ::= SET SIZE (1..MAX) OF Attribute

UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute

Attribute ::= SEQUENCE {
    attrType     OBJECT IDENTIFIER,
    attrValues   SET OF AttributeValue }

AttributeValue ::= ANY

SignatureValue ::= OCTET STRING
versionは、シンタックスバージョンで次のように規定されています。SignerIdentifierがissuerAndSerialNumberを選択(CHOICE)した場合は、値1をとります。また、SignerIdentifierがsubjectKeyIdentifierを選択(CHOICE)した場合は、値3をとります。

sidは、署名者それぞれの電子証明書の情報です。

digestAlgorithmB>は、電子署名されるコンテンツ(Content)およびSignedAttributeからメッセージ ダイジェスト(または、ハッシュ値)を算出する方法の識別情報(オブジェクト識別子とパラメータが含まれた情報)です。

sinedAttrsは、電子署名された属性情報です。電子署名されていますので、この情報を改ざんや否認することはできません。オプションですが、電子署名の場合はこの情報を含める必要があります。

SignatureAlgorithmは、署名者がダイジェスト(または、ハッシュ値に)電子署名するアルゴリズムとその付随データを記します。

signatureは、電子署名値そのものです。

unsinedAttrsは、電子署名の対象外の属性データです。

4.3.6 ご質問・ご要望

 ご質問やご要望は、こちらからお送りください。(匿名でも可能です。)


PDF-Tools
PDFおよびPDF/Aを作成・編集などができるライブラリ
128ビットの暗号化や電子署名に対応
http:
//www.trustss.co.jp/pdf/
4. 各種データ形式
4.1 電子証明書のデータ形式
4.2 電子証明書拡張情報の形式
4.3 電子署名の形式
4.4 暗号化データの形式
4.1 電子証明書のデータ形式
4.1.1 電子証明書の概要
4.1.2 ASN.1フォーマット
4.1.3 電子証明書
4.1.4 CryptoAPIとの関係
4.1.5 証明書情報
4.1.6 Name データ型
4.1.7 UTCTime型
4.1.8 GeneralizedTime型
4.1.9 ご質問・ご要望
4.2 電子証明書拡張情報の形式
4.2.1 拡張情報
4.2.2 標準拡張情報
4.2.3 認証局鍵識別子
4.2.4 サブジェクト鍵識別子
4.2.6 証明書ポリシー
4.2.7 サブジェクト代替名
4.2.8 基本制約
4.2.9 拡張鍵用途
4.2.10 ご質問・ご要望
4.3 電子署名の形式
4.3.1 CMSの概要
4.3.2 ContentInfo 情報
4.3.3 Signed-data 型
4.3.4 EnCapsulatedContentInfo 型
4.3.5 SignerInfo
4.3.6 ご質問・ご要望
4.4 暗号化データの形式
4.4.1 CMSの概要
4.4.2 ContentInfo 情報
4.4.3 暗号化の(内部的な)手順
4.4.4 Enveloped-data 型
4.4.5 受取人情報
4.4.6 公開鍵を使った場合の受取人情報
4.4.7 ご質問・ご要望
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。
会員用ログイン
ID:
パスワード:
ログインすると、一般公開していないページを閲覧できます。