<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    6.1 基本數據格式

    本標準中數據格式、語法結構等均采用GB/T16262.1-2006規定的ASN.1表示描述。本條中的數據格式定義以RFC2630中定義的加密消息語法(CMS)和RFC2634中定義的增強安全服務(ESS)為基礎。對于RFC2630和RFC2634中已定義的語法結構,本標準直接引用不再給出具體定義。

    6.1.1 總體語法結構

    電子簽名的總體語法結構見RFC2630中的定義。

    6.1.2 數據內容類型

    電子簽名中的數據內容類型的語法結構和要求見RFC2630。

    6.1.3 簽名數據內容類型

    電子簽名中的簽名數據內容類型的語法結構和要求見RFC2630。

    為了確保簽名驗證方能夠正確地使用簽名者公鑰進行驗證,本標準中規定,簽名證書屬性(Signed Attribute)應包含簽名者的簽名認證證書的雜湊值,簽名證書屬性的定義見RFC2634。

    6.1.4 簽名數據類型

    電子簽名中的簽名數據類型的語法結構和要求除了符合RFC2630的規定外,還應滿足以下3點:

    a) 版本號須設置為3;

    b) 用于簽名的簽名者證書的標識須經過簽名;

    c) 簽名數據中必須至少有一個簽名者信息。

    6.1.5 封裝數據內容信息類型

    電子簽名中的封裝數據內容信息類型的語法結構和要求見RFC2630。其中各字段的含義和要求與RFC2630中一致,另外還要求字段中必須至少有一個簽名者信息。

    6.1.6 簽名者信息類型

    電子簽名中的簽名者信息類型的語法結構和要求見RFC2630。每個簽名者的信息都用一個簽名者信息類型的數據結構表示,對有多個獨立簽名者的情況,每個簽名者都使用一個簽名者信息類型的數據結構表示。

    簽名者信息類型中各字段的含義和要求與RFC2630中相同,但被簽名屬性中須包含以下屬性:

    a) 內容類型;

    b) 消息摘要;

    c) 簽名時間;

    d) 簽名證書;

    e) 簽名策略標識。

    其消息摘要的計算流程、消息簽名的生成流程見RFC2630中的相關規定。消息簽名的驗證流程除了RFC2630中規定的內容外,還應滿足以下要求:

    用于驗證簽名的簽名者的公鑰的真實性須使用ESS規定的或其他的簽名證書屬性來驗證。

    6.1.7 RFC2630中引入的強制屬性

    在本標準所規定的電子簽名中,下列幾種RFC2630中定義的屬性必須與簽名數據一同出現:

    a) 內容類型屬性(content-type attribute)。其語法結構定義見RFC2630;

    b) 消息摘要屬性(message-digest attribute)。其語法結構定義見RFC2630;

    c) 簽名時間屬性(signing-time attribute)。其語法結構定義見RFC2630。該屬性中的時間值應是簽名者聲稱已經完成簽名過程的時間,本標準中建議時間格式采用Generalized Time類型。

    6.1.8 可替代的簽名證書屬性

    6.1.8.1

    符合本標準的電子簽名應在簽名數據中包含下面兩個可選簽名證書屬性中的一個,而且僅包含一個。選擇的依據是:當使用的雜湊函數為SHA-1時使用ESS簽名證書屬性,當使用其他雜湊函數時,使用其他簽名證書屬性。

    6.1.8.2 ESS簽名證書屬性

    ESS簽名證書屬性的語法結構定義和要求見RFC2634。各字段的含義和用法除了RFC2634中規定的以外還須滿足以下幾點:

    a) ESS簽名證書屬性必須是被簽名屬性,而且不能為空。用于驗證簽名的證書的標識必須包含在該屬性中;

    b) 用于驗證簽名的證書所對應的ESS簽名證書屬性中ESSCertID字段的編碼應包含issureSerial字段,而且issureSerial字段內容應該與SignerInfo中的issuerAndSerialNumber字段內容相符。在簽名驗證過程中,應檢查所使用的驗證證書的雜湊值與上述字段中的相應內容是否一致,如不一致,應認定該簽名無效。

    6.1.8.3 其他簽名證書屬性

    該屬性的結構與ESS 簽名證書屬性相同,但該屬性可以在雜湊函數非SHA-1的情況下使用。對ESS簽名證書屬性的使用要求同樣適用于該屬性。

    該屬性的對象標識符(OID,Object Identifier)如下:

    id-aa-ets-otherSigCert OBJECT IDENTIFIER ::= { iso(1)member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)smime(16) id-aa(2) 19 }

    該屬性(OtherSigningCertificate)的語法結構ASN.1描述如下:

    OtherSigningCertificate ::= SEQUENCE {

    certs SEQUENCE OF OtherCertID,

    }

    OtherCertID ::= SEQUENCE {

    otherCertHash OtherHash,

    issuerSerial IssuerSerial OPTIONAL }

    OtherHash ::= CHOICE {

    sha1Hash OtherHashValue, – 該字段包含一個SHA-1的雜湊值

    otherHash OtherHashAlgAndValue}

    OtherHashValue ::= OCTET STRING

    OtherHashAlgAndValue ::= SEQUENCE {

    hashAlgorithm AlgorithmIdentifier,

    hashValue OtherHashValue }

    6.1.9 其他強制屬性

    6.1.9.1 簽名策略標識

    本標準要求在簽名數據(SignedData)中必須包含一個對簽名策略的引用。這個引用可以被顯式地標識出來,也可以是通過簽名內容或其他外部數據隱式的給出。簽名策略定義了產生并驗證一個簽名的規則,應在每個簽名的被簽名屬性中都包含。簽名策略標識屬性應為被簽名屬性。簽名策略標識的對象標識符為:

    id-aa-ets-sigPolicyId OBJECT IDENTIFIER ::= { iso(1)member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)smime(16) id-aa(2) 15 }

    其語法結構的ASN.1描述為:

    Signature-policy-identifier attribute values have ASN.1 type SignaturePolicyIdentifier.

    SignaturePolicyIdentifier ::= CHOICE{

    SignaturePolicyId SignaturePolicyId,

    SignaturePolicyImplied SignaturePolicyImplied}

    SignaturePolicyId ::= SEQUENCE {

    sigPolicyId SigPolicyId,

    sigPolicyHash SigPolicyHash,

    sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL}

    SignaturePolicyImplied ::= NULL

    SignaturePolicyImplied為NULL類型表明了,簽名策略是在簽名內容或其他外部數據中隱式的給出的。

    SigPolicyId字段包含了一個能夠唯一標識某個簽名策略的對象標識符,其語法結構為:

    SigPolicyId ::= OBJECT IDENTIFIER

    SigPolicyHash字段包含了雜湊算法的標識符和對簽名策略的雜湊運算結果。

    如果簽名策略是用ASN.1定義的,則其雜湊值是對其編碼中除去外部類型和長度的部分做雜湊運算的結果,而且雜湊函數算法應在SignPolicyHshAlg字段中給出。

    如果簽名策略是用其他語法結構定義的,則其語法結構的類型以及使用的雜湊函數應作為簽名策略的一部分給出,或使用簽名策略限定符(signature policy qualifier)標明。

    SigPolicyHash ::= OtherHashAlgAndValue

    簽名策略標識符應通過簽名策略限定符的其他相關信息限定。簽名策略限定符的語義及語法結構是與SigPolicyQualifierId字段中的對象標識符相關聯的,其語法定義如下:

    SigPolicyQualifierInfo ::= SEQUENCE {

    sigPolicyQualifierId SigPolicyQualifierId,

    sigQualifier ANY DEFINED BY sigPolicyQualifierId }

    本標準給出兩種限定符:

    a) spuri:包含了指向簽名策略的URI或URL;

    b) spUserNotice: 包含一個用戶通知,當驗證簽名時該通知應被顯示給驗證者。

    SigPolicyQualifierId ::=OBJECT IDENTIFIER

    id-spq-ets-uri OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-spq(5) 1 }

    SPuri ::= IA5String

    id-spq-ets-unotice OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-spq(5) 2 }

    SPUserNotice ::= SEQUENCE {

    noticeRef NoticeReference OPTIONAL,

    explicitText DisplayText OPTIONAL}

    NoticeReference ::= SEQUENCE {

    organization DisplayText,

    noticeNumbers SEQUENCE OF INTEGER }

    DisplayText ::= CHOICE {

    visibleString VisibleString (SIZE (1..200)),

    bmpString BMPString (SIZE (1..200)),

    utf8String UTF8String (SIZE (1..200)) }

    6.1.10 RFC2630中引入的可選屬性

    聯署簽名屬性(countersignature attribute)。其語法結構定義見RFC2630。聯署簽名屬性在使用時應為未簽名屬性(UnsignedAttribute)。

    6.1.11 RFC2634中引入的可選屬性

    RFC2634中引入的可選屬性包含以下屬性:

    a) 簽名內容引用屬性(Signed Content Reference Attribute)。該屬性把一個簽名數據鏈接到另一個。可以用于把對消息的回復同原消息聯系起來,或者把一個簽名數據并入其他簽名數據中。該屬性應為被簽名屬性。其語法結構定義見RFC2634。

    b) 內容標識屬性(Content Identifier Attribute)。內容標識屬性提供一個被簽名內容的標識,該標識可在以后需要對該內容進行引用時使用。該屬性的語法結構定義見RFC2634,在使用時,該屬性應為被簽名屬性。

    c) 內容提示屬性(Content Hint Attribute)。內容提示屬性用于提供被簽名內容的格式信息。可以用于簽名者向驗證者指明被簽名內容的格式。當被簽名內容必須顯示給驗證方看時,該屬性必須包含在簽名數據中。其語法結構定義見RFC2634。

    6.1.12 其他可選屬性

    其他可選屬性包括以下屬性:

    6.1.12.1 承諾類型標識屬性

    在某些情況下,簽名者希望通過顯式的向驗證者表明,簽名數據代表了簽名者某種承諾。承諾類型標識屬性(Commitment Type Indication Attribute)用于傳達這種信息。該屬性應為被簽名屬性。

    承諾類型應是簽名策略的一部分,或者是一個已經注冊的類型。

    簽名策略規定了一個其承認的屬性集合。這個承認的屬性集合中包含了所有該策略承認的承諾類型。只有承認的承諾類型才允許出現在該屬性字段中。

    該屬性的對象標識符定義為:

    id-aa-ets-commitmentType OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 16}

    該屬性的語法結構ASN.1定義為:

    CommitmentTypeIndication ::= SEQUENCE {

    commitmentTypeId CommitmentTypeIdentifier,

    commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF CommitmentTypeQualifier OPTIONAL}

    CommitmentTypeIdentifier ::= OBJECT IDENTIFIER

    CommitmentTypeQualifier ::= SEQUENCE {

    commitmentTypeIdentifier CommitmentTypeIdentifier,

    qualifier ANY DEFINED BY commitmentTypeIdentifier }

    本標準給出幾種承諾類型:

    id-cti-ets-proofOfOrigin OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 1}

    id-cti-ets-proofOfReceipt OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 2}

    id-cti-ets-proofOfDelivery OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 3}

    id-cti-ets-proofOfSender OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 4}

    id-cti-ets-proofOfApproval OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 5}

    id-cti-ets-proofOfCreation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6) 6}

    這些承諾類型含義如下:

    1) Proof of origin:表明簽名者承認其曾生成、認同并發送了該消息;

    2) Proof of receipt: 表明簽名者承認其曾接受到該內容的消息;

    3) Proof of delivery:表明提供該承諾的可信服務提供者已經把某消息傳送給了接受者可訪問的本地存儲中;

    4) Proof of sender: 表明提供該承諾的實體發送過這個消息(但不一定創建了該消息);

    5) Proof of approval: 表明簽名者認同該消息的內容;

    6) Proof of creation: 表明簽名者創建了該消息(但并不一定認同或發送過該消息)。

    6.1.12.2 簽名者位置屬性

    簽名者位置屬性(Signer Location)用于指定一個表明簽名者所處地理位置的助記符。這個助記符應在簽名者所在的國家注冊,并在公共電報服務(Public Telegram Service)中使用。該屬性應為被簽名屬性。

    該屬性的對象標識符為:

    id-aa-ets-signerLocation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 17}

    該屬性的語法結構ASN.1定義為:

    SignerLocation ::= SEQUENCE { – 下列的內容應至少有一項出現

    countryName [0] DirectoryString OPTIONAL,

    localityName [1] DirectoryString OPTIONAL,

    postalAdddress [2] PostalAddress OPTIONAL }

    PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString

    6.1.12.3 簽名者屬性

    簽名者屬性(Signer Attributes)用于表示簽名者的其他信息,包括簽名者宣稱的屬性和簽名者被證明的屬性。該屬性應為被簽名屬性。

    該屬性的對象標識符為:

    id-aa-ets-signerAttr OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 18}

    該屬性語法結構的ASN.1描述為:

    SignerAttribute ::= SEQUENCE OF CHOICE {

    claimedAttributes [0] ClaimedAttributes,

    certifiedAttributes [1] CertifiedAttributes }

    ClaimedAttributes ::= SEQUENCE OF Attribute

    CertifiedAttributes ::= AttributeCertificate –-見GB/T 16264.8-2005中定義。

    6.1.12.4 內容時間戳

    內容時間戳(Content Timestamp)屬性是被簽名內容在簽名前的一個時間戳。該屬性應為被簽名屬性。其對象標識符為:

    id-aa-ets-contentTimestamp OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 20}

    其語法結構的ASN.1描述為:

    ContentTimestamp::= TimeStampToken

    TimeStampToken定義見GB/T 20520-2006。TimeStampToken中的messageImprint字段的值應為電子簽名中signedData中的encapContentInfo中的eContent字段的內容的雜湊值。

    6.1.13 對多簽名的支持

    對多簽名的支持包含以下方法:

    a) 獨立簽名。多方獨立簽名可通過對每個簽名者使用一個SignerInfo實現。每個SignerInfo都應包括本標準中規定的所有屬性。簽名驗證者應對每個SignerInfo都單獨驗證。

    b) 嵌入簽名。對方嵌入簽名可通過使用未簽名的聯署簽名屬性(counter-signature unsigned attribute)實現。每個聯署簽名結果都應放在簽名結果的SignerInfo的一個聯署簽名屬性(Countersignature)中。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类