签名TimeStamp的VRI

时间:2016-10-07 22:59:21

标签: pdf digital-signature trusted-timestamp

我对如何为PAdES签名中的时间戳创建VRI条目表示怀疑。

假设有一个带签名的pdf文档,这个签名有一个嵌入时间戳。

示例:

\Sig
[...]
\Contents <1234567890ABCDEF[...]>
[...]
Type \DSS
\VRI <<
     \Hash1 object1
     \Hash2 object2
>>
[...]

Hash1很容易计算:它是整个签名哈希,包括时间戳(1234567890ABCDEF [...])

但Hash2 ......我应该用它来计算它?在ETSI文件中,它是这样写的(PAdES LTV Profile - Part 4 - V1.1.2第12页):

  

对于时间戳的签名,它是时间戳本身的字节,因为时间戳令牌是带符号的数据对象

但我必须说这没有多大帮助。是timeStampToken吗?只有内容?什么是“时间戳本身”?

有没有人知道澄清这一点的任何文件?参考实施

1 个答案:

答案 0 :(得分:1)

您引用的定义

  

对于时间戳签名,它是时间戳本身的字节,因为时间戳令牌是签名数据对象

来自ETSI TS,它首先定义了LTV结构。

此TS同时已被ETSI EN 319 142-1取代,其定义被重新制定为:

  

对于文档签名或文档时间戳签名,散列的字节应为   条目中的完整十六进制字符串,其中包含关联的签名词典的内容   包含签名的DER编码二进制数据对象(例如PKCS#7,CMS或CAdES对象)。

因此,对于文档时间戳,只需像常规签名一样进行。

顺便说一句,相同的规范指定:

  

不应使用VRI字典。包含VRI字典条目是可选的。所有验证   VRI条目中引用的材料也在DSS条目中引用

所以你可能根本不需要这些条目。

我刚才意识到你应该

  

有一个带有签名的pdf文档,此签名有一个嵌入时间戳。

嵌入式时间戳无疑不受上述引用的约束。但实际上,时间戳令牌是一个包裹ContentInfo对象的SignedData对象,就像常规的CMS签名容器一样。因此,时间戳令牌是要散列的对象。