OpenHTTPA/openhttpa-rs

GitHub: OpenHTTPA/openhttpa-rs

OpenHTTPA-rs 是一个 Rust 实现的机密计算传输协议,通过在硬件隔离的可信执行环境内执行密码学终止来消除传统 TLS 在网络边缘暴露明文的安全隐患。

Stars: 2 | Forks: 0

# OpenHTTPA [![CI](https://github.com/openhttpa/openhttpa-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/openhttpa/openhttpa-rs/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](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, 可信执行环境, 可视化界面, 密码学, 手动系统调用, 机密计算, 硬件信任根, 网络安全, 网络流量审计, 请求拦截, 通知系统, 隐私保护