confidential-ml-transport 是一个用 Rust 编写的加密通信库,专门设计用于在可信执行环境 (TEE) 中进行安全的机密 AI 推理。它在加密通信通道和已验证的硬件身份之间建立了强绑定,为模型与数据的传输提供了更高的安全保障。
核心功能
- 认证绑定会话:会话密钥从认证文档派生,将加密通道绑定到已验证的 TEE 身份。
- 全通道加密:握手完成后,使用 X25519 密钥交换和 ChaCha20Poly1305 算法对所有数据帧进行加密。
- 二进制帧协议:采用 13 字节的固定头部设计,支持最大 32 MiB 的有效载荷传输。
- 张量数据传输:专门为 人工智能 场景优化,设计了支持 8 字节对齐的张量子头部结构,可高效处理 F32、F64、I32 等多种数据类型。
- 可插拔传输:支持 TCP 和 VSock 两种网络后端。
- 可插拔认证:基于特征的认证提供者/验证者架构,支持模拟环境和 AWS Nitro Enclaves 的实现。
安全特性
- 密钥材料保护:对称密钥在销毁时会进行清零操作,并包含 Diffie-Hellman 贡献性检查。
- 单调序列强制:为每条解密的消息提供重放保护。
- 加固握手:支持可配置的超时、强制公钥绑定和序列验证。
- 测量验证:在握手阶段验证平台配置寄存器 (PCR) 或测量寄存器。
握手协议
该库采用三消息握手协议来建立加密会话:
- 客户端发送临时 X25519 公钥和一个随机数。
- 服务器响应自己的公钥、随机数以及绑定了公钥的认证文档。
- 客户端验证认证文档,派生出会话密钥,并发送一个确认哈希来完成握手。
快速开始
你可以通过以下命令克隆仓库并运行一个示例回声服务器(使用模拟认证功能):
git clone https://github.com/cyntrisec/confidential-ml-transport.git
cd confidential-ml-transport
cargo run --example echo_server --features mock
支持的消息类型
库中定义了多种消息类型以满足不同通信需求,包括:Hello(握手)、Data(应用数据)、Error(错误)、Heartbeat(保活)、Shutdown(关闭)以及专门用于传输机器学习数据的 Tensor(张量数据)。
项目仓库地址:https://github.com/cyntrisec/confidential-ml-transport
Expression Solver - 一个用 Rust 编写的最小化表达式语言、编译器和基于栈的虚拟机项目
Expression Solver 是一个颇具教育意义和探索价值的项目。它用 Rust 实现了一套完整的工具链,能够解析高级数学和逻辑表达式,将其编译为自定义字节码,并在一个专用的栈式虚拟机上执行。其设计灵感来源于 LISP 风格表达式、栈式计算机以及经典的编译器架构。
核心特性
- 完整的编译流程:实现了从词法分析器 → 解析器 → 抽象语法树 (AST) → 编译器 → 虚拟机 → 执行结果的全链路。
- 基于栈的虚拟机:采用经典的栈式执行模型来运算字节码。
- 基于寄存器的变量存储:变量值实际存储在虚拟机的寄存器中。
- 词法作用域:通过
define 关键字实现变量的定义与作用域管理。
- 支持算术和比较运算符:提供了丰富的操作符。
- 条件执行:支持
if 条件语句,为实现复杂逻辑打下基础。
- 图灵完备的设计:理论上具备了实现任何可计算功能的基础。
语言特点
这是一种纯表达式语言,意味着几乎所有结构(包括变量定义和条件语句)都会返回一个值。
支持的操作包括:
- 整数字面量(如
42)
- 变量定义(
define x 10)
- 算术运算符(
+, -, *, /, %, ** (幂), // (整除))
- 比较运算符(
==, !=, <, >, <=, >=)
- 条件分支(
if (condition) then-branch else else-branch)
技术架构
- 解析器:采用递归下降解析器,能够正确处理操作符的优先级。
- 编译器:负责遍历 AST 并生成线性的字节码指令序列,同时管理栈帧、分配寄存器以及转换控制流。
- 虚拟机指令集:包含栈操作 (PSH/POP)、算术运算 (ADD/SUB/MUL/DIV)、比较操作、寄存器操作 (SET/GET) 和控制流指令 (JZ/JMP/HLT) 等。
未来扩展方向
作者列出了几个有趣的未来扩展想法,包括支持用户自定义函数、实现递归调用、引入垃圾回收机制、开发字节码优化器以及增加调试和追踪工具。对于学习编译原理和虚拟机技术的开发者来说,这个项目是一个很好的实践起点。
项目作者: omniflare
仓库地址: https://github.com/omniflare/expression-solver
|