跳到主要内容
返回文档Action Proof 协议
Action Proof

授权效果,而不只是授权访问工具。

访问控制限制软件能触及什么。Execution Authorization 限定它可以造成的确切效果。Action Proof 就是产出这条可验证链条的协议:一份针对单个规范操作的、签名且一次性的 grant,在你掌控的一个点上执行,并以任何人都能离线核对的证据收尾。

授权的密码学证明。执行结果的签名证据。Execution Grant 证明授权了什么;Action Receipt 保存已登记 Guardian 所能确认结果的签名证据。

云端授权,你的 Guardian 执行

按租户隔离的密钥与最小权限凭据

签名回执,可离线验证

远程 MCP 端点
POST https://mcp.securestamp.online/mcp
Authorization: Bearer ss_live_...

{ "jsonrpc":"2.0", "id":1, "method":"tools/list" }

有访问权不等于有行动授权

能访问支付处理方,并不等于有权去做某一笔具体退款。

访问

智能体可以调用支付处理方的退款 API

Execution Authorization

refund.create

  charge       ch_89172
  amount       USD 1,427.00
  destination  original_payment_method
  maxUses      1
  expires      14:02 UTC

资源授权回答的是一个 principal 可以访问什么。Execution Authorization 回答的是它可以造成哪一个针对具体交易的效果。即便是 fine-grained 的访问,交易本身仍然没有定义:哪个资源、多少金额、哪个目的地、几次。

三步

01

定义

究竟请求了什么确切效果?由 Guardian——而不是模型——读取提供方状态,并把它归一化成带有明确参数的规范操作。

02

授权

在你的策略之内,把该效果绑定到一份签名且一次性的 Execution Grant,使用协议为该操作所要求的权限。

03

验证

在你掌控的一个点上执行,并保留一份可离线重算的签名 Action Receipt。

read_message_request

仅凭信号返回一条消息究竟在要求什么。正文从不离开设备。

analyze_message_intent

把抽象信号映射为敏感操作意图。只用信号,不含原始文本。

verify_counterparty

核对发件人或对手方是否与租户注册表相符。

get_safe_next_step

依据注册表中已声明的事实,计算出最安全的下一步。

authorize_action

在敏感操作前返回 Action Verdict、Safe Next Step 与一份回执。

create_action_challenge

对已知对手方创建一次人工双控核验。

issue_action_receipt

针对已计算完成的事实签发一份签名的 Action Receipt。

get_source_envelope

取回使用者真正看到并批准过的、在设备上签名的 envelope。

request_execution_grant

请求一次性 grant 以执行某个确切的效果。在所需的人工或法定人数权限批准之前返回 HOLD。

get_execution_status

报告一次执行进行到哪一步,包括那些确实仍未确定的结果。

执行层

grant 不是即兴发挥的许可

一份 Execution Grant 绑定到一个效果 digest 和生效中的策略版本,会过期,且只能使用一次。你的 Guardian 会在变更前立刻重读提供方状态,对照自己的 ledger 认领该 grant,并对结果签名——包括含糊的结果。被重放的 grant 永远到不了提供方。

  • grant 是一次性的,并绑定到唯一一个确切效果 digest。maxUses 恒为 1。
  • 所需权限由协议规定;调用方无法降级。
  • 任何权限授予都需要 M-of-N quorum,且请求者永远不能批准自己的请求。
  • quorum 配置是已签名的策略快照,不是权限取值:证明依赖 threshold、审批人名单和策略 hash。
  • 结果为 succeeded、failed_no_effect 或 indeterminate——含糊绝不会被向上取整。
  • proof bundle 可离线验证,不需要回调 SecureStamp。

寓言 3

智能体在修改账户之前停了下来

某个工作流收到供应商变更银行账户的请求。它没有直接更新账户,而是带着一个哈希与若干抽象信号,通过远程 MCP Guard 调用 authorize_action。SecureStamp 返回 needs_confirmation 以及一个 Safe Next Step:向对手方发起核验。在有人作答之前,什么都不会执行。

1

智能体察觉到一个敏感动作

它识别出一次银行账户变更,并且只发送结构化信号和一个 sourceMessageHash。

2

SecureStamp 核对 tenant 事实

API key 把查询限定在一个 owner graph、已声明的策略和已登记的指令之内。

3

智能体收到一个 verdict

响应是一条包含 Safe Next Step 和 receiptId 的决策记录,而不是执行许可。

4

由人或对手方确认

必要时,create_action_challenge 会在操作继续之前打开一条人工确认通路。

本地授权上限

云端授权是必要的,但单靠它永远不够。

一份 grant 只有同时符合你的组织签名并安装在 Guardian 旁边的策略,才会变成一次执行。那份策略是 deny-only 的:它固定 tenant、gateway、操作、适配器 manifest、接受的权限与策略版本、资源、参数、金额上限、并发以及网络目的地。没有它,生产模式拒绝启动。

有效权限 =
      云端 grant
    ∩ 已签名的本地策略
    ∩ 适配器约束
    ∩ kill switches

SecureStamp Cloud 可以把一次授权收得更窄。它无法把授权放得比你的组织在本地允许的更宽。

契约

验证器会重算什么

ExecutionGrantV1

授权产物。承载效果 digest、权限、策略版本(apol_v1:)与到期时间。maxUses 为 1。

ActionReceiptV2 / V3

证据产物。V3 增加了策略版本,以及限定该次执行的已签名本地策略的 digest(gpol_v1:)。V2 为保留历史而保持逐字节兼容。

ActionProofBundleV1 / V2

第三方重算这条链所需的一切。V2 增加了已签名的本地策略和连接器的 assurance 描述符。

AdapterManifestV1

某个连接器操作的自包含、不可变描述符。验证器检查 bundle 里的 manifest,而不是重新生成,因此新增操作绝不会让旧的证明失效。

离线验证一份 receipt

验证器是一个独立发布、没有网络访问的包,并且先于它所验证的产物发布。receipts 可以离线验证,无需联系 SecureStamp,验证也不依赖运行中的 SecureStamp 服务。

npx --package @securestamp/action-proof-verify action-proof-verify bundle.json

证据的边界

一份 Action Receipt 证明的是什么经过了一个已登记的 Guardian,以及那个 Guardian 能够确认的结果。它不证明在 SecureStamp 之外没有发生过任何动作,也不确立提供方账户的法律所有权。证据的边界就是已登记的执行路径。

Action Proof — 面向智能体、API 与工作流的 Execution Authorization | SecureStamp Foundation