6.2 驗證數據格式
6.2.1 導引
本條規定了電子簽名的驗證數據格式,包括時間戳和完全驗證數據。時間戳應用于電子簽名的值,完全驗證數據包含簽名值的時間戳、用于電子簽名完全驗證的所有證書和撤銷信息。
本條還規定驗證數據的擴展格式。時間戳包含ES-C的時間戳,而擴展時間戳包含驗證路徑引用和撤銷信息引用的時間戳以支持ES-C。擴展長驗證數據包含完全驗證數據和使用在ES-C中的所有證書和撤銷信息的實際值。擴展時間戳長驗證數據包含時間戳或擴展時間戳,和使用在ES-C中的所有證書和撤銷信息的實際值。
本條還規定了歸檔驗證數據的數據格式。歸檔驗證數據包含完全驗證數據、證書和撤銷信息、擴展時間戳、簽名用戶數據和所有這些數據的歸檔時間戳。歸檔時間戳可以在一個長周期后重新申請,在電子簽名和時間戳算法弱化時以維持有效性。
本條下面定義的所有數據都是非簽名類型。
6.2.2 電子簽名時間戳
一個電子簽名可以從不同的時間戳機構得到多個電子簽名時間戳實例。以下的對象標識符標識了簽名時間戳屬性:
id-aa-signatureTimeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 14}
簽名時間戳屬性值的ASN.1語法為:
SignatureTimeStampToken ::= TimeStampToken
TimeStampToken中的messageImprint域的值應為用于對signedData進行時間戳的SignerInfo中的簽名域值的雜湊值。
6.2.3 完全驗證數據
6.2.3.1
完全驗證數據最少應包括簽名時間戳屬性、完全證書引用、完全撤銷引用。
6.2.3.2 完全證書引用屬性
完全證書引用引用了CA證書的全集,這些證書被用于驗證ES-C。一個電子簽名只可以有一個完全證書引用實例。以下的對象標識符標識了完全證書引用屬性:
id-aa-ets-certificateRefs OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 21}
完全證書引用屬性值的ASN.1語法為:
CompleteCertificateRefs ::= SEQUENCE OF OtherCertID
其中OtherCertID中應出現IssuerSerial,certHash應與證書引用的雜湊值匹配。
6.2.3.3 完全撤銷引用屬性
完全撤銷引用引用了CRL或OCSP響應的全集,這些CRL或OCSP響應被用于驗證ES-C中使用的簽名者和CA證書。一個電子簽名只可以有一個完全撤銷引用實例。以下的對象標識符標識了完全撤銷引用屬性:
id-aa-ets-revocationRefs OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 22}
完全撤銷引用屬性值的ASN.1語法為:
CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef
CrlOcspRef ::= SEQUENCE {
crlids [0] CRLListID OPTIONAL,
ocspids [1] OcspListID OPTIONAL,
otherRev [2] OtherRevRefs OPTIONAL}
CompleteRevocationRefs應包含簽名證書的一個CrlOcspRef、CompleteCertificateRefs屬性中每個OtherCertID的CrlOcspRef,這些CrlOcspRef應與相關的OtherCertID次序保持一致。
CRLListID ::= SEQUENCE {
crls SEQUENCE OF CrlValidatedID}
CrlValidatedID ::= SEQUENCE {
crlHash OtherHash,
crlIdentifier CrlIdentifier OPTIONAL}
CrlIdentifier ::= SEQUENCE {
crlissuer Name,
crlIssuedTime UTCTime,
crlNumber INTEGER OPTIONAL}
OcspListID ::= SEQUENCE {
ocspResponses SEQUENCE OF OcspResponsesID}
OcspResponsesID ::= SEQUENCE {
ocspIdentifier OcspIdentifier,
ocspRepHash OtherHash OPTIONAL}
OcspIdentifier ::= SEQUENCE {
ocspResponderID ResponderID,
producedAt GeneralizedTime}
創建crlValidatedID時,在包含簽名的完整的DER編碼的CRL上crlHash被計算出。除非CRL可以從其他信息中推斷出,crlIdentifier一般都要出現。crlIdentifier用頒發者名字和CRL頒發時間來標識CRL,其中CRL頒發時間對應著CRL中的“thisUpdate”時間。當標識的CRL是增量CRL時,crlListID應包含CRL集合的引用以提供完全的撤銷列表。
OcspIdentifier用頒發者名字和OCSP響應頒發時間來標識OCSP響應,其中OCSP響應頒發時間對應著OCSP響應中的“producedAt”時間。由于可能需要在同一秒內區別收到的兩個不同的OCSP響應,OcspResponsesID中的響應雜湊值被用于解決這種混淆。
OtherRevRefs ::= SEQUENCE {
otherRevRefType OtherRevRefType,
otherRevRefs ANY DEFINED BY otherRevRefType}
OtherRevRefType ::= OBJECT IDENTIFIER
其他撤銷引用的語法和語意不在本規范描述。
6.2.4 擴展驗證數據
6.2.4.1 證書值屬性
證書值屬性含有完全證書引用屬性中引用的證書值。一個電子簽名只可以有一個證書值屬性實例。以下的對象標識符標識了證書值屬性:
id-aa-ets-certValues OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 23}
證書值屬性值的ASN.1語法為:
CertificateValues ::= SEQUENCE OF Certificate
6.2.4.2 撤銷值屬性
撤銷值屬性含有完全撤銷引用屬性中引用的CRL和OCSP的值。一個電子簽名只可以有一個撤銷值屬性實例。以下的對象標識符標識了撤銷值屬性:
id-aa-ets-revocationValues OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 24}
撤銷值屬性值的ASN.1語法為:
RevocationValues ::= SEQUENCE {
crlVals [0] SEQUENCE OF CertificateList OPTIONAL,
ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
otherRevVals [2] OtherRevVals }
OtherRevVals ::= SEQUENCE {
otherRevValType OtherRevValType,
otherRevVals ANY DEFINED BY OtherRevValType}
OtherRevValType ::= OBJECT IDENTIFIER
其中CertificateList在GB/T 20518—2006中定義,BasicOCSPResponse參見GB/T 19713-2005中的定義。
6.2.4.3 ES-C時間戳屬性
ES-C時間戳屬性是電子簽名和完全驗證數據的雜湊值的時間戳。一個電子簽名可以從不同的時間戳機構得到多個ES-C時間戳屬性實例。以下的對象標識符標識了ES-C時間戳屬性:
id-aa-ets-escTimeStamp OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 25}
ES-C時間戳屬性值的ASN.1語法為:
ESCTimeStampToken ::= TimeStampToken
TimeStampToken中的messageImprint域的值應為出現在ES-C中的以下數據對象的連接值的雜湊值:
a) SignerInfo中的簽名域;
b) 簽名時間戳屬性;
c) 完全證書引用屬性;
d) 完全撤銷引用屬性。
6.2.4.4 時間戳證書和CRL屬性
時間戳證書和CRL屬性是相關證書和OCSP響應/CRL的一個列表,這個列表被加了時間戳來保護CA安全。以下的對象標識符標識了時間戳證書和CRL屬性:
id-aa-ets-certCRLTimestamp OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 26}
時間戳證書和CRL屬性值的ASN.1語法為:
TimestampedCertsCRLs ::= TimeStampToken
TimeStampToken中的messageImprint域的值應為出現在ES-C中的以下數據對象的連接值的雜湊值:
a) 完全證書引用屬性;
b) 完全撤銷引用屬性。
6.2.5 歸檔驗證數據
當需要一個非常長時間的電子簽名,可能會因為算法的弱化或TSA證書的有效期限制,電子簽名的時間戳可能會變得危險,這時需要多次申請電子簽名的時間戳。歸檔時間戳用于解決這個問題,時間戳可以每過一定周期反復應用。
歸檔時間戳屬性是用戶數據和整個電子簽名的時間戳。一個電子簽名可以從不同的時間戳機構隨著時間的流逝得到多個歸檔時間戳屬性實例。以下的對象標識符標識了嵌套歸檔時間戳屬性:
id-aa-ets-archiveTimestamp OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 27}
歸檔時間戳屬性值的ASN.1語法為:
ArchiveTimeStampToken ::= TimeStampToken
TimeStampToken中的messageImprint域的值應為出現在電子簽名中的以下數據對象的連接值的雜湊值:
a) encapContentInfo eContent OCTET STRING;
b) signedAttributes;
c) signature field within SignerInfo;
d) SignatureTimeStampToken attribute;
e) CompleteCertificateRefs attribute;
f) CompleteRevocationData attribute;
g) CertificateValues attribute(如果不存在,這個信息就應該包含在ES-A中);
h) RevocationValues attribute(如果不存在,這個信息就應該包含在ES-A中);
i) ESCTimeStampToken attribute if present;
j) TimestampedCertsCRLs attribute if present;
k) any previous ArchiveTimeStampToken attributes。
歸檔時間戳應該比普通電子簽名和弱算法(密鑰長度)時間戳使用更強的算法(或更長的密鑰長度)。
推薦文章: