GB-T 31503-2015信息安全技術(shù)電子文檔加密與簽名消息語法_第1頁
GB-T 31503-2015信息安全技術(shù)電子文檔加密與簽名消息語法_第2頁
GB-T 31503-2015信息安全技術(shù)電子文檔加密與簽名消息語法_第3頁
GB-T 31503-2015信息安全技術(shù)電子文檔加密與簽名消息語法_第4頁
GB-T 31503-2015信息安全技術(shù)電子文檔加密與簽名消息語法_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

信息安全技術(shù)電子文檔加密與簽名消息語法2015-05-15發(fā)布 I Ⅱ 12規(guī)范性引用文件 3術(shù)語和定義 4縮略語 5通用語法 6數(shù)據(jù)內(nèi)容類型 27簽名數(shù)據(jù)內(nèi)容類型 28封裝數(shù)據(jù)內(nèi)容類型 89摘要數(shù)據(jù)內(nèi)容類型 10加密數(shù)據(jù)內(nèi)容類型 11鑒別數(shù)據(jù)內(nèi)容類型 12有用類型 本標(biāo)準(zhǔn)由全國信息安全標(biāo)準(zhǔn)化技術(shù)委員會(SAC/TC260)提出并歸口。IⅡ本標(biāo)準(zhǔn)主要參考IETF(互聯(lián)網(wǎng)工程特別工作組)RFC5652文件制定。本標(biāo)準(zhǔn)規(guī)定了用于電子文檔密碼保護(hù)的封裝語法。它支持?jǐn)?shù)字簽名和加密。該語法允許多重封本標(biāo)準(zhǔn)描述的電子文檔加密與簽名消息語法支持各種基于證書的密鑰管理架構(gòu)。該語法使用抽象語法記法ASN.1,并采用BER編碼生成值。這些值通常表示成字節(jié)串的形式。雖然很多系統(tǒng)都能夠可靠地傳輸字節(jié)串,但仍有很多電子郵件系統(tǒng)不行。本標(biāo)準(zhǔn)不提供字節(jié)串編碼機(jī)制以保證這種環(huán)境下1信息安全技術(shù)電子文檔加密與簽名消息語法本標(biāo)準(zhǔn)規(guī)定了電子文檔加密與簽名消息語法,此語法可用于對任意消息內(nèi)容進(jìn)行數(shù)字簽名、摘要、鑒別或加密。本標(biāo)準(zhǔn)適用于電子商務(wù)和電子政務(wù)中電子文檔加密與簽名消息的產(chǎn)生、處理以及驗證。2規(guī)范性引用文件下列文件對于本文件的應(yīng)用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。GB/T16262.1—2006信息技術(shù)抽象語法記法—(ASN.1)第1部分:基本記法規(guī)范GB/T16263.1—2006信息技術(shù)ASN.1編碼規(guī)則第1部分:基本編碼規(guī)則(BER)、正則編碼規(guī)則(CER)和非典型編碼規(guī)則(DER)規(guī)范GB/T16264.2—2008信息技術(shù)開放系統(tǒng)互連目錄第2部分:模型GB/T16264.8—2005信息技術(shù)開放系統(tǒng)互連目錄第8部分:公鑰和屬性證書框架GB/T19714—2005信息技術(shù)安全技術(shù)公鑰基礎(chǔ)設(shè)施證書管理協(xié)議GB/T20518—2006信息安全技術(shù)公鑰基礎(chǔ)設(shè)施數(shù)字證書格式RFC5280因特網(wǎng)X.509公鑰基礎(chǔ)設(shè)施證書和證書撤銷列表輪廓(InternetX.509PublicKeyIn-frastructureCertificateandCertificateRevocationList(CRL)Profile)3術(shù)語和定義GB/T19714—2005、GB/T20518—2006界定的以及下列術(shù)語和定義適用于本文件。算法標(biāo)識符algorithmidentifier通過對象標(biāo)識符標(biāo)識算法的類型。包括屬性類型以及一個或多個屬性值,屬性類型由對象標(biāo)識符指定。下列縮略語適用于本文件。ASN.1:抽象語法記法—(AbstractSyntaxNotationone)BER:基本編碼規(guī)則(BasicEncodingRules)2CRL:證書撤銷列表(CertificateRevocationList)DER:可辨別編碼規(guī)則(DistinguishedEncodingRules)ESMS:電子文檔加密與簽名消息語法(EncryptionandSignatureMessageSyntaxforElectronicMAC:消息鑒別碼(MessageAuthenticationCode)PRNG:偽隨機(jī)數(shù)生成器(Pseudo-randomNumberGenerator)UKM:用戶密鑰生成材料(UserKeyingMaterial)5通用語法id-ct-contentInfoOBJECTIDENTIFIER:={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs9(9)smime(16)ct(1)6}ESMS將內(nèi)容類型標(biāo)識符與內(nèi)容關(guān)聯(lián)起來。語法中應(yīng)含有ASN.1(見GB/T16262.1—2006)Con-content[0]EXPLICITANYContentType::=OBJECTIDENTIFIERb)content:表示關(guān)聯(lián)內(nèi)容。內(nèi)容的類型由contentType唯一確定。本標(biāo)準(zhǔn)定義了6種內(nèi)容類型:id-dataOBJECTIDENTIFIER::={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs7(7)1}3包含公鑰;或者通過主體密鑰標(biāo)識符,同時適合認(rèn)證的和未經(jīng)認(rèn)證的公鑰。簽名者的證書可包含在應(yīng)描述如何確定哪個簽名是由該簽名者生成的。簽名者選擇包含多個簽本章分為6個部分:第一部分描述了頂層類型SignedData;第二部分描述了EncapsulatedCon-id-signedDataOBJECTIDENus(840)rsadsi(113549)pkcs(1)pkcs7(7)2}digestAlgorithmsDigestAlgorithmIdentifiers,encapContentInfoEncapsulatedConcrls[1]IMPLICITRevocationInfoCDigestAlgorithmIdentifiers::=SETOFDigestAlgorithmIdentifier4簽名數(shù)據(jù)簽名數(shù)據(jù)消息摘要算法集合|digestAlgorithms撒銷狀態(tài)信息集合簽名者信息集合待簽名的內(nèi)容encapContentInfo證書集合certificates版本號a)version:是語法的版本號。version值取決于certificates,eContentType和SignerInfo。IF((certificatesispresent)AND(anycertificateswithatypeofotherarepresent))OR((crlsispresent)ANDTHENversionMUSTbe5(anyversion2attributecertificatesarepTHENversionMUSTbe4(encapContentInfoeContentTypeisotherthanid—dat素標(biāo)識了一個或多個簽名者所使用的消息摘要算法及其相關(guān)參數(shù)。該集合旨在列出所有簽d)certificates:是證書集合。預(yù)期證書集合包括從信任根或頂級證書機(jī)構(gòu)到signerInfos域中所的頂級證書機(jī)構(gòu)出發(fā)的證書路徑。如果接收者能通過其他途徑獲取必要的證書(例如從以前e)crls:是撤銷狀態(tài)信息集合。預(yù)期該集合包含的信息足以確定certificates域中的證書是否有5EncapsulatedContentInfo::digestAlgorithmDigestAlgorithmIdentifier,unsignedAttrs[1]IMPLICITUnsignedAttributesOPTIONAL}issuerAndSerialNumberIssuerAndSerialNumber,SignedAttributes::=SETSIZE(1..MAX)OFAttributeUnsignedAttributes::=SETSIZE(1..MAX)OFAttribute6Attribute::=SEQUENCE{attrValuesSETOFAttributeValueAttributeValue::=ANYSignerlnfo類型的結(jié)構(gòu)框如圖2所示:簽名者信息簽名者信息要簽名的屬性集合不予簽名的屬性集合dunsignedAttrs簽名算法摘要算法digestAlgorithm簽名結(jié)果簽名者ID版本號Signerlnfo類型各個域的意義如下:a)version:是語法的版本號。若SignerIdentifier是issuerAndSerialNumber選項,那么版本應(yīng)為b)sid:指定了簽名者的證書,從而指定了簽名者的公鑰。接收者需要簽名者的公鑰以驗證簽名。Signerldentifier提供了兩種選擇用以指定簽名者公鑰。issuerAndSerialNumber選項通過簽發(fā)者的可辨別名稱和證書序列號,標(biāo)識簽名者的證書;subjectKeyIdentifier選項則是通過密鑰標(biāo)識符,標(biāo)識簽名者的證書。當(dāng)引用GB/T16264.8—2005證書時,密鑰標(biāo)識符與GB/T16264.8—2005主體密鑰標(biāo)識符的擴(kuò)展值相匹配。當(dāng)引用了其他證書格式時,用于規(guī)范證書格式以及ESMS使用的文檔,應(yīng)包括關(guān)于密鑰標(biāo)識符與適當(dāng)證書域匹配的詳細(xì)說明。實接收。當(dāng)生成Signerldentifier時,實現(xiàn)可支持其中一種類型(issuerAndSerialNumber或sub-jectKeyIdentifier),并一直使用這種類型,或者實現(xiàn)也可將兩種類型任意混合使用。c)digestAlgorithm:標(biāo)識了簽名者使用的消息摘要算法以及任何相關(guān)參數(shù)。消息摘要是通過計算待簽名的內(nèi)容或者內(nèi)容加上簽名屬性而得到的,消息摘要的計算過程見7.5。消息摘要算法應(yīng)包含相關(guān)SignedData的digestAlgorithms域中列出的算法中。若簽名使用了不在Signed-d)signedAttrs:是要簽名的屬性集合。該域是可選的,但是,如果待簽名的EncapsulatedCon-tentInfo值中的內(nèi)容類型不是id-data,則該域應(yīng)存在。SignedAttributes應(yīng)是DER編碼(見義了內(nèi)容類型屬性。但是,內(nèi)容類型屬性不應(yīng)作為聯(lián)合簽名-不予簽名屬性的一部分使e)signatureAlgorithm:標(biāo)識了簽名者生成數(shù)字簽名所使用的簽名算法以及任何相關(guān)參數(shù)。f)signature:是數(shù)字簽名產(chǎn)生的結(jié)果,使用了消息摘要和簽名者的私鑰。簽名的詳細(xì)情況取決于7定義見第13章。SignedAttribute和UnsignedAttribute類型中的各個域意義如下:b)attrValues:構(gòu)成屬性的值的集合。集合中每個值的類型由attrType唯一確定。attrType可對集合中條目的個數(shù)加以限制。摘要計算過程的初始輸入都是待簽名的封裝內(nèi)容的“值”。具體來說,初始輸人是encapContentInfoeContentOCTETSTRING。只有構(gòu)成eContentOCTETSTRING的值的字節(jié)才被輸人至消息摘要算消息摘要計算過程的結(jié)果取決于signedAttrs域是否存在。當(dāng)該域不存在時,其結(jié)果就是上述內(nèi)容的消息摘要。當(dāng)該域存在時,其結(jié)果是signedAttrs域中SignedAttrs值的完整DER編碼的消息摘要。因為當(dāng)存在SignedAttrs值時,其應(yīng)包括內(nèi)容類型和消息摘要屬性,這兩個值間接包含在結(jié)果中。內(nèi)容類型屬性不應(yīng)包含13.5中定義的聯(lián)合簽名-不予簽名的屬性。為了計算消息摘要,要對signedAttrs域進(jìn)行單獨(dú)編碼。DER編碼不使用signedAttrs中的IMPLICIT[0]標(biāo)簽,但要使用EXPLICITSETOFSignedAttributes值的長度和內(nèi)容字節(jié)一起,包含在消息摘要計算中。當(dāng)signedAttrs域不存在,只有構(gòu)成SignedDataencapContentInfoeContentOCTETSTRING的值(例如文件內(nèi)消息摘要計算中。其優(yōu)勢是,待簽名的內(nèi)容的長度不需要在簽名生成過程之前知道。盡管消息摘要計算中不包括encapContentInfoeContentOCTETSTRING標(biāo)簽和長度字節(jié),但它們還是能通過其他方式得到保護(hù)。長度字節(jié)通過消息摘要算法的特性得到保護(hù),因為要找到消息摘要值相等的兩個任意長度的不同消息內(nèi)容是計算上不可行的。簽名生成過程的輸入包括消息摘要計算過程的結(jié)果以及簽名者的私鑰。簽名生成的細(xì)節(jié)取決于采用的簽名算法。對象標(biāo)識符和參數(shù)共同規(guī)定了簽名者采用的簽名算法,其包含在signatureAlgorithm域中。簽名者生成的簽名結(jié)果應(yīng)編碼成字節(jié)串,并裝載在signature域中。簽名驗證過程的輸入包括消息摘要計算過程的結(jié)果和簽名者的公鑰。接收者可通過任何途徑獲得正確的簽名者公鑰,但是首選的方法是從SignedData的certificates域中獲取證書,然后從證書中獲得公鑰。簽名者公鑰的選擇和驗證可基于證書路徑驗證,也可基于其他外部背景,但不在本標(biāo)準(zhǔn)的范圍內(nèi)。簽名驗證的細(xì)節(jié)取決于采用的簽名算法。signedAttributes,那么內(nèi)容消息摘要應(yīng)按照7.5中的描述進(jìn)行計算。接收者計算的消息摘要值應(yīng)同若SignedDatasignerInfo包含signedAttributes,則內(nèi)容類型屬性的值應(yīng)同SignedDataencapCon-88封裝數(shù)據(jù)內(nèi)容類型封裝數(shù)據(jù)內(nèi)容類型由任意類型的加密內(nèi)容以及經(jīng)過加密的內(nèi)容加密密鑰組成。對接收者而言,加密內(nèi)容以及經(jīng)過加密的內(nèi)容加密密鑰組合成一個數(shù)字信封。任意類型的內(nèi)容都可封裝給任意數(shù)量的接收者,封裝可針對每個接收者使用任何支持的密鑰管理技封裝數(shù)據(jù)內(nèi)容類型的典型應(yīng)用是,將數(shù)據(jù)內(nèi)容或簽名數(shù)據(jù)內(nèi)容類型,封裝在一個或多個接收者的數(shù)封裝數(shù)據(jù)通過下列步驟構(gòu)造而成:a)隨機(jī)生成特定內(nèi)容加密算法所使用的內(nèi)容加密密鑰。b)為每個接收者加密內(nèi)容加密密鑰。加密密鑰的細(xì)節(jié)取決于使用的密鑰管理算法,有四種支持1)密鑰傳輸:使用接收者的公鑰加密內(nèi)容加密密鑰;2)密鑰協(xié)商:使用接收者的公鑰和發(fā)送者的私鑰生成成對的對稱密鑰,然后用成對的對稱密4)口令:使用來源于口令或其他共享秘密值的密鑰加密密c)對于每個接收者,經(jīng)過加密的內(nèi)容加密密鑰和其他接收者相關(guān)信息收集在RecipientInfo值d)使用內(nèi)容加密密鑰加密內(nèi)容。加密內(nèi)容可能需要對內(nèi)容進(jìn)行填充,達(dá)到某分組大小的整數(shù)倍,接收者通過解密經(jīng)過加密的內(nèi)容加密密鑰,然后使用恢復(fù)出的內(nèi)容加密密鑰解密加密內(nèi)容,從而打開了數(shù)字信封。本章分為4個部分:第一部分描述了頂層類型EnvelopedData;第二部分描述了每個接收者的信息類型RecipientInfo;第三和第四部分分別描述了內(nèi)容加密以及密鑰加密的過程。下列對象標(biāo)識符標(biāo)識了封裝數(shù)據(jù)的內(nèi)容類型:id-envelopedDataOBJECTIDENTIFIER::={iso(1)member-bodyus(840)rsadsi(113549)pkcs(1)pkcs7(封裝數(shù)據(jù)的內(nèi)容類型應(yīng)有ASN.1EnvelopedData類型:unprotectedAttrs[1]IMPLICITUcrls[1]IMPLICITRevocationInfoChoicesOPTIONAL}9RecipientInfos::=SETSIZE(1..MAX)OFRecipientInfoEncryptedContentInfo::=SEQUENCE{contentEncryptionAlgorithmContentEncryptionAlgorithmIdentifier,encryptedContent[0]IMPLICUnprotectedAttributes::=SETSIZE(1..MAX)OFAttributeEnvelopedData類型的結(jié)構(gòu)框圖如圖3所示:封裝數(shù)據(jù)封裝數(shù)據(jù)EnvelopedData接收者信息集合recipientlnfos不受保護(hù)的屬性集合unprotectedAttrs經(jīng)過加密的內(nèi)容encryptedContentInfo發(fā)起者信息originatorlnfo版本號a)version:是語法的版本號。version值取決于originatorInfo,RecipientInfo和unprotectedAttrs。((anycertificateswithatypeofotherarepresent)OR(anycrlswithatypeofothIF((originatorInfoispresent)AND(anyRecipientInfostructuresinIF(originatorInfoisabsent)A(unprotectedAttrsisabsent)AND1)certs:是證書的集合。certs可能包含與數(shù)個不同的密鑰管理算法相關(guān)的發(fā)起者證書。過其他途徑獲取必要的證書(例如從以前的證書集合中獲取),則也可不完全13章。EncryptedContentInfo類的各個域的意c)encryptedContent:是加密內(nèi)容的結(jié)果。該域是可選的。如果該域不存在,其預(yù)期值應(yīng)由其他每個接收者的信息表示在RecipientInfo類型中。RecipientInfo對于每個支持的密鑰管理技術(shù)都所以,所有的實現(xiàn)應(yīng)處理好RecipienktriKeyTransRecipientInfo,kari[1]KeyAgpwri[3]PasswordRecipientinfo,EncryptedKey::=OCTET使用密鑰傳輸?shù)拿總€接收者信息表示在KeyTransRecipientInfo類型中。每個KeyTransRecipi-KeyTransRecipientInfo::=SEQUENCE{keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentifier,RecipientIdentifier::=issuerAndSerialNumberIssuerAndSerialNumber,KeyTransRecipientInfo類型的結(jié)構(gòu)框圖如圖4所示:密鑰傳輸接收者信息密鑰傳輸接收者信息經(jīng)過加密的內(nèi)容加密密鑰encryptedKey密鑰加密算法接收者IDrid版本號KeyTransRecipientInfoa)version:是語法的版本號。若RecipientIdentifier是issuerAndSerialNumber選項,則版本應(yīng)是0。若RecipientIdentifier是subjectKeyIdentifier選項,則版本應(yīng)是2。定接收者的公鑰。接收者的證書應(yīng)包含密鑰傳輸公鑰。因此,包含密鑰用法擴(kuò)展的接收者GB/T16264.8—2005版本3證書過密鑰標(biāo)識符,標(biāo)識接收者的證書。當(dāng)引用GB/T16264.8—2005證書時,密鑰標(biāo)識符與c)keyEncryptionAlgorithm:標(biāo)識了用于加密內(nèi)容加密密鑰的密鑰加密算法以及任何相關(guān)參數(shù)。d)encryptedKey:是對內(nèi)容加密密鑰進(jìn)行加密的結(jié)果。使用密鑰協(xié)商的接收者信息表示在KeyAgreeRecipientInfo類型中。每個KeyAgreeRecipientInfoKeyAgreeRecipientInfo::=SEQUEoriginator[0]EXPLICITOriginatorldentifierOrKukm[1]EXPLICITUserKeyingMaterialOPTIONAL,keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentifier,recipientEncryptedKeysRecipientEncryptedKeys}OriginatorldentifieissuerAndSerialNumberIssuerAndSerialNumber,algorithmAlgorithmIdentifier,RecipientEncryptedKeys::RecipientEncryptedKey::=ridKeyAgreeRecipientIKeyAgreeRecipientIdentifier:issuerAndSerialNumberIssuerAndSerialNumber,rKeyld[0]IMPLICITRecipientKeyIdentifier::=SubjectKeyIdentifier::=OCTETKeyAgreeRecipientInfo類型的結(jié)構(gòu)框圖如圖5所示:密鑰協(xié)商接收者信息密鑰協(xié)商接收者信息用戶密鑰生成材料ukm密鑰加密算法接收者經(jīng)加密密鑰發(fā)起者originator版本號version的私鑰以及接收者的公鑰,生成成對密鑰。用生成的成對密鑰加密內(nèi)容加密密鑰。issuer-c)ukm:是可選的。在有些密鑰協(xié)商算法中,發(fā)送者提供了UKM,以保證相同兩方每一次生成d)keyEncryptionAlgorithm:標(biāo)識了用密鑰加密密鑰來加密內(nèi)容加密密鑰的密鑰加密算法以及e)recipientEncryptedKeys:包括接收者標(biāo)識符以及給一個或多個接收者的經(jīng)加密的密鑰。Key-應(yīng)生效。內(nèi)容加密密鑰用成對的密鑰加密密鑰進(jìn)行加密。issuerAndSerialNumber選項通過RecipientKeyIdentifier類型的各個域的意義如下:a)subjectKeyIdentifier:通過密鑰標(biāo)識符標(biāo)識了接收者的證書。當(dāng)引用GB/T16264.8—2005證書時,密鑰標(biāo)識符與GB/T16264.8—2005主體密鑰標(biāo)識符的擴(kuò)展值相匹配。當(dāng)引用了其他c)other:是可選的。當(dāng)它存在時,該域包括接收者用以找出發(fā)送者所使用的公共密鑰生成材料KEKRecipientInfo的實例將內(nèi)容加密密鑰傳送給一個或多個擁有以前分發(fā)的密鑰加密密鑰的接收KEKRecipientInfo::=SEQUkekidKEKIdentifier,keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentifier,KEKIdentifier::=SEQUotherOtherKeyAttributeOPTIKEKRecipientInfo類型的結(jié)構(gòu)框圖如圖6所示:以前分發(fā)密鑰接收者信息以前分發(fā)密鑰接收者信息KEKRecipientInfo經(jīng)過加密的內(nèi)容加密密鑰encryptedKey密加密算法版本號密鑰IDkekidKEKRecipientInfo類型的各個域的意義如下:b)kekid:指定了以前分發(fā)給發(fā)送者以及一個或多個接收者的對稱密鑰加密密鑰。c)keyEncryptionAlgorithm:標(biāo)識了用密鑰加密密鑰來加密內(nèi)容加密密鑰的密鑰加密算法以及d)encryptedKey:是用密鑰加密密鑰對內(nèi)容加密密鑰實施加密所形成的結(jié)果。a)keyldentifier:標(biāo)識了以前分發(fā)給發(fā)送者以及一個或多個接收者c)other:是可選的。當(dāng)它存在時,該域包括接收者用以確定發(fā)送者所使用的密鑰加密密鑰的其使用口令或共享秘密值的接收者信息表示在PasswordRecipientinfo類型中。每個PasswordRe-PasswordRecipientInfo::=SEQUEkeyDerivationAlgorithm[0]KeyDerivationAlgorithmldentifierOPTIONAL,keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentifier,PasswordRecipientinfo類型的結(jié)構(gòu)框圖如圖7所示:口令接收者信息口令接收者信息經(jīng)過加密的內(nèi)容加密密鑰encryptedKey密鑰衍生算法keyDerivationAlgorithm密鑰加密算法版本號versionc)keyEncryptionAlgorithm:標(biāo)識了用密鑰加密密鑰對內(nèi)容加密密鑰實施加密時所采用的加密d)encryptedKey:是用密鑰加密密鑰加密內(nèi)容加密密鑰產(chǎn)生的結(jié)果。使用其他密鑰管理技術(shù)的接收者信息表示在OtherRecipientInfo類型中。OtherRecipientInfo類oriTypeOBJECTIDENTIFIER,OtherRecipientInfo類型的各個域的意義如下:a)oriType:標(biāo)識了密鑰管理技術(shù)。b)oriValue:包括了接收者使用經(jīng)標(biāo)識的密鑰管理技術(shù)所需要的協(xié)議數(shù)據(jù)元。8.4內(nèi)容加密過程隨機(jī)生成想要使用的內(nèi)容加密算法所需的內(nèi)容加密密鑰。將要保護(hù)的數(shù)據(jù)按照下述方法進(jìn)行填充,然后使用內(nèi)容加密密鑰加密填充數(shù)據(jù)。加密操作在內(nèi)容加密密鑰的作用下,將一個任意的字節(jié)串(數(shù)據(jù))映射為另一個字節(jié)串(密文)。將加密過的數(shù)據(jù)裝人EnvelopedDataencryptedContentInfoen-有些內(nèi)容加密算法假定輸入長度是k字節(jié)的整數(shù)倍,k>1。對于這些算法,輸人應(yīng)如下處理:在輸入尾端填充k-(lmodk)個字節(jié),每個字節(jié)的值均為k-(lmodk),l是輸入的長度。也就是說,用下列其中一個字節(jié)串對輸入進(jìn)行填充: 如果lmodk=k-10202 如果lmodk=k-2kk…kk--如果lmodk=0由于所有輸人都做了填充處理,輸入值都已經(jīng)是分組大小的整數(shù)倍,而且沒有一個填充串是另一個填充串的后綴,所以可以明確無疑地將填充部分去除。當(dāng)且僅當(dāng)k<256時,該填充方法才是定義良好的。8.5密鑰加密過程密鑰加密過程的輸入,即提供給接收者密鑰加密算法的值,就是內(nèi)容加密密鑰的值。9摘要數(shù)據(jù)內(nèi)容類型摘要數(shù)據(jù)內(nèi)容類型由任意類型的內(nèi)容以及內(nèi)容的消息摘要組成。摘要數(shù)據(jù)內(nèi)容類型的典型應(yīng)用是,用以提供內(nèi)容完整性,而且其結(jié)果通常是封裝數(shù)據(jù)內(nèi)容類型的輸入。摘要數(shù)據(jù)按照以下步驟進(jìn)行構(gòu)造:a)用消息摘要算法對內(nèi)容計算消息摘要。b)將消息摘要算法和消息摘要同內(nèi)容一起收集在DigestedData值中。接收者通過比較收到的消息摘要與自己獨(dú)立計算的消息摘要是否相等進(jìn)行驗證。下列對象標(biāo)識符標(biāo)識了摘要數(shù)據(jù)內(nèi)容類型:id-digestedDataOBJECTIDENTIFIER:={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs7(7)5}摘要數(shù)據(jù)內(nèi)容類型應(yīng)有ASN.1DigestedData類型:DigestedData:=SEQUENCE{versionESMSVersion,digestAlgorithmDigestAlgorithmIdeencapContentInfoEncapsulatedConDigestedData類型的結(jié)構(gòu)框圖如圖8所示:摘要數(shù)據(jù)摘要數(shù)據(jù)DigestedData摘要計算的結(jié)果digestencryptedKey摘要計算的內(nèi)容encapContentInfo摘要算法digestAlgorithm版本號b)digestAlgorithm:標(biāo)識了計算內(nèi)容摘要所使用的消息摘要算法以及任何相關(guān)參數(shù)。消息摘要過程與8.5中在沒有簽名屬性情況下的摘要過程相同。加密數(shù)據(jù)內(nèi)容類型的典型應(yīng)用是,為本地存儲加密數(shù)據(jù)內(nèi)容類型的內(nèi)容,加密密鑰可能來源于id-encryptedDataOBJECTIDENTIFIER::={iso(1)membus(840)rsadsi(113549)pkcs(1)pkcs7(7)6}encryptedContentInfoEncryptedContentInfo,unprotectedAttrs[1]IMPLICITUnprotectedAttributesOPTIONAL}EncryptedData類型的結(jié)構(gòu)框圖如圖9所示:加密數(shù)據(jù)加密數(shù)據(jù)EncryptedData經(jīng)過加密的內(nèi)容encryptedContentlnfo不受保護(hù)的屬性版本號versiond)發(fā)起者使用消息鑒別密鑰,對內(nèi)容計算MAC值。若發(fā)起者除內(nèi)容之外還要鑒id-ct-authDataOBJECTIDENTIFIER:={iso(1)us(840)rsadsi(113549)pkcs(1)pkcs-9(9)smime(16)ct(1)2}AuthenticatedData::=SEQUENCversionESMSVersion,originatorlnfo[0]IMPLICITOriginatorInfoOPTIONrecipientInfosRecipiemacAlgorithmMessageAuthenticationCodeAlgorithm,encapContentInfoEncapsulatedContentInfo,authAttrs[2]IMPLICITAuthAttributesOPTIONAL,macMessageAuthenticatiunauthAttrs[3]IMPLICITUnauthAttributesAuthAttributes::=SETSIZE(1..MAX)OFAttributeUnauthAttributes::=SETSIZE(1..MAX)OFAttributeMessageAuthenticationCode::=OCTETSTRING鑒別數(shù)據(jù)鑒別數(shù)據(jù)macAlgorithmdigestAlgorithmencapContentInfo消息鑒別碼不予鑒別的屬性接收者信息originatorlnfo鑒別屬性authAttrs版本號version((anycertificateswithatypeofotherarepresent)ORIF((originatorlnfoispresent)AND(anyversion2attributecertificatesad)macAlgorithm:是MAC算法的標(biāo)識符。它標(biāo)識了發(fā)起者所使用的MAC算法以及任何相關(guān)節(jié)。其好處是不需要預(yù)先知道待鑒別的內(nèi)容的長度。盡管消息摘要計算中不包括encapContentInfoMAC計算過程的輸入包括上面定義的MAC輸人數(shù)據(jù)以及recipientInfo結(jié)構(gòu)中傳送的鑒別密鑰。MAC計算的詳細(xì)情況取決于使用的MAC算法(如雜湊運(yùn)算消息鑒別碼)。發(fā)起者使用的MAC算法由MAC驗證過程的輸入包括輸入數(shù)據(jù)(根據(jù)authAttrs域是否存在確定輸入數(shù)據(jù),見11.3),以及recipientInfo結(jié)構(gòu)中傳送的鑒別密鑰。MAC驗證過程的細(xì)節(jié)取決于使用的MAC算法。接收者不應(yīng)依賴任何由發(fā)起者計算的MAC值或消息摘要值。按照11.3所述對內(nèi)容進(jìn)行鑒別。如果發(fā)起者包括鑒別屬性,那么按照11.3所述對authAttrs的內(nèi)容進(jìn)行鑒別。接收者計算的MAC值如果AuthenticatedData包含authAttrs,那么內(nèi)容類型屬性值應(yīng)要與AuthenticatedDataencap-所有算法標(biāo)識符都具有相同的類型:Algorithmldentifier。AlgorithmIdentifier的定義來自DigestAlgorithmIdentifier類型標(biāo)識了消息摘要算法。消息摘要算法將一個字節(jié)串(內(nèi)容)映射為DigestAlgorithmIdentifier::=AlgorithmIdentifiSignatureAlgorithmIdentifier類型標(biāo)識了簽名算法,而且還可以標(biāo)識消息摘要算法。簽名算法支持簽名的生成和驗證操作。簽名生成操作使用了消息摘要和簽名者的私鑰以生成簽名結(jié)果。簽名驗證操作使用了消息摘要和簽名者的公鑰以確定簽名結(jié)果是否有效。通過上下文決定使用哪種操作。SignatureAlgorithmIKeyEncryptionAlgorithmIdentifier類型標(biāo)識了用于加密內(nèi)容加密密鑰的密鑰加密算法。加密操作在密鑰加密密鑰的作用下,將一個字節(jié)串(密鑰)映射為另一個字節(jié)串(經(jīng)加密的密鑰)。解密操作是加密操作的逆。通過上下文決定使用哪種操作。協(xié)商、以前分發(fā)的對稱密鑰加密密鑰以及由口令衍生的對稱密鑰加密密鑰。KeyEncryptionAlgorithmIdentifier::=AlgorithContentEncryptionAlgorithmIdentifier類型標(biāo)識了內(nèi)容加密算法。內(nèi)容加密算法支持加密和解密操作。加密操作在內(nèi)容加密密鑰的作用下,將一個字節(jié)串(明文)映射為另一個字節(jié)串(密文)。解密操作是加密操作的逆。通過上下文決定使用哪種操作。ContentEncryptionAlgorithmIdentifier:=MessageAuthenticationCodeAlgorithm類型標(biāo)識了消息鑒別碼(MAC)算法。MAC算法支持生成和驗證操作。MAC生成和驗證操作使用相同的對稱密鑰。通過上下文決定使用哪種操作。MessageAuthenticationCodeAlgorithm::=AlgoritKeyDerivationAlgorithmIdentifier標(biāo)識了密鑰衍生算法。密鑰衍生算法將口令或共享秘密值轉(zhuǎn)變?yōu)槊荑€加密密鑰。KeyDerivationAlgorithmIdentifier::=AlgorithmIdentifier本條定義了在本標(biāo)準(zhǔn)其他地方使用的類型。下列類型沒有特定的順序。RevocationInfoChoices類型給出一組撤銷狀態(tài)信息選項。預(yù)期該集合包含的信息足以確定與該集少于必要的信息。GB/T16264.8—2005CRL是撤銷狀態(tài)信息的主要來源,但也可支持任何其他撤銷信息格式。該類型提供了OtherRevocationInfoFormat選項,用以支持任何其他撤銷信息格式,不需要對ESMS進(jìn)行修改。例如,可使用OtherRevocationInfoFormat以支持在線證書狀態(tài)協(xié)議。CertificateList可能包括CRL、權(quán)威機(jī)構(gòu)撤銷列表、增量CRL或?qū)傩宰C書撤銷列表。所有這些列表共用同一語法。CertificateList類型給出了CRL。CRL規(guī)定于GB/T16264.8—2005中,并且為了Internet中的使RevocationInfoChoice=CHOICE{CertificateChoices類型給出了GB/T16GB/T16264.8—2005版本2屬性證書,或任何其他證書格式。GB/T16264.8—2005證書的InternetextendedCertificatevlAttrCert[1]IMPLICITother[3]IMPLICITOthotherCertANYDEFINEDBYotherCertFormat}CertificateSet類型提供了一組證書。預(yù)期該集合足以包括從信任根或頂級證書機(jī)構(gòu)到所有與該證書路徑的精確定義不在本標(biāo)準(zhǔn)的范圍之內(nèi)。GB/T20518—20IssuerAndSerialNumber類型通過證書簽發(fā)者的可辨別名和簽發(fā)者簽發(fā)的證書序列號,標(biāo)識了證IssuerAndSerialNumber::=SEserialNumberCertificateSerialNumber}CertificateSerialNumber=INTEGERUserKeyingMaterial類型對UKM給出了相應(yīng)的語法。有些密鑰協(xié)商算法要求UKM以保證每次相同兩方生成的成對密鑰都是不同的。發(fā)送者提供UKM與特定密鑰協(xié)商算法一起使用。OtherKeyAttribute類型對其他密鑰屬性所包含的內(nèi)容給出了相應(yīng)的語法,這些密鑰屬性允許接收者選擇發(fā)送者所使用的密鑰。屬性對象標(biāo)識符應(yīng)與屬性本身的語法一起注冊。由于該結(jié)構(gòu)可OtherKeyAttribute::=SEQUENCE{keyAttrldOBJECTIDENTIFIER,keyAttrANYDEFINEDBYkeyAttrIdOPTIONAL}本章定義了簽名數(shù)據(jù)、封裝數(shù)據(jù)、加密數(shù)據(jù)和鑒別數(shù)據(jù)中使用的屬性。Attribute的語法與內(nèi)容類型屬性類型規(guī)定了簽名數(shù)據(jù)或鑒別數(shù)據(jù)中ContentInfo的內(nèi)容類型。只要簽名數(shù)據(jù)中存在簽名屬性或鑒別數(shù)據(jù)中存在鑒別屬性,內(nèi)容類型屬性類型就應(yīng)存在。內(nèi)容類型屬性值應(yīng)與簽名數(shù)據(jù)或鑒別數(shù)據(jù)中的encapContentInid-contentTypeOBJECTIDENTIFIER::={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs9(9)3}ContentType::=OBJECTIDEN的SignedAttributes不應(yīng)包括多個內(nèi)容類型屬性的實例。相同地,AuthenticatedData中的AuthAt-id-messageDigestOBJECTIDENTIFIER::={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs9(9)4}id-signingTimeOBJECTIDENTIFIER:={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs9(9)5}utcTimeUTCTime,generalizedTimeGeneralizedTime}1950年1月1日到2049年12月31日(包括)之間的時期應(yīng)編碼成UTCTime。任何年份在1950年a)當(dāng)YY大于或等于50,年份應(yīng)解釋成19YY。且b)當(dāng)YY小于50,年份應(yīng)解釋成20YY。GeneralizedTime值應(yīng)用協(xié)調(diào)世界時表示,且應(yīng)包含秒(即,時間值表示為YYYYMMDDH-HMMSSZ),無論秒值是否為0。GeneralizedTime值不應(yīng)包含分?jǐn)?shù)形式的秒值。盡管語法定義為一組AttributeVaSignedAttributes和AuthAttributes語法分別定義為一組AttributeValue的集合。si的SignedAttributes不應(yīng)包括多個簽名時間屬性的實例。相同地,AuthenticatedData中的AuthAt-tributes也不應(yīng)包括多個簽名時間屬性的實例。沒有針對簽名時間正確性的要求,是否接受據(jù)稱的簽名時間由接收者自行決定。但是,有些簽名聯(lián)合簽名屬性類型規(guī)定了一個或多個對簽名數(shù)據(jù)的SignerInfo中簽名結(jié)果字節(jié)串的內(nèi)容字節(jié)所進(jìn)行的簽名。也就是說,消息摘要是對構(gòu)成字節(jié)串的值的字節(jié)進(jìn)行計算,而不包括標(biāo)簽或長度字節(jié)。因此,聯(lián)合簽名是在另一個簽名結(jié)果上再進(jìn)行聯(lián)合簽名(串行簽名)。聯(lián)合簽名屬性應(yīng)是不予簽名的屬性,不應(yīng)是簽名屬性、鑒別屬性、不予鑒別的屬性或不受保護(hù)的屬性。下列對象標(biāo)識符標(biāo)識了聯(lián)合簽名屬性:id-countersignatureOBJECTIDENTIFIER::={iso(1)meus(840)rsadsi(113549)pkcs(1)pkcs9(聯(lián)合簽名屬性值具有ASN.1Countersignature類型:a)signedAttributes域不應(yīng)包含內(nèi)容類型屬性,聯(lián)合簽名沒有內(nèi)容類型。b)如果signedAttributesc)消息摘要過程的輸入是與該屬性相關(guān)的SignerInfo值中signatureValue域的DER編碼的內(nèi)聯(lián)合簽名屬性可有多個屬性值。其語法定義為一組AttributeValue的集合,且應(yīng)有一個或多個UnsignedAttributes語法定義為一組AttributeValue的集合。signerInfo中的UnsignedAttr包含多個聯(lián)合證書屬性的實例。級數(shù)的聯(lián)合簽名。CryptographicMessageSynpkcs(1)pkcs-9(9)smime(16)modules(0)CMS-2004(24)}--theirownpurposes.AlgorithmIdentifier,Certificate,Certinternet(1)security(5)mechmod(0)pkix1-expliciinternet(1)security(5)mechanismpkcs(1)pkcs-9(9)smime(16)mdigestAlgorithmsDigestAlgorithmldentifiers,DigestAlgorithmIdentifiers::=SETOEncapsulatedContentInsignedAttrs[0]IMPLICITSignedAsignatureAlgorithmSigissuerAndSerialNumberIssuerAndSerialNumber,SignedAttributes::=SETSIZE(1.MAX)OFAttributeUnsignedAttributes::=SETSIZE(1..MAX)OFAttributeunprotectedAttrs[1]IMPLICITURecipientInfos::=SETSIZEncryptedContentInfcontentEncryptionAlgorithmConUnprotectedAttributes::=SETSIZE(1..MAX)OFAttributeRecipientInfo::=CHOICEkari[1]KeyAgreeReciKeyTransRecipientInfoversionESMSVersion,--alwakeyEncryptionAlgorithmKeyEncryptionAlgorithmIdentiissuerAndSerialNumbKeyAgreeRecipientInforiginator[0]EXPLICITOriginatorldentifierOrKey,keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentifier,recipientEncryptedKeysRecipieOriginatorldentifierOrKey::=CHOICE{issuerAndSerialNumberIssuerAndsubjectKeyIdentifier[0]SubjectKeyIdentifier,algorithmAlgorithmIdentifier,RecipientEncryptedKeys::=SEQUENCEOFRecipientEncryptedKeyRecipientEncryptedKeKeyAgreeRecipientIdentifier::=CHOICE{issuerAndSerialNumberIssuerAndrKeyld[0]IMPLICITRecipRecipientKeyIdentifier::=SEQUENCE{otherOtherKeyAttributeOPTIONAL}kekidKEKIdentifier,keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentikeyIdentifierOCTETSTRIotherOtherKeyAttributeOPTIONAL}PasswordRecipientInfo:keyEncryptionAlgorithmKeyEncryptionAlgorithmIdentifier,OtherRecipientInfo::=SEQUENCE{DigestedData::=SEQUENCEAuthenticatedData::=SEQUENCE{macAlgorithmMessageAuthenticationCodeAlgorithm,digestAlgorithm[1]DigestAlgorithmIdentifierOPTIONAL,unauthAttrs[3]IMPLICITUnauthAttributesOPTIAuthAttributes:=SETSIZE(1..MAX)OFAttributeUnauthAttributes::=SETSIZE(1.MAX)OFAttributeMessageAuthenticatioDigestAlgorithmIdentifier::=AlgorithSignatureAlgorithmIKeyEncryptionAlgorithmIdentifier:=AlgoContentEncryptionAlgorithmldentifieMessageAuthenticationCodeAlgorithm::=AlgoritRevocationInfoChoices::=SETOFRevocationInfoChoiceotherRevInfoFormatOBJECTIDENTIFIER,v2AttrCert[2]IMPLICITAttributeCertificateV2,AttributeCertificateV2::=AttributotherCertFormatOBJECTIDENTIFIER,issuerName,ESMSVersion::=INTEGER{v0(0),vl(1),v2(2),v3(3),v4keyAttrIdOBJECTIDid-ct-contentInfoOBJECTIDENTIFIER::={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論