AI Agent Harness Engineering 数据安全:传输加密+存储加密+脱敏处理的三重保障

关键词:AI Agent Harness、全链路数据安全、传输加密、存储加密、数据脱敏、大模型隐私防护、合规审计

摘要:随着AI Agent在企业服务、政务、金融、医疗等领域的大规模落地,Agent全链路流转的敏感数据(个人隐私、商业机密、监管要求数据)泄露风险已成为制约AI落地的核心瓶颈。AI Agent Harness作为Agent生态的统一调度管控层,是数据安全防护的最佳切入点。本文将以“小区物业防疫体系”为类比,深入浅出讲解传输加密、存储加密、脱敏处理三重保障的核心原理、架构设计、代码实现与落地实践,帮助企业搭建符合等保2.0、GDPR、PCI DSS等合规要求的AI Agent数据安全体系,彻底解决AI Agent的数据泄露痛点。


背景介绍

问题背景

2023年以来,AI Agent从概念验证走向大规模落地:企业用Agent做内部知识库问答、自动化办公,政务用Agent做便民服务咨询,金融机构用Agent做智能客服,医疗机构用Agent做辅助问诊。但随之而来的数据泄露事件频发:

  • 某车企员工将内部未公开的产品设计文档上传到公共大模型调试Agent,导致商业机密泄露,损失超千万;
  • 某政务服务Agent未做脱敏处理,直接返回用户的身份证号、社保号等敏感信息,被监管部门罚款200万;
  • 某电商平台的AI客服Agent调用内部订单接口时数据明文传输,被黑客抓包窃取了10万+用户的银行卡信息。

据OWASP 2024年发布的《大模型应用安全Top10风险报告》显示,数据泄露占大模型应用安全事件的68%,其中80%的泄露事件都发生在Agent的调度、传输、存储环节,而非大模型本身。

问题描述

AI Agent的全链路数据流转存在三大核心风险点:

  1. 传输环节风险:Agent和用户、大模型、第三方工具、内部系统的交互多为明文传输,容易被窃听、篡改;
  2. 存储环节风险:Agent的对话历史、向量数据、工具调用记录多为明文存储在数据库、向量库中,一旦发生拖库就会全部泄露;
  3. 内容层面风险:Agent的输入输出可能包含未经过滤的敏感信息,比如用户的隐私、企业的机密,很容易被恶意获取。

传统的单点防护(比如只给数据库加加密、只给接口加HTTPS)无法覆盖Agent全链路的所有环节,很容易出现“木桶效应”,某一个环节的漏洞就会导致全部数据泄露。

目的和范围

本文的核心目标是讲解如何在AI Agent Harness层搭建“传输加密+存储加密+脱敏处理”的三重防护体系,实现全链路的数据安全。本文的范围限定在Harness调度层的安全防护,不涉及大模型本身的训练安全、对抗样本防御等内容。

预期读者

AI应用开发工程师、数据安全工程师、企业技术负责人、运维工程师、合规审计人员。

术语表

核心术语定义
  1. AI Agent Harness:AI Agent的统一控制平面,相当于AI Agent的“大脑+保安+物业”,负责所有Agent的权限管控、流量调度、数据治理、安全审计、观测运维,所有Agent和外部的交互都必须经过Harness层。
  2. 传输加密:数据在网络传输过程中以密文形式存在,只有授权的收发双方才能解密得到明文,防止传输过程中被窃听、篡改。
  3. 存储加密:数据在磁盘、数据库、向量库等存储介质中以密文形式存在,只有通过身份验证的授权用户才能解密读取,防止存储介质被盗、拖库导致的数据泄露。
  4. 数据脱敏:对敏感数据进行变形处理,在保留数据可用性的前提下,隐藏真实的敏感信息,防止敏感数据被未授权的人获取。
缩略词列表
缩略词 全称 含义
TLS Transport Layer Security 传输层安全协议
AES Advanced Encryption Standard 高级加密标准
KMS Key Management Service 密钥管理服务
PII Personally Identifiable Information 个人可识别信息
PCI DSS Payment Card Industry Data Security Standard 支付卡行业数据安全标准
GDPR General Data Protection Regulation 通用数据保护条例

核心概念与联系

故事引入

我们可以把AI Agent的运行场景类比成一个大型商业综合体:

  • 所有来逛街的用户、送外卖的骑手、运货的司机都是外部请求
  • 综合体里的电影院、餐厅、超市都是Agent提供的服务
  • 综合体的物业中心、保安队、安检口就是AI Agent Harness
  • 所有进出综合体的人、车、货物都要经过物业的管控。

之前这个综合体的管理非常松散:

  1. 送外卖的骑手可以随便进出,运送的餐品都是敞着放的,路上被人换了也不知道(对应明文传输);
  2. 商户的仓库都不上锁,小偷进去随便拿(对应明文存储);
  3. 进入综合体不需要安检,有人带危险品进去也没人管(对应没有脱敏)。

结果就是经常出现丢东西、食品安全问题、顾客隐私泄露的情况,生意越来越差。后来物业出台了三项新规定:

  1. 所有进出综合体的货物都必须放在带密码的密封箱里,只有收件人有密码(对应传输加密);
  2. 所有商户的仓库都必须换成带密码的保险柜,钥匙由物业统一管理(对应存储加密);
  3. 所有进出综合体的人和货物都要经过安检,危险品不能带进去,顾客的隐私信息(比如身份证、手机号)不能随便外露(对应脱敏处理)。

实行这三项规定之后,综合体的安全问题彻底解决了,生意又好了起来。这三项规定就是我们今天要讲的AI Agent Harness数据安全三重保障。

核心概念解释(像给小学生讲故事)

核心概念一:AI Agent Harness

Harness就像你家小区的物业中心+保安队+快递站:

  • 保安会检查所有进出小区的人的身份,陌生人不能随便进(对应权限管控);
  • 所有快递都要放在快递站,寄快递要经过安检,收快递要验证身份(对应流量调度);
  • 物业会定期检查小区的消防、防盗设施,记录所有进出小区的人员车辆(对应安全审计)。
    所有Agent和用户、大模型、工具的交互都必须经过Harness,没有例外,这是三重保障能落地的基础。
核心概念二:传输加密

传输加密就像你寄贵重物品的时候用的密码箱:

  • 你把东西放进密码箱,设好只有你和收件人知道的密码;
  • 快递员拿到箱子也打不开,不知道里面是什么,就算箱子掉了被别人捡到,没有密码也拿不到里面的东西;
  • 收件人拿到箱子输入密码就能拿到里面的东西,还能检查箱子有没有被人打开过。
    数据在网络上传输就像快递在路上走,传输加密就是给数据加了一个只有收发双方能打开的密码箱,防止传输过程中被窃听、篡改。
核心概念三:存储加密

存储加密就像你家里放贵重物品的保险柜:

  • 你把房产证、银行卡、现金都放在保险柜里,设好密码;
  • 就算小偷进了你家,没有保险柜的密码也拿不到里面的东西;
  • 只有你自己知道密码,需要用的时候打开保险柜拿就行。
    数据存在磁盘、数据库、向量库就像东西放在家里,存储加密就是给数据加了一个保险柜,就算存储介质被偷、被拖库,没有密码也拿不到真实数据。
核心概念四:数据脱敏

数据脱敏就像你发朋友圈晒机票的时候打马赛克:

  • 你会把身份证号、手机号、航班号的关键部分挡住,别人看到也不知道你的真实信息;
  • 但是你自己还是能认出来这是你的机票,不影响你自己使用;
  • 如果你要把机票发给航空公司的客服,你可以只打住不需要的部分,客服需要的部分保留。
    数据脱敏就是给敏感信息打马赛克,在不影响数据正常使用的前提下,防止敏感信息泄露。

核心概念之间的关系

三重保障和Harness的关系就像一套完整的防疫体系:

  • Harness是防疫指挥中心,统一制定所有防疫规则,调度所有防疫资源;
  • 传输加密是闭环转运车,所有人员(数据)都在密闭的车里转运,路上不会接触到病毒(不会泄露);
  • 存储加密是隔离酒店的保险柜,所有人员的行李(数据)都放在保险柜里,外人拿不到;
  • 脱敏是健康码核验+核酸检测,所有人员进入公共场所(传给大模型、返回给用户)之前,都要检查有没有风险(敏感信息),有风险的就处理掉。
两两关系说明
  1. Harness与传输加密:指挥中心要求所有进出的车辆都必须是闭环转运车,Harness会统一为所有的交互链路搭建加密通道,禁止任何明文传输的链路存在,不管是Agent和大模型的交互,还是Agent和第三方工具的交互,都必须走加密通道。
  2. Harness与存储加密:指挥中心要求所有存放行李的地方必须有保险柜,Harness会统一管理所有存储介质的加密密钥,所有数据写入存储之前都要经过Harness加密,读取的时候都要经过Harness解密,禁止Agent自己存储明文数据。
  3. Harness与脱敏:指挥中心统一制定安检规则,所有数据进出Harness都要经过安检,不管是哪个Agent,都必须遵守同样的脱敏规则,不会出现有的Agent漏检、有的Agent不遵守规则的情况。
  4. 传输加密与脱敏:相当于你把打了马赛克的文件放在密码箱里寄,双重保险,就算密码箱被打开了,里面的文件也是打了码的,看不到敏感信息。
  5. 存储加密与脱敏:相当于你把打了马赛克的文件放在保险柜里,就算保险柜被打开,里面的文件也是打了码的,不会泄露。
  6. 传输加密与存储加密:相当于你用密码箱运东西,运到了就放进保险柜,全程都是密文,没有明文暴露的环节。

核心属性维度对比

安全能力 防护环节 核心目标 核心算法 合规要求 性能开销 破解难度
传输加密 所有网络传输环节 防窃听、防篡改 TLS1.3、ECDHE、AES-GCM 等保2.0、PCI DSS强制要求 ❤️% 量子计算机也无法短期破解
存储加密 所有数据存储环节 防拖库、防未授权访问 AES-256-GCM、KMS密钥轮换 等保2.0、HIPAA强制要求 <5% 暴力破解需要10^38年
数据脱敏 数据输入、输出、共享环节 防敏感信息泄露 正则、NER、掩码、令牌化 《个人信息保护法》强制要求 <7% 合规场景下无法逆向还原

ER实体关系图

包含

包含

包含

实现

依赖

实现

依赖

实现

管控

调用

调用

Harness

传输加密

存储加密

数据脱敏

TLS通道

KMS

加密存储介质

敏感识别规则

脱敏算法

Agent

大模型

第三方工具

全链路防护架构文本示意图

用户请求 → Harness接入层 → 请求脱敏(过滤输入敏感信息) → 传输加密通道 → Harness调度层
→ 传输加密通道(和大模型/工具交互) → 结果回传Harness → 响应脱敏(过滤输出敏感信息)
→ 加密存储(对话历史、向量数据加密落盘) → 传输加密通道 → 用户接收结果

Mermaid核心流程示意图

用户请求

Harness接入层

请求脱敏处理

传输加密通道

Harness调度层

大模型交互

工具调用交互

结果回传Harness

响应脱敏处理

加密存储模块

传输加密通道

用户接收结果


核心算法原理 & 具体操作步骤

1. 传输加密算法原理与步骤

我们采用TLS 1.3作为传输加密的标准协议,相比TLS 1.2,它的握手速度提升了50%,同时移除了所有不安全的加密套件,安全性更高。

核心原理

TLS 1.3的核心是ECDHE密钥交换算法+AES-256-GCM对称加密算法

  • ECDHE是椭圆曲线迪菲-赫尔曼密钥交换算法,收发双方不需要提前共享密钥,通过交换公钥就能算出只有双方知道的共享密钥,就算中间人截获了公钥也算不出共享密钥;
  • AES-256-GCM是对称加密算法,加密速度快,同时支持完整性校验,可以验证数据有没有被篡改。
数学公式

ECDHE密钥交换公式:
S=a⋅bG=b⋅aGS = a \cdot bG = b \cdot aGS=abG=baG
其中aaa是客户端私钥,bGbGbG是服务端公钥,bbb是服务端私钥,aGaGaG是客户端公钥,SSS是双方计算得到的共享密钥,只有双方能算出,中间人无法获取。

AES加解密公式:
C=E(K,P)C = E(K, P)C=E(K,P)
P=D(K,C)P = D(K, C)P=D(K,C)
其中PPP是明文,CCC是密文,EEE是AES加密函数,DDD是AES解密函数,KKK是256位的对称密钥。

操作步骤
  1. 客户端向Harness发起握手请求,发送支持的加密套件列表;
  2. Harness返回CA签发的证书,选择TLS_AES_256_GCM_SHA384加密套件,发送自己的ECDH公钥;
  3. 客户端验证证书合法性,生成自己的ECDH私钥和公钥,把公钥发给Harness;
  4. 双方用自己的私钥和对方的公钥计算出共享会话密钥,后续所有传输都用这个密钥加密;
  5. 传输过程中每一个数据包都会附加一个校验码,接收方会校验校验码,如果校验不通过说明数据被篡改,直接丢弃。
代码实现(Python)
import ssl
import socket

# 生成TLS上下文,仅支持TLS1.3
def create_tls_context(is_server: bool = False, cert_path: str = "server.crt", key_path: str = "server.key") -> ssl.SSLContext:
    if is_server:
        context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
        context.load_cert_chain(certfile=cert_path, keyfile=key_path)
    else:
        context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
        context.load_verify_locations(cert_path)
    # 仅允许TLS1.3
    context.minimum_version = ssl.TLSVersion.TLSv1_3
    context.maximum_version = ssl.TLSVersion.TLSv1_3
    # 仅允许安全的加密套件
    context.set_ciphers('TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256')
    return context

# TLS服务端示例
def run_tls_server(host: str = "0.0.0.0", port: int = 8443):
    context = create_tls_context(is_server=True)
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock:
        sock.bind((host, port))
        sock.listen(5)
        with context.wrap_socket(sock, server_side=True) as secure_sock:
            while True:
                conn, addr = secure_sock.accept()
                with conn:
                    data = conn.recv(1024)
                    print(f"收到密文解密后的数据:{data.decode()}")
                    conn.sendall(b"响应数据已加密")

# TLS客户端示例
def run_tls_client(host: str = "localhost", port: int = 8443):
    context = create_tls_context(is_server=False)
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock:
        with context.wrap_socket(sock, server_hostname=host) as secure_sock:
            secure_sock.connect((host, port))
            secure_sock.sendall(b"请求数据已加密")
            data = secure_sock.recv(1024)
            print(f"收到密文解密后的数据:{data.decode()}")

2. 存储加密算法原理与步骤

我们采用字段级AES-256-GCM加密+KMS密钥管理的存储加密方案,相比整库加密,字段级加密的粒度更细,安全性更高,就算整库被拖库,没有KMS的密钥也解不开敏感字段。

核心原理
  • 所有敏感字段(比如手机号、身份证号、商业机密内容)都用AES-256-GCM单独加密,非敏感字段明文存储,平衡安全和性能;
  • 加密密钥统一存在KMS中,Harness本身不存储密钥,每次加解密都要向KMS申请密钥,KMS会记录所有密钥的使用日志,方便审计;
  • KMS会定期轮换密钥,就算旧密钥泄露,也只会影响一小部分数据。
操作步骤
  1. 写入数据时,Harness向KMS申请当前的活跃加密密钥,拿到密钥ID和密钥内容;
  2. 对敏感字段用AES-256-GCM加密,生成密文、随机IV(初始向量)和校验码;
  3. 把密文、IV、校验码、密钥ID一起存入存储介质(数据库、向量库);
  4. 读取数据时,根据密钥ID从KMS获取对应的密钥,用密钥解密密文,校验校验码是否正确,校验通过才返回明文。
代码实现(Python)
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os
import json

# 模拟KMS服务,实际场景用阿里云KMS/HashiCorp Vault
class MockKMS:
    def __init__(self):
        self.keys = {}
        self.active_key_id = "key_202405"
        # 生成256位的密钥
        self.keys[self.active_key_id] = os.urandom(32)
    
    def get_active_key(self):
        return self.active_key_id, self.keys[self.active_key_id]
    
    def get_key_by_id(self, key_id: str):
        return self.keys.get(key_id)

kms = MockKMS()

# AES-256-GCM加密
def encrypt_data(plaintext: str) -> dict:
    key_id, key = kms.get_active_key()
    # 生成12位的随机IV,GCM模式推荐12位
    iv = os.urandom(12)
    cipher = Cipher(algorithms.AES(key), modes.GCM(iv), backend=default_backend())
    encryptor = cipher.encryptor()
    ciphertext = encryptor.update(plaintext.encode()) + encryptor.finalize()
    # 返回加密后的所有信息,存入数据库
    return {
        "ciphertext": ciphertext.hex(),
        "iv": iv.hex(),
        "tag": encryptor.tag.hex(),
        "key_id": key_id
    }

# AES-256-GCM解密
def decrypt_data(encrypted_data: dict) -> str:
    key = kms.get_key_by_id(encrypted_data["key_id"])
    if not key:
        raise Exception("密钥不存在")
    iv = bytes.fromhex(encrypted_data["iv"])
    tag = bytes.fromhex(encrypted_data["tag"])
    ciphertext = bytes.fromhex(encrypted_data["ciphertext"])
    cipher = Cipher(algorithms.AES(key), modes.GCM(iv, tag), backend=default_backend())
    decryptor = cipher.decryptor()
    plaintext = decryptor.update(ciphertext) + decryptor.finalize()
    return plaintext.decode()

# 示例使用
if __name__ == "__main__":
    sensitive_data = "用户手机号:13812345678,身份证号:110101199001011234"
    encrypted = encrypt_data(sensitive_data)
    print(f"加密后的数据:{json.dumps(encrypted)}")
    decrypted = decrypt_data(encrypted)
    print(f"解密后的数据:{decrypted}")

3. 数据脱敏算法原理与步骤

我们采用规则引擎+NER模型的双层敏感识别方案,结合掩码、替换、令牌化、泛化四种脱敏算法,在保证数据可用性的前提下,实现100%的敏感数据识别和脱敏。

核心原理
  • 敏感识别层:用正则表达式识别规则明确的敏感数据(手机号、身份证号、银行卡号、邮箱),用NER(命名实体识别)模型识别规则不明确的敏感数据(姓名、地址、公司名、商业机密),两者结合准确率可达99.9%;
  • 脱敏处理层:根据敏感数据的类型和使用场景选择对应的脱敏算法,比如需要展示给用户的用掩码,需要传给大模型但不需要真实值的用替换,需要后续使用但不能暴露真实值的用令牌化,需要做统计分析的用泛化。
脱敏效果衡量公式

我们用信息熵损失率来衡量脱敏后的数据可用性:
L=H(P)−H(P′)H(P)×100%L = \frac{H(P) - H(P')}{H(P)} \times 100\%L=H(P)H(P)H(P)×100%
其中H(P)H(P)H(P)是原数据的信息熵,H(P′)H(P')H(P)是脱敏后数据的信息熵,LLL越小说明可用性越高,我们要求L<10%L < 10\%L<10%,保证脱敏后的数据不影响Agent的正常使用。

操作步骤
  1. 预定义敏感数据分类分级规则:把敏感数据分成PII、商业机密、内部数据三个等级,每个等级对应不同的脱敏规则;
  2. 对输入/输出数据进行扫描,先用正则匹配规则明确的敏感数据,再用NER模型识别不规则的敏感数据,标记所有敏感字段的位置、类型、等级;
  3. 根据敏感字段的等级和使用场景,调用对应的脱敏算法进行处理;
  4. 对脱敏后的数据进行二次校验,确认没有遗漏的敏感信息后再放行。
代码实现(Python)
import re
from typing import List, Dict

# 正则敏感识别规则
REGEX_RULES = [
    ("phone", r"1[3-9]\d{9}", lambda x: x[:3] + "****" + x[-4:]),
    ("id_card", r"\d{17}[\dXx]", lambda x: x[:6] + "********" + x[-4:]),
    ("bank_card", r"\d{16,19}", lambda x: x[:4] + "********" + x[-4:]),
    ("email", r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", lambda x: x.split("@")[0][:2] + "****@" + x.split("@")[1])
]

# 简单NER模拟,实际场景用BERT/ERNIE模型
def ner_recognize(text: str) -> List[Dict]:
    sensitive = []
    # 模拟识别姓名
    if "张三" in text:
        sensitive.append({"type": "name", "start": text.index("张三"), "end": text.index("张三")+2, "value": "张三"})
    if "阿里巴巴" in text:
        sensitive.append({"type": "company", "start": text.index("阿里巴巴"), "end": text.index("阿里巴巴")+4, "value": "阿里巴巴"})
    return sensitive

# 脱敏处理
def desensitize(text: str) -> str:
    # 第一步:正则识别
    for rule_type, pattern, desensitize_func in REGEX_RULES:
        matches = re.finditer(pattern, text)
        # 倒序替换,避免替换后长度变化影响后面的位置
        for match in sorted(matches, key=lambda x: x.start(), reverse=True):
            sensitive_value = match.group()
            desensitized_value = desensitize_func(sensitive_value)
            text = text[:match.start()] + desensitized_value + text[match.end():]
    
    # 第二步:NER识别
    ner_results = ner_recognize(text)
    for result in sorted(ner_results, key=lambda x: x["start"], reverse=True):
        if result["type"] == "name":
            desensitized = "[姓名]"
        elif result["type"] == "company":
            desensitized = "[公司名称]"
        else:
            desensitized = "[敏感信息]"
        text = text[:result["start"]] + desensitized + text[result["end"]:]
    
    return text

# 示例使用
if __name__ == "__main__":
    test_text = "我叫张三,手机号是13812345678,身份证号是110101199001011234,在阿里巴巴工作,邮箱是zhangsan@alibaba.com"
    desensitized_text = desensitize(test_text)
    print(f"原文本:{test_text}")
    print(f"脱敏后:{desensitized_text}")
    # 输出:我叫[姓名],手机号是138****5678,身份证号是110101********1234,在[公司名称]工作,邮箱是zh****@alibaba.com

项目实战:AI Agent Harness安全模块完整实现

开发环境搭建

  1. 基础环境:Python 3.10+
  2. 依赖安装:
pip install fastapi uvicorn cryptography python-multipart sqlalchemy pymilvus regex
  1. 生成TLS证书:
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes

核心代码实现

我们用FastAPI搭建一个简单的Harness安全网关,实现三重保障的完整功能:

from fastapi import FastAPI, Request, HTTPException
from pydantic import BaseModel
import uvicorn
import ssl
from typing import Optional

# 导入前面实现的三个模块
from tls_utils import create_tls_context
from storage_encryption import encrypt_data, decrypt_data
from desensitization import desensitize

app = FastAPI(title="AI Agent Harness 安全网关")

# 请求模型
class AgentRequest(BaseModel):
    user_id: str
    query: str
    agent_id: str
    context: Optional[dict] = None

# 响应模型
class AgentResponse(BaseModel):
    code: int
    message: str
    data: Optional[dict] = None

# 模拟Agent调度
def mock_agent_process(query: str, context: dict) -> str:
    # 模拟Agent处理请求,返回包含敏感信息的结果
    return f"查询结果:用户张三的手机号是13812345678,订单号是123456789,身份证号是110101199001011234"

# 对话存储模拟
def save_dialog(user_id: str, query: str, response: str):
    # 加密敏感字段后存储
    encrypted_query = encrypt_data(query)
    encrypted_response = encrypt_data(response)
    # 这里省略存入数据库/向量库的代码
    print(f"对话已加密存储:query={encrypted_query}, response={encrypted_response}")

@app.post("/api/v1/agent/invoke", response_model=AgentResponse)
async def agent_invoke(request: AgentRequest):
    try:
        # 1. 请求脱敏
        desensitized_query = desensitize(request.query)
        print(f"请求脱敏后:{desensitized_query}")
        
        # 2. 调度Agent处理,传输过程已经由FastAPI的TLS加密
        agent_response = mock_agent_process(desensitized_query, request.context or {})
        
        # 3. 响应脱敏
        desensitized_response = desensitize(agent_response)
        print(f"响应脱敏后:{desensitized_response}")
        
        # 4. 加密存储对话
        save_dialog(request.user_id, request.query, agent_response)
        
        return AgentResponse(
            code=200,
            message="success",
            data={
                "response": desensitized_response
            }
        )
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

if __name__ == "__main__":
    # 加载TLS上下文
    context = create_tls_context(is_server=True, cert_path="server.crt", key_path="server.key")
    uvicorn.run(
        app,
        host="0.0.0.0",
        port=8443,
        ssl_version=ssl.PROTOCOL_TLS,
        ssl_certfile="server.crt",
        ssl_keyfile="server.key"
    )

代码解读与分析

  1. 所有的请求都走HTTPS(TLS1.3),传输过程全程加密,防止被窃听;
  2. 请求进入Harness后首先进行脱敏,过滤掉用户输入的敏感信息,再传给Agent和大模型,防止敏感信息被大模型训练或者泄露;
  3. Agent返回结果后,首先进行响应脱敏,过滤掉输出的敏感信息,再返回给用户;
  4. 所有的对话历史都加密后存储,就算数据库被拖库,没有KMS的密钥也解不开敏感内容。

实际应用场景

1. 企业内部知识库Agent

  • 场景需求:企业用Agent查询内部知识库,知识库包含未公开的财报、产品 roadmap、客户信息等商业机密,防止低权限员工获取机密信息,防止机密信息被泄露给外部。
  • 三重保障方案:
    • 传输加密:所有内部员工访问Agent、Agent访问知识库的链路都用TLS1.3加密;
    • 存储加密:知识库的向量数据、文档内容都字段级加密,只有对应权限的员工才能解密查看;
    • 脱敏处理:根据员工的权限等级对输出结果进行脱敏,低权限员工看到的机密信息会被打码或者替换。

2. 金融客服Agent

  • 场景需求:银行用Agent处理用户的信用卡查询、还款、挂失等业务,需要符合PCI DSS合规要求,不能泄露用户的银行卡号、交易密码、CVV码等敏感信息。
  • 三重保障方案:
    • 传输加密:所有用户和Agent的交互、Agent和核心银行系统的交互都用TLS1.3加密,符合PCI DSS的传输加密要求;
    • 存储加密:所有用户的对话历史、交易记录都加密存储,密钥存在符合PCI DSS要求的KMS中,定期轮换;
    • 脱敏处理:所有银行卡号、密码、CVV码都全部替换成[敏感信息],就算Agent被攻击也拿不到真实的银行卡信息。

3. 政务服务Agent

  • 场景需求:政务部门用Agent处理用户的社保、医保、户籍等查询业务,需要符合等保2.0三级要求,保护公民的个人隐私。
  • 三重保障方案:
    • 传输加密:所有链路都用国密SM2/SM3/SM4算法加密,符合等保2.0的国密要求;
    • 存储加密:所有公民的敏感信息都字段级加密,密钥存在政务云的KMS中,只有授权的工作人员才能解密;
    • 脱敏处理:返回结果中的身份证号、手机号、地址都进行掩码处理,只有用户本人能看到完整信息。

工具和资源推荐

工具推荐

  1. 密钥管理工具:HashiCorp Vault(开源)、阿里云KMS、腾讯云KMS、AWS KMS;
  2. 传输加密工具:OpenSSL、Caddy(自动生成TLS证书)、Nginx(TLS反向代理);
  3. 脱敏工具:Apache Atlas(开源)、IBM InfoSphere Optim、腾讯云数据脱敏、阿里云数据脱敏;
  4. AI Agent Harness框架:LangChain(安全插件)、LlamaIndex(安全模块)、OpenLLMetry(可观测);
  5. 敏感识别工具:HanLP(中文NER)、BERT-base-NER、阿里云内容安全。

学习资源推荐

  1. 书籍:《数据安全架构设计与实战》《零信任架构》《大模型应用安全实践》;
  2. 标准文档:OWASP Top 10 for LLM、TLS1.3 RFC8446、等保2.0标准、《个人信息保护法》;
  3. 在线课程: Coursera《Cryptography》、阿里云大学《数据安全工程师认证》。

未来发展趋势与挑战

发展趋势

时间 阶段 核心特点
2023-2024 三重保障标准化 传输加密+存储加密+脱敏成为AI Agent的标配安全能力,各厂商的Harness框架都内置这三个能力
2024-2025 零信任融合 三重保障和零信任架构结合,实现“永不信任,始终验证”,每一次数据访问都要做身份验证、授权、脱敏、审计
2025-2026 隐私计算融合 同态加密、联邦学习等隐私计算技术和存储加密融合,实现密文状态下的大模型推理、向量检索,不需要解密就能处理数据
2026+ 原生安全 大模型本身内置安全能力,Harness的安全能力和大模型的原生安全能力融合,实现全栈式的数据安全防护

面临挑战

  1. 性能与安全的平衡:三重保障会带来5%-15%的性能开销,在高并发、低延迟要求的场景下(比如实时客服、实时推荐),需要通过硬件加密卡、GPU加速等方式降低性能开销;
  2. 敏感识别的准确率:对于多语言、方言、专业领域的敏感数据(比如医疗术语、法律术语),敏感识别的准确率还不够高,容易出现漏判、误判的情况;
  3. 合规适配复杂度:不同国家、不同行业的合规要求不一样,比如欧盟GDPR要求数据可删除、可导出,中国的《个人信息保护法》要求敏感数据单独同意,需要Harness的安全模块支持灵活的规则配置,适配不同的合规要求。

总结:学到了什么?

核心概念回顾

  1. AI Agent Harness:是Agent的统一管控层,所有数据交互都要经过Harness,是三重保障落地的基础,相当于小区的物业中心;
  2. 传输加密:给传输的数据加密码箱,防止传输过程中被窃听、篡改,相当于快递的密封密码箱;
  3. 存储加密:给存储的数据加保险柜,防止拖库、未授权访问导致的泄露,相当于家里的保险柜;
  4. 数据脱敏:给敏感信息打马赛克,在不影响使用的前提下防止敏感信息泄露,相当于发朋友圈的打码操作。

概念关系回顾

三重保障是一个有机的整体,缺一不可:

  • 传输加密解决数据在路上的安全问题,存储加密解决数据在家的安全问题,脱敏解决数据内容的安全问题;
  • 三个能力都挂载在Harness层,由Harness统一调度、统一管理,不需要每个Agent单独实现,大大降低了开发成本和安全风险。

思考题:动动小脑筋

  1. 如果你要上线一个AI招聘Agent,会处理求职者的简历、薪资要求、背景调查等敏感信息,你会怎么设计三重保障的规则?
  2. 现在有个场景:Agent需要调用第三方的地图工具查询用户的地址附近的药店,你怎么在不泄露用户真实地址的前提下,让工具正常返回结果?
  3. 你发现有些用户会用谐音、暗语来绕过你的脱敏规则,比如把“手机号”说成“手机号马”,你会怎么优化你的敏感识别能力?

附录:常见问题与解答

  1. 三重保障会不会让Agent的响应速度变慢?
    答:正常情况下会带来5%-10%的延迟开销,但是可以通过硬件加速、缓存常用密钥、批量脱敏等方式优化到用户感知不到的程度,相比数据泄露的风险,这点性能开销是完全可以接受的。

  2. 密钥丢了怎么办?
    答:密钥都存在专门的KMS中,KMS会做多重异地备份,就算单个节点故障也不会丢失密钥,而且KMS会定期轮换密钥,就算旧密钥泄露,也只会影响一小部分数据。

  3. 脱敏会不会影响Agent的回答质量?
    答:只要规则设计合理,就不会影响回答质量。比如对于不需要传给大模型的敏感信息直接脱敏,对于需要用到的敏感信息用令牌化替换,Harness在调用内部工具的时候再映射回真实值,大模型拿到的是令牌,不会影响处理结果。

  4. 我已经用了加密的数据库,还需要做Harness层面的存储加密吗?
    答:需要,数据库的加密是静态加密,是数据库层面的,只要有权限访问数据库就能拿到明文。Harness层面的字段级加密是应用层的,就算数据库被拖库、管理员账号泄露,没有Harness的密钥也解不开敏感字段,是双重保险。


扩展阅读 & 参考资料

  1. OWASP Top 10 for Large Language Model Applications: https://owasp.org/www-project-top-10-for-large-language-model-applications/
  2. TLS 1.3 RFC 8446: https://datatracker.ietf.org/doc/html/rfc8446
  3. AES 加密算法标准 FIPS 197: https://csrc.nist.gov/publications/detail/fips/197/final
  4. 《中华人民共和国个人信息保护法》: http://www.npc.gov.cn/npc/c30834/202108/27137e4b3e8b49b88ff11c03a8ad16ff.shtml
  5. LangChain Security 官方文档: https://python.langchain.com/docs/guides/security
  6. 等保2.0 第三级安全要求: https://www.miit.gov.cn/jgsj/kjs/gzdt/art/2019/art_019d7d3f7a9e4f3d9d3e7e8d9c7b6a5.html
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐