只能相信平台的自我声明
- 模型是否被替换?
- 提示词是否被增删?
- 回复是否被二次改写?
TrustedAIProxy 在中转站与模型厂商之间观察真实流量,绑定已验证的上游 TLS, 并由 Google Confidential Space 中的 Ed25519 密钥签名。
proof-J4vLQ0p…cY9Q
HTTPS 只能证明用户连接到了中转站,却无法回答中转站之后发生了什么。
TAP 不是旁路日志,也不是事后生成的证明。它位于中转站出口,正常校验模型厂商 TLS, 只对完整、可确定解析的协议语义签名。
中转站通过 HTTP(S) Proxy 将上游流量交给 TAP;出站 TLS 仍进行域名与证书链校验。
不同厂商协议被归一成稳定的 model 与有序 messages;歧义、超限或不支持的内容不签名。
上游证书指纹、域名、路径和消息按 RFC 8785 JCS 规范化,得到可重复重建的 claims。
工作负载密钥生成 Ed25519 签名与 proof_ref,业务响应 body 保持不变,证明通过 headers 返回。
信任链分成两层。环境证明按公钥或 workload 生命周期缓存,业务响应则逐条验证并检查重放。
从业务响应提取 X-Attestation-Proof-Ref;本地无有效缓存时再获取证明包。
调用 /.well-known/confidential-attestation,challenge 必须由客户生成且每次唯一。
校验签名、issuer、audience、时效、镜像 digest、项目、实例、服务账号、硬件与 Secure Boot。
重算公钥 binding nonce,并确认 Google token 的 eat_nonce 同时绑定 challenge 和公钥。
按 profile 归一化请求和响应,进行 JCS 编码、Ed25519 验签、路由/模型策略与 nonce 防重放检查。
{
"version": "trusted-ai-proxy-v1",
"profile": "llm-conversation-text-v1",
"tls_certificate_sha256": "8f9a…d21e",
"domain": "api.openai.com",
"request_path": "/v1/chat/completions",
"request_fields": ["model", "messages"],
"response_fields": ["messages"],
"timestamp": 1787749200,
"nonce": "R6I8…F0qw"
}
签名只能证明 profile 明确覆盖的事实。没有被签名的字段,不能从证明中推导。
llm-request-upstream-v1 证明请求已到达指定上游及其响应 metadata,但不覆盖任何 SSE 事件或流式正文。客户端必须将流式内容标记为“未证明”。
不同厂商的消息格式由版本化提取器处理,并归一成公开、可重建的签名语义。
openai-chat-conversation-v1已支持openai-responses-conversation-v1已支持anthropic-messages-conversation-v1已支持bedrock-invoke-conversation-v1已支持bedrock-converse-conversation-v1已支持先在本地理解签名流程,再部署到 Google Confidential Space,最后把验证策略交付给用户。