PDF 签名检查器
检查 PDF 的签名字段、统计签名标记,并分析 ByteRange 完整性窗口。
检查 PDF 的签名字段、统计签名标记,并分析 ByteRange 完整性窗口。 检查 PDF 的签名字段、统计签名标记,并分析 ByteRange 完整性窗口。
检查 PDF 的签名字段、统计签名标记,并分析 ByteRange 完整性窗口。
检查 PDF 的签名字段、统计签名标记,并分析 ByteRange 完整性窗口。 检查 PDF 的签名字段、统计签名标记,并分析 ByteRange 完整性窗口。
PDF 上的数字签名不是画在页面上的图章(尽管也可能存在视觉签名外观)。它是 一个密码学对象:签名字典的 /Contents 值保存着 DER 编码的 PKCS#7 SignedData 结构。该结构包含签名者的证书、摘要算法,以及对 PDF 字节精确切片计算出的 签名。/ByteRange 数组精确描述签名覆盖了文件的哪些字节范围:通常为 [0, a, b, c],意为"字节 0..a-1 和 b..b+c-1"。这些范围内的所有内容都被签名; 范围之外——包括签名值本身——则没有。这种设计让 PDF 无需预先知道最终长度 就能签名。
要验证签名,检查器对签名范围内的字节计算哈希,并与 PKCS#7 结构中内嵌的 摘要比对。如果签名后有人编辑 PDF,覆盖的字节会改变,重算的哈希就会偏离, 验证失败——这就是篡改信号。因此 /ByteRange 定义了完整性窗口:签名只能保护 它覆盖的字节。范围未覆盖整个文档的签名会留下其余文件可被无痕修改的漏洞。 本检查器会报告范围是否存在,以及它是否从字节 0 开始并覆盖头部加尾部—— 这是所有签名工具都会产生的形状。
它用内置的 pdf-lib 库(Apache-2.0)解析 PDF,并报告:页数;AcroForm 中 找到的签名字段数;原始字节流中 /FT /Sig 标记的数量;/ByteRange 数组是否 存在;以及该范围是否具有规范 [0, head, tailStart, tailLen] 形状。零标记的 PDF 完全没有签名。有标记但无法解析范围的 PDF 不常见,值得仔细检查。完整的 密码学验证——重算哈希并验证证书链——需要签名者的完整链和信任库;本页面 聚焦于揭示签名是否存在、完整性窗口是否完好的结构性分析。
多个签名标记通常意味着多重签名,或增量更新后文档被重新签名。加密 PDF 可能 对解析器隐藏签名字典;本工具使用 ignoreEncryption 模式,仍会报告结构。 记住:本工具检查结构,不检查身份。它无法告诉你签名者是否确如其声称——那 需要对照可信根验证证书。把它用作收到文档的初步分流,重要内容再用你平台的 完整签名验证跟进。分析完全在浏览器中完成,你的 PDF 永远不会被上传。