我想在C#中用BouncyCastle TimeStamp數字簽名(帶有本地時間戳證書)。我對TimeStamp的理解是它是簽名當前時間。不確定是否應該是當前時間+原始簽名內容?請幫助也。CMS簽名 - 有什麼區別時間戳和計數簽名
我的主要困惑是如果生成的TimeStamp被添加到原始簽名的Singed/Unsigned屬性中。或者它將被添加爲CounterSignature?
我想在C#中用BouncyCastle TimeStamp數字簽名(帶有本地時間戳證書)。我對TimeStamp的理解是它是簽名當前時間。不確定是否應該是當前時間+原始簽名內容?請幫助也。CMS簽名 - 有什麼區別時間戳和計數簽名
我的主要困惑是如果生成的TimeStamp被添加到原始簽名的Singed/Unsigned屬性中。或者它將被添加爲CounterSignature?
時間戳的目標是證明簽名是在給定時間之前創建的,所以對於時間戳,您必須簽署數字簽名和當前時間。時間戳必須作爲無符號屬性添加到CMS簽名。除了SignatureTimeStampToken本身就是一個簽名。
要添加時間戳CMS可以使用具有1.2.840.113549.1.9.16.2.14對象標識符和具有ASN.1類型(下面是所有從CMSTSP和提取的信息的簽名時間戳屬性的RFC)
SignatureTimeStampToken ::= TimeStampToken
TimeStampToken ::= ContentInfo
-- contentType is id-signedData ([CMS])
-- content is SignedData ([CMS])
SignedData ::= SEQUENCE {
version CMSVersion,
digestAlgorithms DigestAlgorithmIdentifiers,
encapContentInfo EncapsulatedContentInfo,
certificates [0] IMPLICIT CertificateSet OPTIONAL,
crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
signerInfos SignerInfos }
在時間戳標記的簽名數據構建體的類型EncapsulatedContentInfo領域具有以下含義:
eContentType中是一個對象標識符唯一地指定內容類型。一時間戳記令牌它被定義爲:
id-ct-TSTInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4}
電子內容是內容本身,作爲攜帶一個八位位組string.The電子內容須是TSTInfo的DER編碼值。
時間戳記令牌不得包含除TSA簽名以外的任何簽名。 TSA證書的證書標識符(ESSCertID)必須包含在SigningCertificate屬性內的signerInfo屬性中。
TSTInfo ::= SEQUENCE {
version INTEGER { v1(1) },
policy TSAPolicyId,
messageImprint MessageImprint,
-- MUST have the same value as the similar field in
-- TimeStampReq
serialNumber INTEGER,
-- Time-Stamping users MUST be ready to accommodate integers
-- up to 160 bits.
genTime GeneralizedTime,
accuracy Accuracy OPTIONAL,
ordering BOOLEAN DEFAULT FALSE,
nonce INTEGER OPTIONAL,
-- MUST be present if the similar field was present
-- in TimeStampReq. In that case it MUST have the same value.
tsa [0] GeneralName OPTIONAL,
extensions [1] IMPLICIT Extensions OPTIONAL }
希望這有助於
謝謝,我得到了它主要是現在很清楚。雖然我仍然試圖找出反簽名程序。其實我有一個exe文件,顯示數字簽名屬性和顯示TimeStamp作爲計數器簽名。那麼,這是否意味着CMS和Codesign的TimeStamp實現方式不同? – Ram
如果你對聯署的一些疑問請看看它的定義:http://tools.ietf.org/html/rfc3852#section-11.4 :)。 – albciff
早些時候經歷過。雖然這仍然是一個混亂。原因是IETF和微軟的理論不同。 1)http://tools.ietf.org/html/rfc3852#section-11.4說計數器簽名被添加爲原始簽名中的未簽名屬性。 2)http://msdn.microsoft.com/en-us/library/windows/desktop/bb931395(v=vs.85).aspx#Time_Stamp_Response表示TimeStamp被添加爲計數器簽名。證書鏈(時間戳)被添加爲Un-Auhtenticated attirbute。 – Ram