每份 ParkProof 证据 PDF 都带有密码学签名附录。本页面是公开的离线指南,供任何人 — 市政官员、保险公司、法院书记员或司机本人 — 确认该记录自保存的那一刻起未被篡改。
每个 ParkProof 会话包含一个载荷(一个小文本文件,含规范的会话元数据以及路牌+车辆照片的 SHA-256 哈希)和一个签名(用 AWS KMS 管理的 ECDSA P-256 私钥对载荷签名,该私钥永远不会离开 AWS)。两者都打印在每份导出的证据 PDF 的签名附录中。
验证签名所需的公钥发布在 /parkproof-public-key.pem — 在浏览器中打开以确认加载,然后保存到本地。
openssl — macOS 和大多数 Linux 发行版自带;Windows 上可通过 Git Bash、WSL 或独立的 OpenSSL 构建获取。打开证据 PDF,滚动到末尾的"签名附录"页面。你会看到三块文本:payload、sig.base64 以及对公钥 URL 的引用。把前两块保存到本地文件,然后运行验证:
# 1. 把 PDF 附录中的载荷块保存到 payload.txt # (精确复制粘贴;保留行尾)。 # 2. 把 base64 签名块保存到 sig.base64。 # 3. 获取公钥。 curl -O https://www.parkproof.com.au/parkproof-public-key.pem # 4. 将 base64 签名解码为原始字节。 base64 -d sig.base64 > sig.bin # 5. 运行验证。 openssl dgst -sha256 -verify parkproof-public-key.pem \ -signature sig.bin payload.txt
上面的命令只验证载荷 — 它确认元数据以及载荷中记录的照片哈希值未被改变。它不会检查 PDF 中实际显示的照片是否仍与那些哈希值相符。要确认照片本身,你必须重新计算每张照片的哈希并与载荷比对:
# 6. 对 PDF 中的每张照片重新计算 SHA-256, # 并与载荷中对应的字段逐一比对: # 路牌照片 → sign_photo_sha256 # 车辆照片 → car_photo_sha256 # 环境照片 → ambient_photo_sha256 # 先从 PDF 中导出每张图片为独立文件,然后: sha256sum sign_photo.jpg sha256sum car_photo.jpg sha256sum ambient_photo.jpg # 若系统没有 sha256sum,可改用 openssl: openssl dgst -sha256 sign_photo.jpg
sign_photo_sha256 / car_photo_sha256 / ambient_photo_sha256 字段逐字符比对。哈希一致表示该照片自签名以来未被改动;哈希不一致表示这张照片在签名之后被替换或修改过 — 即使第 5 步显示 Verified OK 也是如此。单凭 Verified OK 并不验证图片本身;只有完成本步的重新计算并匹配,才能确认你所看到的照片就是被签名的那些照片。
Verified OK — 你 PDF 中的载荷与 ParkProof 扫描时签名的字节完全一致。这确认了元数据(路牌规则、GPS、时间戳、地址)以及载荷中记录的照片哈希值自那时起未被更改。但要确认照片本身,仍需完成上面的第 6 步重新计算哈希;只有这一步才能验证 PDF 中显示的图片确实与这些哈希相符。
Verification failure — 载荷、签名或两者自记录保存以来已被修改。PDF 可能被编辑、附录被篡改,或复制粘贴引入了空白差异。在得出结论之前,请仔细重复复制操作。
验证成功只确认完整性。它不确认:
大多数生成"证据"的停车应用只产出截图。截图没有完整性的故事 — 它们可能在拍摄到发送之间的任何时刻被编辑。密码学签名是"这是我看到的"和"这是我看到的,这是数学证明我此后没有改变它"之间的差别。
公钥已发布,因此验证完全离线 — 你不需要信任 ParkProof、联系我们的服务器或运行我们的应用来确认完整性声明。即使 ParkProof 多年后不再维护,只要 openssl 仍然存在,验证就可以进行。
发邮件到 hello@parkproof.com.au。我们会回复。