iText分离签名意味着

iText分离签名意味着,itext,digital-signature,Itext,Digital Signature,你能详细解释一下吗?最后给我举个例子(一个是附加的,一个是分离的),说明iText分离签名的确切含义 我发现了这个很棒的文档:关于iText数字签名,但我仍然不确定我是否理解iText分离签名的概念 阅读文档(参见链接),我发现了以下定义: 在PDF中,我们有时指的是分离的签名。根据维基百科的说法,分离签名是一种“与签名数据分离”的数字签名,而不是“捆绑在一起形成一个文件”此定义在PDF上下文中并不完全正确:签名包含在PDF文件中,但签名的属性是“签名的一部分”,而不是“存储在签名字典中” 我不

你能详细解释一下吗?最后给我举个例子(一个是附加的,一个是分离的),说明iText分离签名的确切含义

我发现了这个很棒的文档:关于iText数字签名,但我仍然不确定我是否理解iText分离签名的概念

阅读文档(参见链接),我发现了以下定义:

在PDF中,我们有时指的是分离的签名。根据维基百科的说法,分离签名是一种“与签名数据分离”的数字签名,而不是“捆绑在一起形成一个文件”此定义在PDF上下文中并不完全正确:签名包含在PDF文件中,但签名的属性是“签名的一部分”,而不是“存储在签名字典中”

我不清楚“签名的属性”是什么意思(它指的是什么签名属性?)

请注意,本文作者(iText文档)正在处理签名PDF文件的以下片段:

%PDF-1.4
%âãÏÓ
30 obj
endobj
10 obj
endobj
...
9.0 obj
流动
Q
英国电信
36806 Td
0-18 Td
/F1 12 Tf
(你好,世界!)Tj
0TD
ET
Q
尾流
endobj
...
110 obj
endobj
外部参照
0 12
0000000000 65535 f
...
0000017736000000N
拖车
起始外部参照
17879
%%EOF

虽然您引用的白皮书确实是任何试图使用iText创建集成PDF签名的人的必读资料(即使您没有使用iText,这也是一个很好的信息来源),但我同意其中关于在“分离PDF签名”中使用“分离”一词的解释并没有真正达到目的:

注意:在PDF中,我们有时会提到分离的签名。根据维基百科,一个 分离签名是一种“与其签名数据分离”的数字签名,如下所示 与“捆绑在一起形成一个文件”相反。这个定义在美国并不完全正确 PDF的上下文:签名包含在PDF文件中,但签名的属性 是“签名的一部分”,而不是“存储在签名字典中”

首先,将这些签名称为“分离”并不是任何当前规范强制使用的术语。我们这样做的原因是,这些签名的签名字典中使用的标识符(adbe.pkcs7.detachedETSI.CAdES.detached)包含该单词

因此,问题实际上应该是:为什么这些标识符包含“分离”一词

要理解这一点,我们需要知道,最初有两种集成的PDF签名将PKCS#7签名容器嵌入到PDF中,分别由adbe.pkcs7.detachedadbe.pkcs7.sha1标识

这两类签名的区别在于

  • 对于adbe.pkcs7.sha1签名,计算PDF签名字节范围的sha1摘要,并嵌入签名容器的
    ContentInfo
    结构中,该嵌入数据包以PKCS#7方式签名
  • 另一方面,对于adbe.pkcs7.detached签名,签名容器的
    ContentInfo
    结构保留为空
    ,外部文档的签名数据范围以PKCS#7方式签名
因此,在adbe.pkcs7.sha1签名的情况下,实际签名的数据嵌入到容器中,而在adbe.pkcs7.detached签名的情况下,实际签名的数据不嵌入容器中

因此,在PKCS级别上,签名数据和签名容器在后一种情况下彼此分离。

(事实上,PKCS#7方式的签名可以——通常也确实如此——包括计算要签名的数据的散列,将该散列添加到一些所谓的已验证属性中,并最终对这些特殊属性进行签名,这不应该让我们分心。)

其他类型的分离签名(ETSI.CAdES.detached)的构造类似于adbe.pkcs7.detached容器。它们之间的区别主要是对容器的附加属性进行了分析

白皮书关于属性是签名容器一部分的论述实际上说明了前面提到的所有签名类型与第三种原始集成PDF签名类型adbe.x509.rsa_sha1
签名之间的区别。这种类型不是基于签名容器,而是基于相当裸露的签名;因此,在这种情况下,任何额外的信息都必须存储在PDF中自己的结构中