← 返回博客
如何验证PDF数字签名以及什么会破坏它们
发布于 更新于 • 7 分钟
支持签名的阅读器会检查已签名字节范围、证书信任以及后续允许的更改。有效状态并不证明文本真实或签署者的所有声明。CleanPDF不验证数字签名。
什么是PDF数字签名?
数字签名是加密印章,它:
- 证书信任依据阅读器配置的信任策略评估,并不独立确认所有身份声明。
- 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
- 这些是供技术检查的线索,不是关于谁修改了什么的已验证历史。
支持签名的阅读器会检查已签名字节范围、证书信任以及后续允许的更改。有效状态并不证明文本真实或签署者的所有声明。CleanPDF不验证数字签名。
数字签名如何工作
签名过程
- 签名算法使用私钥为受保护的数据生成签名值;PDF保存签名数据和证书以供验证。
- 证书信任依据阅读器配置的信任策略评估,并不独立确认所有身份声明。
- 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
- 可信时间戳将时间声明与数据摘要绑定。应确认覆盖哪些数据,以及时间戳验证是否成功。
验证过程
- 证书检查 - 签署者的证书是否有效且可信?
- 哈希比较 - 文档是否匹配原始哈希?
- 时间戳验证(如果存在) - 何时签名?
- 结果 - 有效、无效或未知
检查签名状态
在Adobe Acrobat/Reader中
- 打开PDF
- 查找签名面板(蓝色丝带图标)
- 单击签名
- 查看状态:有效、无效或未知
状态含义
有效(绿色复选标记):
- 证书信任依据阅读器配置的信任策略评估,并不独立确认所有身份声明。
- 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
- 证书可信
无效(红色X):
- 已签名修订通过完整性检查;还应单独查看后续更改和此签名允许的操作。
- 证书已被撤销或过期
- 签名数据已损坏
未知(黄色问号):
- 证书不在可信列表中
- 无法验证签署者身份
- 签名在数学上可能仍然有效
什么会破坏PDF签名
任何内容修改
使签名无效的更改:
- 编辑文本或图像
- 添加或删除页面
- 修改表单字段(在大多数情况下)
- 添加注释(取决于签名设置)
元数据更改
某些元数据修改可能破坏签名:
- 更改文档属性
- 修改XMP元数据
- 更改文档信息字典
结构更改
使签名无效的技术修改:
- 使用不同的PDF生产者重新保存
- 优化或压缩文件
- 转换为不同的PDF版本
通常不破坏签名的操作
- 查看文档
- 打印(不修改文件)
- 在允许的签名字段中添加签名
- 某些允许的注释(如果配置)
PDF签名的类型
批准签名
- 表示批准或同意
- 多人可以签名
- 后续签名不会使先前的签名无效(如果正确配置)
认证签名
- 首先应用,在其他签名之前
- 设置允许的更改
- 比批准签名更严格
时间戳签名
- 证明文档在特定时间存在
- 由可信时间戳机构添加
- 对法律合规有用
常见问题和解决方案
"证书不受信任"
原因: 您的PDF阅读器不识别证书颁发机构。
解决方案:
- 添加信任前,请根据组织策略独立核实证书及其颁发者。不要仅为消除警告而信任证书。
- 从CA下载根证书
- 通过替代方式验证(联系签署者)
"文档已修改"
原因: 签名后某些内容发生了变化。
解决方案:
- 请求新的签名副本
- 与原始文件比较(如果可用)
- 调查发生了什么变化
"签名已过期"
原因: 证书有效期已过。
证书今天过期不能说明签名创建时是否有效。需要评估相关时间、信任、撤销证据以及可用的已验证时间戳。
"时间戳失败"
原因: 无法验证时间戳服务器。
解决方案:
- 检查互联网连接
- 时间戳服务器可能不可用
- 时间戳可能仍然有效
验证签署者身份
证书详细信息
检查证书:
- 主题名称 - 证书颁发给谁
- 颁发者 - 哪个CA颁发了证书
- 有效期 - 证书何时有效/曾经有效
- 用途 - 证书可用于什么
信任链
验证证书链:
- 根CA应该是可信的
- 中间证书应该有效
- 链中没有被撤销的证书
数字签名 vs 电子签名
| 方面 | 数字签名 | 电子签名 |
|---|---|---|
| 技术 | 加密 | 各种 |
| 篡改证据 | 是 | 否 |
| 身份验证 | 基于证书 | 变化 |
| 法律地位 | 强 | 因司法管辖区而异 |
| 修改检测 | 自动 | 无 |
最佳实践
接收签名文档时
- 检查签名状态 - 不要只是假设它有效
- 验证签署者身份 - 这是应该签名的人吗?
- 审查证书详细信息 - 证书是否合适?
- 检查时间戳 - 何时签名?
- 保存原始文件 - 不要修改已签名的文档
签署文档时
- 使用可信证书 - 来自认可的CA
- 包含时间戳 - 证明签名时间
- 设置适当的权限 - 应该允许哪些更改?
- 发送前验证 - 检查签名是否有效
对于组织
- 建立签名政策 - 谁可以签名什么
- 适当管理证书 - 安全存储、及时更新
- 培训员工 - 如何验证和创建签名
- 归档签名文档 - 维护原始签名副本
签名验证检查清单
- 签名显示"有效"状态
- 签署者身份符合预期
- 证书来自可信CA
- 证书未过期或撤销
- 存在时间戳(对于重要文档)
- 没有关于修改的警告
结论
PDF数字签名提供有价值的真实性保证,但只有在正确验证时:
- 检查状态 - 有效、无效或未知
- 验证身份 - 签署者是否应该是他们?
- 理解限制 - 什么会破坏签名
- 保持完整性 - 不要修改已签名的文档
数字签名很强大,但需要正确的理解才能有效使用。
注意:CleanPDF的清理工具修改PDF,这将使数字签名无效。这是设计使然—清理和已签名的文档服务于不同的目的。始终在签名前清理,或创建单独的版本用于共享。
技术参考:PDF结构、Acrobat签名验证。