挑战
将 LLM 和向量数据库与敏感数据结合使用引入了新的安全风险:
- 嵌入反演攻击 — 研究表明,向量嵌入可以被逆向工程以重建原始文本,从而暴露存储在向量 DB 中的 PII
- LLM 上下文泄露 — 发送到 LLM 的敏感数据,如果未妥善隔离,可能会出现在对其他用户的响应中
- 合规性要求 — GDPR、HIPAA 和 SOC2 要求数据在静态和传输中进行加密,但向量数据库存储的是数学表示,而非传统文本字段
- 搜索功能 — 在嵌入之前加密文本会破坏语义,导致相似性搜索失效
- 密钥管理 — 需要轮换每个租户的加密密钥,而无需重新嵌入整个数据集
- 审计追踪 — 每次访问已解密的敏感数据都需要记录日志以符合合规性
我们的解决方案
我们实施了一种上下文加密架构,它在存储前选择性地加密敏感字段,并通过分层方法保留语义可搜索性——在元数据中加密 PII,同时保持经过清洗的非敏感内容可用于嵌入。
架构
- 加密引擎:采用 AES-256-GCM,每个租户拥有独立的加密密钥
- 密钥管理:使用 AWS KMS 进行密钥生成、轮换和访问控制
- PII 检测:基于 NER(命名实体识别)的 PII 分类器
- 向量数据库:使用 Milvus 对清洗后的嵌入进行相似性搜索
- LLM 层:将清洗后的上下文发送到 LLM,生成后重新注入敏感字段
- 审计系统:记录每次解密事件,包括用户、时间戳和目的
- 数据库:使用 PostgreSQL 存储加密元数据
上下文加密策略
数据分类
在任何数据进入管道之前,PII 分类器会根据敏感度级别对每个字段进行分类:
- 高度敏感(例如,政府 ID、金融账号、医疗 ID)— 加密,从不嵌入,从不发送给 LLM
- 敏感 PII(例如,全名、电子邮件地址、电话号码)— 静态加密,在嵌入前替换为占位符
- 上下文相关(例如,职位、公司名称)— 静态加密,经同意后可用于嵌入
- 非敏感(例如,产品描述、公开信息)— 按原样存储和嵌入
加密层
层 1:静态字段级加密敏感字段在存储前使用 AES-256-GCM 进行加密。每个租户都通过 AWS KMS 的密钥层次结构获得一个专用数据加密密钥(DEK)。影子字段存储可搜索的哈希值,用于精确匹配查找,而无需解密。
层 2:嵌入前的清洗在文本发送到嵌入模型之前,PII 会被检测并替换为保留类型的占位符。这在移除可识别信息的同时,保留了相似性搜索的语义。原始值到占位符的映射与向量记录一起加密存储。
层 3:LLM 生成后的上下文注入LLM 接收带有占位符的清洗过的上下文以生成响应。生成后,系统将加密存储中的实际值重新注入到响应中。这可以防止敏感数据进入 LLM 训练数据或被提供商缓存。
向量数据库安全
集合设计
向量集合存储清洗后的嵌入以及加密的原始元数据。通过分区键实现租户隔离,每个租户的元数据都使用自己的密钥加密。在任何解密操作之前,API 层会验证租户所有权。
密钥管理与轮换
密钥层次结构
采用多级密钥层次结构:AWS KMS 中的主密钥封装每个租户的密钥加密密钥,后者又封装用于字段级加密的每个租户的数据加密密钥。这使得密钥轮换效率高,而无需重新加密整个密钥链。
密钥轮换流程
- 生成新 DEK — 在现有密钥加密密钥下创建新的数据加密密钥
- 新写入 — 所有新数据都用新密钥加密;旧密钥仍可用于读取
- 后台重新加密 — 批量作业使用新密钥重新加密现有记录
- 旧 DEK 退役 — 一旦所有记录迁移完毕,旧密钥标记为非活动状态
- 审计日志 — 轮换事件记录时间戳和受影响的记录数
审计与合规性
解密审计日志
每次解密事件都会捕获请求者、解密内容、时间、原因(请求上下文)以及使用的密钥——提供完整的合规性追踪。
GDPR 删除权
系统支持在关系数据库和向量数据库中进行完整数据删除,并可选地进行密钥轮换,以密码学方式确保没有残留访问。所有删除操作都记录在 GDPR 审计追踪中。
主要功能
- 字段级加密 — 对敏感字段使用 AES-256-GCM,而非整条记录
- PII 清洗 — 占位符保留嵌入的语义
- LLM 后注入 — 敏感数据绝不发送给 LLM 提供商
- 每个租户独立密钥 — 具有 AWS KMS 管理的独立加密密钥
- 密钥轮换 — 零停机轮换,带后台重新加密
- 嵌入安全 — 清洗后的嵌入防止对 PII 的反演攻击
- 审计追踪 — 每次解密都记录以用于合规性报告
- GDPR 合规性 — 跨加密存储和向量 DB 的自动删除
成果
技术栈
常见问题
MicrocosmWorks 开发了一个选择性加密管道,该管道在文档进入向量数据库之前,识别并加密其中的姓名、账号和健康数据等敏感实体,同时保留 LLM 进行有意义的检索和生成所需的周围语义上下文。在查询时,系统仅解密响应所需的特定实体,并根据请求用户的访问级别进行范围限定,因此 LLM 永远不会看到未经授权不能显示的原始敏感数据。
MicrocosmWorks 通过在 token 级别加密敏感实体,同时在原始未加密文本上计算 embedding,然后将加密文本与语义向量一同存储在向量数据库中来解决了这个问题。搜索使用高质量的 embedding 检索语义相关的块,而解密层仅为授权用户重建原始内容,从而在保护静态数据的同时,保持了完整的搜索质量。
MicrocosmWorks 设计的上下文加密方法旨在满足 HIPAA、SOC 2、GDPR 和 CCPA 中的特定要求,确保个人身份信息和受保护的健康信息在向量存储中静态加密,并且仅在授权查询处理期间在内存中解密。系统会为每次解密事件生成防篡改的审计日志,这满足了这些合规框架中普遍存在的访问监控和问责要求。
MicrocosmWorks 构建了一个迁移工具,可以逐步处理现有向量数据库集合,加密存储文档块中的敏感实体,同时保留其向量 embedding,因此您无需为整个语料库重新计算 embedding。该迁移作为后台进程运行,可以暂停和恢复,并且在过渡期内,查询管道能够无缝处理已加密和尚未迁移的块。
MicrocosmWorks 优化了加密和解密操作,使每次查询的开销增加约 15-30 毫秒,这与典型的 LLM 生成时间 500 毫秒-2 秒相比微不足道。摄取期间的实体检测和加密每个文档块增加约 100 毫秒,这也非常小,因为摄取通常是批处理过程。系统使用硬件加速的 AES 操作并在内存中缓存解密密钥,以最大程度地减少密码学开销。
