- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于计算要用于数字签名的PDF文档摘要的快速问题(与我之前的问题之一有关,我试图弄清楚为什么您需要知道客户的证书才能创建正确的摘要) )。
在Adobe有关PDF格式的文档中,指定了以下内容:
A byte range digest shall be computed over a range of bytes in the file, that shall be indicated by the ByteRange entry in the signature dictionary. This range should be the entire file, including the signature dictionary but excluding the signature value itself (the Contents entry).
For public-key signatures, Contents should be either a DER-encoded PKCS#1 binary data object or a DER-encoded PKCS#7 binary data object.
Revocation information is a signed attribute, which means that the signing software must capture the revocation information before signing. A similar requirement applies to the chain of certificates. The signing software must capture and validate the certificate's chain before signing.
最佳答案
简而言之:
Can I actually create a signable digest without knowing someone's certificate beforehand?
I can (probably) generate the digest, reserve space for the /Contents entry and attach this PKCS#7 object later on.
The confusion starts when I read the following:
Revocation information is a signed attribute, which means that the signing software must capture the revocation information before signing. A similar requirement applies to the chain of certificates. The signing software must capture and validate the certificate's chain before signing.
所以我不太了解:显然/Contents条目(包含证书和已签名的摘要)没有被摘要,但是证书链是一个已签名的属性(因此需要被摘要吗?)。
如果有人可以进一步明确说明要消化的内容,并且也许可以更好地向我解释签名的属性,我将不胜感激。
必须意识到的主要事实是,对于PKCS#7/CMS签名容器, 签名通常不仅包括一个哈希计算,而且至少包括两个哈希计算!
第一个哈希值,即文档哈希值,实际上是针对整个文件计算的,包括签名字典,但不包括签名值本身( 目录条目)(您可能需要阅读 this answer以获得更多详细信息)。
但这是 而不是,即应用签名算法时立即使用的哈希。
在生成PKCS#7/CMS签名容器的过程中(除非以其最原始的形式),您将创建一个称为“签名属性”的结构。
您在此结构中填充了多个属性(名称-值对),其中包括已经计算出的文档哈希值,还有其他属性,例如您了解的Adobe样式的吊销信息。
完成创建该结构后,您可以对该结构进行哈希处理并为其生成签名。
然后,您可以使用这些签名属性,签名以及此签名未签名的更多信息,将PKCS#7/CMS签名容器放在一起。证书,签名时间戳,...
有关签名容器的更多详细信息,请阅读 this answer。
最后,您将此签名容器嵌入到PDF的保留空间中。
The main question that I want to answer is: Can I actually create a signable digest without knowing someone's certificate beforehand? (I'm working with a pkcs7 detached signature)
如果使用SubFilter ETSI.CAdES.detached 或 adbe.pkcs7.detached ,则可以在不事先知道某人证书的情况下创建 文档摘要。
但是,根据CMS签名配置文件的不同,通常必须在开始生成签名容器之前先了解签名者证书,因为许多配置文件都需要存在引用签名者证书的签名属性。
说明:
OP在评论中提出了一些后续问题:
1.: One of the signed attributes is the document hash(without the /contents), so if I understand correctly this is the unsigned hash?
由于最终会对“已签名的属性”进行哈希处理和签名,因此其中的文档哈希不是立即 ,直接是签名的 ,而是 ,是间接签名的,作为此属性结构的一部分。所以我不会称它为未签名...
- In the end when the user really generates a signature, he signs the hash of the PKCS#7 object?
不,“签名属性”结构的哈希值仅是PKCS#7对象的一部分,而不是全部。 PKCS#7/CMS对象有多个未签名的部分。
- Does the /Contents entry still have a PKCS#7 object that's actually readable for us? (To extract certificates etc for verification)
内容条目确实包含完整的PKCS#7/CMS签名容器对象,为二进制字符串。因此,是的,您可以读取它(通过读取该二进制字符串的值),并且(如果您有知道如何解析这种签名容器的代码)可以从中提取信息。
不过请注意,签名容器可能不会包含验证所需的所有数据:例如,如果您使用链(不是 shell )验证模型进行验证,则可能必须从相应的PDF签名字典条目中提取签名时间。
- When verifying a signature, do we simply extract the embedded PKCS#7 object, recalculate the digest, recalculate the digest of the PKCS#7 object and verify this against the signature using the certificate we get from the PKCS#7 object?
显然,您还必须计算已签名的PDF字节范围的摘要,并将该值与包含原始文档摘要的已签名的属性进行比较(您可能意味着要重新计算摘要)。
如对3的回答中所述,您可能必须从PDF检索其他信息以用于PKCS#7验证。
此外,您还说我们从PKCS#7对象获得的证书-请注意,PKCS#7/CMS签名容器可能包含多个证书。您必须找到正确的一个。为此,应使用CMS SignerInfo SignerIdentifier和ESS签名属性。
此外,您还必须验证签署者证书的有效性和信任性。
- Is there any good documentation on what authenticated attributes there are?
您可以开始阅读
RFC 3852或 RFC 5652的第11节“有用的属性”:基本CMS ISO 32000-1的第12.8节:基本PDF RFC 5126的全部:CAdES ETSI TS 102778,尤其是part 2,part 3和part 4:PAdES
关于pdf - PDF签名摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251895/
我最近发布了一个 problem我正在进行身份验证,但没有收到任何回复,所以我想到了另一种方式来提问而不是多余的。 我在应用程序中看到的内容 documentation是传递访问 token 以进行身
我有一个具有许多不同值的因素。如果执行 summary(factor)输出是不同值及其频率的列表。像这样: A B C D 3 3 1 5 我想制作频率值的直方图,即 X 轴包含发生的不同频率,Y 轴
我有 2 个表,其中包含一组数据,如下所示,我想获得 RESULT 中的结果,该结果将在字段 balance 中进行计算: 我被困在余额字段中,如何让余额运行? tblIn in_date |
我有一个大量重载的方法 MethodA,它由我的 MethodB 文档中的摘要标记引用: /// A link to void MethodB { ... } 注释不应仅依赖于 MethodA 的特
当我将新的 details 标签与 summary 结合使用时,我想禁用生成的输入。我以为 可以解决这个问题,但遗憾的是它不起作用。 如何禁用细节元素? 最佳答案 一个非常简单的方法是只使用 CSS
如何在 Visual Studio 中生成此类摘要? /// /// Returns a number /// /// /// 最佳答案 在你的方法、属性等之前输入///,VS会自动生成注释
关于简单的看似无辜的函数的简单问题:summary。 直到我看到min和max的结果超出了我的数据范围,我才意识到summary有一个指定输出结果精度的参数。我的问题是如何以一种干净、普遍的方式来解决
我有一个数据框 a,其中包含 4 个标识列:A、B、C、D。使用 ddply() 创建的第二个数据框 b 包含每组 的不同 D 的所有值的摘要>A、B、C。第三个数据框 c 包含 b 的子集,其中包含
这个问题在这里已经有了答案: jsdoc: multiline description @property (4 个回答) 4年前关闭。 我正在为我的 javascript 项目使用 Visual S
我有一个向量的 R 摘要: summary(vector) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.000 1.000 2.000 6
我想创建一个新的计算列(另一列文本的摘要)。为了让您重现,我创建了一个 df 作为可重现的示例: df head(df,3) name 1 ZKBOZVFKNJBRSDW
假设我有一棵对象树,其中每个对象都有一个字符串表示。我想在整棵树上创建一个 SHA1 摘要。 最简单的方法是递归遍历树的每个节点。对于每个节点,我将连接(作为简单字符串)所有子节点的 SHA1 摘要,
因此,我试图围绕 MVVM 进行思考,但我发现我的问题多于答案。当涉及到下一步时,这些教程对我来说还远远不够...... 基本上我想要一个项目列表,然后是一种获取每个项目详细信息的方法。 下面是我在网
我希望将 princomp PCA(必须是 princomp)的摘要作为数据框,以便我可以使用 kable 格式化表格以生成报告。 这是我尝试使用的代码,从中应该清楚我想要做什么; kable( as
我们的一页很重。为了减少我们的观察者数量并加速 Angular 摘要周期,我们大量使用了 On-Time-Binding 语法 :: .我们也在使用angular-bind-notifier以避免对我
我正在与我受雇的公司合作,试图为我们的内部库创建更好的文档。我们希望最终检查每个类并更新我们的命名方案(过去有很多草率的代码)。我想要的是能够打印出 javadoc 的摘要。它需要排除页面底部的完整解
我正在尝试创建一个分组摘要,报告每个组中的记录数,然后还显示一系列变量的均值。 我只能弄清楚如何将其作为两个单独的摘要进行处理,然后再将它们合并在一起。这工作正常,但我想知道是否有更优雅的方法来做到这
我正在尝试从 this file 中获取带有百分比的交叉表使用 Hmisc .但为什么是summary()从变量 OCCUPATION 中删除类别(“OTHERS”)? library(Hmisc)
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
如标题所示,我想为 PreferenceAcitvity 创建自定义标题栏。我需要在标题下方添加摘要。目前它只会显示一个标题,但我需要一个副标题,就像任何 Preference 都可以有一个摘要。 我
我是一名优秀的程序员,十分优秀!