OpenHTTPA/openhttpa-rs
GitHub: OpenHTTPA/openhttpa-rs
OpenHTTPA-rs 是一个 Rust 实现的机密计算传输协议,通过在硬件隔离的可信执行环境内执行密码学终止来消除传统 TLS 在网络边缘暴露明文的安全隐患。
Stars: 2 | Forks: 0
# OpenHTTPA
[](https://github.com/openhttpa/openhttpa-rs/actions/workflows/ci.yml)
[](https://opensource.org/licenses/Apache-2.0)
## 目录
- [功能](#features)
- [仓库结构](#repository-layout)
- [技术规范 (API.md)](API.md)
- [贡献指南](#contributing)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [构建](#build)
- [测试](#test)
- [语言绑定](#language-bindings)
- [示例](#examples)
- [运行演示](#running-the-demo)
- [标准与合规性](#standards--compliance)
- [安全性](#security)
- [许可证](#license)
## 为什么选择 `OpenHTTPA`?
传统的传输层安全协议(TLS)在网络边缘(例如负载均衡器或 ingress controller)终止,将传输中的明文数据暴露给内部网络拓扑、特权管理员以及主机操作系统漏洞。
**OpenHTTPA** 通过在硬件隔离的**可信执行环境(TEE)**(例如 Intel TDX、AMD SEV-SNP、AWS Nitro Enclaves、ARM TrustZone)内直接强制执行密码学终止,为高assurance机密计算建立了一种新颖的范式。这种架构转变提供了正式的密码学保证,确保数据仅由明确授权的、经过密码学度量的 enclave 解密——从而有效地将云服务提供商和主机基础架构从可信计算基(TCB)中移除。
### 核心架构
- **硬件根信任 (SIGMA-I)**:将硬件远程证明引用(实体证明令牌)直接集成到密钥交换中,实现双向的、经硬件验证的身份验证。
- **语义上下文绑定**:引入了证明头部列表 (AHL),以密码学方式将应用层 (L7) 语义(HTTP 方法、Request-URI)绑定到会话 MAC,从而缓解 Confused Deputy 和语义重路由向量。
- **后量子密码敏捷性**:实现了利用 NIST 标准化的 ML-KEM-768 和 ML-DSA-65 的混合密钥交换和签名方案,以确保对“现在收集,稍后解密”(HNDL)量子威胁的抵御能力。
- **加密客户端 Hello (元数据保护)**:在初始握手期间采用 ML-KEM HPKE 封装,以隐藏请求的协议版本和密码套件,使设置序列对观察者指纹识别具有高度抵抗力。
- **严格的后量子内存安全**:在所有密码学缓冲区中利用 `zeroize`,以保证在变量 drop 时的确定性密钥销毁,有效中和 use-after-free 和跨请求数据泄漏。
## 使用场景
`OpenHTTPA` 作为零信任、高assurance分布式系统的基础传输协议:
- **机密 AI 与 LLM 推理**:促进受管制数据集(例如 PHI、PII)向云托管的大型语言模型的安全传输。确保严格的隐私保护,防止基础设施提供商观察 prompt、响应或模型权重。
- **安全多方计算 (MPC)**:实现跨组织数据池化以进行联合密码学分析。确保对参与节点或中央聚合器的原始组成数据进行数学上的不披露。
- **经证明的 Agentic Swarms**:使自主 AI agent 能够执行相互认证的握手 (M-HTTPA)。Agent 在执行高价值交易或共享敏感上下文之前,以密码学方式验证对等执行环境和操作 prompt。
- **高assurance Web3 Oracles**:为链下 Web2 API 数据入口建立无信任桥梁。利用 TEE 证明的来源链结合 ZK-STARK 零知识证明,以消除对可信中间方 oracle 节点的依赖。
## 协议功能与特性规范
- **密码学协议遵循**:严格实现基础规范中定义的 Preflight、证明握手 (利用 SIGMA-I 的 AtHS)、证明会话协议 (AtSP) 和基于票据的恢复 状态机。
- **后量子密码学准备 (NIST 标准化算法)**:集成混合 X25519/ML-KEM-768 密钥封装机制 (KEM) 和 ML-DSA-65 后量子数字签名 (FIPS 203/204),并辅以 SLH-DSA 回退向量。
- **具备 FIPS 140-3 能力的密码学**:采用 `aws-lc-rs` 密码学提供程序(AWS Libcrypto for Rust)。_注:虽然密码学算法已获 NIST 批准,但目前该模块边界的正式 CMVP 认证仍在等待中。_
- **不可知的硬件信任根**:在著名的可信执行环境(包括 Intel SGX、Intel TDX、AMD SEV-SNP、AWS Nitro Enclaves 和 ARM TrustZone)之上提供无缝的、供应商无关的抽象。
- **复合证明模态**:促进跨越异构计算架构的同步、统一会话证明(例如,同时验证 Intel TDX CPU 完整性和 NVIDIA Hopper GPU 安全执行状态)。
- **传输层独立性**:为 HTTP/2 (`hyper`/`h2`)、HTTP/3 (`quinn`/`h3`) 以及通过 gRPC (`tonic`) 的远程过程调用设计了不可知的复用。
- **全面的 FFI 绑定表面**:为 Python (`PyO3`/`maturin`)、Node.js (`napi-rs`)、ANSI C (`cbindgen`) 和 Go (`cgo`) 提供了内存安全的外部函数接口。
- **自主 Agentic 架构**:原生提供证明 Agent 网格 (AAM) 和模型上下文协议 (MCP),使去中心化 AI agent 之间能够进行安全、机密的多跳工具委派。
- **TEE 原生编排层**:双组件 ingress controller (`openhttpa-ingress`) 和事件代理 (`openhttpa-broker`) 完全在 TEE 边界内执行,以原生地终止会话并消除主机操作系统的暴露。
- **生产级弹性**:实现持久的密码学 nonce 持久化、实时的证明吊销列表 (ARL) 评估,以及严格的单调计数器同步,以杜绝重放向量。
- **密码学语义上下文**:集成证明头部列表 (AHL),以数学方式将应用层 (L7) 语义(HTTP 方法、Request-URI)绑定到会话 MAC,明确消除语义重路由和 Confused Deputy 攻击。
- **无信任区块链 Oracles**:利用 TEE 证明的派生源结合零知识 (ZK-STARK) 简洁执行证明,将确定性 Web2 API 响应桥接到 EVM/Bitcoin 网络。
- **规范握手记录**:对所有握手记录强制执行带有长度前缀的、确定性序列化的二进制字段,保证精确的跨平台密码学哈希派生。
- **严格的软件质量保证**:强制执行严格的 `#![deny(warnings)]` 工作区编译器配置,并采用持续的静态分析来保证内存安全和确定性的操作行为。
## 正式的密码学验证
`OpenHTTPA` 协议架构已经利用行业标准密码学验证框架进行了详尽的、经机器检查的正式安全审计。
- **ProVerif 符号建模 (`formal/handshake.pv`)**:
- **密码学保密性**:正式证明了所有建立的会话密钥保持计算上的机密性,即使在存在主动的、控制网络的 Dolev-Yao 敌手的情况下也是如此。
- **单射身份验证**:验证了发起方和响应方之间完美的单射一致性,由 TEE 硬件度量和引用进行密码学锚定。
- **Tamarin Prover 时序分析 (`formal/handshake.spthy`)**:
- **完美前向保密 (PFS)**:数学验证了长期 enclave 身份密钥(例如,设备身份密钥)的灾难性破坏绝对不会导致历史会话流量的追溯性破坏。
基于这些正式模型,该协议在数学上得到保证,能够抵御复杂的重放攻击、主动的记录不匹配操纵以及跨会话混淆向量。
## 仓库结构
```
Makefile Monorepo management (build, test, demo)
CONTRIBUTING.md Contribution guidelines
Cargo.toml Workspace root
crates/
openhttpa-proto/ Protocol types and error codes
openhttpa-crypto/ Key exchange, PQC, AEAD, HKDF, signatures
openhttpa-headers/ Attest-* HTTP header encode/decode (RFC 9651 SFV)
openhttpa-core/ Protocol state machine (AtHS / AtSP / TrR)
openhttpa-tee/ TEE providers (Mock / SGX / TDX / SEV-SNP / TrustZone)
openhttpa-attestation/ Quote verification (Mock / MAA / DCAP / AMD SNP)
openhttpa-transport/ HTTP/2 + HTTP/3 transport adapters
openhttpa-grpc/ tonic gRPC service + .proto definition
openhttpa-server/ Axum server SDK (AtHS handler + TrR middleware)
openhttpa-client/ Async Rust client SDK
openhttpa-llm/ Confidential LLM inference client
openhttpa-mcp/ Model Context Protocol (MCP) over `OpenHTTPA`
openhttpa-mesh/ Attested Agent Mesh (AAM) & Swarm orchestration
openhttpa-oracle/ Confidential Web2-to-Web3 Oracle Bridge
openhttpa-contract/ On-chain verifiers (Solidity, Bitcoin Taproot)
openhttpa-a2a/ High-level Agent-to-Agent secure messaging
openhttpa-fabric/ Distributed memory synchronization for AI agents
openhttpa-zk/ Zero-Knowledge succinct proof generation and verification
openhttpa-ingress/ TEE-native HTTP Reverse Proxy for orchestration
openhttpa-broker/ TEE-native Event Bus for secure session termination
bindings/
...
modules/
caddy/ Caddy proxy module → modules/caddy/README.md
nginx/ Nginx proxy module (Rust FFI) → modules/nginx/README.md
browser-extension/ Chrome/Edge extension → modules/browser-extension/README.md
demo/
multiparty-webapp/
backend/ Axum demo server
frontend/ Plain HTML/JS frontend
docker-compose.yml One-command demo launch
Dockerfile.backend
.github/
workflows/
ci.yml Lint + test + bindings CI
release.yml PyPI + npm + GitHub Release
```
## 前置条件
| 工具 | 最低版本 | 用途 |
| --------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Rust + Cargo | **≥ 1.88** (通过 `rust-toolchain.toml` 固定 — `rustup` 将自动安装) | 所有 Rust crates 和绑定 |
| Docker + Compose | 任意 | 演示 (`docker compose up`) |
| pnpm | 10+ | JS/TS 包管理(必需) |
| 系统工具 | - | `cmake`, `clang`, `nasm`, `perl`, `go`, `pkg-config`, `python3-dev`, `wasm-pack` |
| Python 3.9 + maturin 1.7 | 可选 | Python 绑定 |
| Node.js 18 + @napi-rs/cli 3 | 可选 | Node.js 绑定 |
| Go 1.22 + C compiler | 可选 | Go 绑定 |
| wasm-pack | 最新 | 浏览器 Wasm 绑定 (`cargo install wasm-pack`) |
| ProVerif / Tamarin | 最新 | 形式化验证工具(见 [安全性](#security)) |
安装 Rust(`rustup` 将在首次构建时自动切换到固定的工具链):
```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
## 快速开始
```
# Clone
git clone https://github.com/openhttpa/openhttpa-rs
cd openhttpa-rs
# 初始化依赖(在 Linux 上安装系统库 + Node.js 库 + Playwright)
make setup
# 构建所有内容(所有 Rust crates + C / Node.js bindings)
make build
# 运行所有测试(mock TEE — 无需硬件)
make test
# 启动 demo(预配置到端口 3001)
make stable-up
# 然后打开 http://127.0.0.1:3001
# 形式化验证(ProVerif + Tamarin)
make formal-verify
```
## 形式化验证
`OpenHTTPA` 协议在保密性、身份验证和前向保密性方面进行了形式化验证。我们使用 **ProVerif** 进行符号分析,使用 **Tamarin Prover** 进行时序属性验证。
要重现安全证明,请确保已安装验证器并运行:
```
# 运行所有形式化证明(要求 PATH 中包含 ProVerif 和 Tamarin Prover)
# 注意:如果通过 opam 安装了 ProVerif,请运行:eval $(opam env)
make formal-verify
```
详细的报告和证明可在[形式化安全套件](#formal-security-suite)中找到。
## 标准与合规性
`OpenHTTPA` 专为官方标准化和联邦合规性而设计。以下高assurance文档为向 **IETF** 和 **NIST** 提交提供了技术基础。
### IETF 标准化
- **[IETF Internet-Draft (协议传输)](docs/ietf/draft-openhttpa-protocol-00.md)**:权威的协议规范和线路格式定义。
### NIST 技术报告与指南
- **[NIST 技术报告 (安全分析)](docs/nist/OPENHTTPA-NIST-Technical-Report.md)**:基础安全分析和后量子对齐。
- **[NIST 安全指南 (运营 SP)](docs/nist/OPENHTTPA-NIST-SP-Security-Guidelines.md)**:运营最佳实践和 TEE 配置。
- **[FIPS 140-3 合规能力报告](docs/nist/OPENHTTPA-FIPS-Compliance-Capability.md)**:联邦密码学认证路线图。
### 形式化安全套件
- **[形式化威胁模型](docs/security/OPENHTTPA-Formal-Threat-Model.md)**:详细的对手建模和攻击树分析。
- **[形式化验证报告](docs/security/OPENHTTPA-Formal-Verification-Report.md)**:来自 ProVerif 和 Tamarin Prover 的数学证明结果。
- **[隐私影响评估 (PIA)](docs/security/OPENHTTPA-Privacy-Impact-Assessment.md)**:遵循 NIST 隐私框架的隐私风险分析。
### 协议扩展与架构评估
- **[HTTPA/3 与 0-RTT 机密性集成](docs/strategic/HTTPA3-QUIC-0RTT-Evaluation.md)**:针对现已实现的 QUIC 传输和经数学验证的 0-RTT 会话恢复能力的形式化评估和架构设计。
### 未来战略路线图
- **FIPS 140-3 认证验证**:完成底层 `aws-lc-rs` 密码学边界的正式 NIST CMVP 验证。
- **IETF RFC 发布**:通过 HTTPBIS 和 SECDISPATCH 工作组推进 `draft-openhttpa-protocol-00` 成为正式的 RFC。
- **扩展硬件支持**:将原生证明提供程序扩展为包括即将推出的机密计算架构(例如 RISC-V Keystone)。
- **ZK-Oracle 主网部署**:将机密 Oracle 桥接从评估阶段过渡到在 EVM/Bitcoin 主网上的全面生产部署。
## 构建
### 所有 Rust crates + C / Node.js 绑定
```
cargo build --workspace # debug
cargo build --workspace --release # optimised
```
### 单个 crates
```
cargo build -p openhttpa-client # Rust client SDK
cargo build -p openhttpa-server # Rust server SDK
cargo build -p openhttpa-c # C shared library (libopenhttpa_c.{a,dylib,so})
cargo build -p openhttpa-node # Node.js native addon (Rust only; use `pnpm run build` for the .node file)
```
### 语言绑定产物
| 绑定 | 构建命令 | 输出 |
| ----------- | --------------------------------------------------- | --------------------------------------------- |
| **C** | `cargo build --release -p openhttpa-c` | `target/release/libopenhttpa_c.{a,dylib,so}` |
| **Node.js** | `cd bindings/nodejs && pnpm run build` | `openhttpa..node` |
| **Python | `cd bindings/python && maturin develop` | 安装到活跃的 venv 中 |
| **Go** | 见 [bindings/go/README.md](bindings/go/README.md) | 链接至 C 库 |
## 测试
### 所有 Rust 测试(推荐)
```
cargo test --workspace
```
### 形式化验证与确认
要对整个项目栈(格式化、clippy、构建、所有测试、示例和 e2e 浏览器测试)进行完整、详尽的检查,请使用以下命令:
```
OPENHTTPA_SKIP_ZK_BUILD=1 RISC0_SKIP_BUILD_KERNELS=1 make verify-all
```
### 单个绑定测试
| 绑定 | 命令 | 测试 |
| ----------------- | --------------------------------------------------------------------- | --------------- |
| 核心 crates | `cargo test --workspace` | 157 个测试 |
| **C** | `cargo test -p openhttpa-c` | 15 |
| **Node.js (Rust)**| `cargo test -p openhttpa-node` | 14 |
| **Node.js (JS)** | `cd bindings/nodejs && node test/index.js` | smoke |
| **Python** | `PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 cargo test -p openhttpa-python`| 14 |
| **Go** | `cd bindings/go && go test ./... -v` | 9 pass + 2 skip |
### 集成测试(需要运行中的服务器)
```
# 启动服务器
docker compose -f demo/multiparty-webapp/docker-compose.yml up -d
# Node.js 集成测试
OpenHTTPA_SERVER=http://127.0.0.1:8080 node bindings/nodejs/test/index.js
# Go 冒烟测试
OpenHTTPA_SERVER=http://127.0.0.1:8080 go test ./bindings/go/... -v -run Smoke
```
## 语言绑定
### Python
```
import openhttpa
llm = openhttpa.PyConfidentialLlm("http://127.0.0.1:8080", "llama3")
reply = llm.chat([("user", "Hello!")])
print(reply)
```
→ 完整文档:[bindings/python/README.md](bindings/python/README.md)
#### Agentic AI (MCP)
```
import json
client = openhttpa.PyMcpClient("http://127.0.0.1:8080")
# JSON-RPC 风格调用
result = client.call("tools/call", json.dumps({"name": "secure_sum", "arguments": {"a": 1, "b": 2}}))
print(result)
```
### Node.js
```
const { confidentialChat } = require('./bindings/nodejs/index');
const reply = await confidentialChat('http://127.0.0.1:8080', 'llama3', [['user', 'Hello!']]);
console.log(reply);
```
→ 完整文档:[bindings/nodejs/README.md](bindings/nodejs/README.md)
#### Agentic AI (A2A)
```
const { a2aSendMessage } = require('./bindings/nodejs/index');
await a2aSendMessage('http://127.0.0.1:8080', {
type: 'greeting',
payload: { text: 'Hello from NodeAgent' },
});
```
### C
```
#include "openhttpa.h"
char *reply = openhttpa_confidential_chat(
"http://127.0.0.1:8080", "llama3",
"[[\"user\",\"Hello!\"]]");
printf("%s\n", reply);
openhttpa_free_string(reply);
```
→ 完整文档:[bindings/c/README.md](bindings/c/README.md)
### Go
```
reply, err := openhttpa.ConfidentialChat(
"http://127.0.0.1:8080", "llama3",
[][2]string{{"user", "Hello!"}},
)
fmt.Println(reply)
```
→ 完整文档:[bindings/go/README.md](bindings/go/README.md)
## Agentic AI 与 Swarm
`OpenHTTPA` 是专为 **Agentic Mesh** 设计的。它使 AI agent 能够形成临时的、经过硬件验证的 swarm,其中每次工具执行和消息都经过了端到端加密和证明。
### 运行 Swarm 模拟
我们提供了一个全面的 swarm 模拟,它启动 100 个 agent,执行相互证明,并使用 MCP 工具委派执行“分布式素数搜索”。
```
# 运行基本的 2-agent swarm
make swarm-basic
# 运行复杂的 12-agent Monte Carlo swarm(Coordinator + Workers + Aggregator)
make swarm-complex
# 运行大规模的 100-agent swarm 仿真(并发注册 + 发现)
make swarm-massive
```
展示的主要功能:
- **相互证明**:对等 agent 相互验证对方的 TEE 硬件引用。
- **记录绑定**:会话密钥以密码学方式绑定到握手历史记录。
- **MCP 委派**:Agent 通过经过证明的隧道将任务委派给专家。
## 示例
每种语言绑定都包含一个全面的、注释良好的示例,演示了高级 LLM API 和底层证明逻辑。
要运行示例,请确保首先运行后端:
```
docker compose -f demo/multiparty-webapp/docker-compose.yml up -d
```
然后使用绑定的 Makefile:
```
cd bindings
make python # Run Python example
make node # Run Node.js example
make go # Run Go example
make c # Run C example
make wasm # Build and serve Wasm browser example
```
### 使用 Docker 运行(推荐)
如果您没有在本地安装所有的语言运行时(Go、Node、Python),您可以使用提供的 Docker 环境通过单个命令运行所有示例:
```
# 首先启动 backend
make up -C demo/multiparty-webapp
# 运行所有 binding 示例
./bindings/run_examples.sh
```
每个示例脚本(例如 `bindings/python/examples/chat_example.py`)都被设计为具有极高的可读性,可作为将 `OpenHTTPA` 集成到您自己的应用程序中的参考。
## 运行演示
该演示展示了多方证明计算:浏览器与 Axum
后端通信,后者执行 `OpenHTTPA` 握手并将请求路由通过
机密 LLM。
```
# 构建镜像并启动服务(首次运行大约需要 2 分钟)
docker compose -f demo/multiparty-webapp/docker-compose.yml up --build
# 在浏览器中打开
open http://127.0.0.1:3001
```
### 运行原生代理演示 (Caddy)
此演示展示了如何通过硬件证明的 Caddy 实例代理遗留后端。
```
# 启动 native proxy stack
make demo-native-up
# 打开测试页面
open http://127.0.0.1:8082
```
有关详细的部署说明,请参阅 [DEPLOYMENT.md](DEPLOYMENT.md)。
要在本地不使用 Docker 运行后端:
```
cargo run -p multiparty-webapp-backend
# 监听于 http://127.0.0.1:8080
```
## 运营安全态势与部署注意事项
尽管 `OpenHTTPA` 协议架构已经过详尽的形式化密码学验证,但此参考 SDK 仅提供用于高assurance集成和评估。在生产部署之前,必须严格遵守运营安全指南:
- **密码学传输依赖项**:`OpenHTTPA` 应用层与底层传输加密无关。实施者**必须**为所有 HTTP/2 和 HTTP/3 适配器配置并连接安全的传输层安全协议(TLS 1.3+)连接器,以确保针对 Dolev-Yao 对手的深度防御。
- **硬件 Enclave 置备**:Arm TrustZone 和 Intel SGX 模块目前作为架构接口存根提供。它们需要绑定到经过密码学签名的可信应用程序 (TA) 或 Enclave 二进制文件以进行生产执行。
- **证明治理**:`MockTeeProvider` 的存在严格仅用于本地开发和 CI/CD 确定性测试。它**绝不能**被置备在生产状态中;这样做会轻易地绕过所有基于硬件的信任保证。
## 许可与防御性专利策略
`OpenHTTPA` 协议参考实现根据以下宽松的、经 OSI 批准的许可证进行双重许可:
- **Apache License, Version 2.0** ([LICENSE-APACHE](LICENSE-APACHE) 或 http://www.apache.org/licenses/LICENSE-2.0)
- **MIT License** ([LICENSE-MIT](LICENSE-MIT) 或 http://opensource.org/licenses/MIT)
_由用户自行决定。_
### 开源专利安全港
本仓库包含对机密计算生态系统完整性至关重要的基础技术——包括语义上下文绑定 (AHL)、异构 TEE 同步和证明 Agent 网格架构。
这些知识产权明确根据 **Apache License 2.0 的第 3 条**款赋予开源社区。
**防御性终止条款**:为了保护开源生态系统,`OpenHTTPA` 基金会严格执行 Apache 2.0 的“专利报复”条款。如果任何企业实体提起专利诉讼,指控本软件或其底层协议构成专利侵权,则其使用 `OpenHTTPA` 技术的许可权利将被不可撤销且立即终止。这种防御态势在数学上保证了 `OpenHTTPA` 仍然是所有高assurance企业采用的无阻碍、受保护的安全港。
有关全面的法律细节,请参阅正式的 [PATENTS.md](PATENTS.md) 声明。
## 参考资料
- [arXiv:2205.01052](https://arxiv.org/abs/2205.01052):原始 `OpenHTTPA` 学术预印本。
**`OpenHTTPA` 基金会 (openhttpa.org)**
标签:Rust, 可信执行环境, 可视化界面, 密码学, 手动系统调用, 机密计算, 硬件信任根, 网络安全, 网络流量审计, 请求拦截, 通知系统, 隐私保护