anydef-encryption 技能包是一个为 OpenClaw 平台设计的 Agent 数据透明加密层,核心理念是"加密对业务代码透明"。
核心价值
| 透明性 | |
| 细粒度控制 | |
| 安全合规 | |
| 向后兼容 |
数据分类与加密范围
1、上传文件内容 | `storage/files/` | 可选加密
2、对话 Memory | `storage/memory/` | 可选加密
3、 对话历史 | `storage/sessions/` | 可选加密 | 完整对话记录 |
4、 工具调用敏感结果 | `storage/tool_results/` | 可选加密
5、 Agent 配置 | `config/agents/` | 建议加密 | 含 API Key 等敏感配置
6、向量嵌入元数据 | `storage/vectors/` | 可选加密
用途与加密算法1、数据加密 :AES-256-GCM 2、密钥派生 : PBKDF2-HMAC-SHA256 (600k 轮) 3、 密钥包装 : AES-256-KW
三层密钥结构:层层包装、泄露隔离、轮换高效
主密钥 (Master Key / MK) │ │ 存储于: 环境变量 / KMS / 1Password / 本地密钥文件 │ 永不落盘(仅内存或外部安全存储) │ └──► KEK (Key Encryption Key) │ 每个 Agent 独立一个 │ 用于包装 DEK │ ├──► files-dek (加密文件内容) ├──► memory-dek (加密 Memory) ├──► sessions-dek (加密对话历史) ├──► tool_results-dek (加密工具调用结果) └──► metadata-dek (加密向量元数据)设计特点:
单个 DEK 泄露只影响一类数据 密钥轮换只需重加密对应数据类型 主密钥泄露只需重新包装 KEK 每次加密都生成新的 salt 和 IV— 绝不重用 PBKDF2 600,000 轮迭代— NIST 2023 推荐 GCM 模式自带认证— 防篡改 GCM 解密时会自动验证认证标签 如果数据被篡改,解密失败抛异常(不静默失败) 未加密数据自动透传(向后兼容) 密文格式:
enc:v1:AbC123xYz:DeF456uVw:GhI789rSt...==│ │ │ │ ││ │ │ │ └── 密文 + GCM 认证标签│ │ │ └── IV (12 bytes, Base64URL)│ │ └── 盐值 (16 bytes, Base64URL)│ └── 版本号 (便于未来升级)└── 协议标识示例密文:
enc:v1:abc123XYZ:def456UVW:ghi789RST012JKLMNOP345...协议标识,便于版本升级 salt/iv 每次随机生成,绝不复用
核心组件
EncryptionManager — Python API 主类EncryptedStorageAdapter — 透明加密装饰器EncryptedFileStorage — 文件加密适配器
三种加密应用策略:
- 最轻量:只加密 memory
- 平衡:files + memory(推荐)
- 最高安全:全部加密
三种使用情景
情景 A:新 Agent 从零配置
情景 B:现有 Agent 追加加密
情景 C:密钥泄露应急响应
⚠️ 关键安全约定
- 主密钥不落盘:仅内存或 KMS或第三方托管平台
- 失败关闭原则:加密失败不退化为明文,抛异常
- 密钥轮换周期: ≤ 90 天
- 解密错误必须告警 :不能静默失败
- 向后兼容:未加密的历史数据可继续读取,不强制迁移
- 密文格式标记:所有加密字段带 `enc:v1:` 前缀,便于识别和版本升级
💡 推荐加密策略配置模式
最轻量(入门):只加密 memory
平衡(推荐):files + memory
最高安全(金融/医疗):全量加密
日常使用:完全透明,无需操心
配置好之后,正常使用 Agent 即可,加密/解密完全在后台自动发生:
Agent 保存记忆 → 自动加密后存储 Agent 读取记忆 → 自动解密后使用 你上传文件 → 文件内容自动加密存储
唯一的区别是:如果去 storage 里直接查看原始数据,看到的会是类似这样的密文,而不是明文:enc:v2:abc123XYZ:def456UVW:ghi789RST...
查看或修改加密状态
对话框里说:
"查看 agent_001 的加密配置" "给 agent_001 关闭 sessions 加密" "帮我把 agent_002 的加密全部禁用"
迁移旧数据(从未加密升级到加密)
如果 Agent 之前没有加密,已经存了一些数据,可以说:
"帮我把 agent_001 现有的 Memory 数据都加密"
技能包会扫描所有明文条目,用你提供的密码逐条加密写回,原数据不会丢失。
重要提醒:
主密钥丢失无法找回,建议把主密钥存在密码管理器里(1Password、第三方KMS等),或者记在安全的地方。
换设备/浏览器后需要重新输入密码,加密数据会跟着 window.storage 同步,但解密需要你再次提供主密钥。
不同 Agent 可以用不同密码,也可以用同一个,取决于你的安全需求。
夜雨聆风