指南
如何判断 PDF 是否被修改
唯一可靠的检查方法,是将文件的加密指纹(哈希值)与发送前登记的指纹进行比对。两者一致,说明 PDF 与原件逐位相同;不一致,则说明文件已被改动,即使看起来一模一样。
为什么打开 PDF 看一看还不够?
PDF 编辑器可以在不改变版式的情况下修改金额、日期或银行账号。作者、修改日期等文件属性同样可以改写,而文件名并不能说明其内容。肉眼检查只能发现粗糙的改动。
有哪些方法可以检查?
| 方法 | 能说明什么 | 局限 |
|---|---|---|
| 肉眼检查 | 明显的编辑错误 | 无法发现精心的改动 |
| 属性与元数据 | 声明的日期和创建软件 | 可被修改且不留痕迹 |
| 与原件比对 | 两个版本之间的差异 | 需要一份可信的原件副本 |
| PDF 数字签名 | 签署人以及文件此后是否被改动 | 需要证书和可验证签名的阅读器 |
| 已登记的 SHA-256 指纹 | 文件是否与登记时相同,以及自何时起 | 必须在发送前登记指纹 |
指纹比对既不依赖保存副本,也不依赖元数据:有登记的指纹即可。
什么是 SHA-256 指纹?为什么可靠?
SHA-256 是美国国家标准与技术研究院(NIST)在 FIPS 180-4 标准中定义的哈希函数。它能把任意大小的文件转换为 64 位十六进制字符串:同一文件始终得到相同的指纹,哪怕只改动一个比特,也会得到完全不同的结果。
“The digests are used to detect whether messages have been changed since the digests were generated.”
NIST 评定 SHA-256 的抗碰撞强度为 128 位:要找到两个指纹相同的不同文件,约需 2¹²⁸ 次运算,远超当今技术能力。 [NIST]
如何逐步核验?
- 发送 PDF 之前,出具方登记其 SHA-256 指纹。使用 TRAMPTO 时,指纹在浏览器内计算,无需上传文件,并生成公开验证链接。
- 出具方发送已封印的文档,并分享验证链接。
- 收件人打开链接,或在验证页面载入 PDF,浏览器会重新计算所收到文件的指纹。
- 指纹与登记的一致,说明文档与出具时相同;不一致,说明已被修改,不应予以接受。
被篡改的 PDF 有什么实际风险?
损失最大的情形是商业电子邮件欺诈:攻击者截获发票,在其送达客户之前篡改收款账号。美国联邦调查局互联网犯罪投诉中心(IC3)年度报告显示,2024 年此类投诉共 21,442 起,损失 2,770,151,146 美元,是报告中损失第二高的类别。 [FBI IC3]
如果发票登记了指纹,付款方可在转账前进行核验:被篡改的 IBAN 会产生不同的指纹。
核验指纹有法律效力吗?
指纹一致是关于完整性和日期的技术证据,可作为此类证据在程序中提交,但不等同于合格电子签名。欧盟第 910/2014 号条例(eIDAS)第 3 条第 25 项将电子印章定义为附于或逻辑关联于其他电子数据、用以确保后者来源与完整性的电子数据。
«»
TRAMPTO 证明完整性和日期,但并非合格信任服务提供者:法律要求合格印章或签名的场合,应使用合格服务,同时仍可登记指纹。
术语表
- SHA-256 指纹
- 对文件应用 SHA-256 函数得到的 64 位十六进制字符串,用于标识文件的确切内容。
- 完整性封印
- 在特定日期登记文档的指纹,以便日后核验其未被改动。
- 验证链接
- 任何人无需账户或安装即可核验已封印文档的公开地址。
- Seal ID
- TRAMPTO 为每次封印分配的唯一标识符。