Agent A 想通过问责中继 R 调用服务 S:查询内容要对 R 保密、 R 不能把请求错路由到别的服务、S 返回的计费数字 A 不能低报。 三方用 2PC 共同模拟出一个"虚拟 TLS 客户端"——S 完全无感。
因为密钥根本不存在于任何一方手里——应用密钥被拆成 tk = tkA ⊕ tkR 两份份额, R 拿着密文加半个份额等于拿一张白纸;每次解密都必须双方在 2PC 电路里共同完成, GMW+OT 保证交互本身不泄露任何份额。连握手期的 Server Flight 都只用 tkshs 在 A 本地解密——R 从始至终只转发看不懂的字节。
因为验证书的权力没有下放给 R。证书、CertificateVerify、ServerFinished 由 A 在本地解密验证:X.509 证书绑定服务域名,签名密钥只有真正的 S 才有。 R 若把流量转去 api2.evil.com,A 端立刻看到域名错配的证书 → 握手中止。 "路由完整性"退化成一句 A 端证书的域名校验,R 对"它是谁"没有裁量权。
因为计费字段不是谁申报就是多少。响应是 S 用 TLS 加密的——R 或 A 改一个字节,GCM tag 立刻作废;而 A 自报的数字 R 也不信:双方把响应密文的 一个窗口在 2PC 里解密成份额,电路内逐字节比对 pattern、用 JSON FSM 校验字段所在深度,再用 comA = H(tkA∥r) 钉死 A 的密钥份额防止换把"好说话"的密钥。任何一项对不上 → accept=0, 且 R 全程只学到一个比特。
对"隐私(R 看不到明文)× 计费(A/R 报多少可验)"两个目标,已有方案各占一头—— 缺的不是 HTTPS,而是"密钥无人独占"的结构:
隐私天然成立,但没有审计方——token 用量只能信 A 自报,ARI 模型不成立。
✗ 计费不可验
R 就是连接的一端,完整密钥在手——能解就能看;计费还是它自己说。
✗ 隐私失败
TLS 直接穿过 R:明文保住了,但字段级用量(如 total_tokens)无从核验。
✗ 计费失败
隐私与计费都成立——但前提是相信芯片厂商、远程证明和没有侧信道漏洞。
△ 额外硬件信任假设
同样拆密钥,但目标是"证明数据来自某站":verifier 参与构造查询, 没有 SHC/LDC 边界隐藏,也没有字段级计费电路。
△ 查询半公开 · 不做计费
密钥以份额存在于 A、R 双方:电路内可验、电路外不可读, 不需要 TEE,S 完全无感。
✓ 两个目标同时成立
注:TEE 在其安全假设下确实可行,区别是信任转移而非消除; DECO 的"△"指查询对 verifier 只能有限隐藏——它保护的是来源,不是查询内容。
R 本质上是"半个客户端":ECDHE 秘密拆成 ZA+ZR, HKDF 全链在 2PC 中执行,R 只拿到 tk_chs/tk_shs 的份额。 服务端 flight(证书+CV+SF)只在 A 处解密——R 无法伪造服务商身份。
查询由模板拼装:公共段 P、定长私有段 Af/Rf、 变长私有段 As/Rs(真实长度 g 都是份额)。 段间用 SHC(Structure-Hiding Concat)抹平边界,最后经 2PC-AEAD 加密。
公共长度拼接直接本地完成——零交互、零成本。
va=sl‖0hr,v0=0hl‖sr; 对右段做 blind_rotate_left 后异或。 成本 (hl+hr)·⌈log₂⌉,装配顺序由 DP 规划 Γ 最小化。
整条查询以 tk_capp = tk_A ⊕ tk_R 加密;密文+tag 双开, R 转发的是一条完全合法的 TLS 记录。
A 向 R 汇报被计费字段 φ:v,R 不信——双方在 2PC 里把 响应密文的一个窗口解密成明文份额,原地跑 JSON FSM。
前缀窗口从 JSON 起点正向解析,后缀窗口从尾部反向解析, 取较短者——大响应里只解密目标附近的几块。
e_i=(1−e)·b·κ92 b_i=b⊕κ34·(1−e)
d_i=d+(1−b)(κ123−κ125) ——
字符串里的 { } 与 \" 不计深度。
comA ?= H(tkA,sapp∥r) —— A 无法换一把 "更好说话"的密钥份额来解释密文。
accept = com_ok ∧ bytes_ok ∧ depth_ok,
R 只学到 accept——响应明文始终不可见。
5 套测试全绿:引擎 / 电路 / 握手(含 misrouting 拒绝)/ 查询 / 计费(含 4 类攻击拒绝); 计费电路在真实 OT 后端下同样通过(1-block 窗口 ≈ 16 s、A↔R 各 ~4.3 MB)。
| 攻击者 | 行为 | 结果 |
|---|---|---|
| R | 把流量错路由到其他服务 | ✗ A 端证书名校验失败 |
| R | 读取查询 / 响应明文 | ✓ 只有密钥份额,通道为密文 |
| A | 低报计费字段(如 42→00) | ✗ bytes_ok 失配 |
| A | 声称字段位于错误深度 | ✗ depth_ok 失配 |
| A | 更换密钥份额伪造解释 | ✗ com_A = H(tk_A∥r) 失配 |
| R | 篡改自身 tk_sapp 份额 | ✗ 解密出的明文对不上字段 |