CMS 長期署名プロファイル 2005 年 8 月 10 日 次世代電子商取引推進協議会(ECOM) 1/22 ©Copyright ecom, 2005 まえがき 長期署名フォーマットの仕様が、次のドキュメントで定義されている。 ・ RFC3126, “Electronic Signature Formats for long term electronic signatures” (ETSI TS 101 733 V.1.2.2(2000-12)の長期署名フォーマットと同等) ・ETSI TS 101 733 V1.5.1(2003-12), “Electronic Signature Formats” ・ draft-pinkas-smime-cades-00.txt(2005-7), “CMS Advanced Electronic Signatures (CAdES)” 上記標準では、多くの選択的な定義が含まれており、システムを実現するに当たっては、 そのサブセットのみをサポートすれば電子署名文書の長期保存が可能となる。電子商取引実 証推進協議会(ECOM)報告書「電子署名文書長期保存に関するガイドライン(H14 年 3 月)」では、必要なサブセットを規定する推奨プロファイルの概要を紹介している。 本プロファイル案では、ECOM の推奨するプロファイルを更に詳細化し、電子署名文書の 長期保存を可能とするシステムにとって必要な項目を明確にする。1章ではプロファイルの 詳細を説明し、2章にプロファイルを表としてまとめる。 1. 長期署名プロファイル詳細 本プロファイル案では、最新の“CMS Advanced Electronic Signatures (CAdES)”の仕様を ベースとし、効果的(真正性の長期保証が可能)かつ効率的(必要最低限のデータやタイム スタンプを利用)なプロファイルを検討する。 1.1. 署名フォーマット 基本となる電子署名文書の形式として、署名ポリシの有無により、図 1 に示す BES ( Basic Electronic Signature ) と 図 2 に 示 す EPES ( Explicit Policy Electronic Signature)の2通りを利用できる。 BES 署名対象 文書 署名属性 デジタル 署名 図 1 BES EPES 署名対象 文書 署名属性 署名 ポリシ デジタル 署名 図 2 EPES 2/22 ©Copyright ecom, 2005 署名ポリシとは、署名者と検証者がデジタル署名を有効とみなすための、署名の生成と検 証 に 関 す る 一 連 の 規 則 を 定 め る も の で あ り 、 "ETSI TR 102 272 V1.1.1(2003.12) : Electronic Signatures and Infrastructures (ESI);ASN.1 format for signature policies"及び "RFC3125 : Electronic Signature"に規定されている。 電子署名文書の形式は次の仕様に基づいている。 • Cryptographic Message Syntax (CMS : RFC3852) • Enhanced Security Services (ESS : RFC2634) (1)General syntax 電子署名文書形式の General syntax は、CMS(RFC3852)に定義されているとおり。 ContentInfo: ContentInfo ::= SEQUENCE { contentType ContentType, content [0] EXPLICIT ANY DEFINED BY contentType } ContentType ::= OBJECT IDENTIFIER (2)Data content type Data content type は、CMS(RFC3852)に定義されているとおり。 id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 } (3)Signed-data content type Signed-data content type は、CMS(RFC3852)に定義されているとおり。 id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } (4)SingedData type SignedData の構文は、CMS(RFC3852)に定義されているとおり。 SignedData ::= SEQUENCE { Version digestAlgorithms encapContentInfo certificates crls signerInfos CMSVersion, DigestAlgorithmIdentifiers, EncapsulatedContentInfo, [0] IMPLICIT CertificateSet OPTIONAL, [1] IMPLICIT CertificateRevocationLists OPTIONAL, SignerInfos } DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier SignerInfos ::= SET OF SignerInfo • SignedData のバージョンは3である必要はない。 次のいずれかを満たす場合はバージョン3 certificates 属性がありバージョン1の属性証明書があり、バージョン2の属性 3/22 ©Copyright ecom, 2005 証明書がない encapsulated content type が id-data 以外 いずれかの SignerInfo がバージョン3 ただし、certificates 属性があり異なるタイプの証明書が存在するか、crls 属性があ り異なるタイプのCRLが存在する場合を除く。 (5)EncapusulatedContentInfo type EncapusulatedContentInfo type は、CMS(RFC3852)に定義されているとおり。 EncapsulatedContentInfo ::= SEQUENCE { eContentType ContentType, eContent [0] EXPLICIT OCTET STRING OPTIONAL } ContentType ::= OBJECT IDENTIFIER • 長期保存のためには、SignedData に eContent を含めておくか、別途保存・管理してお くことを推奨する。 • アーカイブタイムスタンプ生成の時には必ず eContent を対象に含めなければならない。 (6)SingerInfo type SignerInfo type は、CMS(RFC 3852)に定義されているとおり。 SignerInfo ::= SEQUENCE { version sid digestAlgorithm signedAttrs signatureAlgorithm signature unsignedAttrs CMSVersion, SignerIdentifier, DigestAlgorithmIdentifier, [0] IMPLICIT SignedAttributes OPTIONAL, SignatureAlgorithmIdentifier, SignatureValue, [1] IMPLICIT UnsignedAttributes OPTIONAL } SignerIdentifier ::= CHOICE { issuerAndSerialNumber subjectKeyIdentifier IssuerAndSerialNumber, [0] SubjectKeyIdentifier } SignedAttributes ::= SET SIZE (1..MAX) OF Attribute UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute Attribute ::= SEQUENCE { attrType attrValues OBJECT IDENTIFIER, SET OF AttributeValue } AttributeValue ::= ANY SignatureValue ::= OCTET STRING • 署名者一人につき、ひとつの SignerInfo が対応し、署名が並列に複数添付される場合に は、複数の SingerInfo が作られる。 • SignerInfo のバージョンは問わない SignerIdentifier が issuerAndSerialNumber ならば1 SignerIdentifier が subjectKeyIdentifier ならば3 4/22 ©Copyright ecom, 2005 • 長期署名では、少なくとも SignedAttributes に次の値を格納していなければならない。 ContentType MessageDigest SigningCertificate Message digest の算出プロセス ① CMS(RFC3852)に定義されているとおり。 ② Message signature の生成プロセス CMS(RFC3852)に定義されているとおり。 Message signature の検証プロセス ③ CMS(RFC3852)に定義されているものを本書で拡張したもの。 署名検証プロセスでは、必ず ESS Signing Certificate 属性、あるいは Other Signing Certificate 属性を利用して正しいことが確認された署名者公開鍵を用いる。 (7)必須の CMS 属性 次の属性は署名データの signed attribute 中に存在しなければならない。 Content type ① 構文は、CMS(RFC3852)に定義されているとおり。 id-contentType OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3 } ContentType ::= OBJECT IDENTIFIER • ContentType 属性は、signed attribute 内にただ 1 つだけ存在しなければならない。 ② Message digest 構文は、CMS(RFC3852)に定義されているとおり。 Id-messageDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4 } MessageDigest ::= OCTET STRING • MessageDigest 属 性 の 値 は 、 SignerInfo の DigestAlgorithm を 利 用 し て encapContentInfo eContent OCTET STRING の ASN.1 TLV の V から求めたもの。 MessageDigest 属性は、signed attribute 内にただ 1 つだけ存在しなければならない。 ③ Signing certificate 属性 signed-data には、ESS signing certificate あるいは Other signing certificate のどちらか 一 方のみの signing certificate 属 性を含 めな ければ なら ない。 この 属性値 は、 ”simple substitution 攻撃” と “re-issue 攻撃”を防ぐために用いる。 5/22 ©Copyright ecom, 2005 A) ESS signing certificate 属性の定義 ESS signing certificate 属性は ESS(RFC2634)に基づく。ESS signing certificate は signed attribute でなければならない。 signing certificate 属性または次項の Other signing certificate 属性は必ず存在しなければ ならず、属性値が空であってはならない。署名検証のための証明書はこの属性値から得なけ ればならない。署名検証ポリシ(Signature Validation Policy)でここに他の証明書が存在する ことを規定していれば、signing certificate 属性に信頼点までのすべての証明書を含むことも ある。ESSCertID は issuerSerial フィールドを含まなければならない。 SignerInfo の issuerAndSerialNumber は issuerSerial フィールドと整合が取れていなけ ればならない。署名検証は ESSCertID で特定された証明書を利用して行う必要がある。もし も証明書のハッシュ値が署名検証用の証明書とマッチしないものであった場合は、署名は無 効であるとみなさねばならない。 また、policy information フィールドは利用しない。 SigningCertificate ::= SEQUENCE { certs SEQUENCE OF ESSCertID, policies SEQUENCE OF PolicyInformation OPTIONAL } --利用しない id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1)member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 12 } ESSCertID ::= SEQUENCE { certHash issuerSerial Hash, IssuerSerial OPTIONAL } Hash ::= OCTET STRING -- SHA1 hash of entire certificate IssuerSerial ::= SEQUENCE { Issuer serialNumber } GeneralNames, CertificateSerialNumber B) Other signing certificate 属性の定義 SHA-1 以外のハッシュアルゴリズムを利用できることを除いて、ESS SigningCertificate の定義と同じ。 6/22 ©Copyright ecom, 2005 id-aa-ets-otherSigCert OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 19 } OtherSigningCertificate ::= SEQUENCE { certs SEQUENCE OF OtherCertID, policies SEQUENCE OF PolicyInformation OPTIONAL } OtherCertID ::= SEQUENCE { otherCertHash issuerSerial } --利用しない OtherHash, IssuerSerial OPTIONAL OtherHash ::= CHOICE { sha1Hash OtherHashValue, -- SHA-1 の場合、ここに格納 otherHash OtherHashAlgAndValue } OtherHashValue ::= OCTET STRING OtherHashAlgAndValue ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier, hashValue OtherHashValue } ※ESS SigningCertificate 属性、Other signing certificate 属性、いずれも検証時には処理 できなければならない。 (8)EPES に対する必須属性 Signature policy identifier ① EPES は署名ポリシに対するリファレンスを持たなければならない。signature policy identifier は signed attribute でなければならない。 7/22 ©Copyright ecom, 2005 id-aa-ets-sigPolicyId OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 15 } SignaturePolicyIdentifier ::= CHOICE{ SignaturePolicyId SignaturePolicyImplied SignaturePolicyId, SignaturePolicyImplied } SignaturePolicyId ::= SEQUENCE { sigPolicyIdentifier SigPolicyId, sigPolicyHash SigPolicyHash, sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL } SignaturePolicyImplied ::= NULL SigPolicyId ::= OBJECT IDENTIFIER SigPolicyHash ::= OtherHashAlgAndValue SigPolicyQualifierInfo ::= SEQUENCE { sigPolicyQualifierId SigPolicyQualifierId, sigQualifier ANY DEFINED BY sigPolicyQualifierId } SigPolicyQualifierId ::= OBJECT IDENTIFIER id-spq-ets-uri OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-spq(5) 1 } SPuri ::= IA5String id-spq-ets-unotice OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-spq(5) 2 } SPUserNotice ::= SEQUENCE { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL } NoticeReference ::= SEQUENCE { organization DisplayText, noticeNumbers SEQUENCE OF INTEGER } DisplayText ::= CHOICE { visibleString bmpString utf8String } VisibleString BMPString UTF8String (SIZE (1..200)), (SIZE (1..200)), (SIZE (1..200)) (9)オプションの CMS 属性 次にあげる属性は、本書で定義する署名データに出現しても良い属性であり、本属性が存 在することを理由として、構築時や検証時にエラーとしてはならない。 ① Signing time 8/22 ©Copyright ecom, 2005 構文は、CMS(RFC3852)に定義されているとおりだが、長期署名では UTCTime でななく GeneralizedTime(YYYYMMDDHHMMSSZ と表記。秒の端数は含めない)の使用を推奨 している。 id-signingTime OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5 } SigningTime ::= Time Time ::= CHOICE { utcTime generalizedTime UTCTime, GeneralizedTime } • SigningTime 属性は、signed attribute 内に複数存在してはならない。 ② Countersignature countersignature は unsigned attribute でなければならない。 id-countersignature OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 6 } Countersignature ::= SignerInfo ※unsigned attribute に含まれる countersignature は、生成時期に制約がない(つまり ES-A 生成後の署名に対しても countersignature を添付可能と考えられる)。また長期署名 フォーマットの適用も可能と考えられる。countersignature の対象となっている署名におけ る archiveTimeStamp の対象については注意を要する。 (10)オプションの ESS 属性 次にあげる属性は、本書で定義する署名データに含めても良い属性であり、本属性が存在 することを理由として、構築時や検証時にエラーとしてはならない。 ① content reference 属性 content reference 属性は signedAttribute。 id-aa-contentReference OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 10 } ContentReference ::= SEQUENCE { contentType signedContentIdentifier ContentType, ContentIdentifier, originatorSignatureValue ② OCTET STRING } Content Identifier 属性 Contentidentifier は signed attribute。 9/22 ©Copyright ecom, 2005 id-aa-contentReference OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 10 } ContentReference ::= SEQUENCE { contentType ContentType, signedContentIdentifier ContentIdentifier, originatorSignatureValue OCTET STRING } ③ Content Hints 属性 ContentHints ::= SEQUENCE { contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL, contentType ContentType } id-aa-contentHint OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 4} (11)他のオプション属性 次にあげる属性は、本書で定義する署名データに含めても良い属性であり、本属性が存在 することを理由として、構築や検証時にエラーとしてはならない。 ① Commitment Type Indication 属性 commitmentTypeIndication は signedAttribute である。 id-aa-ets-commitmentType OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 16} CommitmentTypeIndication ::= SEQUENCE { commitmentTypeId CommitmentTypeIdentifier, commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF CommitmentTypeQualifier } OPTIONAL CommitmentTypeIdentifier ::= OBJECT IDENTIFIER CommitmentTypeQualifier ::= SEQUENCE { commitmentTypeIdentifier CommitmentTypeIdentifier, qualifier ANY DEFINED BY commitmentTypeIdentifier } id-cti-ets-proofOfOrigin OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 1} id-cti-ets-proofOfReceipt OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 2} id-cti-ets-proofOfDelivery OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 3} id-cti-ets-proofOfSender OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 4} id-cti-ets-proofOfApproval OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 5} id-cti-ets-proofOfCreation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 6} 10/22 ©Copyright ecom, 2005 Proof of origin Proof of receipt Proof of delivery Proof of sender Proof of approval Proof of creation ② 署名者がその文書を生成したこと、承認したこと、そして送信 したことを示す。 署名者がその文書を受け取ったことを示す。 TSP(信頼できるサービスプロバイダ)がその文書を受信者が アクセスできる状態でローカルなストアにおいたことを提示した ことを示す。 その提示をしたエンティティがその文書を送信したことを示す。 (生成したのではなくても良い) 署名者がその文書を承認したことを示す。 署名者がその文書を生成したことを示す。(承認したり送信した りする必要はない) Signer Location 属性 Signer Location は signedAttribute。 id-aa-ets-signerLocation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 17} SignerLocation ::= SEQUENCE { -- 少なくとも次のどれか1つが必 countryName [0] DirectoryString -- X.500 の Coutry 名 localityName [1] DirectoryString -- X.500 の locality 名 postalAdddress [2] PostalAddress } OPTIONAL, OPTIONAL, OPTIONAL PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString ③ Signer Attributes 属性 signer-attributes は signed attribute。 id-aa-ets-signerAttr OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 18} SignerAttribute ::= SEQUENCE OF CHOICE { claimedAttributes [0] ClaimedAttributes, certifiedAttributes [1] CertifiedAttributes } ClaimedAttributes ::= SEQUENCE OF Attribute CertifiedAttributes ::= AttributeCertificate ④ Content Time-Stamp 属性 content time-stamp は signed attribute。 id-aa-ets-contentTimestamp OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 20} ContentTimestamp::= TimeStampToken 11/22 ©Copyright ecom, 2005 (12)複数署名のサポート ① 並列署名(Independent Signatures) 並列署名は、同一の文書に対して並行して複数人による複数の署名を添付する場合に用い る。個々の署名は独立であり、これを実現するためには複数の SignerInfo を利用する。 SignerInfo 毎に独立して長期署名フォーマットを適用できる。 文書 署名 署名対象参照 署名値 署名 署名対象参照 署名 署名対象参照 署名値 署名値 図 3 並列署名 ② 直列署名(Embedded Signatures) 直列署名は、署名に対して署名を重ねていく場合に用いる。これを実現するためには、 counterSignature 属性を利用する。countersignature は、生成時期に制約がない(つまり ES-A 生成後の署名に対しても countersignature を添付可能と考えられる)。また長期署名 フォーマットの適用も可能と考えられる。countersignature の対象となっている署名におけ る archeveTimeStamp の対象については注意を要する。 countersignature に対する長期署名フォーマットの適用については、署名対象が本文(図 中の文書)ではなく、そのハッシュ値のみの情報を含む署名値であるため、その有効性につ いて注意深く検討する必要がある。本プロファイルでは countersignature の長期署名フォー マットの適用については規定しない。 文書 Counter Signature 署名 署名対象参照 署名値 Counter Signature 署名 署名対象参照 署名 署名対象参照 署名値 署名値 図 4 直列署名 12/22 ©Copyright ecom, 2005 1.2. ES-T(Electronic Signature Time-stamped) ES-T は、デジタル署名の存在時刻を確定するために、電子署名文書中の署名値(CMS の SignerInfo の SignatureValue)に対して TSA から取得したタイムスタンプトークンを追 加したものである。署名値は電子文書のハッシュ値をもとに計算されるため、署名値から生 成したタイムスタンプトークンは、署名の存在時刻とともに、電子データの存在時刻も証明 することとなる。 ES-T ES 署名対象 文書 署名属性 図5 デジタル 署名 署名 タイムスタンプ ES-T ひとつの署名に対していくつかの異なった TSA からタイムスタンプトークンを取得して格 納しても良い。複数の署名が添付されている場合、個々の署名値に対してそれぞれタイムス タンプトークンを取得してもよいし、ある署名についてのみタイムスタンプトークンを取得 してもよい。 Signature Timestamp 属性の OID は次の値である。 id-aa-signatureTimeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 14} Signature Timestamp 属性の値は、ASN.1 形式の SignatureTimeStampToken である。 SignatureTimeStampToken ::= TimeStampToken TimeStampToken の messageImprint フィールドの値は、signedData の SignerInfo 内の signature フィールドの値である。 TimeStampToken は、RFC3161 で定義される。 SignatureTimestamp の検証情報(認証パス及び失効情報、ES の検証情報に準じる)は次 のいずれかに格納する。 1) タイムスタンプトークン内の certificates と crls 2) ES の 検 証 情 報 と 同 じ 場 所 ( Complete validation reference data と Extended validation data) 3) タイムスタンプトークン内の unsigned attribute(Extended validation data 形式) ※構築時は、1)または 3)を推奨、検証時は 1)∼3)全てに対応することを必須とする。 1.3. ES-C(Complete validation reference data) ES-C は、ES-T に対してデジタル署名の検証の際に利用する認証パス上の全ての公開鍵 証明書(ただし署名者の公開鍵証明書を除く)とそれぞれの公開鍵証明書の CRL や OCSP レスポンスなどの失効情報(署名者の公開鍵証明書の失効情報を含む)に対するリファレン ス情報を追加したものである。 13/22 ©Copyright ecom, 2005 ES-T ES-C ES 署名対象 文書 署名属性 署名タイムスタ ンプ デジタル 署名 図6 検証情報への リファレンス ES-C complete validation reference data 付の電子署名は、署名の検証に必要なすべてのデータ (証明書及び失効情報)を備える電子署名文書である。 Complete validation reference data の最小構成は次のとおり: • Signature Timestamp 属性 • Complete Certificate Refs • Complete Revocation Refs Complete validation reference data は次の情報を含む X-Long validation data を構成して もよい(将来、検証プロセスがこれらのデータにアクセスできなくなることに備えるため): • Complete Certificate Values ←必須とする。 • Complete Revocation Values ←必須とする。 Complete validation reference data はまた次の情報を含む Extended validation data を 構成してもよい(将来の CA の危殆化に備えることと、検証データの完全性を確保するため): • ES-C Timestamp(ES-X Type1 の場合に存在) • Time-Stamped Certificates and CRLs references(ES-X Type2 の場合に存在) ←利用しない(無視してかまわない) 。 ←利用 しない(無視してかまわない) 。 ① Complete Certificate Refs 属性の定義 Complete Certificate Refs 属性は unsigned attribute である。Complete Certificate Refs 属性は ES の検証に用いる署名者の証明書に至るすべての CA の証明書を参照する。(ただし 署名者の証明書への参照は含まない) この属性は1署名につき一つだけ含む。 注記1:署名者の証明書は signing certificate 属性で参照される。 注記2:署名タイムスタンプの認証パスを含んでも良い。 Complete Certificate Refs 属性の OID は次のとおりである。 id-aa-ets-certificateRefs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 21} 14/22 ©Copyright ecom, 2005 Complete Certificate Refs 属性は ASN.1 構文の CompleteCertificateRefs を値として持 つ。 CompleteCertificateRefs ::= SEQUENCE OF OtherCertID OtherCertID には IssuerSerial を含まねばならない。certHash は参照される証明書の ハッシュ値とマッチしなければならない。 Complete Revocation Refs 属性の定義 ② Complete Revocation Refs 属性は unsigned attribute である。この属性は1署名に対して 一つだけ存在する。この属性は、ES-C を検証するために必要な署名者及び CA の証明書に対 する CRL あるいは OCSP レスポンスのすべてを参照する。 注記:署名タイムスタンプの認証パスに対する失効情報を格納しても良い。 Complete Revocation Refs 属性の OID は次のとおり。 id-aa-ets-revocationRefs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 22} Complete Revocation Refs 属性は ASN.1 構文の CompleteRevocationRefs を値として持 つ。 CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef CrlOcspRef ::= SEQUENCE { crlids [0] CRLListID ocspids [1] OcspListID otherRev [2] OtherRevRefs } OPTIONAL, OPTIONAL, OPTIONAL CompleteRevocationRefs は signing certificate に対する CrlOcspRef を必ず1つ持たなけ れ ば な ら ず 、 CompleteCertificateRefs 属 性 の 中 の 各 OtherCertID に 対 し て 1 つ ず つ CrlOcspRef を持たなければならない。2番目以降の CrlOcspRef の順番は、対応する OtherCertID の順番と同じでなければならない。信頼しているCAの証明書を除く証明書パ ス上のすべての証明書に対して、CRLListID、OcspListID、OtherRevRefs のうち、少なく とも一つを含めなければならない。CRL あるいは OCSP レスポンス以外の失効情報は利用し ない。 15/22 ©Copyright ecom, 2005 CRLListID ::= SEQUENCE { crls SEQUENCE OF CrlValidatedID} CrlValidatedID ::= SEQUENCE { crlHash crlIdentifier OtherHash, CrlIdentifier OPTIONAL} CrlIdentifier ::= SEQUENCE { crlissuer crlIssuedTime crlNumber } OcspListID ::= SEQUENCE { ocspResponses Name, UTCTime, INTEGER OPTIONAL SEQUENCE OF OcspResponsesID} OcspResponsesID ::= SEQUENCE { ocspIdentifier ocspRepHash } OcspIdentifier, OtherHash OPTIONAL OcspIdentifier ::= SEQUENCE { ocspResponderID ResponderID, -- As in OCSP response data producedAt GeneralizedTime -- As in OCSP response data } crlValidatedID を作成する際、crlHash は、署名を含む CRL の完全な DER エンコードさ れたデータに対して計算する。crlIdentifier は、通常、他の情報によって CRL が推測できな いときに存在する。 crlIdentifier は、CRL を特定するためのものであり、発行者名と発行時刻(CRL が含 む”thisUpdate”が示す時刻)を利用している。 crlListID 属性は、unsigned attribute である。CRL が Delta CRL であれば、complete revocation list には CRL の集合に対する参照が含まれねばならない OcspIdentifier は OSCP レスポンスを特定するもので、発行者名と発行時刻(OCSP レス ポンスに含まれる”producedAt”が示す時刻)を用いる。同時刻に発行された OCSP を区別す るには、OcspResponceID に含まれるレスポンスのハッシュ値を用いる。 注記1:署名タイムスタンプの失効情報を含めてよい。 OtherRevRefs ::= SEQUENCE { otherRevRefType otherRevRefs } OtherRevRefType ANY DEFINED BY otherRevRefType OtherRevRefType ::= OBJECT IDENTIFIER 16/22 ©Copyright ecom, 2005 1.4. Extended Validation Data(ES-X) ES-X は、将来の CA の危殆化に備えたり、検証データの完全性を確保したり入手困難に なることに備えるために、ES-C を拡張するものである。 ES-X には、ES-X Long(図 4-8)、ES-X Type1(図 4-9)、ES-X Type2(図 4-10)の 3 通りのフォーマットが用意される。本プロファイルでは、ES-X Long の使用のみを認める。 ES-T ES-C ES-XLong 検証情報 ES 署名対象 文書 署名属性 デジタル 署名 図7 ES-T ES-C ES-X Long ES-X Type1 ES-C ES 署名対象 文書 署名属性 図8 ES-T ES-C デジタル 署名 署名属性 署名 タイムスタンプ 検証情報へ のリファレ ンス タイムスタンフ ES-X Type1(使用しない) ES-X Type2 ES 署名対象 文書 署名 タイムスタンプ 検証情報へ のリファレ ンス デジタル 署名 署名 タイムスタンプ 検証情報へ のリファレ ンス 検証情報へ のリファレ ンスへの タイムスタ ンフ 図9 ES-X Type2(使用しない) ES-X Long は検証情報そのものを電子署名文書内に抱え込むフォーマットである。ES-X Type1 は、ES-C 全体に対するタイムスタンプを取得して追加するもの、ES-X Type2 は、検 証情報へのリファレンスのみに対するタイムスタンプを取得して追加するものである。 17/22 ©Copyright ecom, 2005 検証情報のリファレンスには検証情報のハッシュ値が含まれるが、そのとき用いるハッ シュ関数が脆弱化するケースを想定すると、リファレンスをタイムスタンプの対象とするの では、リファレンスと検証情報そのものとの対応関係を証明することができなくなる。更 に、検証情報そのもの(特に中間のサブ CA の公開鍵証明書や失効情報など)の消失に備え るには、検証情報そのものを保持しておく必要がある。 長期保存のためには、電子文書、デジタル署名、タイムスタンプ、検証情報全体をタイム スタンプや耐タンパな仕組みで保護する必要がある。長期署名フォーマットでは、この後に 述べるアーカイブタイムスタンプによって保護する。つまり、適当な時期にアーカイブタイ ムスタンプを追加することによって、ES-C タイムスタンプも検証情報リファレンスへのタイ ムスタンプも必要なくなり、重要なのは検証情報そのものを確保しておくことである。 ES-X Long は保護対象となる全てのデータを格納するフォーマットに相当する。電子署 名文書の長期保存を可能とするシステムを実装するためには、ES-X Long のみをサポートす ればよい。 Certificate Values 属性の定義 ① Certificate Values 属性は unsigned attribute である。この属性は 1 署名につき 1 つだけ 存在する。この属性により、CompleteCertificationRefs が参照する証明書および署名者の証 明書を保持する。(署名者証明書をここに含めるのは、格納必須である場所が他に指定されて いないため、SingedData の Certificates などではアーカイブタイムスタンプの対象とはなら ず、保護されないため) 注意:Attribute Certificate が利用されるときは、この構造が用いられるのではなく、 signer-attributes 属性が用いられる。 Certificate Values 属性を示す OID は次のとおり。 id-aa-ets-certValues OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 23} Certificate Values 属性は値として次の ASN.1 構文で表される CertificateValues を取る。 CertificateValues ::= SEQUENCE OF Certificate Certificate の定義は RFC3280 と ITU-T Recommendation X.509 を参照のこと。 ② Revocation Values 属性の定義 Revocation Values 属性は unsigned attribute である。この属性は 1 署名につき 1 つだけ 存在する。この属性は、CompleteRevocationRefs 属性で参照される CRL と OCSP レスポン スの値を保持する。 Revocation Values 属性の OID は次のとおり。 id-aa-ets-revocationValues OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 24} 18/22 ©Copyright ecom, 2005 Revocation Values 属性は値として次の ASN.1 構文で表される RevocationValues を取 る。 RevocationValues ::= SEQUENCE { crlVals [0] SEQUENCE OF CertificateList ocspVals [1] SEQUENCE OF BasicOCSPResponse otherRevVals [2] OtherRevVals OPTIONAL, OPTIONAL, OPTIONAL ←利用しない } OtherRevVals ::= SEQUENCE { otherRevValType otherRevVals } OtherRevValType, ANY DEFINED BY otherRevValType OtherRevValType ::= OBJECT IDENTIFIER Other revocation values ←利用しない。 CertificateList の定義は、RFC3280 と ITU-T Recommendation X.509 を参照のこと。 BasicOCSPResponse の定義は、RFC2560 を参照のこと。 ③ ES-C Time-Stamp 属性の定義 ④ Time-Stamped Certificates and CRLs 属性の定義 ←利用しない。無視してかまわない。 ←利用しない。無視してかまわな い。 信頼する CA のものは無し Signing Certificate 属性に存在する場合は無し Complete Certificate Refs 署名者 CA1 CA2 先頭は署名者 Complete Revocation Refs ・・・ TCA 順序が一致 署名者 CA1 CA2 ・・・ TCA Complete Certificate Values CA2 署名者 CA1 ・・・ TCA Complete Revocation Values CA1 CAi CA2 ・・・ 署名者 順不同 図 10 Complete Validation Reference Data と Validation Values との関係 19/22 ©Copyright ecom, 2005 1.5. ES-A(Archive Validation Data ) 電子署名の検証可能期間を極めて長くしようとしたとき、タイムスタンプの署名の危殆化 や TSA の証明書の有効期限切れが発生しうるため、タイムスタンプの署名を複数回重ねるこ とが要求されることがある。このとき、archive time-stamp 属性が用いられる。このタイム スタンプは期間をおいて繰り返し付与される。 ES-T ES-C 検証情報 ES 署名対象 文書 署名属性 ES-A ES-XLong デジタル 署名 署名 タイムスタンプ 検証情報へ のリファレ ンス アーカイブ タイムスタ ンプ アーカイブ タイムスタ ンプ 図 11 ES-A Archive Time-Stamp 属性の定義 ① Archive Time-Stamp は 署 名 対 象 文 書 と 署 名 全 体 に 対 す る タ イ ム ス タ ン プ で あ る 。 Certificate Values と Revocation Values 属性がない場合、タイムスタンプをとる前にこれら の属性を加えなければならない。Archive Time-Stamp 属性は、unsigned attribute である。 この属性は、1署名に対して、時間の経過や複数の TSA から得ることにより複数添付でき る。 Archive Time-Stamp 属性の OID は次のとおりである。 id-aa-ets-archiveTimestamp OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 27} Archive Time-Stamp 属性の値として、次の ASN.1 構文の ArchiveTimeStampToken が入 る。 ArchiveTimeStampToken ::= TimeStampToken TimeStampToken の messageImprint の値は、次のデータをこの順に結合した値(ただし、 タイプと長さを除いたもの)のハッシュ値である。 • encapContentInfo eContent OCTET STRING; • signedAttributes; • signature field within SignerInfo; • SignatureTimeStampToken attribute; 20/22 ©Copyright ecom, 2005 • CompleteCertificateRefs attribute; • CompleteRevocationData attribute; • CertificateValues attribute (まだこの値を確保していなければ、ES-A を作る際に確保しなければならない。) • RevocationValues attribute (まだこの値を確保していなければ、ES-A を作る際に確保しなければならない。) • ESCTimeStampToken attribute if present; ←利用しない。 • TimestampedCertsCRLs attribute if present; ←利用しない。 • any previous ArchiveTimeStampToken attributes. TimeStampToken に関しては、RFC3161 を参照のこと。 タイムスタンプは、オリジナルの署名よりも強いアルゴリズム(あるいは長い鍵)を利用 するのが適当である。 アーカイブタイムスタンプの検証情報は次のいずれかに格納することが考えられる。 1) タイムスタンプトークン内の certificates と crls 2) タイムスタンプトークン内の unsigned attribute(Extended validation data 形式) 本プロファイルでは、構築時には 1)に格納することを推奨し、検証時には 1),2)を処理できる ことを必須とする。 なお、draft-pinkas-smime-cades-00.txt や ETSI TS 101 733 V1.5.1 では、アーカイブタ イムスタンプの取得対象が異なる。つまり、TimeStampToken の messageImprint の値は、次 のデータをこの順に結合した値(ただし、タイプと長さを除いたもの)のハッシュ値であ る。 SignedData 内の encapContentInfo もしも存在した場合は、SignedData 内の Certificates と crls すべての署名属性、非署名属性を含む SignerInfo の全てのデータ ところが、最後の項目を対象とするとした場合、各アーカイブタイムスタンプの検証時 に、そのアーカイブタイムスタンプが対象とした情報が確定できない場合がある。例えば、 contersignature が後から添付された場合、countersignature にアーカイブタイムスタンプ が付与された場合などがそれに当たる。従って、本プロファイルでは、タイムスタンプ対象 を明確に定める旧仕様(RFC3126 や TSI TS 101 733 V1.4.0 以前)に基づいた仕様を採用す ることとし、新版の仕様は対象外とする。 21/22 ©Copyright ecom, 2005 2. CMS 長期署名プロファイル案まとめ SignedAttributes ContentType MessageDigest SigningTime SigningCertificate SignaturePolicyIdentifier ContentReference ContentIdentifier ContentHints CommitmentTypeIndication SignerLocation SignerAttribute ContentTimeStamp UnsignedAttribute CounterSignature SignatureTimeStamp CompleteCertificateRefs CompleteRevocationRefs AttributeCertificateRefs AttributeRevocationRefs CertificateValues RevocationValues ES-C TimeStamp TimeStampedCertsAndCrls ArchiveTimeStamp CAdES BES ○ ○ ○ △ ○ × △ △ △ △ △ △ △ △ △ × × × × × × × × × × CAdES EPES ○ ○ ○ △ ○ ○ △ △ △ △ △ △ △ △ △ × × × × × × × × × × CAdES ES-T ○ ○ ○ △ ○ △2 △ △ △ △ △ △ △ ○ △ ○ × × × × × × × × × CAdES CAdES CAdES ES-C ES-X Long ES-A ○ ○ ○ ○ ○ ○ ○ ○ ○ △ △ △ ○ ○ ○ △2 △2 △2 △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ ○ ○ ○ △ △ △ ○ ○ ○ ○ ○ ○ ○ ○ ○ △ △ △ △ △ △ × ○ ○ × ○ ○ × × × × × × × × ○ ○:必須要素 △:オプション要素 SignaturePolicyIdentifier 要素は必須 ×:不要(あってはならない要素) ETSI TS 101 733 V 1.4.0 以前 (RFC 3126) ETSI TS 101 733 V 1.5.1 ○ ― ※1 アーカイブタイムスタンプの計算対象 ※1:計算方法に不確定な要素があり、現バージョンのプロファイルでは対象外とする。 22/22 ©Copyright ecom, 2005
© Copyright 2024 ExpyDoc