You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用密码学证明文件在特定时间存在并锚定至公开可验证时间线?

文件哈希锚定至公开不可变时间线的标准方法

问题背景

我需要证明特定文件(如PDF合同或构建产物)在某一特定时间点已存在,且该证明在锚定后可独立验证,无需验证者信任发行平台。核心需求:

  • 证明必须与文件内容绑定,而非元数据
  • 不受发行平台限制(无供应商锁定)
  • 第三方无需账户即可验证

我已经能用Python计算文件的SHA-256哈希:

import hashlib

with open("contract.pdf", "rb") as f:
    sha256 = hashlib.sha256(f.read()).hexdigest()
print(sha256)

但单独的哈希无法证明文件的创建时间——文件系统时间戳可编辑,平台时间线属于内部数据。请问将文件哈希锚定至公开可验证、不可变时间线的标准密码学方法是什么?


标准解决方案

1. 区块链时间戳锚定

这是当前最通用的无依赖方案,核心是将文件哈希写入公开区块链(如比特币、以太坊)的交易备注或OP_RETURN字段:

  • 核心逻辑:区块链的区块头包含不可篡改的时间戳,整个链公开可查。哈希一旦被写入某个区块,任何人都能通过区块高度和时间戳,证明该哈希在对应时间点已存在。
  • 操作步骤:
    1. 用现有代码计算文件SHA-256哈希
    2. 将哈希转换为符合目标区块链交易格式的字符串(比如比特币OP_RETURN支持直接存储哈希)
    3. 发起一笔小额区块链交易,把哈希写入备注/OP_RETURN字段
    4. 保存交易ID和对应区块高度,作为时间戳证明
  • 验证方式:第三方只需通过区块链浏览器查询交易ID,确认哈希存在,同时核对区块时间戳,再重新计算文件哈希对比即可,全程无需账户。

2. RFC 3161 可信时间戳协议

这是国际标准化的时间戳方案,由合规的时间戳权威机构(TSA)提供服务,选择符合标准的TSA可避免供应商锁定:

  • 核心逻辑:TSA会将你的文件哈希与当前时间戳、自身数字签名绑定,生成时间戳令牌(TSR)。该令牌可独立验证,只需校验TSA的签名与哈希匹配即可。
  • 操作步骤:
    1. 计算文件SHA-256哈希
    2. 向符合RFC 3161标准的TSA提交哈希,请求时间戳令牌
    3. 保存生成的TSR文件(通常为ASN.1格式)
  • 验证方式:第三方可通过openssl工具验证TSR:
    openssl ts -verify -in timestamp.tsr -data contract.pdf -CAfile tsa_cert.pem
    
    只要TSA的根证书公开可信,验证者无需账户,也不依赖原发行平台。

3. 分布式时间戳网络(如OpenTimestamps)

这是基于区块链的简化方案,无需自行发起区块链交易:

  • 核心逻辑:OpenTimestamps会将多个用户的哈希聚合后批量写入区块链,降低成本的同时保留区块链的不可篡改特性。
  • 操作步骤:
    1. 安装OpenTimestamps客户端(或使用Python库opentimestamps-client)
    2. 对文件生成时间戳:
      ots stamp contract.pdf
      
    3. 生成的.ots文件即为时间戳证明
  • 验证方式:第三方只需运行以下命令即可自动验证:
    ots verify contract.pdf.ots
    
    工具会自动查询区块链确认时间戳,无需注册账户。

内容的提问来源于stack exchange,提问作者Jon247

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:36:05