授权效果,而不只是授权访问工具。
访问控制限制软件能触及什么。Execution Authorization 限定它可以造成的确切效果。Action Proof 就是产出这条可验证链条的协议:一份针对单个规范操作的、签名且一次性的 grant,在你掌控的一个点上执行,并以任何人都能离线核对的证据收尾。
授权的密码学证明。执行结果的签名证据。Execution Grant 证明授权了什么;Action Receipt 保存已登记 Guardian 所能确认结果的签名证据。
云端授权,你的 Guardian 执行
按租户隔离的密钥与最小权限凭据
签名回执,可离线验证
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 的访问,交易本身仍然没有定义:哪个资源、多少金额、哪个目的地、几次。
三步
定义
究竟请求了什么确切效果?由 Guardian——而不是模型——读取提供方状态,并把它归一化成带有明确参数的规范操作。
授权
在你的策略之内,把该效果绑定到一份签名且一次性的 Execution Grant,使用协议为该操作所要求的权限。
验证
在你掌控的一个点上执行,并保留一份可离线重算的签名 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:向对手方发起核验。在有人作答之前,什么都不会执行。
智能体察觉到一个敏感动作
它识别出一次银行账户变更,并且只发送结构化信号和一个 sourceMessageHash。
SecureStamp 核对 tenant 事实
API key 把查询限定在一个 owner graph、已声明的策略和已登记的指令之内。
智能体收到一个 verdict
响应是一条包含 Safe Next Step 和 receiptId 的决策记录,而不是执行许可。
由人或对手方确认
必要时,create_action_challenge 会在操作继续之前打开一条人工确认通路。
本地授权上限
云端授权是必要的,但单靠它永远不够。
一份 grant 只有同时符合你的组织签名并安装在 Guardian 旁边的策略,才会变成一次执行。那份策略是 deny-only 的:它固定 tenant、gateway、操作、适配器 manifest、接受的权限与策略版本、资源、参数、金额上限、并发以及网络目的地。没有它,生产模式拒绝启动。
有效权限 =
云端 grant
∩ 已签名的本地策略
∩ 适配器约束
∩ kill switchesSecureStamp 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 之外没有发生过任何动作,也不确立提供方账户的法律所有权。证据的边界就是已登记的执行路径。