Settlement Witness

🧾 本地优先的密码学收据验证器

离线验证 SAR v0.1 结算收据的 Ed25519 签名与 RFC 8785 规范化摘要,本地优先无需联网,可选远程签发

收藏
11.2k
安装
2.5k
版本
0.1.1
CLS 安全性认证2026-08-03
点击查看完整报告 >

使用说明

SettlementWitness 综合评估

SettlementWitness 是一款专注于 SAR v0.1 结算收据本地验证的密码学工具,采用 Ed25519 签名算法和 RFC 8785 JSON 规范化标准,实现完全离线的收据真伪核验。

核心用法

该工具通过 Python3 脚本 verify_receipt.py 执行验证,支持四种典型场景:信任任务完成声明前、链式调用下游代理输出前、将收据作为证据使用前、以及处理结算相关声明时。验证流程包括重新计算收据核心字段的规范摘要、比对 receipt_id、校验 Ed25519 签名与捆绑的公钥注册表。输出结果为结构化 JSON,包含 validverdict(PASS/FAIL/INDETERMINATE)及错误详情。

显著优点

1. 本地优先架构:核心验证功能完全离线运行,无需网络连接,公钥注册表和测试固件均本地捆绑
2. 密码学严谨性:采用 Ed25519 椭圆曲线签名与 RFC 8785 规范 JSON 序列化,避免实现差异导致的摘要不匹配

3. 透明可审计:开源仓库公开,支持自定义公钥注册表路径,提供自我测试模式验证验证器本身正确性

4. 服务可用性隔离:远程签发服务中断不影响既有收据的本地验证,避免单点故障

潜在局限

  • 公钥注册表更新需可选网络操作,长期使用可能面临密钥轮换滞后风险
  • 依赖外部 Python 包(jcscryptography),需维护依赖安全
  • 仅验证收据密码学有效性,不验证任务实际完成质量或法律终局性
  • 远程签发服务端持有私钥,存在信任假设

适合人群

多代理协作系统的安全架构师、需要审计代理输出真实性的自动化工作流开发者、以及追求最小网络暴露面的本地优先安全倡导者。

常规风险

私钥泄露可能导致伪造收据;依赖未更新的公钥注册表可能接受已撤销密钥签名的收据;脚本执行环境需防范路径注入和依赖混淆攻击。

安全解读

核心用法

SettlementWitness 是一款专为 Agent 生态设计的结算收据验证工具,核心功能是本地验证 SAR v0.1 协议的签名收据。用户通过 python3 scripts/verify_receipt.py 命令即可执行验证,支持单文件验证、批量自测(--self-test)以及针对篡改收据的负面测试。验证流程包括:解析收据 JSON、使用 RFC 8785 规范重新计算规范摘要、校验 receipt_id 与摘要匹配、最后通过 Ed25519 算法验证签名有效性。工具内置公钥注册表,默认支持离线运行,仅在用户显式请求时才涉及网络操作。

验证结果以结构化 JSON 返回,包含 valid(密码学有效性)、verdict(签发者声明:PASS/FAIL/INDETERMINATE)、错误详情等字段。需要特别强调的是,valid: true 仅证明收据未被篡改且签名有效,不代表任务实际成功——verdict 字段才反映签发者对任务是否达标的正式判定。

显著优点

本地优先架构是该工具的最大亮点。核心验证逻辑完全离线执行,不依赖任何网络连接,这在网络不稳定或对数据外泄敏感的场景下极具价值。用户可以在完全隔离的环境中确认收据真伪,满足零信任安全架构的需求。

密码学严谨性体现在对标准的严格遵循:RFC 8785 JSON Canonicalization Scheme 确保摘要在不同实现间的一致性,Ed25519 提供现代、高效的椭圆曲线签名方案。相比自建摘要算法,采用标准规范显著降低了互操作性风险。

透明可审计体现在完整的自测套件和负面测试支持。用户可以通过篡改测试直观验证工具确实会拒绝无效收据,而非虚假返回成功。开源 MIT-0 许可证和清晰的代码结构(818 行/7 文件)也便于安全审计。

灵活集成能力体现在可选的远程收据签发接口。对于需要第三方背书的场景,用户可显式调用 DefaultVerifier 服务获取签名收据,再回归本地验证流程,形成"签发-验证"分离的安全模型。

潜在缺点与局限性

来源可信度限制是首要考量。项目由个人开发者(nutstrut)维护,安全认证报告将其定为 T3 级别来源,相比企业级 T1/T2 来源,长期维护承诺和社区背书相对薄弱。用户需自行承担供应链风险,建议持续关注 GitHub 仓库活跃度。

密钥管理依赖构成运营风险。本地验证依赖内置的公钥注册表,当 DefaultVerifier 轮换签名密钥时,旧版本工具将无法验证新收据。虽然可通过 SAR_KEYS_REGISTRY_PATH 环境变量手动指定新注册表,但这增加了运维复杂度,且密钥轮换通知机制尚不明确。

功能边界需清晰认知。工具明确声明不执行用户任务、不托管资金、不证明法律结算最终性。部分用户可能误解 verdict: PASS 为业务层面的担保,实际上它只是签发者的主观声明,与智能合约最终性、法律约束力无关。

可选远程功能的数据暴露。虽然远程收据签发是显式 opt-in 功能,但调用时会将 task_id、spec、output 发送至第三方服务器。对于包含敏感商业数据或隐私信息的任务,这一数据外泄路径需要纳入风险评估。

适合的目标群体

  • 多 Agent 协作系统的架构师:需要验证跨 Agent 任务完成声明的真实性,防止恶意或故障 Agent 伪造完成证据
  • 零信任安全实践者:追求本地可验证性,不愿将核心安全逻辑外包给远程服务
  • 结算/支付 adjacent 系统的开发者:需要在最终资金释放前获得密码学层面的完成证明
  • 审计与合规团队:需要可追溯、可复现的验证记录,支持证据链的完整性校验
  • 离线或边缘环境部署者:网络连接不可靠或安全策略禁止外联的场景

使用风险与注意事项

性能层面:Python 依赖项(cryptography、jcs)在首次安装时需编译原生扩展,在资源受限环境可能耗时较长。建议预构建或在容器化环境中准备镜像。

依赖项风险:虽然 cryptography 和 jcs 均为成熟安全库,但任何依赖都引入供应链攻击面。建议锁定版本、定期审查 CVE、考虑使用依赖签名验证工具。

验证结果误读风险:需建立内部文档明确区分 valid(密码学有效)与 verdict(业务状态),防止运维人员将 valid: true && verdict: FAIL 误解为可继续下游处理。

密钥轮换监控:建议建立针对 DefaultVerifier 密钥轮换的监控机制(如订阅 GitHub Releases、监控 .well-known 端点变化),避免生产环境因密钥过期导致验证失败。

远程 API 可用性:虽然本地验证不依赖网络,但若业务流程包含远程收据签发环节,需评估 defaultverifier.com 的服务等级协议和故障降级策略。

Settlement Witness 内容

fixtures文件夹
keys文件夹
scripts文件夹
spec文件夹
手动下载zip · 15.0 kB
sar-v0.1-current-kid03.jsonapplication/json
请选择文件