土法炼钢兴趣小组的算法知识备份

【数据库研究前沿】差分隐私数据库:PINQ、APEx 到生产级 DP-SQL

文章导航

分类入口
database
标签入口
#differential-privacy#dp-sql#pinq#apex#flex#opendp#laplace#privacy-budget#postgres

源码下载

本文相关源码已整理,共 1 个文件。

打开下载目录 →

目录

这是【数据库研究前沿】系列的第 20 篇。上一篇 TEE 数据库 回答的是”数据在机器上是否保密”;本篇换一个完全不同的问题:即使查询结果是公开的,能不能保证攻击者无法反推出个体数据?

差分隐私(Differential Privacy, DP)是目前这个问题上理论最干净、工程实践最丰富的答案。它不假设攻击者算力有限,也不假设攻击者看不到中间数据——它直接给出一个数学保证:加或去掉任意单条记录,查询输出的分布变化不超过 e^ε 倍。这意味着无论攻击者拥有多少背景知识,都无法从结果中”确认”某条记录是否在数据库里。

过去二十年 DP 从 Dwork 的 CRYPTO 2006 论文一路走到美国 2020 年人口普查的真实部署,中间的里程碑包括:McSherry 在 SIGMOD 2009 的 PINQ、Johnson 等人在 VLDB 2018 的 FLEX、Ge 等人在 SIGMOD 2018 的 APEx,以及 OpenDP、Google DP Library、Tumult Analytics 等一批工程工具。这条路并不平坦——人口普查项目因 DP 导致了大量关于”数据效用 vs 隐私”的公开辩论。

本文上半讲理论:DP 的定义、噪声机制、组合定理、预算分配;下半讲工程:开源库现状、在 Postgres 上给聚合函数加 Laplace 噪声的最小 demo,以及为什么”DP-SQL”至今没有成为主流 SQL 扩展。

版本说明 本文以 OpenDP 0.11、Google DP Library 3.x、Tumult Analytics 0.14、PipelineDP 0.2 为主要参照。美国人口普查 2020 的讨论基于 Abowd 等人 2022 年在 Harvard Data Science Review 上的公开复盘。


一、差分隐私的定义与直觉

1.1 Dwork 2006 的原始定义

Dwork、McSherry、Nissim、Smith 在 2006 年 Theory of Cryptography Conference(TCC)的 Calibrating Noise to Sensitivity in Private Data Analysis 给出了差分隐私的正式定义。同年 Dwork 单独在 ICALP 发表 Differential Privacy 一文首次引入”差分隐私”这一术语,并阐明其相对于 k-anonymity 的本质突破。设 \(\mathcal{M}\) 是一个随机算法,输入是一个数据集 \(D\),输出是某个结果。若对任意两个邻居数据集(Neighboring Datasets) \(D, D'\)(仅差一条记录),以及任意输出集合 \(S\),都有:

\[ \Pr[\mathcal{M}(D) \in S] \le e^{\varepsilon} \cdot \Pr[\mathcal{M}(D') \in S] + \delta \]

则称 \(\mathcal{M}\) 满足 \((\varepsilon, \delta)\)-差分隐私。\(\varepsilon\) 是隐私预算(Privacy Budget),越小越严;\(\delta\) 是失败概率,通常要求 \(\delta \ll 1/n\)\(n\) 为数据集大小)。

这个定义三条关键直觉:

1.2 为什么 k-anonymity 不够

早期的隐私化方案以 Sweeney 的 k-anonymity(2002)及其扩展 l-diversity、t-closeness 为主。它们的想法是”让每个发布的记录在准标识符上至少和 k-1 条其他记录相同”。但 2008 年 Narayanan 与 Shmatikov 对 Netflix Prize 数据的去匿名化攻击证明:在辅助信息存在时,k-anonymity 无法提供任何可证明的保证

差分隐私绕过了这个问题:它不尝试”隐藏身份”,而是直接约束”输出对单个记录的敏感度”。无论攻击者拥有什么辅助信息,DP 机制的输出都不会显著变化——这就是它为什么能写进美国人口普查法案的原因。

1.3 敏感度(Sensitivity)与噪声机制

给定一个确定性查询 \(f: D \to \mathbb{R}^d\),它的全局敏感度(Global Sensitivity, GS)定义为:

\[ \Delta f = \max_{D, D'} \|f(D) - f(D')\|_1 \]

加噪的大小就按敏感度来校准。经典的三种机制:

为什么有了 Laplace 还要 Gaussian?因为在高维或者多次组合时,Gaussian 的矩累加特性让总预算更紧(见 1.5 节的 Rényi DP / zCDP)。工程上两个机制各有用武之地,不能只留一个。

1.4 一个最小例子:COUNT 的敏感度为 1

考虑查询”有多少人年龄大于 30”。增删任一条记录,输出最多变化 1,所以全局敏感度是 1。要得到 \(\varepsilon = 1\) 的 Laplace 机制:

import numpy as np
true_count = (df["age"] > 30).sum()
noisy_count = true_count + np.random.laplace(0, 1.0 / 1.0)

几行代码就是一个合法的 DP 机制。真正工程难点不在”加噪本身”,而在:同一个数据集会被反复查询,怎么跟踪总预算?怎么对复杂查询(JOIN、多表聚合)算敏感度?怎么让用户相信敏感度推导是对的? 这三个问题定义了后续所有 DP 数据库系统的工作。

再看一个稍难的:SUM(salary) 的敏感度不是 1。如果 salary 没有上界,单条记录可以让 SUM 变化任意大,敏感度就是 \(\infty\),加多少噪声都没用。生产实现普遍采用 截断(Clipping):先把 salary 限制到 \([l, u]\) 区间,再求和,此时敏感度是 \(\max(|l|, |u|)\)。截断本身是”数据依赖”的处理——选区间大小就是在”偏差(bias)“和”噪声方差(variance)“之间做权衡。Tumult、OpenDP、Google DP Library 都把这个权衡暴露给用户,并提供”先花一小部分预算做 DP 分位数估计、自动选截断界”的封装。这是工程现实与理论之间一个小小的但决定可用性的细节。

1.5 组合定理:为什么预算会用完

组合定理直接决定了”同一数据集可以被查多少次”。假设总预算 \(\varepsilon = 1\),每次查询花 \(0.01\),理论上可以做 100 次;但在高级组合下,实际可做更多——这也是为什么所有现代 DP 系统都用 Rényi / zCDP 做会计,而不是朴素加法。

一个反直觉的事实:并行组合(Parallel Composition)不消耗总预算。对同一数据集的不相交切片分别施加 DP 查询,总体仍然是 \(\varepsilon\)-DP,而不是 \(k\varepsilon\)。这一点直接支持了”按分组(GROUP BY)聚合不放大预算”这一工程常识,也是 FLEX / APEx 能压榨出更好精度的关键。

另一方面,一个常被忽视的维度是 后处理定理(Post-processing Theorem):对 DP 输出做任何不依赖原始数据的处理(rounding、约束修正、归一化)都不会破坏 DP 保证。这条定理是”加噪后再做业务加工”的合法性基础,但它也有边界——人口普查项目里正是因为后处理步骤偷偷用了原始数据,差点踩雷。

1.6 局部 DP 与中心 DP

DP 有两种部署模型:

数据库语境下我们几乎只谈中心 DP——因为 DBMS 本身就是”可信中心”。LDP 更多属于 telemetry / 浏览器、移动端的话题。不过有一个有趣的中间形态:Shuffle DP(Cheu 等人,EUROCRYPT 2019),在用户与中心之间放一个匿名混洗器(Shuffler),可以在不完全信任中心的前提下接近中心 DP 的精度。这条路线在跨机构数据共享场景下开始被严肃考虑。

1.7 对”ε 到底该多大”的直觉

Dwork 在原始论文里给的参考是 \(\varepsilon \le \ln 3 \approx 1.1\),Apple iOS 的 LDP 部署用了 \(\varepsilon \approx 4\) / 天,Google Chrome 的 RAPPOR 用到 \(\varepsilon = \ln 3\) 每报告。美国 2020 年人口普查总预算约 \(\varepsilon = 19.61\),在理论学家眼里”太松”,在下游用户眼里”太紧”。

这个数值范围本身说明:ε 是政策参数,不是技术参数。工程上唯一合理的做法是给出一张对照表,把 ε 翻译成”攻击者在已知辅助信息下,能把单条记录参与概率从先验提升到后验的最大比例”。让业务方看到这个比例,才能做出可问责的选择。


二、从 PINQ 到 APEx:DP 数据库系统的三次演进

2.1 PINQ(SIGMOD 2009):把 DP 做成 LINQ 扩展

McSherry 的 Privacy Integrated Queries: An Extensible Platform for Privacy-Preserving Data Analysis 是第一篇真正”DP 数据库系统”论文。它把 DP 机制做成 C# 的 LINQ 扩展:用户写 data.Where(...).GroupBy(...).NoisyCount(ε),PINQ 负责跟踪每步查询对敏感度的贡献、自动维护预算账本。

PINQ 的三个贡献至今有效:

  1. 声明式 DP 接口。DP 以函数组合的形式暴露给用户,而不是要求用户每次手工算敏感度。这直接对应后来 TensorFlow Privacy、Opacus 等 ML 场景下的”装饰器式”API。
  2. Stable Transformations。PINQ 定义了一组”稳定变换”(过滤、投影、分组),它们不放大敏感度,可以组合成复杂查询。这个概念后来被 OpenDP 抽象成 Transformation(输入距离 → 输出距离)和 Measurement(输入距离 → 隐私距离)两个范畴,成为可证明正确的机制组合基础。
  3. 预算账本(Budget Ledger)。每个数据集对象绑定一个预算,每次查询自动扣减,超支则拒绝执行。PINQ 的账本设计是朴素线性累加,现代系统已经用 RDP accountant 替换,但”账本作为一等公民”的思想留下来了。

PINQ 的局限是它没有完整支持 JOIN——JOIN 的敏感度在最坏情况下可以是 \(O(n)\),朴素加噪会让结果完全不可用。这个问题等到 FLEX 和 APEx 才真正被解决。另外 PINQ 只跑在 C# / .NET 生态上,没有跨语言绑定,社区使用面有限。

2.2 FLEX(VLDB 2018):elastic sensitivity 让 JOIN 可用

Johnson、Near、Song 在 VLDB 2018 的 Towards Practical Differential Privacy for SQL Queries 把 DP 引入真实 SQL。它的核心贡献是 Elastic Sensitivity:通过分析查询计划里每个 JOIN 的键分布,给出一个”依赖数据的局部敏感度”上界,比全局敏感度紧得多。

举例:SELECT COUNT(*) FROM A JOIN B ON A.k = B.k。全局敏感度可以无穷大(若某一侧有热点键),但如果 A、B 两侧都满足”单键最多出现 \(m\) 次”,则敏感度被压到 \(m\)。FLEX 通过查询计划的静态分析自动推导这类边界,再用 Smooth Sensitivity 机制加噪。

FLEX 在 Uber 的内部部署上跑了 10 000+ 条真实分析查询,大约 6 成查询可以给出有用结果。这是 DP 数据库第一次在工业场景下证明“不是只能跑 COUNT”。论文里还有一个容易被忽略的贡献:把 SQL 语法树递归转换为敏感度算子。这个转换框架后来被 Tumult Analytics 等生产系统继承,是今天 DP-SQL 工具链的共同基座。

2.3 APEx(SIGMOD 2018):从”给查询加噪”到”按精度要求分配预算”

Ge、He、Machanavajjhala、Tang 在 SIGMOD 2018 的 APEx: Accuracy-Aware Differentially Private Data Exploration 换了个视角:用户不再手工设置 \(\varepsilon\),而是指定”我要的结果误差不超过 \(\alpha\)、失败概率不超过 \(\beta\)“,系统反推需要多少预算、选择哪种机制。

APEx 的设计抽象有三层:

  1. 查询。用户表达分析意图。
  2. 精度目标(Accuracy Target)\((\alpha, \beta)\)
  3. 机制选择器:在 Laplace、Gaussian、SVT(Sparse Vector Technique)、Exponential 等机制中挑最省预算的那个。

APEx 的哲学被后来多篇 DP 系统继承:DP 应该像 CBO 一样,把机制选择从用户手里拿走。用户只说”要什么”,系统决定”怎么做”。

值得一提的一个子贡献是 SVT 的惰性预算消耗:对一组”阈值查询”(例如”销量是否超过 100?“),SVT 只在”首次超过阈值”时消耗预算,其余查询免费。这让交互式探索下的预算利用率显著上升。APEx 把 SVT 内化为机制库的一部分,而不是要求用户手写。

2.4 三篇论文的对比

维度 PINQ (2009) FLEX (2018) APEx (2018)
前端语言 LINQ SQL SQL
JOIN 支持 有限 Elastic Sensitivity 有限 + 按精度选择
预算分配 用户指定 ε 用户指定 ε 用户指定 (α, β)
机制 Laplace Laplace + Smooth Laplace / Gaussian / SVT / Exp
目标场景 研究原型 Uber 生产 交互式探索

这三篇论文大致对应了三个时代:“DP 原语暴露给用户” → “DP 能跑真实 SQL” → “DP 按精度自动调参”。现代 DP 数据库(OpenDP、Tumult)基本是这三条线的合流。

2.5 美国 2020 人口普查的落地教训

美国人口普查局(US Census Bureau)在 2020 年的 Decennial Census 首次全面使用差分隐私发布数据,核心算法叫 TopDown Algorithm。这是 DP 历史上最大规模的落地,也引发了最激烈的学术与政策争议。

几个值得记住的教训:

  1. 预算分配是公共政策问题,不只是技术问题。最终总预算约为 \(\varepsilon = 19.61\)(加一个小的 \(\delta\))——远大于 DP 学术社区习惯的 \(\varepsilon \le 1\)。经过反复争论后,人口普查局用非技术因素确定预算:法律要求的精度、下游用户(学区、选区)的需求、以及”不可发布原始数据”的硬约束。
  2. 后处理会偷偷破坏保证。TopDown 算法需要大量后处理(约束到非负、层次一致性等),其中一些步骤必须是数据无关的,否则会放大隐私损失。这个问题在原型阶段差点被忽略。
  3. 效用损失在小地域明显。许多小城镇的人口统计出现”人口为 7 但房屋为 12”之类的反常结果。学界对”这是否是可接受的代价”长期存在分歧。Ruggles 等人 2019 年的公开信是代表性异议。
  4. 对下游使用者的迁移成本巨大。学区划分、选区调整、社会学研究原本假设”公开数据即真实数据”;DP 之后必须引入 MOE(Margin of Error)分析。工具链、培训、法规都要跟着改。
  5. 法律挑战的真实存在。Alabama 州曾起诉人口普查局,认为 DP 导致的数据失真影响了选区代表权分配。最终诉讼被驳回,但它揭示出一个事实:DP 的数学保证与法律可辩护性之间仍有巨大鸿沟
  6. 公开透明反而增加了项目风险。人口普查局坚持把算法与部分参数全部公开(这是 DP 的经典做法,安全性不依赖算法保密),结果引来学术界对”参数是否最优”的无休止辩论。这启示后来项目:透明度要搭配解释与培训,否则反成攻击面

对数据库工程师的启示:DP 不是一键开关,它是一次生态变迁。任何把 DP 引入企业数据平台的项目,都需要把”数据效用下降对业务的影响”量化后再决定预算。人口普查给出的经验数字是:从启动到第一次真实发布,工程与政策协同的周期在 5–7 年量级。企业场景大约会压到 6–18 个月,但”政策谈判大于代码工作量”的格局基本不会变。


三、工程侧:OpenDP、Google DP、Tumult 与 Postgres Demo

3.1 当前主流开源库

项目 主要维护者 语言 覆盖范围 SQL 绑定
OpenDP 哈佛 + 微软 Rust + Python 机制库 + measurement framework 间接(需自写)
Google DP Library Google C++ / Go / Java 基础机制 + PipelineDP 有(ZetaSQL 扩展,内部)
PipelineDP Google + OpenMined Python on Beam/Spark MapReduce 风格聚合 间接
Tumult Analytics Tumult Labs Python on Spark 完整 DP-SQL 子集 有(DataFrame 风格)
Diffprivlib IBM Python 机制库 + ML

从 SQL 支持程度看,Tumult Analytics 最完整,它内部实际上实现了一个”有限子集的 DP-SQL”;Google 的 ZetaSQL 扩展支持 SELECT ANON_COUNT(...) 这类聚合函数;OpenDP 更像是”底层机制套件”,需要用户自己搭上层。

除了开源库,几家云厂商也在 2023–2025 年相继推出托管 DP 能力:Snowflake 的 Differential Privacy Policies、Azure 的 SmartNoise(基于 OpenDP)、Google BigQuery 的 Differential Privacy Clauses。它们的共同特点是”把 DP 能力嵌入到已有数据分享 / clean room 产品里”,而不是独立的 DP 数据库。这再次印证 3.2 节的判断:DP 不会成为通用 SQL 特性,但会成为数据分享场景的默认选项

3.2 为什么”DP-SQL”至今不是标准扩展

原因有三点:

  1. 敏感度分析依赖语义。SQL 标准里没有”每用户贡献上限”这类概念,必须在语法上加一层。不同库的扩展互不兼容。Google 的做法是在 SELECT 外层加 WITH ANONYMIZATION OPTIONS(...);Tumult 则在构建查询时传 KeySet 指定分组键。两者都走得通,但互不兼容。
  2. 预算是跨查询状态。传统 SQL 是无状态的(从优化器视角),DP 强迫引入”预算账本”这一持久状态,与大部分数据库的并发控制、事务语义冲突。一个简单的问题就能卡住:预算账本要不要进 WAL?主从切换后预算如何同步?
  3. 精度 vs 隐私是业务判断。不像加密那样可以默认开启——如果预算配错,查询结果会完全无用。因此 DP-SQL 要求 DBA / 分析师对业务有深入理解,不是一个纯技术特性。

另一个被低估的障碍是可解释性:当一个分析师看到 COUNT(*) = 1283、下一次同样查询看到 COUNT(*) = 1297,他的第一反应几乎肯定是”系统出 bug 了”。教用户理解”每次查询都是对真值的一个随机抽样”需要大量培训和 UI 设计——Tableau / Power BI 都还没有给出标准答案。

3.3 在 Postgres 上给聚合函数加 Laplace 噪声:最小 demo

本文提供一份最小 demo,在纯 Python + psycopg 上把 Postgres 的 COUNTSUMAVG 包一层 Laplace 噪声,演示一个最小的”中心 DP 代理”。代码放在 demo/dp_agg.py,README 见 demo/README.md

这里选择”应用层代理”而不是”Postgres 扩展”是有意的:

真正的 DP 扩展工作需要深入到 AggStatePerGroup 这类内部结构(作者注:这块实现细节以 PostgreSQL 16 源码为准,版本间差异明显),超出本 demo 范围。

核心逻辑节选:

import numpy as np
import psycopg

def laplace_noise(scale: float) -> float:
    return float(np.random.laplace(loc=0.0, scale=scale))

def dp_count(cur, table: str, where: str, epsilon: float) -> float:
    # COUNT 的全局敏感度为 1(按 add-remove 邻居定义)
    cur.execute(f"SELECT COUNT(*) FROM {table} WHERE {where}")
    (true_count,) = cur.fetchone()
    return true_count + laplace_noise(1.0 / epsilon)

def dp_sum(cur, table: str, column: str, where: str,
           lower: float, upper: float, epsilon: float) -> float:
    # SUM 的敏感度依赖 clip 区间 [lower, upper]
    bound = max(abs(lower), abs(upper))
    cur.execute(
        f"SELECT COALESCE(SUM(LEAST(GREATEST({column}, %s), %s)), 0) "
        f"FROM {table} WHERE {where}",
        (lower, upper),
    )
    (true_sum,) = cur.fetchone()
    return float(true_sum) + laplace_noise(bound / epsilon)

demo 的几个故意不完整之处:

即便如此,这份 50 行代码已经足以让读者动手试出”改 ε 会怎样改变结果误差”,对理解 DP 的开销量级很有帮助。

3.4 在真实项目里落地 DP 的步骤清单

给一份可执行的落地顺序:

  1. 先做威胁建模。明确要抵御的攻击者(内部分析师?外部订阅者?研究人员?),不同攻击者对 ε 的容忍度完全不同。
  2. 固定邻居定义。User-level DP 还是 Event-level DP?前者更强、更贵;后者更便宜但保护面更窄。做错会让整个预算账本失效。
  3. 盘点查询面。列出所有需要上 DP 的分析查询、它们的调用频率、对精度的需求,估算总预算。
  4. 选机制与工具。Tumult / OpenDP / 自研?有无 SQL 绑定需求?与现有数据平台(Spark、Snowflake、Trino)兼容?
  5. 做影子发布(Shadow Release)。DP 结果与原始结果并行跑 2~4 周,评估效用损失对下游业务的影响。
  6. 搭可观测性。DP 本身无法被传统监控捕捉,要在应用层加”预算已用 x%“、”今日查询拒绝数”、“Shadow 误差分布”等指标。
  7. 准备升级路径。DP 算法演进快(Rényi、zCDP、Gaussian DP),预算账本要抽象为可插拔的 accountant,便于未来替换。
  8. 沉淀合规文档。把威胁模型、邻居定义、预算分配策略、机制选择全部文档化,交付给法务 / 审计部门。这份文档是后续监管问询时的唯一依据。
  9. 定期复盘。每季度或每次数据 schema 变化后,重新评估敏感度推导是否仍然成立——新加的列、新引入的 JOIN 都可能偷偷改变敏感度边界。

上面每一步的顺序都有讲究:跳过威胁建模直接选工具,几乎必然导致返工;跳过 Shadow Release 直接生产,会让业务方对 DP 失去信任。作者见过的失败案例,80% 死在”技术可行但业务不能接受”。

3.5 与仓库其它文章的关系


四、开放问题与路线判断

4.1 研究侧

4.2 路线判断


五、小结

差分隐私给数据库界带来的不仅是一个新的加噪算法,而是一次查询语义的扩展:每次查询不再只返回数据,还消耗一份”隐私预算”。这是过去五十年 SQL 体系里少有的、源自信息论的”硬约束”。从 Dwork 2006 到人口普查 2020,这条路走了十四年;再到企业级的普及,可能还需要另一个十年。

把本文压成三条带走:

  1. DP 不是 k-anonymity 的加强版,而是完全不同的范式:保证的是”算法输出的分布对单条记录不敏感”,不是”身份被隐藏”。把它当成统计层面的”可证明机密性”更贴切。
  2. DP 数据库的演进有清晰的三代:PINQ 的原语化 → FLEX 的 SQL 化 → APEx 的精度驱动。现代系统(Tumult、OpenDP)是这三代思想的合流,加上 Rényi / zCDP 级别的预算会计。
  3. 落地 DP 是业务决策,不是技术决策。预算多大、邻居怎么定义、效用损失如何接受——这些问题的答案不在论文里,在业务场景里。一个没有”政策共识”做后盾的 DP 项目几乎注定失败。

下一篇 FHE、可搜索加密与 PIR 回到”加密计算”的另一条路:不再往结果里加噪,而是直接在密文上算。三篇文章合起来,覆盖了”数据库隐私”光谱的三个主要象限:TEE(硬件信任)、DP(统计保证)、FHE/PIR(纯密码学)。读者在做技术选型时,可以把这三轴画成一个三角,根据”是否信任硬件厂商”“是否允许聚合泄漏”“能承受多少性能开销”来投影到对应的工程方案。


参考文献

  1. Dwork C., McSherry F., Nissim K., Smith A. Calibrating Noise to Sensitivity in Private Data Analysis. TCC 2006.
  2. Dwork C. Differential Privacy. ICALP 2006.
  3. McSherry F. Privacy Integrated Queries: An Extensible Platform for Privacy-Preserving Data Analysis. SIGMOD 2009.
  4. Johnson N., Near J. P., Song D. Towards Practical Differential Privacy for SQL Queries. VLDB 2018.
  5. Ge C., He X., Machanavajjhala A., Tang P. APEx: Accuracy-Aware Differentially Private Data Exploration. SIGMOD 2018.
  6. Abadi M., et al. Deep Learning with Differential Privacy. CCS 2016.
  7. Mironov I. Rényi Differential Privacy. CSF 2017.
  8. Bun M., Steinke T. Concentrated Differential Privacy: Simplifications, Extensions, and Lower Bounds. TCC 2016.
  9. Abowd J. M., et al. The 2020 Census Disclosure Avoidance System TopDown Algorithm. Harvard Data Science Review, Special Issue 2 (2022).
  10. Narayanan A., Shmatikov V. Robust De-anonymization of Large Sparse Datasets. IEEE S&P 2008.
  11. OpenDP Project. OpenDP Library Documentation. https://docs.opendp.org/
  12. Google. Google Differential Privacy Library. https://github.com/google/differential-privacy
  13. Tumult Labs. Tumult Analytics Documentation. https://docs.tmlt.dev/analytics/

上一篇【数据库研究前沿】TEE 数据库与 Oblivious 原语:EnclaveDB 与加密计算

下一篇【数据库研究前沿】加密查询的边界:FHE、可搜索加密与 PIR

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。


By .