当 OpenClaw 代理执行资金操作时,PQSafe 在每笔支付前验证密码学签名凭证。 ML-DSA-65 签名,符合 FIDO AP2-PQ profile,满足金融监管科技 2030 蓝图合规要求。
三条监管与威胁情报线索在 2026 年上半年同步收紧,企业商业部署 OpenClaw 的授权安全问题已从技术选项变为合规必选项。
PQSafe 技能通过 OpenClaw 标准接口暴露三项操作,覆盖授权凭证的完整生命周期。
在支付执行前验证 SpendEnvelope 的 ML-DSA-65 签名,检查金额上限、收款人白名单、有效期与防重放随机数。验证通过后写入审计日志并放行支付调用;任意检查失败则阻断并返回结构化拒绝原因。
为指定支付场景签发新的 SpendEnvelope。签发方持有 ML-DSA-65 私钥,可设定收款人白名单、单笔上限、周期累计上限与到期时间。凭证签发后可安全分发给 AI 代理,代理无需访问私钥。
立即吊销指定指纹的 SpendEnvelope。吊销操作幂等,支持批量吊销。吊销原因写入审计日志,后续所有针对该指纹的 verify_mandate 调用将立即返回拒绝。
每笔授权凭证包含六个约束字段,ML-DSA-65 签名覆盖全部字段,篡改任意字段均会导致签名验证失败。
interface SpendEnvelope {
version: 1;
issuer: string; // 签发方 DID 或密钥 ID
payee_allowlist: string[]; // 允许的收款账户列表
amount_cap: number; // 单笔最大金额(最小货币单位)
currency: string; // ISO 4217(如 "HKD" / "USD" / "CNY")
period_cap?: number; // 周期累计上限(可选)
period?: "day" | "week" | "month"; // 周期定义
expires_at: string; // ISO 8601 到期时间
nonce: string; // 防重放随机数(UUID v4)
issued_at: string; // 签发时间
// ML-DSA-65 签名,3,309 字节,Base64 编码
// 覆盖上述所有字段,篡改任意字段签名立即失效
signature: string;
}
安装 npm 包,注册 before_tool_call 钩子,所有支付工具调用自动受保护。
npm install @pqsafe/openclaw
import { PQSafeOpenClaw } from "@pqsafe/openclaw";
// 初始化:传入 ML-DSA-65 签发方公钥(用于验证)
const pqsafe = new PQSafeOpenClaw({
issuerPublicKey: process.env.PQSAFE_PUBLIC_KEY!, // Base64 编码的 ML-DSA-65 公钥
auditRetentionDays: 2555, // 7 年审计保留(对应企业内控要求)
});
// 在 OpenClaw 运行时注册 before_tool_call 钩子
// 所有以 "payment." 开头的工具调用在执行前自动经过验证
runtime.use(
pqsafe.beforeToolCall({
toolFilter: (toolName) => toolName.startsWith("payment."),
onFailure: "block", // 验证失败立即阻断(也可设为 "log" 仅记录)
})
);
// 在后端(持有私钥的受信任环境)签发凭证
const { envelope } = await pqsafe.issueMandate({
payee_allowlist: ["supplier-001@example.com", "acct_1Abc..."],
amount_cap: 50000, // 单笔最大 500.00 HKD(以分为单位)
currency: "HKD",
period_cap: 500000, // 月累计上限 5,000.00 HKD
period: "month",
expires_at: "2026-06-30T23:59:59Z",
issuer_key_id: "key-2026-q2",
});
// 将 envelope 传递给 AI 代理,代理在调用支付工具时附带此凭证
// 代理无需接触私钥
// 验证失败时收到的结构化拒绝响应
{
"ok": false,
"reason": "amount_cap_exceeded", // 可机器解析的错误类型
"detail": "requested 60000, cap is 50000 HKD",
"audit_id": "aud_01HX..." // 可追溯的审计日志 ID
}
PQSafe 是授权层,不绑定特定支付通道。以下通道已通过集成测试。
| 通道 | 状态 | 适用场景 | 备注 |
|---|---|---|---|
| Airwallex | 生产就绪 | 跨境汇款、多货币企业账户 | 亚太覆盖强 |
| Wise | 生产就绪 | 个人及 SMB 国际转账 | 低成本跨境 |
| Stripe | 模拟就绪 | 信用卡收单、订阅管理 | 生产集成路线图中 |
| USDC (Base) | 模拟就绪 | 链上稳定币结算 | x402 协议兼容 |
| x402 | 模拟就绪 | HTTP 原生微支付 | Cloudflare / Coinbase 标准 |
| 微信支付 | 规划中 | 国内商业场景 | 企业商业版路线图 |
| 支付宝 | 规划中 | 国内商业场景 / 出海商家 | 企业商业版路线图 |
注:支付宝与微信支付为授权通道合作规划,PQSafe 提供授权安全层,支付通道提供资金转移能力,二者可并行使用。
PQSafe 在 OpenClaw 运行时与支付通道之间插入一个独立的密码学验证层,不修改现有支付逻辑。
┌─────────────────────────────────────────────────────────┐
│ OpenClaw 运行时 │
│ │
│ 用户提示 ──► LLM ──► tool_call({ payment-send }) │
│ │ │
│ before_tool_call 钩子 │
│ │ │
│ ┌─────────────▼─────────────┐ │
│ │ SpendEnvelope 验证器 │ │
│ │ 1. ML-DSA-65 签名有效? │ │
│ │ 2. 凭证未过期? │ │
│ │ 3. 收款人在白名单? │ │
│ │ 4. 金额 ≤ 上限? │ │
│ │ 5. 随机数未被重放? │ │
│ └──────┬──────────┬──────────┘ │
│ 通过 拒绝 │
│ │ │ │
│ Airwallex / Wise / 阻断 + 审计日志 │
│ Stripe / USDC (7 年保留) │
└─────────────────────────────────────────────────────────┘
| 参数 | 值 | 说明 |
|---|---|---|
| 标准 | NIST FIPS 204 | 联邦政府采购标准,正式生效 |
| 安全级别 | NIST 3 级 | 等效 AES-192 安全强度 |
| 公钥大小 | 1,952 字节 | 可嵌入技能清单 |
| 签名大小 | 3,309 字节 | 适合 JSON payload 传输 |
| 验证耗时 | < 5 ms | Node.js 18+,不影响代理响应速度 |
| 量子安全 | 是 | 格密码学,抵抗 Shor 算法 |
无需自托管,直接调用 PQSafe 托管验证 API:
pqsafe-api-production.raymond-thu87.workers.dev