🫖 Eliza在TEE中
概述
Eliza代理可以部署在TEE环境中,以确保代理数据的安全性和隐私性。本指南将引导您通过使用Eliza框架中的TEE插件,在TEE环境中设置和运行Eliza代理的过程。
背景
Eliza框架中的TEE插件是基于Dstack SDK构建的,旨在简化开发人员将程序部署到CVM(保密虚拟机)的步骤,并默认遵循安全最佳实践。其主要功能包括:
- 将任何Docker容器转换为CVM镜像,以部署在支持的TEE上
- 远程认证API和Web UI上的信任链可视化
- 在0xABCD.dstack.host上使用内容寻址域自动进行RA-HTTPS封装
- 通过去中心化的信任根,将应用程序执行和状态持久化与特定硬件解耦
核心组件
Eliza的TEE实现由两个主要提供者组成,负责安全密钥管理操作和远程认证。
这些组件共同提供以下功能:
- 在TEE内进行安全密钥派生
- 可验证的TEE执行证明
- 支持开发(模拟器)和生产环境
通常情况下,这些提供者一起使用,例如在钱包密钥派生过程中,每个派生密钥都包含一个认证报告,以证明它是在TEE环境中生成的。
密钥派生提供者
DeriveKeyProvider在TEE环境中实现了安全密钥派生。它支持:
- 多种TEE模式:
LOCAL
:在Mac/Windows上进行本地开发时连接到localhost:8090
的模拟器DOCKER
:在Linux上进行本地开发时通过host.docker.internal:8090
连接到模拟器PRODUCTION
:在部署到TEE云时连接到实际TEE环境
主要特点:
- 支持派生Ed25519(Solana)和ECDSA(EVM)密钥对
- 基于秘密盐和代理ID生成确定性密钥
- 包含每个派生密钥的远程认证
- 支持自定义用例的原始密钥派生
示例用法:
const provider = new DeriveKeyProvider(teeMode);
// 对于Solana
const { keypair, attestation } = await provider.deriveEd25519Keypair(
"/",
secretSalt,
agentId,
);
// 对于EVM
const { keypair, attestation } = await provider.deriveEcdsaKeypair(
"/",
secretSalt,
agentId,
);
远程认证提供者
RemoteAttestationProvider处理TEE环境的验证和报告生成。它:
- 连接到与DeriveKeyProvider相同的TEE模式
- 生成带有重放保护(RTMRs)的TDX报告
- 提供可由第三方验证的认证数据
主要特点:
- 生成带有自定义报告数据的认证报告
- 包含报告验证的时间戳
- 支持模拟器和生产环境
示例用法:
const provider = new RemoteAttestationProvider(teeMode);
const quote = await provider.generateAttestation(reportData);