1. 准备阶段

  • 获取私钥和公钥:个人或组织需要向可信的证书颁发机构(CA)申请数字证书。证书中包含公钥和私钥,私钥用于签名,公钥用于验证签名。
  • 安装数字证书:将获取的数字证书安装在支持PDF签名的软件或应用中。

2. 签名过程

  • 计算文件摘要
    • 使用哈希算法(如SHA-256)对PDF文件的内容进行加密计算,生成一个固定长度的唯一哈希值(即摘要)。这一步确保了文件内容的完整性,因为任何对文件内容的修改都会导致哈希值的变化。
  • 生成数字签名
    • 使用个人的私钥对生成的哈希值进行加密,得到加密后的哈希值,即数字签名。这个签名与原始文件内容紧密相关,且只有拥有相应私钥的签名者才能生成。

3. 将签名嵌入PDF文件

  • 添加签名信息
    • 将生成的数字签名、签名者的身份信息(如证书信息)、签名时间等附加信息嵌入到PDF文件的特定位置。这些信息通常以特定的格式(如PKCS#7)存储在PDF文件中。
  • 保存签名后的PDF
    • 签名完成后,保存修改后的PDF文件。此时,该文件已经包含了签名者的数字签名,可以作为已签名的文档进行分发和验证。

4. 验证签名

  • 提取签名信息
    • 当接收方收到签名后的PDF文件时,可以使用支持PDF签名的软件或应用来验证签名。首先,从PDF文件中提取签名信息、签名者的身份信息以及签名时间等。
  • 计算文件摘要
    • 同样使用哈希算法对接收到的PDF文件内容进行计算,生成新的哈希值。
  • 验证签名
    • 使用签名者的公钥对提取出的数字签名进行解密,得到原始的哈希值。然后,将这个原始的哈希值与刚刚计算出的新哈希值进行比较。
    • 如果两者相同,则说明文件在传输过程中未被篡改,且签名是有效的。这证明了文件的完整性和签名的真实性。

注意事项

  • 数字证书的有效性:在验证签名时,还需要检查数字证书的有效性,包括证书是否过期、是否被吊销等。
  • 软件或应用的兼容性:不同的软件或应用可能对PDF签名的支持程度不同,因此在签名和验证过程中需要确保使用兼容的软件或应用。