ネットワーク WG Request for Comments: 3125 分類: 実験的 |
J. Ross Security & Standards D. Pinkas Integris N. Pope Security & Standards 2001年9月 |
このメモは、 インターネットコミュニティ対して実験的プロトコルを規定するものである。 これは、インターネットのいかなる種類の標準をも指定するものではない。 改良のための検討や提言を求めるものである。 このメモの配布に制限はない。
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 からダウンロードできる。
本書は、ビジネス・トランザクション(例えば、購入要求、 契約および請求)を含む様々な種類のトランザクションにおける、 電子署名と共に使用できる署名ポリシーを扱おうとするものである。 電子署名は個人・企業間、企業間、個人・政府間などのあらゆるトランザクションにおいても使用可能である。 本書はいかなる環境からも独立している。 例えば、スマートカード、GSM SIM カード、 電子署名のための特別なプログラム等、あらゆる環境に適用できる。
本書のキーワード、"MUST"、"MUST NOT"、"REQUIRED"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL"は、 RFC2119に記述されているように解釈されるべきものである。
本書は、以下の用語を使っている。:
(信用されるサービス提供者である)署名ポリシー発行者は、 特定のビジネス要求を満たすために、電子署名の生成、 そして検証(validation/verification)のための技術上、 手続上の要件を定義した署名ポリシーを発行する。
署名者は、電子署名を生成する主体である。 署名者が署名ポリシー識別子を伴って署名したとき、それは、 電子署名が付与されたデータが、 その署名ポリシーによって定義されているルールに則って署名されたということを、 署名を行う主体に代わってコミットしていることを意味する。
検証者は、電子署名を検証する主体のことで、 ひとりまたは複数の主体になる可能性がある。 検証者は、電子署名を有効とするため、 署名ポリシーによって定義されているルールのもと電子署名を検証しなければならない(MUST)。
仲裁者は、署名者・検証者間の紛争を仲裁する主体である。 仲裁者は、予め検証された電子署名を、 後に再検証するときには検証者として行為する。
信用されるサービス提供者(TSP)は、 署名者・検証者間の信頼関係の構築に貢献する、 ひとつまたは複数の主体である。 TSPがサポートする特有なサービスの利用は、 署名ポリシーによって指定される可能性がある(MAY)。 TSPのサポートサービスは、次のものを含む。 :ユーザの証明書、相互証明書、タイムスタンプトークン、CRL、ARL、 OCSPレスポンス。
信用されるサービス提供者(TSP)は、 自ら署名ポリシー発行者になる可能性がある(MAY)。 TSPは、特定のビジネス要件を満たすために、 電子署名の生成と検証のための技術上、 手続上の要件を定義しなければならない(MUST)。
以下のTSP は、本書で定義される機能をサポートするために利用される。:
認証機関(CA)は、ユーザに公開鍵証明書を提供する。
登録機関(RA)は、CAが証明書を作成する前に、主体の登録を許可する。
リポジトリ機関は、CAが発行したCRL、相互証明書(すなわち、CA 証明書)、 署名ポリシー発行者が発行した署名ポリシー、そして、任意ではあるが、 CAが発行した公開鍵証明書(すなわち、葉の証明書)を公開する。
タイムスタンプ局は、あるデータが、 信頼できる時刻以前に作成されたことを証明する。
OCSPレスポンダは、特定の証明書の状態情報(すなわち、失効、 失効されていない、不明)を提供する。
属性認証機関は、公開鍵証明書とリンクした属性をユーザに提供する。
仲介者は、署名者・検証者間の紛争を仲裁する主体である。
署名ポリシーの仕様は、ポリシーについての全般的な情報、 検証ポリシールール、そして、その他の署名ポリシー情報を含む。
本書は、次の指定をする。:
本書は、署名ポリシーの仕様の形式について、規定するが必須とはしない。 署名ポリシーは、次のどちらかで明示される可能性がある。:
本書は、構造化された署名ポリシーを定義するために使用されうる、 ASN.1ベースの構文を定義している。 本書の今後の版では、XMLを使用した、 構造化された署名ポリシー仕様が含まれる可能性がある。
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は、 署名ポリシーの補足的な構成要素の定義を拡張するための汎用的な方法である。
署名検証ポリシーは、署名者にとって、 署名者の提供する電子署名にどのデータ要素が存在しなければいけないか、 そして、検証者にとって、電子署名を潜在的に有効とするため、 署名ポリシーに則って、 どのデータ要素が存在しなければいけないかを定義している。
署名検証ポリシーは、下記のとおり。:
SignatureValidationPolicy ::= SEQUENCE { signingPeriod SigningPeriod, commonRules CommonRules, commitmentRules CommitmentRules, signPolExtensions SignPolExtensions OPTIONAL }
signingPeriodは、署名を生成するために、 これ以前にその署名ポリシーを使用してはいけない(SHOULD NOT)。 日付と時刻について規定し、オプションとして、 これ以降に署名ポリシーを使用すべきではない日付について規定している。
SigningPeriod ::= SEQUENCE { notBefore GeneralizedTime, notAfter GeneralizedTime OPTIONAL }
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に存在しなければならない。:
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とセマンティックフィールドは、 ポリシーのために定義された、すべての適用フィールド範囲内において、 特定の使用とコミットメント方法を定義している。
下記のルールは、 [ES-FORMATS] を使用して定義された電子署名のフォーマットに適用する。
SignerAndVerifierRulesは、下記のように定義された、 署名者ルールと検証者ルールから成る。
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
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
(後章で定義されている)SigningCertTrustCondition、 TimestampTrustCondition および AttributeTrustConditionは、 下記に定義されているCertificateTrustTreesとCertRevReqの2つのASN.1構造を使用する。
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の値は、明示的なポリシーが要求される前に、 パス中(トラストポイントの自己証明書を含む)に現れる可能性がある、 続く証明書の数を示す。 受け入れ可能なポリシー識別子は、 認証パスのユーザによって要求されたポリシーの識別子、または、 ポリシーマッピングを通して同等と示されたポリシーの識別子である。
RevocRequirementsフィールドは、 証明書の失効状態をチェックするために使用される、CRL、かつ/または、 OCSPレスポンスを通して得られる、失効情報のための最低限の要求を示す。 このASN.1構造は、署名用証明書、TSAの証明書、そして、 属性証明書を検証するためのポリシーを定義するのに使用される。
CertRevReq ::= SEQUENCE { endCertRevReq RevReq, caCerts [0] RevReq }
RevReq ::= SEQUENCE { enuRevReq EnuRevReq, exRevReq SignPolExtensions OPTIONAL}
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 }
失効要件は、次のような点から示される。:
SigningCertTrustConditionフィールドは、 署名用証明書を検証するために使用される、 認証パス処理のための信用条件を識別する。
SigningCertTrustCondition ::= SEQUENCE { signerTrustTrees CertificateTrustTrees, signerRevReq CertRevReq }
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で与えられた値よりも大きい場合、 その署名は無効と見なされなければならない。
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
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)である。
追加的なの署名ポリシールールが、次に加えられる可能性がある。:
署名ポリシールールに対するこれらの拡張は、 下記において定義される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によって識別されるのと同様にして、構文の定義と、 拡張のセマンティックを含まなければならない。
本書で定義されている電子署名メカニズムのセキュリティは、 署名者のプライベート鍵のプライバシー(訳注:守秘性)に依存する。 実装においては、 プライベート鍵が危殆化されないことを確保する段取りを行わなければならない。
実装者は、 暗号アルゴリズムが時間と共に脆弱化することを認識する必要がある。 新しい暗号技術が開発され、そして、 コンピュータの処理速度が改善されるにつれ、 特定の暗号アルゴリズムがブレイクされる要因は減少するであろう。 それゆえ、暗号アルゴリズムの実装は、 新しいアルゴリズムを容易に追加できるよう、モジュール化する必要がある。 すなわち、実装者は、 時間と共に変化するアルゴリズムを実装できるように、準備される必要がある。
署名者と検証者のシステムは、OIDによって識別され、 参照される署名ポリシーの仕様に従って、 電子署名を処理できるようにするものとする。(3章参照)
[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月. |
本実験的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
ASN.1定義。 この付録は、 本書中で定義された新しい構文についてのASN.1 syntax署名ポリシー定義の参考定義を提供する。
注意: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.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
電子署名の定義においては次のように述べられている。: “コミットメントは、ある識別子(例えば、 名前または仮名そして任意のロール)の署名者によって、 一定の時刻における、“署名ポリシー”に明白に裏書されている。”
電子署名は、一般に、 法律または契約のフレームワークのコンテキストの範囲内で適用される。 これは、電子署名と任意の特別なセマンティックス(例えば、合意、 意思)に関する要件を確立する。 これらの要件は、 非常に一般的で抽象的な言葉または詳細なルールで定義されうる。 法律または契約のフレームワークによって含まれる電子署名と関連付けられた特定のセマンティックスは本書の範囲外である。
署名ポリシーが、法律/契約のコンテキストの範囲内において、 コミットメントを規定すると認識される場合、 署名者は署名データの暗示的または明示的な部分である条件と制約に確かに同意する。
2人の独立した人が電子署名を評価したい時には、 彼らが同じ結果を得ることは必須である。 それゆえに署名時に署名者によって同意された条件が検証者と任意の仲裁者に対して示されることは重要である。 すべての検証データと共に電子署名上の署名ポリシーの技術的な含意は“署名検証ポリシー”と呼ばれる。 署名検証ポリシーは署名を検証するために利用されるルールを規定する。
本書は、署名ポリシーの仕様の形式とエンコーディングを指示しない。 しかし、ある署名ポリシーに対して、特定のバイナリーエンコード値を持つ、 ただひとつの確定した形式が存在しなければならない。
本書は、オプションとしてAbstract Syntax Notation 1 (ASN.1)の使用を基本とした署名検証ポリシーのための形式的な構造を含んでいる。
署名ポリシーの仕様とそのハッシュ値が与えらた場合、 検証処理の実装は仕様で定義されたルールに従わなければならない。
本書は、どのように実装されるべきかについていかなる制限も行わない。 5章で定義されているものと同様な適合要件に従った実装を提供すること。 また、実装では次のオプションを含む。:
署名ポリシーOIDによって識別される、 特定の署名ポリシーをサポートする検証処理。 署名ポリシーのすべての処理ルールが明瞭に定義されるならば、 そのような実装は人間が読み易い記述に従うべきである。 しかしながら、追加のポリシーがサポートされる必要がある場合、 そのような実装は各追加ポリシーのためにカスタマイズされる必要がある。 この種の実装は最初に実装することはより簡単だろうが、 多数の追加の署名ポリシーをサポートするために拡張することは困難だろう。
動的にプログラム可能であり、 コンピュータ処理言語で提供される署名ポリシーの記述に従って、 その検証ルールを適合することができる検証処理。 現行の本書は、ASN.1構文(6.1参照)を使用してそのようなポリシーを定義する。 この種の実装は、 署名ポリシーの部分として明示されたすべての検証ルールが実装によって理解されるならば、 毎回修正されること無く、多様な署名ポリシーをサポートするだろう。 (つまり、追加のルールが指定される場合、単に修正を要求する)。
署名ポリシーの明確なコンテントは本書では規定されない。 しかし、その実装要件に関していかなる曖昧さも避けるために、 署名ポリシーは十分に確定されなければならない。 電子署名が受け入れられるべき状況下では、 それは絶対的に明確でなければならない。 このため、これ(署名ポリシー)は、下記の情報を含む必要がある。:
検証ポリシールールの検証は、 様々なコミットメントタイプに適用する可能性がある。
データが署名されたとき、署名ポリシーの識別子を署名に含めることにより、 署名者は署名ポリシーがその電子署名に適用できることを意図する。 署名者と検証者は識別されたポリシーにより明示されたルールを適用しなければならない。 署名ポリシーの識別子に加えて、 署名者により選択されたポリシーが検証者の使用するものと同一であることを検証するために、 署名者は署名ポリシーのハッシュを含めなければならない。
署名ポリシーは追加の情報によって選別される可能性がある。 これは、以下を含むことができる。:
署名ポリシーが特定されない場合、 署名はいかなるポリシー制約も無しにして生成/検証されたと見なされ、 それゆえに、署名ポリシーのコンテキストを通して明確な法律または契約の意味が与えられない可能性がある。
“署名ポリシー”は、OID(オブジェクト識別子)によって識別され、 その署名ポリシーのハッシュを使用して検証される可能性がある。
全般情報は、以降に記述されているように、 署名ポリシーを形成するルールの定義と一緒に署名ポリシーについて書き留められるべきである。 これは以下を含む必要がある。:
署名検証ポリシーはセキュリティポリシーに基づいて生成される電子署名によってサポートされているのと同様にひとつ以上のコミットメントの形式を認知するだろう。 電子署名が認知されたコミットメントタイプを含まない場合、 電子署名のセマンティックスは署名されたデータとそこで使用されるコンテキストに依存する。
認知されたコミットメントタイプのみが電子署名の中で許可される。
コミットメントタイプの定義は、次を含む。:
コミットメントタイプの定義を登録することができる。:
法律上/契約上のコンテキストは、 署名ポリシーと認知されたコミットメントタイプによって定義されるように、 署名に適用されるルールを決定し、意図した目的のために適用する。
検証者の証明書検証処理、そして、有効な電子署名のため、 署名者によって使用される可能性がある証明書は、 署名検証ポリシーにおけるトラストポイントの組み合わせと認証パス制約によって制約される可能性がある。
署名検証ポリシーは、 署名検証のために使用される認証機関トラストポイントを定義する。 いくつかのトラストポイントが、ひとつの署名ポリシーの下、 明示される可能性がある。 明確なトラストポイントが、署名ポリシーの下で定義される、 特定のタイプのコミットメントに対応するために明示される可能性がある。 署名を有効と見なすため、認証パスは、 署名者によって選択された証明書を発行している認証機関(すなわち、 使用された利用者証明書)と“署名検証ポリシー”のトラストポイントのひとつとの間に存在しなければならない。
認証チェーンとトラストポイントの中のひとつ以上のCAによって発行された証明書の利用において制約が存在する可能性がある。 2つの重要な制約は証明書ポリシー制約と名前制約である。:
名前制約は、 “署名ポリシー”がひとつ以上のトラストポイントを識別するときに、 特に重要である。 この場合、ある特定のトラストポイントの証明書は、 名前制約の下に許可された名前を持つ利用者の署名を検証するためにだけ使用してよい。
認証機関は階層構造(木構造)で組織され、 この階層構造(木構造)は様々なCAと利用者のCAとの間の信頼関係を表わすであろう。 あるいは、階層構造(木構造)の証明書と、相互構造の証明書が結合した、 メッシュ上の関係が存在する可能性がある。 本書での認証パスに関する要件とは、 すべてのCAと署名者の利用者証明書との間の信頼関係を提供することである。 検証という観点から、開始ポイントは“トラストポイント”である。 トラストポイントは、通常、自己署名証明書を発行するCAであり、 検証者が認証チェーンを検証する開始ポイントである。 名前制約はトラストポイントから適用されると想定され、この場合、 署名者の利用者証明書までに至る認証パスを作成する証明書のセットに適用される。
ポリシー制約は、より簡単に処理されるが、 認証パスで使用される証明書内の証明書ポリシー識別子の存在を効果的に要求する。
認証パス処理は、このようにして、通常、 署名ポリシーのトラストポイントのひとつから開始して利用者の証明書で終了する。 RFC 2459の6章で定義されている認証パス処理の手続きは、 認証パス処理において検証者によって選択される次の初期パラメータを識別する。
署名検証ポリシー識別子は、これらのパラメータに対して制約を課す。
署名ポリシーは、証明書の正当性をチェックするのに必要となる、 証明書失効リスト(CRL)そして/またはオンライン証明書状態チェックサービスを利用するための要件について明示したルールを定義する必要がある。 これらのルールは実行されなければならない必須の最小限のチェック内容を規定する。
多くの場合、 どちらのチェックもOCSPサーバーからの証明書状態を利用できないため、 CRLチェックの実行が選択される可能性があることが期待される。 検証者は、それが署名ポリシー失効ルールに相反していないのであれば、 どのように失効状態(例えば、認証機関アクセス情報、または、 CRL配布点に関する証明書拡張フィールド)をチェックするのが最も良いかを決めた証明書内の情報を考慮してもよい。
ロールは、主張されたロール、または、 属性証明書を使用して認証されたロールをサポートできる。
ロールの下の署名が署名ポリシーによって必須とされるとき、 属性証明書が使用されるか、または、 主張されたロールの属性を署名者が提供する。 受け入れ可能な属性の型または値はコミットメントの形式に依存する。 例えば、利用者は彼のロールのひとつ以上に基づいたコミットメントを含むデータに対して署名することを許可するいくつかのロールを持つ。
認証されたロールの下の署名が署名ポリシーによって指示されるとき、 属性認証機関が使用され、 電子署名の全面的な検証の一部として検証される必要がある。 属性認証機関のためのトラストポイントは、 署名者のCAの証明書を評価するためのトラストポイントと同じである必要はない。 このように、ロールを検証するためのトラストポイントは、 利用者の鍵の認証パスを検証するために使用されるトラストポイントと同じである必要はない。
命名と証明書ポリシー制約は、CAに適用されるときと同様に、 AAに適用される可能性がある。 AAとCAにおける制約は全く同一である必要はない。
AAは、署名者がある組織の代表として署名を生成するときに使用され、 署名がある組織のロールを表わすときに特に有効となりうる。 AAは、CAと同じ機関である可能性があるし、そうでない可能性がある。
それゆえ、 署名ポリシーは属性認証機関のために使用されうるトラストポイントを、 認証機関のために使用されるものと同じトラストポイントに対する参照または独立したリストによって識別する。
属性認証機関は、CAと同様に、 AAが木の葉となる木構造で組織される可能性がある。 命名とその他の制約は、 その他の電子署名の認証パスに対するものと同じ方法で属性認証パスに要求される可能性がある。
それゆえ、 署名ポリシーは認証パス処理に対する入力として使用される次のパラメータへの制約を識別する。:
下記のルールは、タイムスタンプ局のための認証パスの制約と、 タイムスタンプ局の名前の制約と、 全般的なタイミング制約を明示するときに使用される必要がある。
タイムスタンプ局の署名鍵は、 認証パスによってサポートされる必要がある可能性がある。 タイムスタンプ局のために利用される認証パスは、 署名者の鍵のための認証パスと同じ方法でトラストポイントとパス制約を要求する。
タイムスタンプ局として活動するだろう命名された主体に対する検証ポリシーによって制限される必要がある可能性がある。
電子署名が本当に有効となる前に、検証者は、 プライベート鍵の持ち主が署名時刻において本当に鍵を所有しているただ一人であることを確認しなければならない。 しかし、鍵の信頼低下または紛失に気づくタイミングと、 失効レポートが配布されるタイミングとの間で、必然的な遅れが存在する。 署名の有効性に対する確信を与えるため、「注意期間」は、 署名が高い確信と共に有効であると言えるようになる前に指定される可能性がある。 検証者はこの警戒的な署名の後に署名を再検証するか、または、 署名を検証する前にこの期間を待つ可能性がある。
検証ポリシーはこのような注意的な期間を明示する可能性がある。
署名が生成される時刻と署名者のデジタル署名がタイムスタンプされる時刻との間にいくらかの遅れが存在する可能性がある。 しかし、この経過期間が長くなればなるほど、 信頼低下または署名者による署名用プライベート鍵の故意の失効のために、 署名が有効でなくなる危険性が大きくなる。 したがって、署名ポリシーは、 署名者が主張する署名時刻とタイムスタンプ内に含まれる時刻との間の最大の受け入れ可能な遅延時間を明示すべきである。
署名者と検証者への要件を明示することによって、 必要な情報をすべて用意するための2つの主体の責任を明確に定義することができる。
これらの検証データルールは次を含む。:
署名検証ポリシーは、(以下の場面で使用する)署名アルゴリズム(ハッシュ、 公開鍵、結合)のセットと鍵長を指定する。:
署名ポリシーは、例えば、 署名者によって使用される環境に関連したルールなど、 追加的なポリシールールを規定しうる。 これらの追加的なルールは、コンピュータが処理可能な形式、 かつ/または、人間が読むことの可能な形式で定義される可能性がある。
署名者または検証者が発行者から署名ポリシーの複製を獲得したとき、 その出所は認証されるべきである(例えば、電子署名を使用して)。 署名者が署名ポリシーを参照するとき、ポリシーの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.