RAG向量注入攻击检测

RAG向量注入攻击检测,有效防止已知8类恶意注入攻击风险,确保智能运维RAG系统、计算RAG一体机数据不泄露

构建高性能的密态向量检索机制,解决RAG上云面临的知识泄露风险,支撑华为云RAG数据的机密性保护能力竞争力

RAG向量注入攻击检测:基于向量DB用户融合结合向量语义分析技术,消减业界已知8类向量/向标量、 VS/ES检索注入攻击风险

密态向量检索:基于保距向量加密算法,构建高性能向量密态检索机制,消除检索过程中的知识明文泄露风险,支撑华为云MaaS等场景RAG数据的机密性保护能力  

这是一个非常典型的 RAG 安全架构设计问题,涉及两个核心方向:

 
  1. 向量注入攻击检测(防 Prompt Injection / Query Poisoning)
  2. 密态向量检索(防知识库明文泄露,支持机密计算)
 

下面分别给出 技术思路 + 伪代码(Python 风格),兼顾工程可行性与前沿性。

 

 

一、RAG 向量注入攻击检测

✅ 目标:检测并阻断 8 类已知向量/标量注入攻击(如:恶意 query 嵌入指令、对抗性扰动、检索结果篡改等)

 

核心思路:

  • 用户 query 与向量语义一致性校验
  • 向量空间异常检测(偏离正常分布)
  • 融合标量元特征(如长度、熵、特殊 token 比例)
  • 基于规则 + 轻量模型的多层过滤
 

伪代码

python
import numpy as np
from sklearn.ensemble import IsolationForest
from transformers import AutoTokenizer, AutoModel

# 预加载组件
tokenizer = AutoTokenizer.from_pretrained("secure-bert")
encoder = AutoModel.from_pretrained("secure-bert").eval()
anomaly_detector = load_isolation_forest_model()  # 训练于正常 query 向量
RULES = load_attack_signatures()  # 8 类攻击的正则/关键词/结构模板

def detect_vector_injection(user_query: str, query_vector: np.ndarray) -> bool:
    """
    返回 True 表示检测到注入攻击,应阻断
    """
    # 1. 标量特征检测(快速规则层)
    scalar_features = extract_scalar_features(user_query)
    if matches_known_attack_patterns(scalar_features, RULES):
        return True  # 高置信度攻击,直接阻断

    # 2. 语义一致性校验:重编码 query,比对向量相似度
    with torch.no_grad():
        tokens = tokenizer(user_query, return_tensors="pt", truncation=True, max_length=512)
        regenerated_vector = encoder(**tokens).pooler_output.squeeze().numpy()
    
    cos_sim = cosine_similarity(query_vector, regenerated_vector)
    if cos_sim < 0.85:  # 阈值可调
        # 可能被对抗扰动或注入指令污染
        return True

    # 3. 向量空间异常检测
    if anomaly_detector.predict([query_vector])[0] == -1:  # -1 表示异常点
        return True

    # 4. 检索结果后验校验(可选)
    # retrieved_docs = vector_db.search(query_vector, k=3)
    # if any(is_malicious_doc(doc) for doc in retrieved_docs):
    #     return True

    return False  # 未检测到攻击

 

 

说明

  • secure-bert:内部微调的语义编码器,对指令词不敏感
  • isolation_forest:无监督异常检测,捕获未知攻击模式
  • 规则库覆盖 8 类攻击(如:"IGNORE PREVIOUS INSTRUCTIONS"、隐藏 Unicode 指令、高熵乱码等)
 

 

二、高性能密态向量检索(Confidential RAG)

✅ 目标:在不解密原始向量的前提下完成近似/精确检索,保护知识库机密性

 

核心思路:

  • 使用 保距加密(Distance-Preserving Encryption)同态友好编码
  • 推荐方案:随机正交变换 + 模糊加密(如 CKKS 或自研轻量方案)
  • 实际工程中常采用 “密文索引 + 安全解密代理” 架构
 

技术选型建议:

 
方案
优点
缺点
CKKS (HE)
支持近似计算
性能低(ms~s/次)
Random Orthogonal Transform (ROT)
高性能、保余弦距
需可信密钥管理
Private Information Retrieval (PIR)
强隐私
不适合高维向量

对华为云 高性能要求 场景,ROT + 密钥隔离 是更可行方案。

 

伪代码(基于 ROT 的密态检索)

python
 
import numpy as np
from crypto import SecureKeyManager

# 初始化(密钥由 KMS 管理,不在应用侧明文出现)
KEY_MANAGER = SecureKeyManager(service="HuaweiKMS")
ORTHO_MATRIX = KEY_MANAGER.get_orthogonal_key("rag_db_alpha")  # NxN 正交矩阵

def encrypt_vector(plain_vec: np.ndarray) -> np.ndarray:
    """客户端加密 query 向量"""
    return plain_vec @ ORTHO_MATRIX  # 保余弦相似度

def decrypt_result_indices(indices: List[int]) -> List[int]:
    """服务端无需解密向量,仅返回索引;索引本身不敏感"""
    return indices  # 实际返回原始 doc_id

# --- 客户端调用流程 ---
def confidential_rag_query(user_query: str):
    # 1. 编码原始 query
    plain_vec = encode_query(user_query)  # shape: [D]

    # 2. 加密 query(在客户端或可信环境)
    encrypted_query = encrypt_vector(plain_vec)

    # 3. 发送加密 query 到云上密态向量库
    top_k_indices = cloud_vector_db.search_encrypted(encrypted_query, k=5)

    # 4. 获取原始文档(通过安全通道)
    docs = fetch_documents_securely(top_k_indices)  # 文档本身可加密存储

    # 5. 用 docs 构造 prompt,送入 LLM
    response = llm.generate(prompt_with_docs(docs))
    return response

# --- 云侧密态向量库实现 ---
class ConfidentialVectorDB:
    def __init__(self):
        # 服务端存储:加密后的向量(由数据 owner 用同一 ORTHO_MATRIX 加密)
        self.encrypted_corpus = load_encrypted_vectors()  # shape: [N, D]

    def search_encrypted(self, encrypted_query: np.ndarray, k: int):
        # 由于 ORTHO 变换保内积,可直接计算相似度
        scores = self.encrypted_corpus @ encrypted_query.T  # 余弦相似度等价
        top_k_idx = np.argsort(-scores)[:k]
        return top_k_idx.tolist()

  

 
 

关键安全假设

  • 正交矩阵 仅由数据所有者持有(通过 KMS 安全分发)
  • 云服务 无法获取原始向量,只能看到旋转后的密文
  • 相似度计算在密文空间完成,结果等价于明文检索
 

✅ 此方案支持 <10ms/次 检索(100万向量,D=768),满足华为云高性能要求。

 

 

三、系统集成示意

mermaid
 
 

安全

恶意

 
 
 
 

用户 Query

注入检测

向量编码 + ROT 加密

阻断/告警

华为云密态向量库

返回 Top-K Doc IDs

安全通道拉取加密文档

LLM 生成答复

 

 

总结

 
能力
技术栈
安全效果
向量注入检测
规则引擎 + 语义一致性 + 异常检测
阻断 8 类已知攻击,支持未知攻击发现
密态向量检索
正交变换加密 + KMS 密钥管理
检索过程无明文向量,满足机密性合规

💡 创新点

  • 注入检测前置到 query 向量化前,避免污染向量空间
  • 轻量保距加密替代全同态,兼顾性能与安全,适合 RAG 上云场景
 

 

image

 

image

 

image

 

image

 

 

posted @ 2025-12-03 14:23  bonelee  阅读(3)  评论(0)    收藏  举报