1. 项目概述与核心挑战最近几年向量检索技术尤其是近似最近邻搜索已经成了AI应用里一个绕不开的基础设施。无论是大模型的增强检索还是推荐系统里的物品匹配核心都是把数据变成高维向量然后快速找出最相似的那几个。这事儿听起来简单但一旦涉及到用户隐私数据、商业机密或者医疗记录问题就复杂了。你不可能把原始的用户行为向量或者病历特征向量明文扔到云服务器上去算那跟“裸奔”没什么区别。所以隐私保护近似最近邻搜索这个领域就火起来了。目标很明确服务器在不知道你数据具体内容的情况下帮你完成高质量的相似性搜索。目前主流的技术路线就两条一条是走全同态加密密码学上绝对安全但性能是硬伤复杂计算慢得让人抓狂另一条是依赖可信执行环境比如Intel SGX或者AMD SEV性能不错但得完全信任硬件厂商和芯片本身没有漏洞这几年各种侧信道攻击搞得大家心里也没底。我最近深入研究了一篇2026年的前沿论文它提出了一个叫PPPQ-ANN的混合框架。这个框架的聪明之处在于它没有二选一而是把FHE和TEE“揉”在了一起并且用产品量化这个老牌ANN加速技术当粘合剂硬是在安全性和性能之间劈开了一条新路。简单说它让最敏感的数据原始向量、量化码本、查询请求始终处于FHE加密状态而将大量的、不直接暴露原始信息的计算比如量化后的索引比对、距离排序放在TEE里跑。这样一来既享受了TEE的高性能又用FHE给最核心的资产上了把“密码学硬锁”。更关键的是它不仅仅关注“搜”的过程而是把数据库的整个生成流程包括量化码本训练、数据库编码、索引构建也纳入了隐私保护的范畴。这是一个非常重要的视角转变因为一个安全的搜索系统如果其底库是在明文状态下构建的那整个安全假设就崩塌了一半。PPPQ-ANN通过一套精心设计的、为PQ优化的CKKS密文数据打包方案将整个流水线的密文计算和通信开销降到了可接受的程度。在百万级数据集上实现了数据库构建在2小时内完成顺序搜索超过50 QPS的实用性能。这对于那些对延迟敏感又要求强隐私保护的应用场景比如金融风控的实时匹配或者医疗研究的跨机构数据查询无疑是个重磅消息。接下来我会带你彻底拆解这个框架。我们不光看它“是什么”更要弄明白它“为什么”要这么设计以及如果你要自己动手实现或者评估类似方案有哪些坑必须避开。2. 核心技术原理深度拆解要理解PPPQ-ANN我们得先把它依赖的几块基石——FHE、TEE和PQ——以及它们组合的逻辑吃透。2.1 全同态加密安全计算的“圣杯”与性能之殇全同态加密被称作隐私计算的“圣杯”。它的魅力在于允许对密文进行任意形式的计算加法和乘法且解密后的结果与对明文进行同样计算的结果一致。这意味着你可以把加密后的数据交给一个不可信的云服务器服务器吭哧吭哧算完把加密的结果还给你你解密后得到的就是正确答案而服务器全程对你的数据一无所知。PPPQ-ANN选择了CKKS方案。这是非常关键且务实的一步。早期的FHE方案如BGV, BFV主要针对整数运算而我们的向量数据基本都是浮点数。CKKS方案直接支持实数复数运算并且天然通过SIMD技术能将多个数据“打包”进一个密文里进行并行计算这极大地提升了吞吐量。你可以把一个密文想象成一个长长的“向量”一次操作就能完成对这个向量所有分点的运算这是FHE能走向实用的关键加速技术。但是FHE的代价依然巨大计算开销密文上的每一次乘法操作都会导致“噪声”增长必须定期进行“自举”操作来降低噪声这个过程极其耗时。乘法深度连续乘法的次数直接决定了方案的复杂度和性能。密文膨胀一个普通的浮点数加密后可能变成几十甚至几百KB的密文通信和存储开销激增。操作受限FHE擅长的是加法和乘法对于比较、排序、非线性函数如ReLU等操作非常不友好通常需要复杂的多项式近似这又会进一步增加计算负担和乘法深度。实操心得在选择FHE方案和参数时安全级别如192位、乘法深度和环维度是三个需要权衡的核心参数。环维度决定了单次能打包的数据量但也影响计算和密钥大小。PPPQ-ANN将乘法深度成功优化到1或2这是其能达到实用性能的基础。在实际工程中使用OpenFHE、SEAL这类成熟库时务必根据你的计算图精确评估所需的最小乘法深度宁大勿小否则算到一半噪声爆掉就前功尽弃。2.2 可信执行环境高性能的“堡垒”与信任边界TEE提供了一个硬件隔离的安全“飞地”。在飞地内运行的代码和数据即使宿主操作系统或虚拟机监控器被攻破理论上也能保持机密性和完整性。Intel SGX和AMD SEV是主流代表。TEE的优势很明显性能接近明文在飞地内计算速度比FHE快几个数量级。支持任意计算不受FHE计算类型的限制可以方便地进行比较、分支等操作。但它的安全假设更强风险也不同侧信道攻击通过缓存计时、功耗分析、电磁辐射等攻击者可能推断出飞地内执行的操作或数据。这是目前对TEE最现实的威胁。信任硬件厂商你必须信任CPU厂商没有在微码中预留后门并且其实现没有漏洞。内存限制SGX等飞地的安全内存通常有限如128MB处理大规模数据需要频繁与不安全内存交换这会带来性能损耗和安全复杂度。PPPQ-ANN采用TEE但并不完全依赖它。这是其架构的精华。它把TEE当作一个高性能的“安全沙箱”用来执行那些不直接接触最敏感原始数据的繁重计算任务。2.3 产品量化精度与效率的经典权衡产品量化是ANN领域的经典加速技术。它的核心思想是“分而治之”分割将一个高维向量比如128维分割成多个低维子空间比如8个16维的子空间。量化对每个子空间使用k-means聚类生成一个小的码本比如每个子空间256个码字。编码对于数据库中的每个原始向量在每个子空间里找到距离最近的码字用其索引一个整数来代替该子向量。最终一个高维向量被压缩成一串整数索引。非对称距离计算搜索时查询向量保持为原始浮点数。计算距离时我们预先算出查询向量每个子空间与所有码字之间的距离表。对于数据库中的某个量化后向量其与查询向量的距离只需将其每个子空间对应的索引去查表并累加即可。这避免了高维向量的直接计算速度极快。PQ的代价是精度损失因为它是一种有损压缩。但通过调整子空间数和码本大小可以在精度和效率之间取得良好平衡。2.4 PPPQ-ANN的混合安全架构为什么是112现在我们把这三块拼起来看PPPQ-ANN的设计哲学核心矛盾FHE安全但慢TEE快但存在风险。ANN计算中哪些部分最敏感哪些部分计算量最大最敏感的数据原始的数据库向量、PQ训练的码本、用户的查询向量。这些数据如果泄露几乎可以完整重构原始信息。计算量最大的部分在庞大的数据库中遍历并计算距离。PPPQ-ANN的解决方案用FHE保护核心资产原始数据库向量、码本、查询向量始终以CKKS密文形式存在。即使在TEE的内存中它们也是加密的见图1中的蓝色方块。这是第一层也是最坚固的一层密码学保护。用TEE执行重型计算将FHE密文下的、为PQ优化的距离计算后文详述结果解密到TEE内部。之后所有基于PQ索引的搜索、排序、筛选等操作全部在TEE的明文环境中高速进行。这些操作处理的是索引和距离值它们本身无法精确反推出原始向量。用PQ作为效率和安全的桥梁PQ的引入是神来之笔。对FHE友好PQ将高维向量距离计算分解为多个低维子空间的距离计算与查表累加。这完美契合了FHE计算的特点大量重复的、相对简单的向量运算。PPPQ-ANN进一步优化了这种计算。极大减少密文操作数据库一旦被量化为索引其本身就可以用明文存储在TEE内因为索引不直接暴露信息。后续的搜索完全基于索引和预先算好的距离表避开了对原始数据库密文的大量重复计算。这种“FHE加密核心数据 TEE执行索引计算 PQ压缩降低复杂度”的多层安全结构实现了安全与性能的协同。攻击者即使突破了TEE的硬件隔离也只能拿到加密的密文或无法复原原始数据的中间结果。而要破解FHE则面临当前计算能力下不可行的数学难题。3. PPPQ-ANN框架全流程实操解析理解了为什么之后我们来看具体怎么做。PPPQ-ANN的流程分为四个核心阶段我结合自己的理解补充一些论文中未详述的工程细节。3.1 阶段一基于密文的码本生成这是构建整个搜索系统的第一步也是最复杂的一步因为需要在密文上运行k-means聚类算法。输入客户端持有的原始训练数据集明文。输出服务器端持有的、FHE加密的WOP和WRP格式的PQ码本。核心挑战如何在服务器无法看到明文数据的情况下对数据进行聚类PPPQ-ANN的简化版安全k-means流程客户端准备从原始数据中为每个子空间随机采样一部分数据例如NRS1000条。客户端将这些采样数据用SDOP方式加密后发送给服务器。同时客户端随机初始化每个子空间的码本NC个码字用SDRP方式加密后发送给服务器。SDOP将同一个子空间下的多个数据点按顺序打包进一个密文。用于存放待聚类的数据样本。SDRP将同一个码字重复打包填满一个密文。用于存放聚类中心码本。为什么用两种打包方式这是为了后续高效计算所有样本点到所有聚类中心的距离。SDOP的数据排列方便按样本点并行SDRP的码本排列方便按聚类中心并行两者结合才能实现高效的矩阵化距离计算。迭代聚类服务器-客户端交互 a.服务器端距离计算服务器拥有加密的数据CSDOP格式和加密的码本CSDRP格式。它利用我们后面要讲的快速距离求和算法在密文上计算每个样本点到每个聚类中心的距离。结果是一个加密的距离矩阵。 b.客户端解密与分配服务器将加密的距离矩阵发送给客户端。客户端解密后为每个样本点找到距离最近的聚类中心标签。 c.客户端更新中心客户端根据新的样本点归属在明文状态下重新计算每个聚类的新中心求均值。这是一个简单的明文操作。 d.客户端加密新中心客户端将新的聚类中心用SDRP格式重新加密并发回服务器。 重复a-d直到中心点变化很小或达到迭代上限。码本格式转换最终得到的码本是SDRP格式的。为了后续高效使用需要将其转换为WOP和WRP格式。这个过程需要客户端参与解密和重新加密。WOP将所有子空间的码本按子空间顺序连续打包进密文。一个密文里可能包含多个子空间的码字。WRP与WOP对应将单个码字对应WOP中某个位置重复打包填满一个密文。转换的意义WOP/WRP的打包方式能极大减少后续“数据库编码”和“搜索”阶段所需的密文数量从而降低计算和通信开销。这是性能优化的关键一步。避坑指南初始化的陷阱安全k-means的初始中心是随机生成的可能导致聚类效果差、收敛慢。论文提到了可以使用secure k-MCMC等更高级的初始化方法在实际中值得尝试虽然会增加一轮通信。通信成本每一轮迭代都需要传输整个加密距离矩阵这是主要开销。在参数选择时NRS采样数不宜过大通常1000-5000足以训练出不错的码本。客户端负担此阶段客户端需要执行解密和明文k-means计算如果数据维度高、码本大客户端的计算压力也不小。需要评估客户端的算力。3.2 阶段二数据库编码在拥有加密的WOP/WRP码本后就可以将完整的数据库向量转化为PQ索引。输入客户端持有的完整原始数据库明文服务器持有的加密WOP码本。输出服务器持有的、明文存储的PQ编码数据库DE一个整数索引矩阵。过程客户端将数据库中的一个向量用WRP格式加密后发送给服务器。WRP格式与WOP码本格式是对应的便于计算距离。服务器计算该加密向量与WOP码本中所有码字跨所有子空间的距离。这里再次用到快速距离算法。服务器将加密的距离结果发送给客户端。客户端解密距离为每个子空间选择距离最小的码字索引。客户端将索引发回服务器。服务器将索引存入DE。重复1-5直到处理完所有数据库向量。关键点服务器最终存储的是DE这是一个明文整数矩阵。但它无法单独从DE恢复原始数据因为码本解码字典仍然是加密的且不在服务器手中。这是安全性的关键。此过程可以并行处理多个向量以加速编码。3.3 阶段三数据库索引IVF索引为了加速搜索需要在PQ编码的基础上建立倒排索引。输入加密的WOP/WRP码本明文PQ编码数据库DE。输出IVF索引IIVF。过程计算码本距离矩阵服务器利用加密的WOP和WRP码本计算所有码字两两之间的距离在子空间内。计算结果加密发送给客户端解密得到明文码本距离表。这一步只在初始化时做一次。生成粗聚类中心在客户端使用PQk-means算法基于上一步得到的码本距离表和DE生成大量如1024个的粗聚类中心IE。PQk-means直接在PQ索引空间进行聚类效率很高。构建倒排列表对于DE中的每个向量计算其与所有粗聚类中心IE的距离利用已有的码本距离表进行ADC计算然后将其归属到最近的nnb个如3个中心对应的倒排列表中。设计取舍传统的IVF还会对残差进行二次编码以提升精度。PPPQ-ANN省略了这一步。因为对残差进行编码需要重新与原始加密数据交互会产生巨大的密文通信开销2*NB*NW_OP个密文。为了实用性PPPQ-ANN选择接受因省略残差编码带来的一点点精度损失换来了索引构建的可行性和低延迟。3.4 阶段四隐私保护搜索这是线上服务的核心。输入客户端加密的查询向量WRP格式服务器端的加密WRP码本、明文IVF索引IIVF、明文PQ编码数据库DE。输出最相似的K个向量的ID。过程客户端将查询向量用WRP格式加密发送给服务器。服务器计算加密查询与加密WRP码本的距离得到加密的距离表发送给客户端。客户端解密密文得到查询向量到所有码字的明文距离表。客户端将此距离表发送回服务器。注意此表不泄露查询向量本身仅泄露其与固定公共码本的距离。服务器在TEE内进行快速检索 a.粗筛选利用查询距离表和IVF索引快速计算查询与所有粗聚类中心IE的距离ADC选出lc个如3个最近的中心。 b.细搜索在上述lc个中心对应的倒排列表包含的所有数据库向量中利用同样的距离表进行ADC计算找出距离最小的l个如10个向量ID。服务器将Top-K的向量ID返回给客户端。性能核心步骤2的密文距离计算是主要瓶颈。但PPPQ-ANN通过优化使得每次查询仅需计算NW_OP对密文距离NW_OP通常很小理想情况下为1。步骤5的所有操作都在TEE内对明文数据索引和距离表进行速度极快。最终实现了超过50 QPS的服务器端处理速度。多客户端支持系统可以轻松支持多客户端。每个客户端用自己的密钥加密查询。服务器持有的WOP码本可以通过代理重加密技术转换为该客户端公钥下的密文从而允许客户端直接使用。这样不同客户端的查询可以并行处理。4. 核心优化为PQ量身定制的CKKS数据打包与快速距离计算这是PPPQ-ANN能达到实用性能的“技术发动机”。如果直接用朴素的FHE计算向量距离开销是不可接受的。4.1 四种数据打包策略CKKS的SIMD特性允许我们将多个数据打包进一个密文槽位。PPPQ-ANN定义了四种针对PQ场景优化的打包方式SDOP子空间维度顺序打包。将同一个子空间下的多个数据向量按顺序打包进一个密文。主要用于码本生成阶段的数据样本。示例假设子空间维度ds16一个密文能打包npd1024个这样的16维子向量。那么一个密文就能表示1024个数据样本在该子空间上的分量。SDRP子空间维度重复打包。将同一个码字一个ds维向量重复复制npd次填满一个密文。主要用于码本生成阶段的聚类中心。示例同一个码字C1被复制1024次填满一个密文。这样一个密文就只代表一个码字但该码字在所有槽位都存在。WOP全局顺序打包。将所有子空间的码本按子空间顺序连续打包。这是后续阶段的主要码本存储格式。示例假设有ns8个子空间每个子空间NC256个码字。WOP会尝试将这8*2562048个码字每个ds维尽可能打包到更少的密文中。这比SDOP/SDRP节省了大量密文数量。WRP全局重复打包。与WOP对应将单个码字对应WOP中某个特定位置重复打包填满一个密文。用于查询向量和距离计算。为什么这样设计距离计算的核心是计算一个查询向量或数据向量与所有码字之间的距离。通过精心设计打包方式可以将这个计算转化为密文-密文或密文-明文的批量操作。在码本生成阶段我们需要计算NRS个样本点与NC个中心点的距离。使用SDOP打包样本SDRP打包中心可以实现高效的矩阵乘法式距离计算。在编码/搜索阶段我们有一个查询或数据向量需要计算它与ns*NC个码字的距离。使用WRP打包查询向量WOP打包码本通过一次密文旋转和加法操作就能同时计算该向量与多个码字的距离实现了极高的计算并行度。4.2 快速密文求和算法距离计算d Σ (xi - yi)^2最终归结为求和操作Σ xi。在CKKS中对密文槽位进行求和需要用到旋转操作。传统的求和算法如对数旋转求和在维度ds不是2的幂时效率较低。PPPQ-ANN提出的快速求和算法Algorithm 1是一个亮点。它通过记忆化中间结果将旋转次数从O(ds)量级降低到O(2*log2(ds))。算法精要第一层循环while i floor(log2(ds))进行标准的对数旋转求和并将每次循环后的结果保存下来rm[i] r。这相当于计算了所有2的幂次长度的前缀和。第二层循环while ds - 2^i - j 2利用第一层保存的结果像拼积木一样将剩余的长度非2的幂部分快速累加。例如对ds100求和先算64的和第一层得到然后发现剩3636可以拆成324而32和4的和已经在rm数组中存好了直接旋转对应位置相加即可。最后处理可能的奇偶性。效果如图4所示该算法使得计算时间随维度ds呈对数增长而非线性增长。当ds100时传统方法需要42次旋转而本算法仅需8次。这对于降低整个系统的延迟至关重要。工程实现注意旋转操作在FHE中是非常昂贵的。在实现这个算法时需要预先分配好存储中间结果的密文数组。虽然增加了一些内存开销O(log2(ds))但换来的性能提升是巨大的。在实际编码中要特别注意密文对象的生命周期管理避免不必要的拷贝。5. 参数调优与性能分析实战论文在SIFT、GIST、GloVe等多个百万级数据集上进行了测试。我们结合结果表Table 6-9来解读如何为你的任务选择最佳参数。5.1 关键参数解读子空间数量ns与码本大小NC这是PQ的核心参数也直接决定PPPQ-ANN的性能。总模式数Np NC^ns代表了PQ能表达的向量总数理论上Np越大量化精度越高搜索质量越好。WOP密文数量NW_OP由公式NW_OP ≈ ceil(2 * d * NC / Nr)决定其中d ns * ceil(d/ns)是填充后的伪维度。NW_OP直接决定了每次查询或编码所需的核心密文计算量和通信量。我们的目标是让NW_OP 1。权衡策略为了在保持高Np的同时让NW_OP1论文的策略是使用较大的ns和较小的NC。例如对于128维的SIFT数据方案一ns8 NC256的Np很大但NW_OP4方案二ns64 NC32的Np小一些但NW_OP1。后者在搜索和编码速度上有巨大优势。安全与性能参数乘法深度PPPQ-ANN成功将大多数场景的乘法深度降到了1。只有在SIFT数据集上为了防止计算溢出设置为2。更低的乘法深度意味着更快的计算和更小的密文。环维度Nr设置为16384这是一个平衡安全级别192位和单密文打包能力np Nr/2 8192个复数槽位的常用值。5.2 实验结果深度剖析码本生成这是最耗时的离线阶段耗时从几分钟到二十多分钟不等。时间主要消耗在安全k-means的多轮迭代通信和密文计算上。注意对于GloVe-25d数据集当ns25使得ds1时MSE反而变差。这是因为在1维空间进行k-means聚类本身就不稳定且在安全设置下问题被放大。教训子空间维度ds不宜过小一般至少为2-4。数据库编码这是将原始数据库转化为索引的过程。可以看到当NW_OP1时如SIFT的ns64方案编码速度QPS高达708而NW_OP4时只有72。这直观地展示了优化数据打包带来的巨大收益。索引生成耗时相对较少。有趣的是对于ns很大的方案如GIST的ns320由于需要计算的码本内距离矩阵更大索引生成时间反而更长。但这属于一次性离线成本。搜索这是在线服务的核心指标。召回率所有方案在Recall10上均大于90%除了个别GloVe低维配置证明精度有保障。QPSNW_OP1的方案普遍能达到50 QPS左右而NW_OP1的方案则在20-40 QPS之间。50 QPS对于许多隐私保护检索场景已经具备实用价值。客户端延迟平均每个查询的解密和通信时间在0.01秒量级对客户端非常友好。结论PPPQ-ANN通过巧妙的参数配置大ns小NC使NW_OP1将每次查询的密文操作压缩到极致从而在服务器端实现了高性能。其设计哲学是将FHE的负担限制在常数级别的、与数据库大小无关的少量密文操作上而让TEE承担与数据库大小相关的、繁重的明文索引搜索工作。6. 常见问题、挑战与未来方向在实际考虑部署这样的系统时会遇到一些论文中未明确提及的挑战。6.1 安全性边界与威胁模型再审视PPPQ-ANN的威胁模型是“诚实但好奇”的服务器。这意味着服务器会忠实执行协议但会试图从看到的密文和中间结果中推断信息。该框架提供了多层防御原始数据保密性由FHE保证。码本保密性由FHE保证。查询保密性查询向量本身由FHE保护。但查询距离表会泄露给服务器。这是一个信息泄露点。攻击者可能通过分析大量的查询距离表来推断查询的分布特征甚至发起模型推理攻击。不过这比直接泄露查询向量要好得多。访问模式泄露TEE内的搜索过程其内存访问模式访问了哪些倒排列表可能通过侧信道被观测到。这可能会泄露数据库的统计信息或查询的某些特性。这是TEE固有的风险。因此PPPQ-ANN并非“绝对安全”而是在性能、精度和安全之间取得了一个出色的工程平衡。它显著提升了攻击门槛适用于对隐私要求高、但可接受上述有限泄露的场景如联合建模、隐私检索。6.2 工程实现挑战内存管理TEE的安全内存有限。PPPQ-ANN需要将IVF索引、PQ编码数据库、距离表等加载到安全内存中。对于十亿级数据库索引可能很大。需要精心设计数据在安全内存与非安全内存之间的换入换出策略这可能成为性能瓶颈和安全复杂度来源。通信优化码本生成和数据库编码阶段需要多轮客户端-服务器通信。网络延迟和带宽可能成为瓶颈尤其对于跨国或跨云部署。需要考虑通信压缩、异步化等技术。客户端算力安全k-means和查询解密的计算发生在客户端。如果客户端是手机或IoT设备可能需要将这部分计算委托给一个受信任的代理这又引入了新的信任假设。动态更新如果数据库需要增删改如何支持增量更新码本和索引是一个复杂问题。一个简单但低效的方法是定期全量重建。6.3 未来优化方向非对称场景优化当前框架假设客户端和服务器都具备一定算力。可以探索更“瘦客户端”的变种将更多计算不可逆地转移到服务器客户端只负责加密和最终解密。与其他ANN索引结合PPPQ-ANN目前主要结合了IVF。可以探索与HNSW等图索引的结合在TEE内实现更高效的搜索但这可能会增加索引的复杂性和侧信道泄露的风险。硬件加速利用GPU或专用FHE加速卡来加速最耗时的密文距离计算部分有望将QPS再提升一个数量级。安全增强研究如何对抗基于查询距离表的分析攻击例如通过注入差分隐私噪声。我个人在复现和思考类似系统时的最大体会是隐私保护系统的设计永远是一场权衡的艺术。PPPQ-ANN框架的价值在于它给出了一套清晰、可工程化且经过验证的权衡方案。它没有追求理论上最完美的安全而是聚焦于在现实约束下如何构建一个既可用又足够安全的系统。对于想要进入隐私计算和可信AI应用领域的工程师来说深入理解这个框架的每一个设计抉择比单纯追求更高的QPS数字更有意义。
PPPQ-ANN:融合FHE、TEE与PQ的隐私保护向量检索框架解析
发布时间:2026/6/1 4:35:21
1. 项目概述与核心挑战最近几年向量检索技术尤其是近似最近邻搜索已经成了AI应用里一个绕不开的基础设施。无论是大模型的增强检索还是推荐系统里的物品匹配核心都是把数据变成高维向量然后快速找出最相似的那几个。这事儿听起来简单但一旦涉及到用户隐私数据、商业机密或者医疗记录问题就复杂了。你不可能把原始的用户行为向量或者病历特征向量明文扔到云服务器上去算那跟“裸奔”没什么区别。所以隐私保护近似最近邻搜索这个领域就火起来了。目标很明确服务器在不知道你数据具体内容的情况下帮你完成高质量的相似性搜索。目前主流的技术路线就两条一条是走全同态加密密码学上绝对安全但性能是硬伤复杂计算慢得让人抓狂另一条是依赖可信执行环境比如Intel SGX或者AMD SEV性能不错但得完全信任硬件厂商和芯片本身没有漏洞这几年各种侧信道攻击搞得大家心里也没底。我最近深入研究了一篇2026年的前沿论文它提出了一个叫PPPQ-ANN的混合框架。这个框架的聪明之处在于它没有二选一而是把FHE和TEE“揉”在了一起并且用产品量化这个老牌ANN加速技术当粘合剂硬是在安全性和性能之间劈开了一条新路。简单说它让最敏感的数据原始向量、量化码本、查询请求始终处于FHE加密状态而将大量的、不直接暴露原始信息的计算比如量化后的索引比对、距离排序放在TEE里跑。这样一来既享受了TEE的高性能又用FHE给最核心的资产上了把“密码学硬锁”。更关键的是它不仅仅关注“搜”的过程而是把数据库的整个生成流程包括量化码本训练、数据库编码、索引构建也纳入了隐私保护的范畴。这是一个非常重要的视角转变因为一个安全的搜索系统如果其底库是在明文状态下构建的那整个安全假设就崩塌了一半。PPPQ-ANN通过一套精心设计的、为PQ优化的CKKS密文数据打包方案将整个流水线的密文计算和通信开销降到了可接受的程度。在百万级数据集上实现了数据库构建在2小时内完成顺序搜索超过50 QPS的实用性能。这对于那些对延迟敏感又要求强隐私保护的应用场景比如金融风控的实时匹配或者医疗研究的跨机构数据查询无疑是个重磅消息。接下来我会带你彻底拆解这个框架。我们不光看它“是什么”更要弄明白它“为什么”要这么设计以及如果你要自己动手实现或者评估类似方案有哪些坑必须避开。2. 核心技术原理深度拆解要理解PPPQ-ANN我们得先把它依赖的几块基石——FHE、TEE和PQ——以及它们组合的逻辑吃透。2.1 全同态加密安全计算的“圣杯”与性能之殇全同态加密被称作隐私计算的“圣杯”。它的魅力在于允许对密文进行任意形式的计算加法和乘法且解密后的结果与对明文进行同样计算的结果一致。这意味着你可以把加密后的数据交给一个不可信的云服务器服务器吭哧吭哧算完把加密的结果还给你你解密后得到的就是正确答案而服务器全程对你的数据一无所知。PPPQ-ANN选择了CKKS方案。这是非常关键且务实的一步。早期的FHE方案如BGV, BFV主要针对整数运算而我们的向量数据基本都是浮点数。CKKS方案直接支持实数复数运算并且天然通过SIMD技术能将多个数据“打包”进一个密文里进行并行计算这极大地提升了吞吐量。你可以把一个密文想象成一个长长的“向量”一次操作就能完成对这个向量所有分点的运算这是FHE能走向实用的关键加速技术。但是FHE的代价依然巨大计算开销密文上的每一次乘法操作都会导致“噪声”增长必须定期进行“自举”操作来降低噪声这个过程极其耗时。乘法深度连续乘法的次数直接决定了方案的复杂度和性能。密文膨胀一个普通的浮点数加密后可能变成几十甚至几百KB的密文通信和存储开销激增。操作受限FHE擅长的是加法和乘法对于比较、排序、非线性函数如ReLU等操作非常不友好通常需要复杂的多项式近似这又会进一步增加计算负担和乘法深度。实操心得在选择FHE方案和参数时安全级别如192位、乘法深度和环维度是三个需要权衡的核心参数。环维度决定了单次能打包的数据量但也影响计算和密钥大小。PPPQ-ANN将乘法深度成功优化到1或2这是其能达到实用性能的基础。在实际工程中使用OpenFHE、SEAL这类成熟库时务必根据你的计算图精确评估所需的最小乘法深度宁大勿小否则算到一半噪声爆掉就前功尽弃。2.2 可信执行环境高性能的“堡垒”与信任边界TEE提供了一个硬件隔离的安全“飞地”。在飞地内运行的代码和数据即使宿主操作系统或虚拟机监控器被攻破理论上也能保持机密性和完整性。Intel SGX和AMD SEV是主流代表。TEE的优势很明显性能接近明文在飞地内计算速度比FHE快几个数量级。支持任意计算不受FHE计算类型的限制可以方便地进行比较、分支等操作。但它的安全假设更强风险也不同侧信道攻击通过缓存计时、功耗分析、电磁辐射等攻击者可能推断出飞地内执行的操作或数据。这是目前对TEE最现实的威胁。信任硬件厂商你必须信任CPU厂商没有在微码中预留后门并且其实现没有漏洞。内存限制SGX等飞地的安全内存通常有限如128MB处理大规模数据需要频繁与不安全内存交换这会带来性能损耗和安全复杂度。PPPQ-ANN采用TEE但并不完全依赖它。这是其架构的精华。它把TEE当作一个高性能的“安全沙箱”用来执行那些不直接接触最敏感原始数据的繁重计算任务。2.3 产品量化精度与效率的经典权衡产品量化是ANN领域的经典加速技术。它的核心思想是“分而治之”分割将一个高维向量比如128维分割成多个低维子空间比如8个16维的子空间。量化对每个子空间使用k-means聚类生成一个小的码本比如每个子空间256个码字。编码对于数据库中的每个原始向量在每个子空间里找到距离最近的码字用其索引一个整数来代替该子向量。最终一个高维向量被压缩成一串整数索引。非对称距离计算搜索时查询向量保持为原始浮点数。计算距离时我们预先算出查询向量每个子空间与所有码字之间的距离表。对于数据库中的某个量化后向量其与查询向量的距离只需将其每个子空间对应的索引去查表并累加即可。这避免了高维向量的直接计算速度极快。PQ的代价是精度损失因为它是一种有损压缩。但通过调整子空间数和码本大小可以在精度和效率之间取得良好平衡。2.4 PPPQ-ANN的混合安全架构为什么是112现在我们把这三块拼起来看PPPQ-ANN的设计哲学核心矛盾FHE安全但慢TEE快但存在风险。ANN计算中哪些部分最敏感哪些部分计算量最大最敏感的数据原始的数据库向量、PQ训练的码本、用户的查询向量。这些数据如果泄露几乎可以完整重构原始信息。计算量最大的部分在庞大的数据库中遍历并计算距离。PPPQ-ANN的解决方案用FHE保护核心资产原始数据库向量、码本、查询向量始终以CKKS密文形式存在。即使在TEE的内存中它们也是加密的见图1中的蓝色方块。这是第一层也是最坚固的一层密码学保护。用TEE执行重型计算将FHE密文下的、为PQ优化的距离计算后文详述结果解密到TEE内部。之后所有基于PQ索引的搜索、排序、筛选等操作全部在TEE的明文环境中高速进行。这些操作处理的是索引和距离值它们本身无法精确反推出原始向量。用PQ作为效率和安全的桥梁PQ的引入是神来之笔。对FHE友好PQ将高维向量距离计算分解为多个低维子空间的距离计算与查表累加。这完美契合了FHE计算的特点大量重复的、相对简单的向量运算。PPPQ-ANN进一步优化了这种计算。极大减少密文操作数据库一旦被量化为索引其本身就可以用明文存储在TEE内因为索引不直接暴露信息。后续的搜索完全基于索引和预先算好的距离表避开了对原始数据库密文的大量重复计算。这种“FHE加密核心数据 TEE执行索引计算 PQ压缩降低复杂度”的多层安全结构实现了安全与性能的协同。攻击者即使突破了TEE的硬件隔离也只能拿到加密的密文或无法复原原始数据的中间结果。而要破解FHE则面临当前计算能力下不可行的数学难题。3. PPPQ-ANN框架全流程实操解析理解了为什么之后我们来看具体怎么做。PPPQ-ANN的流程分为四个核心阶段我结合自己的理解补充一些论文中未详述的工程细节。3.1 阶段一基于密文的码本生成这是构建整个搜索系统的第一步也是最复杂的一步因为需要在密文上运行k-means聚类算法。输入客户端持有的原始训练数据集明文。输出服务器端持有的、FHE加密的WOP和WRP格式的PQ码本。核心挑战如何在服务器无法看到明文数据的情况下对数据进行聚类PPPQ-ANN的简化版安全k-means流程客户端准备从原始数据中为每个子空间随机采样一部分数据例如NRS1000条。客户端将这些采样数据用SDOP方式加密后发送给服务器。同时客户端随机初始化每个子空间的码本NC个码字用SDRP方式加密后发送给服务器。SDOP将同一个子空间下的多个数据点按顺序打包进一个密文。用于存放待聚类的数据样本。SDRP将同一个码字重复打包填满一个密文。用于存放聚类中心码本。为什么用两种打包方式这是为了后续高效计算所有样本点到所有聚类中心的距离。SDOP的数据排列方便按样本点并行SDRP的码本排列方便按聚类中心并行两者结合才能实现高效的矩阵化距离计算。迭代聚类服务器-客户端交互 a.服务器端距离计算服务器拥有加密的数据CSDOP格式和加密的码本CSDRP格式。它利用我们后面要讲的快速距离求和算法在密文上计算每个样本点到每个聚类中心的距离。结果是一个加密的距离矩阵。 b.客户端解密与分配服务器将加密的距离矩阵发送给客户端。客户端解密后为每个样本点找到距离最近的聚类中心标签。 c.客户端更新中心客户端根据新的样本点归属在明文状态下重新计算每个聚类的新中心求均值。这是一个简单的明文操作。 d.客户端加密新中心客户端将新的聚类中心用SDRP格式重新加密并发回服务器。 重复a-d直到中心点变化很小或达到迭代上限。码本格式转换最终得到的码本是SDRP格式的。为了后续高效使用需要将其转换为WOP和WRP格式。这个过程需要客户端参与解密和重新加密。WOP将所有子空间的码本按子空间顺序连续打包进密文。一个密文里可能包含多个子空间的码字。WRP与WOP对应将单个码字对应WOP中某个位置重复打包填满一个密文。转换的意义WOP/WRP的打包方式能极大减少后续“数据库编码”和“搜索”阶段所需的密文数量从而降低计算和通信开销。这是性能优化的关键一步。避坑指南初始化的陷阱安全k-means的初始中心是随机生成的可能导致聚类效果差、收敛慢。论文提到了可以使用secure k-MCMC等更高级的初始化方法在实际中值得尝试虽然会增加一轮通信。通信成本每一轮迭代都需要传输整个加密距离矩阵这是主要开销。在参数选择时NRS采样数不宜过大通常1000-5000足以训练出不错的码本。客户端负担此阶段客户端需要执行解密和明文k-means计算如果数据维度高、码本大客户端的计算压力也不小。需要评估客户端的算力。3.2 阶段二数据库编码在拥有加密的WOP/WRP码本后就可以将完整的数据库向量转化为PQ索引。输入客户端持有的完整原始数据库明文服务器持有的加密WOP码本。输出服务器持有的、明文存储的PQ编码数据库DE一个整数索引矩阵。过程客户端将数据库中的一个向量用WRP格式加密后发送给服务器。WRP格式与WOP码本格式是对应的便于计算距离。服务器计算该加密向量与WOP码本中所有码字跨所有子空间的距离。这里再次用到快速距离算法。服务器将加密的距离结果发送给客户端。客户端解密距离为每个子空间选择距离最小的码字索引。客户端将索引发回服务器。服务器将索引存入DE。重复1-5直到处理完所有数据库向量。关键点服务器最终存储的是DE这是一个明文整数矩阵。但它无法单独从DE恢复原始数据因为码本解码字典仍然是加密的且不在服务器手中。这是安全性的关键。此过程可以并行处理多个向量以加速编码。3.3 阶段三数据库索引IVF索引为了加速搜索需要在PQ编码的基础上建立倒排索引。输入加密的WOP/WRP码本明文PQ编码数据库DE。输出IVF索引IIVF。过程计算码本距离矩阵服务器利用加密的WOP和WRP码本计算所有码字两两之间的距离在子空间内。计算结果加密发送给客户端解密得到明文码本距离表。这一步只在初始化时做一次。生成粗聚类中心在客户端使用PQk-means算法基于上一步得到的码本距离表和DE生成大量如1024个的粗聚类中心IE。PQk-means直接在PQ索引空间进行聚类效率很高。构建倒排列表对于DE中的每个向量计算其与所有粗聚类中心IE的距离利用已有的码本距离表进行ADC计算然后将其归属到最近的nnb个如3个中心对应的倒排列表中。设计取舍传统的IVF还会对残差进行二次编码以提升精度。PPPQ-ANN省略了这一步。因为对残差进行编码需要重新与原始加密数据交互会产生巨大的密文通信开销2*NB*NW_OP个密文。为了实用性PPPQ-ANN选择接受因省略残差编码带来的一点点精度损失换来了索引构建的可行性和低延迟。3.4 阶段四隐私保护搜索这是线上服务的核心。输入客户端加密的查询向量WRP格式服务器端的加密WRP码本、明文IVF索引IIVF、明文PQ编码数据库DE。输出最相似的K个向量的ID。过程客户端将查询向量用WRP格式加密发送给服务器。服务器计算加密查询与加密WRP码本的距离得到加密的距离表发送给客户端。客户端解密密文得到查询向量到所有码字的明文距离表。客户端将此距离表发送回服务器。注意此表不泄露查询向量本身仅泄露其与固定公共码本的距离。服务器在TEE内进行快速检索 a.粗筛选利用查询距离表和IVF索引快速计算查询与所有粗聚类中心IE的距离ADC选出lc个如3个最近的中心。 b.细搜索在上述lc个中心对应的倒排列表包含的所有数据库向量中利用同样的距离表进行ADC计算找出距离最小的l个如10个向量ID。服务器将Top-K的向量ID返回给客户端。性能核心步骤2的密文距离计算是主要瓶颈。但PPPQ-ANN通过优化使得每次查询仅需计算NW_OP对密文距离NW_OP通常很小理想情况下为1。步骤5的所有操作都在TEE内对明文数据索引和距离表进行速度极快。最终实现了超过50 QPS的服务器端处理速度。多客户端支持系统可以轻松支持多客户端。每个客户端用自己的密钥加密查询。服务器持有的WOP码本可以通过代理重加密技术转换为该客户端公钥下的密文从而允许客户端直接使用。这样不同客户端的查询可以并行处理。4. 核心优化为PQ量身定制的CKKS数据打包与快速距离计算这是PPPQ-ANN能达到实用性能的“技术发动机”。如果直接用朴素的FHE计算向量距离开销是不可接受的。4.1 四种数据打包策略CKKS的SIMD特性允许我们将多个数据打包进一个密文槽位。PPPQ-ANN定义了四种针对PQ场景优化的打包方式SDOP子空间维度顺序打包。将同一个子空间下的多个数据向量按顺序打包进一个密文。主要用于码本生成阶段的数据样本。示例假设子空间维度ds16一个密文能打包npd1024个这样的16维子向量。那么一个密文就能表示1024个数据样本在该子空间上的分量。SDRP子空间维度重复打包。将同一个码字一个ds维向量重复复制npd次填满一个密文。主要用于码本生成阶段的聚类中心。示例同一个码字C1被复制1024次填满一个密文。这样一个密文就只代表一个码字但该码字在所有槽位都存在。WOP全局顺序打包。将所有子空间的码本按子空间顺序连续打包。这是后续阶段的主要码本存储格式。示例假设有ns8个子空间每个子空间NC256个码字。WOP会尝试将这8*2562048个码字每个ds维尽可能打包到更少的密文中。这比SDOP/SDRP节省了大量密文数量。WRP全局重复打包。与WOP对应将单个码字对应WOP中某个特定位置重复打包填满一个密文。用于查询向量和距离计算。为什么这样设计距离计算的核心是计算一个查询向量或数据向量与所有码字之间的距离。通过精心设计打包方式可以将这个计算转化为密文-密文或密文-明文的批量操作。在码本生成阶段我们需要计算NRS个样本点与NC个中心点的距离。使用SDOP打包样本SDRP打包中心可以实现高效的矩阵乘法式距离计算。在编码/搜索阶段我们有一个查询或数据向量需要计算它与ns*NC个码字的距离。使用WRP打包查询向量WOP打包码本通过一次密文旋转和加法操作就能同时计算该向量与多个码字的距离实现了极高的计算并行度。4.2 快速密文求和算法距离计算d Σ (xi - yi)^2最终归结为求和操作Σ xi。在CKKS中对密文槽位进行求和需要用到旋转操作。传统的求和算法如对数旋转求和在维度ds不是2的幂时效率较低。PPPQ-ANN提出的快速求和算法Algorithm 1是一个亮点。它通过记忆化中间结果将旋转次数从O(ds)量级降低到O(2*log2(ds))。算法精要第一层循环while i floor(log2(ds))进行标准的对数旋转求和并将每次循环后的结果保存下来rm[i] r。这相当于计算了所有2的幂次长度的前缀和。第二层循环while ds - 2^i - j 2利用第一层保存的结果像拼积木一样将剩余的长度非2的幂部分快速累加。例如对ds100求和先算64的和第一层得到然后发现剩3636可以拆成324而32和4的和已经在rm数组中存好了直接旋转对应位置相加即可。最后处理可能的奇偶性。效果如图4所示该算法使得计算时间随维度ds呈对数增长而非线性增长。当ds100时传统方法需要42次旋转而本算法仅需8次。这对于降低整个系统的延迟至关重要。工程实现注意旋转操作在FHE中是非常昂贵的。在实现这个算法时需要预先分配好存储中间结果的密文数组。虽然增加了一些内存开销O(log2(ds))但换来的性能提升是巨大的。在实际编码中要特别注意密文对象的生命周期管理避免不必要的拷贝。5. 参数调优与性能分析实战论文在SIFT、GIST、GloVe等多个百万级数据集上进行了测试。我们结合结果表Table 6-9来解读如何为你的任务选择最佳参数。5.1 关键参数解读子空间数量ns与码本大小NC这是PQ的核心参数也直接决定PPPQ-ANN的性能。总模式数Np NC^ns代表了PQ能表达的向量总数理论上Np越大量化精度越高搜索质量越好。WOP密文数量NW_OP由公式NW_OP ≈ ceil(2 * d * NC / Nr)决定其中d ns * ceil(d/ns)是填充后的伪维度。NW_OP直接决定了每次查询或编码所需的核心密文计算量和通信量。我们的目标是让NW_OP 1。权衡策略为了在保持高Np的同时让NW_OP1论文的策略是使用较大的ns和较小的NC。例如对于128维的SIFT数据方案一ns8 NC256的Np很大但NW_OP4方案二ns64 NC32的Np小一些但NW_OP1。后者在搜索和编码速度上有巨大优势。安全与性能参数乘法深度PPPQ-ANN成功将大多数场景的乘法深度降到了1。只有在SIFT数据集上为了防止计算溢出设置为2。更低的乘法深度意味着更快的计算和更小的密文。环维度Nr设置为16384这是一个平衡安全级别192位和单密文打包能力np Nr/2 8192个复数槽位的常用值。5.2 实验结果深度剖析码本生成这是最耗时的离线阶段耗时从几分钟到二十多分钟不等。时间主要消耗在安全k-means的多轮迭代通信和密文计算上。注意对于GloVe-25d数据集当ns25使得ds1时MSE反而变差。这是因为在1维空间进行k-means聚类本身就不稳定且在安全设置下问题被放大。教训子空间维度ds不宜过小一般至少为2-4。数据库编码这是将原始数据库转化为索引的过程。可以看到当NW_OP1时如SIFT的ns64方案编码速度QPS高达708而NW_OP4时只有72。这直观地展示了优化数据打包带来的巨大收益。索引生成耗时相对较少。有趣的是对于ns很大的方案如GIST的ns320由于需要计算的码本内距离矩阵更大索引生成时间反而更长。但这属于一次性离线成本。搜索这是在线服务的核心指标。召回率所有方案在Recall10上均大于90%除了个别GloVe低维配置证明精度有保障。QPSNW_OP1的方案普遍能达到50 QPS左右而NW_OP1的方案则在20-40 QPS之间。50 QPS对于许多隐私保护检索场景已经具备实用价值。客户端延迟平均每个查询的解密和通信时间在0.01秒量级对客户端非常友好。结论PPPQ-ANN通过巧妙的参数配置大ns小NC使NW_OP1将每次查询的密文操作压缩到极致从而在服务器端实现了高性能。其设计哲学是将FHE的负担限制在常数级别的、与数据库大小无关的少量密文操作上而让TEE承担与数据库大小相关的、繁重的明文索引搜索工作。6. 常见问题、挑战与未来方向在实际考虑部署这样的系统时会遇到一些论文中未明确提及的挑战。6.1 安全性边界与威胁模型再审视PPPQ-ANN的威胁模型是“诚实但好奇”的服务器。这意味着服务器会忠实执行协议但会试图从看到的密文和中间结果中推断信息。该框架提供了多层防御原始数据保密性由FHE保证。码本保密性由FHE保证。查询保密性查询向量本身由FHE保护。但查询距离表会泄露给服务器。这是一个信息泄露点。攻击者可能通过分析大量的查询距离表来推断查询的分布特征甚至发起模型推理攻击。不过这比直接泄露查询向量要好得多。访问模式泄露TEE内的搜索过程其内存访问模式访问了哪些倒排列表可能通过侧信道被观测到。这可能会泄露数据库的统计信息或查询的某些特性。这是TEE固有的风险。因此PPPQ-ANN并非“绝对安全”而是在性能、精度和安全之间取得了一个出色的工程平衡。它显著提升了攻击门槛适用于对隐私要求高、但可接受上述有限泄露的场景如联合建模、隐私检索。6.2 工程实现挑战内存管理TEE的安全内存有限。PPPQ-ANN需要将IVF索引、PQ编码数据库、距离表等加载到安全内存中。对于十亿级数据库索引可能很大。需要精心设计数据在安全内存与非安全内存之间的换入换出策略这可能成为性能瓶颈和安全复杂度来源。通信优化码本生成和数据库编码阶段需要多轮客户端-服务器通信。网络延迟和带宽可能成为瓶颈尤其对于跨国或跨云部署。需要考虑通信压缩、异步化等技术。客户端算力安全k-means和查询解密的计算发生在客户端。如果客户端是手机或IoT设备可能需要将这部分计算委托给一个受信任的代理这又引入了新的信任假设。动态更新如果数据库需要增删改如何支持增量更新码本和索引是一个复杂问题。一个简单但低效的方法是定期全量重建。6.3 未来优化方向非对称场景优化当前框架假设客户端和服务器都具备一定算力。可以探索更“瘦客户端”的变种将更多计算不可逆地转移到服务器客户端只负责加密和最终解密。与其他ANN索引结合PPPQ-ANN目前主要结合了IVF。可以探索与HNSW等图索引的结合在TEE内实现更高效的搜索但这可能会增加索引的复杂性和侧信道泄露的风险。硬件加速利用GPU或专用FHE加速卡来加速最耗时的密文距离计算部分有望将QPS再提升一个数量级。安全增强研究如何对抗基于查询距离表的分析攻击例如通过注入差分隐私噪声。我个人在复现和思考类似系统时的最大体会是隐私保护系统的设计永远是一场权衡的艺术。PPPQ-ANN框架的价值在于它给出了一套清晰、可工程化且经过验证的权衡方案。它没有追求理论上最完美的安全而是聚焦于在现实约束下如何构建一个既可用又足够安全的系统。对于想要进入隐私计算和可信AI应用领域的工程师来说深入理解这个框架的每一个设计抉择比单纯追求更高的QPS数字更有意义。