ネットワーク WG
Request for Comments: 3125
分類: 実験的
J. Ross
Security & Standards
D. Pinkas
Integris
N. Pope
Security & Standards
2001年9月

English

電子署名ポリシー
(Electronic Signature Policies)

このメモの位置づけ

このメモは、 インターネットコミュニティ対して実験的プロトコルを規定するものである。 これは、インターネットのいかなる種類の標準をも指定するものではない。 改良のための検討や提言を求めるものである。 このメモの配布に制限はない。

著作権表記

Copyright (C) The Internet Society (2001). All Rights Reserved.

要旨

本書は、電子署名のための署名ポリシーを規定している。 署名ポリシーは、電子署名の生成と検証のための一連のルールであり、 これを基に電子署名の有効性が決定付けられる。 一定の法律上/契約上の文脈において、 その要件を満たすものとして署名ポリシーが認められる可能性がある。

署名ポリシーは、世界で唯一のリファレンスを持っており、 これは署名計算の部分として署名者によって電子署名に結合されているものである。

署名ポリシーは、それが適用されている法律上、 契約上の文脈の要件を満たしていることを確かめるために、 人間が読むことのできる形式であることが求められる。

電子署名の自動的な処理ができるように、署名ポリシーは、 コンピュータで処理可能な形式で署名ポリシーの生成と検証のための電子的なルールを規定する。 現行文書では、署名ポリシーのフォーマットは、 ASN.1を使って定義されている。

本書の内容は、ETSI TS 101 733 V.1.2.2 (2000-12) Copyright (C)において規定された署名ポリシーに基づく。 このETSI配布可能資料は、http://www.etsi.org からダウンロードできる。

目次

  1. 1. はじめに
  2. 2. 主要な主体
  3. 3. 署名ポリシー仕様
    1. 3.1 ASN.1構造の全容
    2. 3.2 署名検証ポリシー
    3. 3.3 共通ルール
    4. 3.4 コミットメントルール
    5. 3.5 署名者と検証者のルール
      1. 3.5.1 署名者ルール
      2. 3.5.2 検証者ルール
    6. 3.6 証明書と失効の要件
      1. 3.6.1 証明書要件
      2. 3.6.2 失効要件
    7. 3.7 署名用証明書信用条件
    8. 3.8 タイムスタンプ信用条件
    9. 3.9 属性信用条件
    10. 3.10 アルゴリズム制約
    11. 3.11 署名ポリシー拡張
  4. 4. セキュリティについての考慮事項
    1. 4.1 プライベート鍵の保護
    2. 4.2 アルゴリズムの選択
  5. 5. 準拠性要件
  6. 6. 参考文献
  7. 7. 著者のアドレス
  8. 付録A(基準類)
    1. A.1 X.208 (1988) ASN.1 Syntaxを使う定義
    2. A.2 X.680 (1997) ASN.1 Syntaxを使う定義
  9. 付録B(参考情報)
    1. B.1 署名ポリシーと署名検証ポリシー
    2. B.2 署名ポリシーの識別
    3. B.3 全般的な署名ポリシー情報
    4. B.4 認知されたコミットメントタイプ
    5. B.5 認証機関の利用ルール
      1. B.5.1 トラストポイント
      2. B.5.2 認証パス
    6. B.6 失効ルール
    7. B.7 ロールの利用ルール
      1. B.7.1 属性値
      2. B.7.2 認証された属性のためのトラストポイント
      3. B.7.3 認証された属性のための認証パス
    8. B.8 タイムスタンプとタイミングの利用ルール
      1. B.8.1 トラストポイントと認証パス
      2. B.8.2 タイムスタンプ局の名前
      3. B.8.3 タイミング制約 - 注意期間
      4. B.8.4 タイミング制約 - タイムスタンプ遅延
    9. B.9 従うべき検証データのためのルール
    10. B.10 アルゴリズム制約と鍵長のためのルール
    11. B.11 他の署名ポリシールール
    12. B.12 署名ポリシー保護
  10. 著作権表記全文

1. はじめに English

本書は、ビジネス・トランザクション(例えば、購入要求、 契約および請求)を含む様々な種類のトランザクションにおける、 電子署名と共に使用できる署名ポリシーを扱おうとするものである。 電子署名は個人・企業間、企業間、個人・政府間などのあらゆるトランザクションにおいても使用可能である。 本書はいかなる環境からも独立している。 例えば、スマートカード、GSM SIM カード、 電子署名のための特別なプログラム等、あらゆる環境に適用できる。

本書のキーワード、"MUST"、"MUST NOT"、"REQUIRED"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL"は、 RFC2119に記述されているように解釈されるべきものである。

2. 主要な主体 English

本書は、以下の用語を使っている。:

(信用されるサービス提供者である)署名ポリシー発行者は、 特定のビジネス要求を満たすために、電子署名の生成、 そして検証(validation/verification)のための技術上、 手続上の要件を定義した署名ポリシーを発行する。

署名者は、電子署名を生成する主体である。 署名者が署名ポリシー識別子を伴って署名したとき、それは、 電子署名が付与されたデータが、 その署名ポリシーによって定義されているルールに則って署名されたということを、 署名を行う主体に代わってコミットしていることを意味する。

検証者は、電子署名を検証する主体のことで、 ひとりまたは複数の主体になる可能性がある。 検証者は、電子署名を有効とするため、 署名ポリシーによって定義されているルールのもと電子署名を検証しなければならない(MUST)

仲裁者は、署名者・検証者間の紛争を仲裁する主体である。 仲裁者は、予め検証された電子署名を、 後に再検証するときには検証者として行為する。

信用されるサービス提供者(TSP)は、 署名者・検証者間の信頼関係の構築に貢献する、 ひとつまたは複数の主体である。 TSPがサポートする特有なサービスの利用は、 署名ポリシーによって指定される可能性がある(MAY)。 TSPのサポートサービスは、次のものを含む。 :ユーザの証明書、相互証明書、タイムスタンプトークン、CRL、ARL、 OCSPレスポンス。

信用されるサービス提供者(TSP)は、 自ら署名ポリシー発行者になる可能性がある(MAY)。 TSPは、特定のビジネス要件を満たすために、 電子署名の生成と検証のための技術上、 手続上の要件を定義しなければならない(MUST)

以下のTSP は、本書で定義される機能をサポートするために利用される。:

認証機関(CA)は、ユーザに公開鍵証明書を提供する。

登録機関(RA)は、CAが証明書を作成する前に、主体の登録を許可する。

リポジトリ機関は、CAが発行したCRL、相互証明書(すなわち、CA 証明書)、 署名ポリシー発行者が発行した署名ポリシー、そして、任意ではあるが、 CAが発行した公開鍵証明書(すなわち、葉の証明書)を公開する。

タイムスタンプ局は、あるデータが、 信頼できる時刻以前に作成されたことを証明する。

OCSPレスポンダは、特定の証明書の状態情報(すなわち、失効、 失効されていない、不明)を提供する。

属性認証機関は、公開鍵証明書とリンクした属性をユーザに提供する。

仲介者は、署名者・検証者間の紛争を仲裁する主体である。

3. 署名ポリシー仕様 English

署名ポリシーの仕様は、ポリシーについての全般的な情報、 検証ポリシールール、そして、その他の署名ポリシー情報を含む。

本書は、次の指定をする。:

本書は、署名ポリシーの仕様の形式について、規定するが必須とはしない。 署名ポリシーは、次のどちらかで明示される可能性がある。:

本書は、構造化された署名ポリシーを定義するために使用されうる、 ASN.1ベースの構文を定義している。 本書の今後の版では、XMLを使用した、 構造化された署名ポリシー仕様が含まれる可能性がある。

3.1 ASN.1 構造の全容 English

ASN.1で定義された、署名ポリシーの全体構造が、この章で定められている。 このASN.1構文の使用は任意である。

このASN.1構文は、DERでエンコードされる。

この構造では、ポリシー情報の前に、 署名ポリシーの保護に使用するハッシュアルゴリズムの識別子が示され、 ポリシー情報の後に、発行者から署名者へ、または、発行者から検証者へ、 署名ポリシーが交わされるときに、必ず再計算し、 確認しなければならないハッシュ値が示される。

ハッシュは、外側の型と、長さのフィールドを除いて計算される。

SignaturePolicy ::= SEQUENCE {
        signPolicyHashAlg      AlgorithmIdentifier,
        signPolicyInfo         SignPolicyInfo,
        signPolicyHash         SignPolicyHash     OPTIONAL }

SignPolicyHash ::= OCTET STRING

SignPolicyInfo ::= SEQUENCE {
        signPolicyIdentifier            SignPolicyId,
        dateOfIssue                     GeneralizedTime,
        policyIssuerName                PolicyIssuerName,
        fieldOfApplication              FieldOfApplication,
        signatureValidationPolicy       SignatureValidationPolicy,
        signPolExtensions               SignPolExtensions
                                                   OPTIONAL
}

SignPolicyId ::= OBJECT IDENTIFIER

PolicyIssuerName ::= GeneralNames

FieldOfApplication ::= DirectoryString
    

policyIssuerNameは、 ひとつ以上の一般的な名前形式GeneralNamesでポリシー発行者を識別する。

fieldofApplicationは、このポリシーの適用が期待される分野を示す。

署名検証ポリシールールは、 その署名ポリシーの形式に則って付与される電子署名を検証可能とするのに十分処理可能である。 これについては、本章の残りの部分で述べる。

signPolExtensionsは、 署名ポリシーの補足的な構成要素の定義を拡張するための汎用的な方法である。

3.2 署名検証ポリシー English

署名検証ポリシーは、署名者にとって、 署名者の提供する電子署名にどのデータ要素が存在しなければいけないか、 そして、検証者にとって、電子署名を潜在的に有効とするため、 署名ポリシーに則って、 どのデータ要素が存在しなければいけないかを定義している。

署名検証ポリシーは、下記のとおり。:

SignatureValidationPolicy ::= SEQUENCE {
         signingPeriod          SigningPeriod,
         commonRules            CommonRules,
         commitmentRules        CommitmentRules,
         signPolExtensions      SignPolExtensions        OPTIONAL
}
    

signingPeriodは、署名を生成するために、 これ以前にその署名ポリシーを使用してはいけない(SHOULD NOT)。 日付と時刻について規定し、オプションとして、 これ以降に署名ポリシーを使用すべきではない日付について規定している。

SigningPeriod ::= SEQUENCE {
         notBefore       GeneralizedTime,
         notAfter        GeneralizedTime OPTIONAL }
    

3.3 共通ルール English

CommonRulesは、 すべてのコミットメントタイプに共通なルールについて定義している。 これらのルールは、電子署名に含まれる可能性がある、 属性に対する任意の制約に加えて、証明書、タイムスタンプ、 そして属性の信頼性に関する観点から定義されている。

CommonRules  ::= SEQUENCE {
         signerAndVeriferRules          [0]  SignerAndVerifierRules
                                                         OPTIONAL,
         signingCertTrustCondition      [1]  SigningCertTrustCondition
                                                         OPTIONAL,
         timeStampTrustCondition        [2]  TimestampTrustCondition
                                                         OPTIONAL,
         attributeTrustCondition        [3]  AttributeTrustCondition
                                                         OPTIONAL,
         algorithmConstraintSet         [4]  AlgorithmConstraintSet
                                                         OPTIONAL,
         signPolExtensions              [5]  SignPolExtensions
                                                          OPTIONAL
}
    

CommonRulesにあるフィールドが存在する場合、 CommitmentRules(以下参照)に同等なフィールドが存在してはならない。 CommonRulesに以下のフィールドが存在しない場合、 CommitmentRuleに存在しなければならない。:

3.4 コミットメントルール English

CommitmentRulesは、 与えられたコミットメントタイプに適用する検証ルールから成る。:

CommitmentRules ::= SEQUENCE OF CommitmentRule
    

与えられたコミットメントタイプのためのCommitmentRuleは、 電子署名に含まれる可能性がある属性に対する任意の制約に加えて、 証明書、タイムスタンプ、 そして属性の信頼性に関する観点から定義されている。

CommitmentRule  ::= SEQUENCE {
        selCommitmentTypes                  SelectedCommitmentTypes,
        signerAndVeriferRules          [0]  SignerAndVerifierRules
                                                          OPTIONAL,
        signingCertTrustCondition      [1]  SigningCertTrustCondition
                                                          OPTIONAL,
        timeStampTrustCondition        [2]  TimestampTrustCondition
                                                          OPTIONAL,
        attributeTrustCondition        [3]  AttributeTrustCondition
                                                          OPTIONAL,
        algorithmConstraintSet         [4]  AlgorithmConstraintSet
                                                          OPTIONAL,
        signPolExtensions              [5]  SignPolExtensions
                                                          OPTIONAL
}

SelectedCommitmentTypes ::= SEQUENCE OF CHOICE {
        empty                        NULL,
        recognizedCommitmentType     CommitmentType }
    

SelectedCommitmentTypesが“empty”を示す場合、このルールは、 コミットメントタイプが存在しないときに適用される(すなわち、 コミットメントのタイプはメッセージのセマンティックスの中で示される)。 そうでなければ、電子署名は、 CommitmentTypeで挙げられたコミットメントタイプのひとつに必ず適合するようなコミットメントタイプの指示を含まなければならない。

特定のコミットメントタイプ識別子は、 ひとつのコミットメントルール以外に現れてはならない。

CommitmentType ::= SEQUENCE {
         identifier                  CommitmentTypeIdentifier,
         fieldOfApplication      [0] FieldOfApplication OPTIONAL,
         semantics               [1] DirectoryString OPTIONAL }
    

fieldOfApplicationとセマンティックフィールドは、 ポリシーのために定義された、すべての適用フィールド範囲内において、 特定の使用とコミットメント方法を定義している。

3.5 署名者と検証者のルール English

下記のルールは、 [ES-FORMATS] を使用して定義された電子署名のフォーマットに適用する。

SignerAndVerifierRulesは、下記のように定義された、 署名者ルールと検証者ルールから成る。

SignerAndVerifierRules ::= SEQUENCE {
         signerRules      SignerRules,
         verifierRules    VerifierRules }
    

3.5.1 署名者ルール English

署名者ルールは、次のように規定する。:

SignerRules ::= SEQUENCE {
        externalSignedData         BOOLEAN      OPTIONAL,
                   -- True if signed data is external to CMS structure
                   -- False if signed data part of CMS structure
                   -- Not present if either allowed
        mandatedSignedAttr         CMSAttrs,
                                 -- Mandated CMS signed attributes
        mandatedUnsignedAttr       CMSAttrs,
                                 -- Mandated CMS unsigned attributed
        mandatedCertificateRef     [0] CertRefReq DEFAULT signerOnly,
                                 -- Mandated Certificate Reference
        mandatedCertificateInfo    [1] CertInfoReq DEFAULT none,
                                 -- Mandated Certificate Info
        signPolExtensions          [2] SignPolExtensions        OPTIONAL
}
CMSattrs ::= SEQUENCE OF OBJECT IDENTIFIER
    

mandatedSignedAttrフィールドは、このポリシーで要求される追加の属性は、 当然ながら、本書で要求されるすべてのそれらの署名属性のOIDを含まなければならない。

mandatedUnsignedAttrフィールドは、 このポリシーで要求される追加の属性はもちろん、 本書で要求されるすべてのそれらの非署名属性のOIDを含まなければならない。 例えば、署名へのタイムスタンプ(1.1章)が署名者によって要求される場合、 この属性のOIDが含まれなければならない。

mandatedCertificateRefは、署名者の証明書のみ、あるいは、 すべての認証パスが、署名者によって提供されるべきであるかを規定する。

CertRefReq ::= ENUMERATED {
                                signerOnly (1),
           -- Only reference to signer cert mandated
                                fullpath (2)

           -- References for full cert path up to a trust point required
}
    

mandatedCertificateInfoフィールドは、署名者の証明書のみ、あるいは、 トラストポイントまでの認証パス上のすべての証明書が、 SignedDataの証明書フィールドの中で、 署名者によって提供されなければならないかどうかを規定する。

CertInfoReq ::= ENUMERATED {
                                 none (0)        ,
                         -- No mandatory requirements
                                 signerOnly (1)  ,
                         -- Only reference to signer cert mandated
                                 fullpath (2)
                         -- References for full cert path up to a
                         -- trust point mandated
}
    

検証者ルールは、次のように規定する。:

VerifierRules ::= SEQUENCE {
                mandatedUnsignedAttr    MandatedUnsignedAttr,
                signPolExtensions           SignPolExtensions  OPTIONAL
}

MandatedUnsignedAttr ::=  CMSAttrs
                                   -- Mandated CMS unsigned attributed
    

3.6 証明書と失効の要件 English

(後章で定義されている)SigningCertTrustCondition、 TimestampTrustCondition および AttributeTrustConditionは、 下記に定義されているCertificateTrustTreesとCertRevReqの2つのASN.1構造を使用する。

3.6.1 証明書要件 English

certificateTrustTreesは、認証パス処理の開始(または終了)に使用される、 トラストポイントとしての自己署名証明書、そして、 [RFC2459] section 4で定義されている、認証パス検証の初期条件のセットを規定する。 このASN.1構造は、署名用証明書、TSA証明書、 属性証明書を検証するためのポリシーを定義するのに使用される。

CertificateTrustTrees ::=   SEQUENCE OF CertificateTrustPoint

CertificateTrustPoint ::= SEQUENCE {
        trustpoint                              Certificate,
                               -- self-signed certificate
        pathLenConstraint       [0] PathLenConstraint   OPTIONAL,
        acceptablePolicySet     [1] AcceptablePolicySet OPTIONAL,
                                -- If not present "any policy"
        nameConstraints         [2] NameConstraints     OPTIONAL,
        policyConstraints       [3] PolicyConstraints   OPTIONAL }
    

trustPointフィールドは、 認証パス処理を開始するためのトラストポイントとして使用される、 CAの自己署名証明書を与える。

pathLenConstraintフィールドは、 トラストポイントに続く認証パスに含まれるであろうCA証明書の最大数を与える。 値がゼロのときは、トラストポイントの証明書と、 エンド主体の証明書だけが、使用されるであろうということを示している。 もし、存在する場合、pathLenConstraintフィールドは、 0以上でなければならない。 pathLenConstraintが存在しないならば、認証パスの長さに制限は無い。

PathLenConstraint    ::=   INTEGER (0..MAX)
    

acceptablePolicySetフィールドは、署名ポリシーの下、 受け入れ可能な証明書ポリシーのセットを識別する。

AcceptablePolicySet ::= SEQUENCE OF CertPolicyId
CertPolicyId ::= OBJECT IDENTIFIER
    

nameConstraintsフィールドは、認証パス中の一連の証明書の、 すべての主体者名が従わなければならない、名前空間を規定する。 制限は、主体者識別名、または、主体者別名に適用される可能性がある。 制限は特定の名前形式が存在するときのみ適用される。 タイプ名が証明書に無い場合、証明書は受け入れ可能である。

制限は、許可された名前のサブツリー、または、 除外された名前のサブツリーに関して定義されている。 excludedSubtreesフィールドにおける制限にマッチした名前は、 permittedSubtreesにおいて見られる情報にかかわらず、無効である。

NameConstraints ::= SEQUENCE {
          permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
          excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }

     GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree

     GeneralSubtree ::= SEQUENCE {
          base                    GeneralName,
          minimum         [0]     BaseDistance DEFAULT 0,
          maximum         [1]     BaseDistance OPTIONAL }

     BaseDistance ::= INTEGER (0..MAX)
    

policyConstraints拡張は、ふたつの方法でパス処理を制約する。 これは、ポリシーマッピングを禁止すること、または、 パス中の証明書が受け入れ可能なポリシー識別子を含むことを要求することである。

policyConstraintsフィールドが存在する場合、 証明書ポリシーの明白な指示、そして/または、 ポリシーマッピングでの制約のための要求を明示する。

PolicyConstraints ::= SEQUENCE {
        requireExplicitPolicy           [0] SkipCerts OPTIONAL,
        inhibitPolicyMapping            [1] SkipCerts OPTIONAL }

SkipCerts ::= INTEGER (0..MAX)
    

inhibitPolicyMappingフィールドが存在する場合、その値は、 ポリシーマッピングがそれ以上適用されなくなる前に、 パス中(トラストポイントの自己証明書を含む)に現れる可能性がある、 続く証明書の数を示す。 例えば、1という値は、ポリシーマッピングが、 パス中の続く証明書においてではなく、 この証明書の主体者によって発行された証明書において、 処理される可能性があることを示す。

requireExplicitPolicyフィールドが存在する場合、 それに続く証明書は受け入れ可能なポリシー識別子を含まなければならない。 requireExplicitPolicyの値は、明示的なポリシーが要求される前に、 パス中(トラストポイントの自己証明書を含む)に現れる可能性がある、 続く証明書の数を示す。 受け入れ可能なポリシー識別子は、 認証パスのユーザによって要求されたポリシーの識別子、または、 ポリシーマッピングを通して同等と示されたポリシーの識別子である。

3.6.2 失効要件 English

RevocRequirementsフィールドは、 証明書の失効状態をチェックするために使用される、CRL、かつ/または、 OCSPレスポンスを通して得られる、失効情報のための最低限の要求を示す。 このASN.1構造は、署名用証明書、TSAの証明書、そして、 属性証明書を検証するためのポリシーを定義するのに使用される。

CertRevReq ::= SEQUENCE {
        endCertRevReq   RevReq,
        caCerts     [0] RevReq
}
    

Authorityの証明書は、 Authorityに対して発行された証明書である(例えば、 認証機関か属性認証機関(AA)のどちらかに対して)。

タイムスタンプ局(TSA)は、データがある時点で存在したことを示すための、 タイムスタンプトークンを生成する、信頼された第三者である。 [TSP] 参照。

EnuRevReq  ::= ENUMERATED {
        clrCheck        (0),
                   --Checks must be made against current CRLs
                   -- (or authority revocation lists (ARL))
        ocspCheck       (1), -- The revocation status must be checked
                  -- using the Online Certificate Status Protocol
                  -- (OCSP),RFC 2450.
        bothCheck       (2),
                  -- Both CRL and OCSP checks must be carried out
        eitherCheck     (3),
                  -- At least one of CRL or OCSP checks must be
                  -- carried out
        noCheck         (4),
                  -- no check is mandated
        other           (5)
                  -- Other mechanism as defined by signature policy
                  -- extension
}
    

失効要件は、次のような点から示される。:

3.7 署名用証明書信用条件 English

SigningCertTrustConditionフィールドは、 署名用証明書を検証するために使用される、 認証パス処理のための信用条件を識別する。

SigningCertTrustCondition ::=   SEQUENCE {
     signerTrustTrees              CertificateTrustTrees,
     signerRevReq                  CertRevReq
}
    

3.8 タイムスタンプ信用条件 English

TimeStampTrustConditionフィールドは、TSAの認証に使用される、 認証パス処理のための信用条件と、TSAの名前上の制約について識別する。 これは、各ES-Tの中に存在するタイムスタンプに適用される。

TimestampTrustCondition ::= SEQUENCE {
    ttsCertificateTrustTrees    [0]     CertificateTrustTrees
                                           OPTIONAL,
    ttsRevReq                   [1]             CertRevReq
                                           OPTIONAL,
    ttsNameConstraints          [2]             NameConstraints
                                           OPTIONAL,
    cautionPeriod               [3]             DeltaTime
                                           OPTIONAL,
    signatureTimestampDelay     [4]             DeltaTime
                                           OPTIONAL }

DeltaTime ::= SEQUENCE {
        deltaSeconds    INTEGER,
        deltaMinutes    INTEGER,
        deltaHours      INTEGER,
        deltaDays       INTEGER }
    

ttsCertificateTrustTreesが存在しない場合、 certificateTrustConditionで定義されているものと同じルールが、 TSAの公開鍵証明書に適用される。

tstrRevReqは、 ES-Tの中にに存在するタイムスタンプの失効状態をチェックするために使用される、 CRL、かつ/または、OCSPレスポンスを通して得られる失効情報における、 必要最小限の要件を明示する。

ttsNameConstraintsが存在しない場合、 ttsCertificateTrustTreesによって示されたもの以外に、 信頼されたTSAにおける追加的な名前制約は無い。

cautionPeriodフィールドは、署名者の鍵の有効性と、 どのような関連する失効もなされていなかったことについて、 高い確信を得るために検証者に待たなければならないことを課す署名時刻後の注意期間を規定する。 Complete validation dataをもつESを形成する失効状態の情報は、 この注意期間が過ぎるまで、収集されてはならず、また、 電子署名を検証するために使用されてはならない。

signatureTimestampDelayフィールドは、検証者のために、 署名時刻とその署名へのタイムスタンプが生成された時刻(ES Time-Stampedを形成するのに使用されたものと同様)との間における、 最大の受け入れ可能な期間を明示する。 署名へのタイムスタンプに含まれるsigning-time属性の時刻が、 signatureTimestampDelayで与えられた値よりも大きい場合、 その署名は無効と見なされなければならない。

3.9 属性信用条件 English

attributeTrustConditionフィールドが存在しない場合、 この検証ポリシーのもとでは、どんな認証された属性でも、 有効であると見なされない可能性がある。 AttributeTrustConditionフィールドは、下記のように定義される。:

AttributeTrustCondition ::= SEQUENCE {
      attributeMandated            BOOLEAN,
                                   -- Attribute must be present
      howCertAttribute             HowCertAttribute,
      attrCertificateTrustTrees   [0] CertificateTrustTrees  OPTIONAL,
      attrRevReq                  [1] CertRevReq             OPTIONAL,
      attributeConstraints        [2] AttributeConstraints   OPTIONAL }
    

attributeMandatedがTrueである場合、 下記の制約の中で認証された属性は、存在しなければならない。 Falseである場合、属性が明示されずとも、署名は有効なままである。

howCertAttributeフィールドは、属性が、 署名者が“主張”した認証されていない属性であるか、 認証されている属性であるか(例えば、属性証明書)、 [ES-FORMATS] 3.12.3章で定義されている署名者の属性を使用したものであるか否かを明示する。

HowCertAttribute ::= ENUMERATED {
        claimedAttribute       (0),
        certifiedAttribtes     (1),
        either                 (2) }
    

attrCertificateTrustTreesは、あらゆる属性証明書についても、 認証パスの条件を明示する。 存在しない場合、certificateTrustConditionと同じルールが適用される。

attrRevReqは、 (もし存在する場合、)属性証明書の失効状態を確認するために使用される、 CRL、かつ/または、 OCSPレスポンスを通して得られる失効情報に関する最小限の要件を明示する。

attributeConstraintsフィールドが存在しない場合、このポリシーの下、 検証されるであろう、属性への制約は存在しない。 attributeConstraintsフィールドは、下記のように定義される。:

AttributeConstraints ::= SEQUENCE {
        attributeTypeConstarints        [0] AttributeTypeConstraints
                                                 OPTIONAL,
        attributeValueConstarints       [1] AttributeValueConstraints
                                                 OPTIONAL }
    

attributeTypeConstarintsフィールドが存在する場合、これは、 署名ポリシーの下、有効であると見なされる属性型を明示する。 この属性のどんな値も、有効であると見なされる。

AttributeTypeConstraints ::= SEQUENCE OF AttributeType
    

attributeTypeConstraintsフィールドが存在する場合、これは、 署名ポリシーの下、有効であると見なされる明確な属性値を明示する。

AttributeValueConstraints ::= SEQUENCE OF AttributeTypeAndValue
    

3.10 アルゴリズム制約 English

algorithmConstrainsフィールドが存在する場合、これは、 特定の目的のために使用される可能性がある署名アルゴリズム(ハッシュ、 公開鍵暗号技術、ハッシュと公開鍵暗号との組み合わせ)と、 それぞれの最小の長さを識別する。 このフィールドが存在しない場合、ポリシーは、どのような制約も適用しない。

AlgorithmConstraintSet ::= SEQUENCE {   -- Algorithm constrains on:
signerAlgorithmConstraints      [0]     AlgorithmConstraints OPTIONAL,
                                -- signer
eeCertAlgorithmConstraints      [1]     AlgorithmConstraints OPTIONAL,
                                -- issuer of end entity certs.
caCertAlgorithmConstraints      [2]     AlgorithmConstraints OPTIONAL,
                                -- issuer of CA certificates
aaCertAlgorithmConstraints      [3]     AlgorithmConstraints OPTIONAL,
                                -- Attribute Authority
tsaCertAlgorithmConstraints     [4]     AlgorithmConstraints OPTIONAL
                                -- Time-Stamping Authority
}

AlgorithmConstraints ::= SEQUENCE OF AlgAndLength

AlgAndLength ::= SEQUENCE {
        algID                   OBJECT IDENTIFIER,
        minKeyLength    INTEGER         OPTIONAL,
       -- Minimum key length in bits
        other           SignPolExtensions OPTIONAL
}
    

属性認証機関(AA)は、属性証明書を発行することによって、 権限を与える機関(authority)である。

3.11 署名ポリシー拡張 English

追加的なの署名ポリシールールが、次に加えられる可能性がある。:

署名ポリシールールに対するこれらの拡張は、 下記において定義されるSignPolExtnの中に格納され、 対応するOIDと共に、ASN.1構文を使用して定義しなければならない。

SignPolExtensions ::= SEQUENCE OF SignPolExtn

SignPolExtn ::= SEQUENCE {
                extnID      OBJECT IDENTIFIER,
                extnValue   OCTET STRING  }
    

extnIDフィールドは、拡張のための、OID を含まなければならない。 extnValueフィールドは、 拡張のDER(ITU-T Recommendation X.690 [4] 参照)エンコード値を含まなければならない。 拡張の定義は、extnIDによって識別されるのと同様にして、構文の定義と、 拡張のセマンティックを含まなければならない。

4. セキュリティについての考慮事項 English

4.1 プライベート鍵の保護 English

本書で定義されている電子署名メカニズムのセキュリティは、 署名者のプライベート鍵のプライバシー(訳注:守秘性)に依存する。 実装においては、 プライベート鍵が危殆化されないことを確保する段取りを行わなければならない。

4.2 アルゴリズムの選択 English

実装者は、 暗号アルゴリズムが時間と共に脆弱化することを認識する必要がある。 新しい暗号技術が開発され、そして、 コンピュータの処理速度が改善されるにつれ、 特定の暗号アルゴリズムがブレイクされる要因は減少するであろう。 それゆえ、暗号アルゴリズムの実装は、 新しいアルゴリズムを容易に追加できるよう、モジュール化する必要がある。 すなわち、実装者は、 時間と共に変化するアルゴリズムを実装できるように、準備される必要がある。

5. 準拠性要件 English

署名者と検証者のシステムは、OIDによって識別され、 参照される署名ポリシーの仕様に従って、 電子署名を処理できるようにするものとする。(3章参照)

6. 参考文献

[TS101733] ETSI Standard TS 101 733 V.1.2.2 (2000-12) Electronic Signature Formats. Note: copies of ETSI TS 101 733 can be freely download from the ETSI web site www.etsi.org.
[ES-FORMATS] Pinkas, D., Ross, J. and N. Pope,
"Electronic Signature Formats for Long Term Electronic Signatures",
RFC 3126, 2001年6月.
[TSP] Adams, C, Pinkas, D., Zuccherato, R. and P. Cain,
「X.509インターネットPKIタイムスタンププロトコル(TSP)(Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP))」,
RFC 3161, 2001年8月.
[OCSP] Myers, M., Ankney, R., Malpani, R., Galperin, S. and C. Adams,
「X.509インターネットPKIオンライン証明書状態プロトコル(OCSP)(On-line Status Certificate Protocol)」,
RFC 2560, 1999年6月.
[RFC2119] Bradner, S.,
「RFCにおいて要請の程度を示すために用いるキーワード(Key words for use in RFCs to Indicate Requirement Levels)」,
BCP 14, RFC 2119, 1997年3月.
[ESS] Hoffman, P.,
"Enhanced Security Services for S/MIME",
RFC 2634(English), 1999年6月.
[CMS] Housley, R.,
「CMS:暗号技術的メッセージの構文(Cryptographic Message Syntax)」,
RFC 2630(English), 1999年6月.
[RFC2459] Housley, R., Ford, W., Polk, W. and D. Solo,
「インターネットX.509 PKI証明書ポリシーと認証実施フレームワーク(Internet X.509 Public Key Infrastructure, Certificate and CRL Profile)」,
RFC 2459, 1999年1月.
[PKCS9] RSA Laboratories,
"The Public-Key Cryptography Standards (PKCS)",
RSA Data Security Inc., Redwood City, California, 1993年11月 Release.
[ISONR] ISO/IEC 10181-5: Security Frameworks in Open Systems. Non-Repudiation Framework. 1997年4月.

7. 著者のアドレス

本実験的RFCは、ETSI TC-SECにおいて作成された。

ETSI
F-06921 Sophia Antipolis, Cedex - FRANCE
650 Route des Lucioles - Sophia Antipolis
Valbonne - FranceTel: +33 4 92 94 42 00 Fax: +33 4 93 65 47 16
secretariat@etsi.fr
http://www.etsi.org

連絡先

Harri Rasilainen
ETSI
650 Route des Lucioles
F-06921 Sophia Antipolis Cedex
FRANCE

EMail: harri.rasilainen@etsi.fr

John Ross
Security & Standards
192 Moulsham Street
Chelmsford, Essex
CM2 0LG
United Kingdom

EMail: ross@secstan.com

Denis Pinkas
Integris, Bull.
68, Route de Versailles
78434 Louveciennes CEDEX
FRANCE

EMail: Denis.Pinkas@bull.net

Nick Pope
Security & Standards
192 Moulsham Street
Chelmsford, Essex
CM2 0LG
United Kingdom

EMail: pope@secstan.com

翻訳者のアドレス

秋山 将
NTT 情報流通プラットフォーム研究所

EMail: akiyama@isl.ntt.co.jp

宮川寧夫
独立行政法人 情報処理推進機構
セキュリティセンター

EMail: miyakawa@ipa.go.jp

付録A(基準類) English

ASN.1定義。 この付録は、 本書中で定義された新しい構文についてのASN.1 syntax署名ポリシー定義の参考定義を提供する。

A.1 X.208 (1988) ASN.1 Syntaxを使った定義 English

注意:A.1に定義されたASN.1モジュールは、コンフリクト(矛盾)する場合、 A.2において定義されるものより優先する。

   ETS-ElectronicSignaturePolicies-88syntax { iso(1) member-body(2)
           us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-mod(0)
       7}

DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS All

IMPORTS

-- Internet X.509 Public Key Infrastructure
 - Certificate and CRL Profile: RFC 2560
        Certificate, AlgorithmIdentifier, CertificateList, Name,
        GeneralNames, GeneralName, DirectoryString,Attribute,
        AttributeTypeAndValue, AttributeType, AttributeValue,
         PolicyInformation, BMPString, UTF8String

  FROM PKIX1Explicit88
        {iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-pkix1-explicit-88(1)}
                                                ;

-- Signature Policy Specification
-- ==============================

SignaturePolicy ::= SEQUENCE {
        signPolicyHashAlg      AlgorithmIdentifier,
        signPolicyInfo         SignPolicyInfo,
        signPolicyHash         SignPolicyHash     OPTIONAL }

SignPolicyHash ::= OCTET STRING

SignPolicyInfo ::= SEQUENCE {
        signPolicyIdentifier            SignPolicyId,
        dateOfIssue                     GeneralizedTime,
        policyIssuerName                PolicyIssuerName,
        fieldOfApplication              FieldOfApplication,
        signatureValidationPolicy       SignatureValidationPolicy,
        signPolExtensions               SignPolExtensions
                                              OPTIONAL
                                                      }

PolicyIssuerName ::= GeneralNames

FieldOfApplication ::= DirectoryString

SignatureValidationPolicy ::= SEQUENCE {
        signingPeriod          SigningPeriod,
        commonRules            CommonRules,
        commitmentRules        CommitmentRules,
        signPolExtensions       SignPolExtensions
                                        OPTIONAL
                                                }

SigningPeriod ::= SEQUENCE {
        notBefore       GeneralizedTime,
        notAfter        GeneralizedTime OPTIONAL }

CommonRules  ::= SEQUENCE {
        signerAndVeriferRules          [0]  SignerAndVerifierRules
                                                          OPTIONAL,
        signingCertTrustCondition      [1]  SigningCertTrustCondition
                                                          OPTIONAL,
        timeStampTrustCondition        [2]  TimestampTrustCondition
                                                        OPTIONAL,
        attributeTrustCondition        [3]  AttributeTrustCondition
                                                        OPTIONAL,
        algorithmConstraintSet         [4]  AlgorithmConstraintSet
                                                         OPTIONAL,
        signPolExtensions              [5]  SignPolExtensions
                                                         OPTIONAL
                                                                 }

CommitmentRules ::= SEQUENCE OF CommitmentRule

CommitmentRule  ::= SEQUENCE {
        selCommitmentTypes                  SelectedCommitmentTypes,
        signerAndVeriferRules          [0]  SignerAndVerifierRules
                                                           OPTIONAL,
        signingCertTrustCondition      [1]  SigningCertTrustCondition
                                                           OPTIONAL,
        timeStampTrustCondition        [2]  TimestampTrustCondition
                                                           OPTIONAL,
        attributeTrustCondition        [3]  AttributeTrustCondition
                                                           OPTIONAL,
        algorithmConstraintSet         [4]  AlgorithmConstraintSet
                                                           OPTIONAL,
        signPolExtensions              [5]  SignPolExtensions
                                                            OPTIONAL
                                                                  }
SelectedCommitmentTypes ::= SEQUENCE OF CHOICE {
        empty                        NULL,
        recognizedCommitmentType     CommitmentType }

CommitmentType ::= SEQUENCE {
        identifier                      CommitmentTypeIdentifier,
        fieldOfApplication      [0] FieldOfApplication OPTIONAL,
        semantics                       [1] DirectoryString OPTIONAL }

SignerAndVerifierRules ::= SEQUENCE {
        signerRules      SignerRules,
        verifierRules    VerifierRules }

SignerRules ::= SEQUENCE {
        externalSignedData         BOOLEAN      OPTIONAL,
                     -- True if signed data is external to CMS structure
                      -- False if signed data part of CMS structure
                      -- not present if either allowed
        mandatedSignedAttr         CMSAttrs,
                      -- Mandated CMS signed attributes
        mandatedUnsignedAttr       CMSAttrs,
                      -- Mandated CMS unsigned attributed
        mandatedCertificateRef     [0] CertRefReq DEFAULT signerOnly,
                      -- Mandated Certificate Reference
        mandatedCertificateInfo    [1] CertInfoReq DEFAULT none,
                      -- Mandated Certificate Info
        signPolExtensions                [2] SignPolExtensions
                                                OPTIONAL}

CMSAttrs ::= SEQUENCE OF OBJECT IDENTIFIER

CertRefReq ::= ENUMERATED {
                                signerOnly (1),
-- Only reference to signer cert mandated
                                fullPath (2)
-- References for full cert path up to a trust point required

                                                  }

CertInfoReq ::= ENUMERATED {
                                none (0),
-- No mandatory requirements
                                signerOnly (1),
-- Only reference to signer cert mandated
                                fullPath (2)
-- References for full cert path up to a trust point mandated
                                                  }

VerifierRules ::= SEQUENCE {
                mandatedUnsignedAttr    MandatedUnsignedAttr,
                signPolExtensions       SignPolExtensions   OPTIONAL
                                                  }

MandatedUnsignedAttr ::=  CMSAttrs
-- Mandated CMS unsigned attributed

CertificateTrustTrees ::=   SEQUENCE OF CertificateTrustPoint

CertificateTrustPoint ::= SEQUENCE {
        trustpoint                              Certificate,
                            -- self-signed certificate
        pathLenConstraint       [0] PathLenConstraint   OPTIONAL,
        acceptablePolicySet     [1] AcceptablePolicySet OPTIONAL,
                            -- If not present "any policy"
        nameConstraints         [2] NameConstraints     OPTIONAL,
        policyConstraints       [3] PolicyConstraints   OPTIONAL }

PathLenConstraint    ::=   INTEGER (0..MAX)

AcceptablePolicySet ::= SEQUENCE OF CertPolicyId

CertPolicyId ::= OBJECT IDENTIFIER

NameConstraints ::= SEQUENCE {
           permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
           excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }

      GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree

      GeneralSubtree ::= SEQUENCE {
           base                    GeneralName,
           minimum         [0]     BaseDistance DEFAULT 0,
           maximum         [1]     BaseDistance OPTIONAL }

      BaseDistance ::= INTEGER (0..MAX)

PolicyConstraints ::= SEQUENCE {
        requireExplicitPolicy           [0] SkipCerts OPTIONAL,
        inhibitPolicyMapping            [1] SkipCerts OPTIONAL }

SkipCerts ::= INTEGER (0..MAX)

CertRevReq ::= SEQUENCE {
        endCertRevReq   RevReq,
        caCerts   [0] RevReq
                             }

RevReq ::= SEQUENCE  {
    enuRevReq  EnuRevReq,
    exRevReq    SignPolExtensions OPTIONAL}

EnuRevReq  ::= ENUMERATED {
        clrCheck        (0), --Checks must be made against current CRLs
        -- (or authority revocation lists)
        ocspCheck       (1), -- The revocation status must be checked
        -- using the Online Certificate Status Protocol (RFC 2450)
        bothCheck       (2),
      -- Both CRL and OCSP checks must be carried out
        eitherCheck     (3),
      -- At least one of CRL or OCSP checks must be carried out
        noCheck         (4),
      -- no check is mandated
        other           (5)
      -- Other mechanism as defined by signature policy extension
                                                }

SigningCertTrustCondition ::=   SEQUENCE {
     signerTrustTrees              CertificateTrustTrees,
     signerRevReq                  CertRevReq
                                               }

TimestampTrustCondition ::= SEQUENCE {
    ttsCertificateTrustTrees    [0]             CertificateTrustTrees
                                                        OPTIONAL,
    ttsRevReq                   [1]             CertRevReq
                                                        OPTIONAL,
    ttsNameConstraints          [2]             NameConstraints
                                                        OPTIONAL,
    cautionPeriod               [3]             DeltaTime
                                                        OPTIONAL,
    signatureTimestampDelay     [4]             DeltaTime
                                                       OPTIONAL }

DeltaTime ::= SEQUENCE {
        deltaSeconds    INTEGER,
        deltaMinutes    INTEGER,
        deltaHours      INTEGER,
        deltaDays       INTEGER }

AttributeTrustCondition ::= SEQUENCE {
        attributeMandated            BOOLEAN,
                                -- Attribute must be present
        howCertAttribute             HowCertAttribute,
        attrCertificateTrustTrees   [0] CertificateTrustTrees OPTIONAL,
        attrRevReq                  [1] CertRevReq            OPTIONAL,
        attributeConstraints        [2] AttributeConstraints  OPTIONAL }

HowCertAttribute ::= ENUMERATED {
        claimedAttribute    (0),
        certifiedAttribtes  (1),
        either              (2) }

AttributeConstraints ::= SEQUENCE {
        attributeTypeConstarints        [0] AttributeTypeConstraints
                                                        OPTIONAL,
        attributeValueConstarints       [1] AttributeValueConstraints
                                                       OPTIONAL }

AttributeTypeConstraints ::= SEQUENCE OF AttributeType

AttributeValueConstraints ::= SEQUENCE OF AttributeTypeAndValue

AlgorithmConstraintSet ::= SEQUENCE {   -- Algorithm constrains on:
signerAlgorithmConstraints      [0]     AlgorithmConstraints OPTIONAL,
                                 -- signer
eeCertAlgorithmConstraints      [1]     AlgorithmConstraints OPTIONAL,
                                 -- issuer of end entity certs.
caCertAlgorithmConstraints      [2]     AlgorithmConstraints OPTIONAL,
                                 -- issuer of CA certificates
aaCertAlgorithmConstraints      [3]     AlgorithmConstraints OPTIONAL,
                                 -- Attribute Authority
tsaCertAlgorithmConstraints     [4]     AlgorithmConstraints OPTIONAL
                                 -- Time-Stamping Authority
                                                    }

AlgorithmConstraints ::= SEQUENCE OF AlgAndLength

AlgAndLength ::= SEQUENCE {
        algID                   OBJECT IDENTIFIER,
        minKeyLength    INTEGER         OPTIONAL,
                             -- Minimum key length in bits other
                SignPolExtensions OPTIONAL
                 }

SignPolExtensions ::= SEQUENCE OF SignPolExtn

SignPolExtn ::= SEQUENCE {
        extnID      OBJECT IDENTIFIER,
                extnValue   OCTET STRING  }

END -- ETS-ElectronicSignaturePolicies-88syntax --
    

A.2 X.680 1997 ASN.1 Syntaxを使った定義 English

注意: A.1で定義されるASN.1モジュールは、 コンフリクト(矛盾)する場合、A.2で定義されたものより優先する。

ETS-ElectronicSignaturePolicies-97Syntax { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-mod(0) 8}

DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS All -

IMPORTS

-- Internet X.509 Public Key Infrastructure
-- Certificate and CRL Profile: RFC 2560
        Certificate, AlgorithmIdentifier, CertificateList, Name,
        GeneralNames, GeneralName, DirectoryString, Attribute,
        AttributeTypeAndValue, AttributeType, AttributeValue,
        PolicyInformation

  FROM PKIX1Explicit93
        {iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        nid-pkix1-explicit-88(1)}
;

-- S/MIME Object Identifier arcs used in the present document
-- ==================================================================

-- S/MIME  OID arc used in the present document
-- id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
--             us(840) rsadsi(113549) pkcs(1) pkcs-9(9) 16 }

-- S/MIME Arcs
-- id-mod  OBJECT IDENTIFIER ::= { id-smime 0 }
-- modules
-- id-ct   OBJECT IDENTIFIER ::= { id-smime 1 }
-- content types
-- id-aa   OBJECT IDENTIFIER ::= { id-smime 2 }
-- attributes
-- id-spq  OBJECT IDENTIFIER ::= { id-smime 5 }
-- signature policy qualifier
-- id-cti  OBJECT IDENTIFIER ::= { id-smime 6 }
-- commitment type identifier
-- Signature Policy Specification
-- ==============================

SignaturePolicy ::= SEQUENCE {
        signPolicyHashAlg      AlgorithmIdentifier,
        signPolicyInfo         SignPolicyInfo,
        signPolicyHash         SignPolicyHash     OPTIONAL }

SignPolicyHash ::= OCTET STRING

SignPolicyInfo ::= SEQUENCE {
        signPolicyIdentifier            SignPolicyId,
        dateOfIssue                     GeneralizedTime,
        policyIssuerName                PolicyIssuerName,
        fieldOfApplication              FieldOfApplication,
        signatureValidationPolicy       SignatureValidationPolicy,
        signPolExtensions               SignPolExtensions
                                                        OPTIONAL
                                                               }

SignPolicyId ::= OBJECT IDENTIFIER

PolicyIssuerName ::= GeneralNames

FieldOfApplication ::= DirectoryString

SignatureValidationPolicy ::= SEQUENCE {
        signingPeriod          SigningPeriod,
        commonRules            CommonRules,
        commitmentRules        CommitmentRules,
        signPolExtensions      SignPolExtensions   OPTIONAL
                                                       }

SigningPeriod ::= SEQUENCE {
        notBefore       GeneralizedTime,
        notAfter        GeneralizedTime OPTIONAL }

CommonRules  ::= SEQUENCE {
        signerAndVeriferRules          [0]  SignerAndVerifierRules
                                                         OPTIONAL,
        signingCertTrustCondition      [1]  SigningCertTrustCondition
                                                         OPTIONAL,
        timeStampTrustCondition        [2]  TimestampTrustCondition
                                                         OPTIONAL,
        attributeTrustCondition        [3]  AttributeTrustCondition
                                                         OPTIONAL,
        algorithmConstraintSet         [4]  AlgorithmConstraintSet
                                                         OPTIONAL,
        signPolExtensions              [5]  SignPolExtensions
                                                         OPTIONAL
                                                        }

CommitmentRules ::= SEQUENCE OF CommitmentRule

CommitmentRule  ::= SEQUENCE {
        selCommitmentTypes                  SelectedCommitmentTypes,
        signerAndVeriferRules          [0]  SignerAndVerifierRules
                                                         OPTIONAL,
        signingCertTrustCondition      [1]  SigningCertTrustCondition
                                                         OPTIONAL,
        timeStampTrustCondition        [2]  TimestampTrustCondition
                                                         OPTIONAL,
        attributeTrustCondition        [3]  AttributeTrustCondition
                                                         OPTIONAL,
        algorithmConstraintSet         [4]  AlgorithmConstraintSet
                                                         OPTIONAL,
        signPolExtensions                    [5]  SignPolExtensions
                                                         OPTIONAL
                                                              }

SelectedCommitmentTypes ::= SEQUENCE OF CHOICE {
        empty                        NULL,
        recognizedCommitmentType     CommitmentType }

CommitmentType ::= SEQUENCE {
        identifier                      CommitmentTypeIdentifier,
        fieldOfApplication      [0] FieldOfApplication OPTIONAL,
        semantics               [1] DirectoryString OPTIONAL }

SignerAndVerifierRules ::= SEQUENCE {
        signerRules      SignerRules,
        verifierRules    VerifierRules }

SignerRules ::= SEQUENCE {
        externalSignedData         BOOLEAN      OPTIONAL,
                     -- True if signed data is external to CMS structure
                        -- False if signed data part of CMS structure
                        -- not present if either allowed
        mandatedSignedAttr         CMSAttrs,
                  -- Mandated CMS signed attributes
        mandatedUnsignedAttr       CMSAttrs,
                  -- Mandated CMS unsigned attributed
        mandatedCertificateRef     [0] CertRefReq DEFAULT signerOnly,
                        -- Mandated Certificate Reference
        mandatedCertificateInfo    [1] CertInfoReq DEFAULT none,
                        -- Mandated Certificate Info
        signPolExtensions                [2] SignPolExtensions  OPTIONAL
                                                      }

CMSAttrs ::= SEQUENCE OF OBJECT IDENTIFIER

CertRefReq ::= ENUMERATED {
                                signerOnly (1),
                   -- Only reference to signer cert mandated
                                fullPath (2)
                   -- References for full cert path up to a trust
                   -- point required
                                                                       }

CertInfoReq ::= ENUMERATED {
                                none (0)        ,
                   -- No mandatory requirements
                                signerOnly (1)  ,
                   -- Only reference to signer cert mandated
                                fullPath (2)
                         -- References for full cert path up to a
                   -- trust point mandated
                                                          }

VerifierRules ::= SEQUENCE {
                mandatedUnsignedAttr    MandatedUnsignedAttr,
                signPolExtensions       SignPolExtensions  OPTIONAL
                }
MandatedUnsignedAttr ::=  CMSAttrs
                          -- Mandated CMS unsigned attributed

CertificateTrustTrees ::=   SEQUENCE OF CertificateTrustPoint

CertificateTrustPoint ::= SEQUENCE {
        trustpoint                              Certificate,
                          -- self-signed certificate
        pathLenConstraint               [0] PathLenConstraint  OPTIONAL,
        acceptablePolicySet     [1] AcceptablePolicySet OPTIONAL,
                          -- If not present "any policy"
        nameConstraints         [2] NameConstraints     OPTIONAL,
        policyConstraints               [3] PolicyConstraints OPTIONAL }

PathLenConstraint    ::=   INTEGER (0..MAX)

AcceptablePolicySet ::= SEQUENCE OF CertPolicyId

CertPolicyId ::= OBJECT IDENTIFIER

NameConstraints ::= SEQUENCE {
           permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
           excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }

      GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree

      GeneralSubtree ::= SEQUENCE {
           base                    GeneralName,
           minimum         [0]     BaseDistance DEFAULT 0,
           maximum         [1]     BaseDistance OPTIONAL }

      BaseDistance ::= INTEGER (0..MAX)

PolicyConstraints ::= SEQUENCE {
        requireExplicitPolicy           [0] SkipCerts OPTIONAL,
        inhibitPolicyMapping            [1] SkipCerts OPTIONAL }

SkipCerts ::= INTEGER (0..MAX)

CertRevReq ::= SEQUENCE {
        endCertRevReq   RevReq,
        caCerts      [0] RevReq
                                          }

RevReq ::= SEQUENCE  {
    enuRevReq  EnuRevReq,
    exRevReq    SignPolExtensions OPTIONAL}

EnuRevReq  ::= ENUMERATED {
        clrCheck        (0),
                   -- Checks must be made against current CRLs
                   -- (or authority revocation lists)
        ocspCheck       (1),
                   -- The revocation status must be checked using
                   -- the Online Certificate Status Protocol (RFC 2450)
        bothCheck       (2),
                   -- Both CRL and OCSP checks must be carried out
        eitherCheck     (3),
                   -- At least one of CRL or OCSP checks must be
                   -- carried out
        noCheck         (4),
                   -- no check is mandated
        other           (5)
                   -- Other mechanism as defined by signature policy
                   -- extension
                                              }

SigningCertTrustCondition ::=   SEQUENCE {
     signerTrustTrees              CertificateTrustTrees,
     signerRevReq                  CertRevReq
                                              }

TimestampTrustCondition ::= SEQUENCE {
    ttsCertificateTrustTrees    [0]             CertificateTrustTrees
                                                       OPTIONAL,
    ttsRevReq                   [1]             CertRevReq
                                                       OPTIONAL,
    ttsNameConstraints          [2]             NameConstraints
                                                       OPTIONAL,
    cautionPeriod                       [3]             DeltaTime
                                                       OPTIONAL,
    signatureTimestampDelay     [4]             DeltaTime
                                                      OPTIONAL }

DeltaTime ::= SEQUENCE {
        deltaSeconds    INTEGER,
        deltaMinutes    INTEGER,
        deltaHours      INTEGER,
        deltaDays       INTEGER }

AttributeTrustCondition ::= SEQUENCE {
        attributeMandated            BOOLEAN,
                               -- Attribute must be present
        howCertAttribute             HowCertAttribute,
        attrCertificateTrustTrees   [0] CertificateTrustTrees OPTIONAL,
        attrRevReq                  [1] CertRevReq            OPTIONAL,
        attributeConstraints        [2] AttributeConstraints  OPTIONAL }

HowCertAttribute ::= ENUMERATED {
        claimedAttribute        (0),
        certifiedAttribtes      (1),
        either                  (2) }

AttributeConstraints ::= SEQUENCE {
        attributeTypeConstarints        [0] AttributeTypeConstraints
                                                       OPTIONAL,
        attributeValueConstarints       [1] AttributeValueConstraints
                                                       OPTIONAL }

AttributeTypeConstraints ::= SEQUENCE OF AttributeType

AttributeValueConstraints ::= SEQUENCE OF AttributeTypeAndValue

AlgorithmConstraintSet ::= SEQUENCE {
                               -- Algorithm constrains on:
signerAlgorithmConstraints      [0]     AlgorithmConstraints OPTIONAL,
                                -- signer
eeCertAlgorithmConstraints      [1]     AlgorithmConstraints OPTIONAL,
                                -- issuer of end entity certs.
caCertAlgorithmConstraints      [2]     AlgorithmConstraints OPTIONAL,
                                -- issuer of CA certificates
aaCertAlgorithmConstraints      [3]     AlgorithmConstraints OPTIONAL,
                                -- Attribute Authority
tsaCertAlgorithmConstraints     [4]     AlgorithmConstraints OPTIONAL
                                -- Time-Stamping Authority
                                                         }

AlgorithmConstraints ::= SEQUENCE OF AlgAndLength

AlgAndLength ::= SEQUENCE {
        algID           OBJECT IDENTIFIER,
        minKeyLength    INTEGER         OPTIONAL,
                               -- Minimum key length in bits
        other           SignPolExtensions OPTIONAL
                                                         }

SignPolExtensions ::= SEQUENCE OF SignPolExtn

SignPolExtn ::= SEQUENCE {
        extnID      OBJECT IDENTIFIER,
        extnValue   OCTET STRING  }

END                           -- ETS-ElectronicPolicies-97Syntax
    

付録B(参考情報) English

B.1 署名ポリシーと署名検証ポリシー English

電子署名の定義においては次のように述べられている。: “コミットメントは、ある識別子(例えば、 名前または仮名そして任意のロール)の署名者によって、 一定の時刻における、“署名ポリシー”に明白に裏書されている。”

電子署名は、一般に、 法律または契約のフレームワークのコンテキストの範囲内で適用される。 これは、電子署名と任意の特別なセマンティックス(例えば、合意、 意思)に関する要件を確立する。 これらの要件は、 非常に一般的で抽象的な言葉または詳細なルールで定義されうる。 法律または契約のフレームワークによって含まれる電子署名と関連付けられた特定のセマンティックスは本書の範囲外である。

署名ポリシーが、法律/契約のコンテキストの範囲内において、 コミットメントを規定すると認識される場合、 署名者は署名データの暗示的または明示的な部分である条件と制約に確かに同意する。

2人の独立した人が電子署名を評価したい時には、 彼らが同じ結果を得ることは必須である。 それゆえに署名時に署名者によって同意された条件が検証者と任意の仲裁者に対して示されることは重要である。 すべての検証データと共に電子署名上の署名ポリシーの技術的な含意は“署名検証ポリシー”と呼ばれる。 署名検証ポリシーは署名を検証するために利用されるルールを規定する。

本書は、署名ポリシーの仕様の形式とエンコーディングを指示しない。 しかし、ある署名ポリシーに対して、特定のバイナリーエンコード値を持つ、 ただひとつの確定した形式が存在しなければならない。

本書は、オプションとしてAbstract Syntax Notation 1 (ASN.1)の使用を基本とした署名検証ポリシーのための形式的な構造を含んでいる。

署名ポリシーの仕様とそのハッシュ値が与えらた場合、 検証処理の実装は仕様で定義されたルールに従わなければならない。

本書は、どのように実装されるべきかについていかなる制限も行わない。 5章で定義されているものと同様な適合要件に従った実装を提供すること。 また、実装では次のオプションを含む。:

署名ポリシーOIDによって識別される、 特定の署名ポリシーをサポートする検証処理。 署名ポリシーのすべての処理ルールが明瞭に定義されるならば、 そのような実装は人間が読み易い記述に従うべきである。 しかしながら、追加のポリシーがサポートされる必要がある場合、 そのような実装は各追加ポリシーのためにカスタマイズされる必要がある。 この種の実装は最初に実装することはより簡単だろうが、 多数の追加の署名ポリシーをサポートするために拡張することは困難だろう。

動的にプログラム可能であり、 コンピュータ処理言語で提供される署名ポリシーの記述に従って、 その検証ルールを適合することができる検証処理。 現行の本書は、ASN.1構文(6.1参照)を使用してそのようなポリシーを定義する。 この種の実装は、 署名ポリシーの部分として明示されたすべての検証ルールが実装によって理解されるならば、 毎回修正されること無く、多様な署名ポリシーをサポートするだろう。 (つまり、追加のルールが指定される場合、単に修正を要求する)。

署名ポリシーの明確なコンテントは本書では規定されない。 しかし、その実装要件に関していかなる曖昧さも避けるために、 署名ポリシーは十分に確定されなければならない。 電子署名が受け入れられるべき状況下では、 それは絶対的に明確でなければならない。 このため、これ(署名ポリシー)は、下記の情報を含む必要がある。:

検証ポリシールールの検証は、 様々なコミットメントタイプに適用する可能性がある。

B.2 署名ポリシーの識別 English

データが署名されたとき、署名ポリシーの識別子を署名に含めることにより、 署名者は署名ポリシーがその電子署名に適用できることを意図する。 署名者と検証者は識別されたポリシーにより明示されたルールを適用しなければならない。 署名ポリシーの識別子に加えて、 署名者により選択されたポリシーが検証者の使用するものと同一であることを検証するために、 署名者は署名ポリシーのハッシュを含めなければならない。

署名ポリシーは追加の情報によって選別される可能性がある。 これは、以下を含むことができる。:

署名ポリシーが特定されない場合、 署名はいかなるポリシー制約も無しにして生成/検証されたと見なされ、 それゆえに、署名ポリシーのコンテキストを通して明確な法律または契約の意味が与えられない可能性がある。

“署名ポリシー”は、OID(オブジェクト識別子)によって識別され、 その署名ポリシーのハッシュを使用して検証される可能性がある。

B.3 全般的な署名ポリシー情報 English

全般情報は、以降に記述されているように、 署名ポリシーを形成するルールの定義と一緒に署名ポリシーについて書き留められるべきである。 これは以下を含む必要がある。:

B.4 認知されたコミットメントタイプ English

署名検証ポリシーはセキュリティポリシーに基づいて生成される電子署名によってサポートされているのと同様にひとつ以上のコミットメントの形式を認知するだろう。 電子署名が認知されたコミットメントタイプを含まない場合、 電子署名のセマンティックスは署名されたデータとそこで使用されるコンテキストに依存する。

認知されたコミットメントタイプのみが電子署名の中で許可される。

コミットメントタイプの定義は、次を含む。:

コミットメントタイプの定義を登録することができる。:

法律上/契約上のコンテキストは、 署名ポリシーと認知されたコミットメントタイプによって定義されるように、 署名に適用されるルールを決定し、意図した目的のために適用する。

B.5 認証機関の利用ルール English

検証者の証明書検証処理、そして、有効な電子署名のため、 署名者によって使用される可能性がある証明書は、 署名検証ポリシーにおけるトラストポイントの組み合わせと認証パス制約によって制約される可能性がある。

B.5.1 トラストポイント English

署名検証ポリシーは、 署名検証のために使用される認証機関トラストポイントを定義する。 いくつかのトラストポイントが、ひとつの署名ポリシーの下、 明示される可能性がある。 明確なトラストポイントが、署名ポリシーの下で定義される、 特定のタイプのコミットメントに対応するために明示される可能性がある。 署名を有効と見なすため、認証パスは、 署名者によって選択された証明書を発行している認証機関(すなわち、 使用された利用者証明書)と“署名検証ポリシー”のトラストポイントのひとつとの間に存在しなければならない。

B.5.2 認証パス English

認証チェーンとトラストポイントの中のひとつ以上のCAによって発行された証明書の利用において制約が存在する可能性がある。 2つの重要な制約は証明書ポリシー制約と名前制約である。:

名前制約は、 “署名ポリシー”がひとつ以上のトラストポイントを識別するときに、 特に重要である。 この場合、ある特定のトラストポイントの証明書は、 名前制約の下に許可された名前を持つ利用者の署名を検証するためにだけ使用してよい。

認証機関は階層構造(木構造)で組織され、 この階層構造(木構造)は様々なCAと利用者のCAとの間の信頼関係を表わすであろう。 あるいは、階層構造(木構造)の証明書と、相互構造の証明書が結合した、 メッシュ上の関係が存在する可能性がある。 本書での認証パスに関する要件とは、 すべてのCAと署名者の利用者証明書との間の信頼関係を提供することである。 検証という観点から、開始ポイントは“トラストポイント”である。 トラストポイントは、通常、自己署名証明書を発行するCAであり、 検証者が認証チェーンを検証する開始ポイントである。 名前制約はトラストポイントから適用されると想定され、この場合、 署名者の利用者証明書までに至る認証パスを作成する証明書のセットに適用される。

ポリシー制約は、より簡単に処理されるが、 認証パスで使用される証明書内の証明書ポリシー識別子の存在を効果的に要求する。

認証パス処理は、このようにして、通常、 署名ポリシーのトラストポイントのひとつから開始して利用者の証明書で終了する。 RFC 2459の6章で定義されている認証パス処理の手続きは、 認証パス処理において検証者によって選択される次の初期パラメータを識別する。

署名検証ポリシー識別子は、これらのパラメータに対して制約を課す。

B.6 失効ルール English

署名ポリシーは、証明書の正当性をチェックするのに必要となる、 証明書失効リスト(CRL)そして/またはオンライン証明書状態チェックサービスを利用するための要件について明示したルールを定義する必要がある。 これらのルールは実行されなければならない必須の最小限のチェック内容を規定する。

多くの場合、 どちらのチェックもOCSPサーバーからの証明書状態を利用できないため、 CRLチェックの実行が選択される可能性があることが期待される。 検証者は、それが署名ポリシー失効ルールに相反していないのであれば、 どのように失効状態(例えば、認証機関アクセス情報、または、 CRL配布点に関する証明書拡張フィールド)をチェックするのが最も良いかを決めた証明書内の情報を考慮してもよい。

B.7 ロールの利用ルール English

ロールは、主張されたロール、または、 属性証明書を使用して認証されたロールをサポートできる。

B.7.1 属性値 English

ロールの下の署名が署名ポリシーによって必須とされるとき、 属性証明書が使用されるか、または、 主張されたロールの属性を署名者が提供する。 受け入れ可能な属性の型または値はコミットメントの形式に依存する。 例えば、利用者は彼のロールのひとつ以上に基づいたコミットメントを含むデータに対して署名することを許可するいくつかのロールを持つ。

B.7.2 認証された属性のためのトラストポイント English

認証されたロールの下の署名が署名ポリシーによって指示されるとき、 属性認証機関が使用され、 電子署名の全面的な検証の一部として検証される必要がある。 属性認証機関のためのトラストポイントは、 署名者のCAの証明書を評価するためのトラストポイントと同じである必要はない。 このように、ロールを検証するためのトラストポイントは、 利用者の鍵の認証パスを検証するために使用されるトラストポイントと同じである必要はない。

命名と証明書ポリシー制約は、CAに適用されるときと同様に、 AAに適用される可能性がある。 AAとCAにおける制約は全く同一である必要はない。

AAは、署名者がある組織の代表として署名を生成するときに使用され、 署名がある組織のロールを表わすときに特に有効となりうる。 AAは、CAと同じ機関である可能性があるし、そうでない可能性がある。

それゆえ、 署名ポリシーは属性認証機関のために使用されうるトラストポイントを、 認証機関のために使用されるものと同じトラストポイントに対する参照または独立したリストによって識別する。

B.7.3 認証された属性のための認証パス English

属性認証機関は、CAと同様に、 AAが木の葉となる木構造で組織される可能性がある。 命名とその他の制約は、 その他の電子署名の認証パスに対するものと同じ方法で属性認証パスに要求される可能性がある。

それゆえ、 署名ポリシーは認証パス処理に対する入力として使用される次のパラメータへの制約を識別する。:

B.8 タイムスタンプとタイミングの利用ルール English

下記のルールは、タイムスタンプ局のための認証パスの制約と、 タイムスタンプ局の名前の制約と、 全般的なタイミング制約を明示するときに使用される必要がある。

B.8.1 トラストポイントと認証パス English

タイムスタンプ局の署名鍵は、 認証パスによってサポートされる必要がある可能性がある。 タイムスタンプ局のために利用される認証パスは、 署名者の鍵のための認証パスと同じ方法でトラストポイントとパス制約を要求する。

B.8.2 タイムスタンプ局の名前 English

タイムスタンプ局として活動するだろう命名された主体に対する検証ポリシーによって制限される必要がある可能性がある。

B.8.3 タイミング制約 - 注意期間 English

電子署名が本当に有効となる前に、検証者は、 プライベート鍵の持ち主が署名時刻において本当に鍵を所有しているただ一人であることを確認しなければならない。 しかし、鍵の信頼低下または紛失に気づくタイミングと、 失効レポートが配布されるタイミングとの間で、必然的な遅れが存在する。 署名の有効性に対する確信を与えるため、「注意期間」は、 署名が高い確信と共に有効であると言えるようになる前に指定される可能性がある。 検証者はこの警戒的な署名の後に署名を再検証するか、または、 署名を検証する前にこの期間を待つ可能性がある。

検証ポリシーはこのような注意的な期間を明示する可能性がある。

B.8.4 タイミング制約 - タイムスタンプ遅延 English

署名が生成される時刻と署名者のデジタル署名がタイムスタンプされる時刻との間にいくらかの遅れが存在する可能性がある。 しかし、この経過期間が長くなればなるほど、 信頼低下または署名者による署名用プライベート鍵の故意の失効のために、 署名が有効でなくなる危険性が大きくなる。 したがって、署名ポリシーは、 署名者が主張する署名時刻とタイムスタンプ内に含まれる時刻との間の最大の受け入れ可能な遅延時間を明示すべきである。

B.9 従うべき検証データのためのルール English

署名者と検証者への要件を明示することによって、 必要な情報をすべて用意するための2つの主体の責任を明確に定義することができる。

これらの検証データルールは次を含む。:

B.10 アルゴリズム制約と鍵長のためのルール English

署名検証ポリシーは、(以下の場面で使用する)署名アルゴリズム(ハッシュ、 公開鍵、結合)のセットと鍵長を指定する。:

B.11 他の署名ポリシールール English

署名ポリシーは、例えば、 署名者によって使用される環境に関連したルールなど、 追加的なポリシールールを規定しうる。 これらの追加的なルールは、コンピュータが処理可能な形式、 かつ/または、人間が読むことの可能な形式で定義される可能性がある。

B.12 署名ポリシー保護 English

署名者または検証者が発行者から署名ポリシーの複製を獲得したとき、 その出所は認証されるべきである(例えば、電子署名を使用して)。 署名者が署名ポリシーを参照するとき、ポリシーのOID、ハッシュ値、 そして、そのポリシーのハッシュアルゴリズムのOIDは、 電子署名に含まれなければならない。

この現行文書では、署名ポリシーは、ただひとつの値に算出されること、 かつ、明示されたハッシュアルゴリズムを使用して唯一のハッシュ値が算出されることが必須の要件である。 これは、計算されるただひとつのハッシュ値に対して、 署名ポリシーのエンコードされた形式のただひとつのバイナリ値が存在しなければならないことを意味している。 例えば、ある特定のファイル形式、長さ、そして、 ある特定の署名ポリシーのために、固定化され、定義され、 そこでハッシュ値が計算されるフォーマットが存在する可能性がある。

ハッシュ値は、以下によって得られる可能性がある。:

署名者は、 署名ポリシーで許可された彼の好みのハッシュアルゴリズムと確定されたバイナリエンコード形式を使用して、 署名ポリシーへ署名者自身のハッシュ計算を実行する。

署名者は、ポリシーの出所を検証済みであるとき、 コンピュータ処理可能なポリシーの形式に含まれるハッシュアルゴリズムとハッシュ値の両方を使用してよい(6章参照のこと)。

著作権表記全文

Copyright (C) The Internet Society (2001). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

謝辞

Funding for the RFC Editor function is currently provided by the Internet Society.