开始使用
← 返回博客

如何验证PDF数字签名以及什么会破坏它们

发布于 更新于 • 7 分钟

支持签名的阅读器会检查已签名字节范围、证书信任以及后续允许的更改。有效状态并不证明文本真实或签署者的所有声明。CleanPDF不验证数字签名。

什么是PDF数字签名?

数字签名是加密印章,它:

  • 证书信任依据阅读器配置的信任策略评估,并不独立确认所有身份声明。
  • 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
  • 这些是供技术检查的线索,不是关于谁修改了什么的已验证历史。

支持签名的阅读器会检查已签名字节范围、证书信任以及后续允许的更改。有效状态并不证明文本真实或签署者的所有声明。CleanPDF不验证数字签名。

数字签名如何工作

签名过程

  1. 签名算法使用私钥为受保护的数据生成签名值;PDF保存签名数据和证书以供验证。
  2. 证书信任依据阅读器配置的信任策略评估,并不独立确认所有身份声明。
  3. 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
  4. 可信时间戳将时间声明与数据摘要绑定。应确认覆盖哪些数据,以及时间戳验证是否成功。

验证过程

  1. 证书检查 - 签署者的证书是否有效且可信?
  2. 哈希比较 - 文档是否匹配原始哈希?
  3. 时间戳验证(如果存在) - 何时签名?
  4. 结果 - 有效、无效或未知

检查签名状态

在Adobe Acrobat/Reader中

  1. 打开PDF
  2. 查找签名面板(蓝色丝带图标)
  3. 单击签名
  4. 查看状态:有效、无效或未知

状态含义

有效(绿色复选标记):

  • 证书信任依据阅读器配置的信任策略评估,并不独立确认所有身份声明。
  • 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
  • 证书可信

无效(红色X):

  • 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
  • 证书已被撤销或过期
  • 签名数据已损坏

未知(黄色问号):

  • 证书不在可信列表中
  • 无法验证签署者身份
  • 签名在数学上可能仍然有效

什么会破坏PDF签名

任何内容修改

使签名无效的更改:

  • 编辑文本或图像
  • 添加或删除页面
  • 修改表单字段(在大多数情况下)
  • 添加注释(取决于签名设置)

元数据更改

某些元数据修改可能破坏签名:

  • 更改文档属性
  • 修改XMP元数据
  • 更改文档信息字典

结构更改

使签名无效的技术修改:

  • 使用不同的PDF生产者重新保存
  • 优化或压缩文件
  • 转换为不同的PDF版本

通常不破坏签名的操作

  • 查看文档
  • 打印(不修改文件)
  • 在允许的签名字段中添加签名
  • 某些允许的注释(如果配置)

PDF签名的类型

批准签名

  • 表示批准或同意
  • 多人可以签名
  • 后续签名不会使先前的签名无效(如果正确配置)

认证签名

  • 首先应用,在其他签名之前
  • 设置允许的更改
  • 比批准签名更严格

时间戳签名

  • 证明文档在特定时间存在
  • 由可信时间戳机构添加
  • 对法律合规有用

常见问题和解决方案

"证书不受信任"

原因: 您的PDF阅读器不识别证书颁发机构。

解决方案:

  • 添加信任前,请根据组织策略独立核实证书及其颁发者。不要仅为消除警告而信任证书。
  • 从CA下载根证书
  • 通过替代方式验证(联系签署者)

"文档已修改"

原因: 签名后某些内容发生了变化。

解决方案:

  • 请求新的签名副本
  • 与原始文件比较(如果可用)
  • 调查发生了什么变化

"签名已过期"

原因: 证书有效期已过。

证书今天过期不能说明签名创建时是否有效。需要评估相关时间、信任、撤销证据以及可用的已验证时间戳。

"时间戳失败"

原因: 无法验证时间戳服务器。

解决方案:

  • 检查互联网连接
  • 时间戳服务器可能不可用
  • 时间戳可能仍然有效

验证签署者身份

证书详细信息

检查证书:

  • 主题名称 - 证书颁发给谁
  • 颁发者 - 哪个CA颁发了证书
  • 有效期 - 证书何时有效/曾经有效
  • 用途 - 证书可用于什么

信任链

验证证书链:

  • 根CA应该是可信的
  • 中间证书应该有效
  • 链中没有被撤销的证书

数字签名 vs 电子签名

方面数字签名电子签名
技术加密各种
篡改证据
身份验证基于证书变化
法律地位因司法管辖区而异
修改检测自动

最佳实践

接收签名文档时

  1. 检查签名状态 - 不要只是假设它有效
  2. 验证签署者身份 - 这是应该签名的人吗?
  3. 审查证书详细信息 - 证书是否合适?
  4. 检查时间戳 - 何时签名?
  5. 保存原始文件 - 不要修改已签名的文档

签署文档时

  1. 使用可信证书 - 来自认可的CA
  2. 包含时间戳 - 证明签名时间
  3. 设置适当的权限 - 应该允许哪些更改?
  4. 发送前验证 - 检查签名是否有效

对于组织

  1. 建立签名政策 - 谁可以签名什么
  2. 适当管理证书 - 安全存储、及时更新
  3. 培训员工 - 如何验证和创建签名
  4. 归档签名文档 - 维护原始签名副本

签名验证检查清单

  • 签名显示"有效"状态
  • 签署者身份符合预期
  • 证书来自可信CA
  • 证书未过期或撤销
  • 存在时间戳(对于重要文档)
  • 没有关于修改的警告

结论

PDF数字签名提供有价值的真实性保证,但只有在正确验证时:

  1. 检查状态 - 有效、无效或未知
  2. 验证身份 - 签署者是否应该是他们?
  3. 理解限制 - 什么会破坏签名
  4. 保持完整性 - 不要修改已签名的文档

数字签名很强大,但需要正确的理解才能有效使用。


注意:CleanPDF的清理工具修改PDF,这将使数字签名无效。这是设计使然—清理和已签名的文档服务于不同的目的。始终在签名前清理,或创建单独的版本用于共享。

技术参考:PDF结构Acrobat签名验证

相关文章

另请参阅

尝试CleanPDF

分析您的PDF以获取编辑痕迹,或出于隐私考虑删除元数据。