正在加载,请稍候…

PDF数字签名:如何验证文档真实性

检查PDF文件中的数字签名。了解PDF签名的工作原理以及如何验证文档真实性。

PDF数字签名:如何验证文档真实性

什么是PDF数字签名验证?

PDF文档上的数字签名提供密码学证明,涵盖两个方面:

  1. 身份:文档由声称的签名者签署
  2. 完整性:文档自签署后未被修改

与扫描的手写签名(仅图像)不同,数字签名是基于公钥密码学的数学构造,提供强大且可验证的保证。

PDF数字签名:如何验证文档真实性 插图

PDF数字签名的工作原理

签署过程

  1. 计算PDF内容的哈希值(例如SHA-256)
  2. 使用签名者的私钥加密哈希值
  3. 将加密后的哈希值(签名)嵌入PDF中
  4. 签名者的证书(包含其公钥)也存储在PDF中

验证过程

  1. 从PDF中提取签名和证书
  2. 使用证书中的公钥解密签名
  3. 独立计算当前PDF内容的哈希值
  4. 比较:如果两个哈希值匹配,则签名有效且文档未被更改

信任链

证书本身不能证明身份——任何人都可以生成证书。信任通过证书颁发机构(CA)链建立:

  • 您的证书由中间CA签名
  • 中间CA的证书由根CA签名
  • 根CA预安装在操作系统和浏览器中,被视为受信任

PDF签名的类型

批准签名

在某个时间点签署文档。之后可以添加其他签名(每个签名覆盖签署时的内容)。

认证签名(DocMDP)

控制签署后允许对文档进行的更改:

  • 级别1:不允许任何更改
  • 级别2:仅允许填写表单和添加注释
  • 级别3:允许填写表单、添加注释和添加页面

PDF数字签名:如何验证文档真实性 插图

不可见签名

密码学签名,文档中没有可见的图形元素。

可见签名

同时包含密码学签名和可见表示(通常是签名图像、姓名、日期和原因)。

PDF签名验证状态

验证PDF签名时,结果可以是:

有效

  • 签名密码学验证通过
  • 证书链受信任
  • 签署后无修改

有效但存在问题

  • 签名数学上有效
  • 证书可能已过期、不受信任或被吊销
  • 文档可能以允许的方式被修改(批准的更改)

无效

  • 文档在签署后被修改
  • 计算出的哈希值与签名不匹配

未知

  • 无法验证(需要互联网访问进行OCSP/CRL检查)
  • 证书链指向不受信任的根

PDF数字签名:如何验证文档真实性 插图

长期验证(LTV)

标准签名可能随着证书过期而变得无法验证。**长期验证(LTV)**将所有验证信息嵌入PDF本身:

  • 证书链
  • OCSP响应(证书有效性证明)
  • 来自受信任时间戳机构的时间戳

启用LTV的PDF可以在签署后数年或数十年无需互联网访问即可验证。

PAdES、CAdES和XAdES标准

不同场景使用不同的签名标准:

  • PAdES(PDF高级电子签名):PDF签名的欧洲标准,欧盟法律合规要求
  • CAdES:适用于任意数据,不仅限于PDF
  • XAdES:适用于XML文档

欧盟的eIDAS法规定义了签名级别:

  • SES(简单):基本数字签名
  • AdES(高级):签名者身份与签名关联
  • QES(合格):最高法律效力,等同于欧盟法律中的手写签名

常见签名问题

自签名证书

许多PDF签名工具允许创建无需CA参与的证书。这些是“自签名”证书——证书由其自己的私钥签名。它们提供完整性保证,但不提供身份保证。

过期证书

如果签署时证书有效,且签名被正确时间戳,则签名仍然有效。LTV正确处理此情况。没有LTV,过期证书可能导致错误的“无效”警告。

增量更新

PDF可以通过追加新数据(增量更新)进行修改,而不会覆盖原始签名内容。部分签名仅覆盖原始内容;在审查后来修改的签名PDF时,理解这一点很重要。

使用PDF签名检查器

我们的工具:

  1. 上传PDF:通过拖放或文件选择器
  2. 提取所有签名:从文档中提取
  3. 验证每个签名:密码学验证
  4. 显示证书详情:颁发者、主题、有效期
  5. 指示信任状态:受信任CA、自签名或未知
  6. 报告修改状态:文档签署后是否被更改
  7. 客户端处理:您的PDF永远不会上传到服务器

用于验证已签署的合同、检查证书签名的文档、审计PDF完整性,以及理解数字签名对文档的实际证明作用。