由于GitHub项目仅翻译到前5章,我们从第6章开始通过大语言模型翻译,并导出markdown格式。
大模型难免存在错漏,请读者指正。
教材原文地址:https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf
9 差分隐私与计算复杂度
到目前为止,我们对差分隐私的讨论忽略了计算复杂度问题,允许数据管理者和攻击者的计算能力不受限制。实际上,数据管理者和攻击者的计算能力可能都是受限的。
将我们自己限制在计算能力受限的数据管理者范围内,会限制数据管理者的操作,使得实现差分隐私变得更加困难。实际上,我们将展示一类计数查询的示例,在标准的复杂度理论假设下,即使已知低效算法,如SmallDB和私有乘法权重算法,也无法高效生成合成数据库。大致来说,数据库行是数字签名,使用数据管理者无法访问的密钥进行签名。直观地说,合成数据库中的任何一行要么是从原始数据库复制而来(违反隐私),要么必须是对新消息的签名,即伪造签名(违反数字签名方案的不可伪造性)。不幸的是,这种情况并不局限于基于数字签名的(可能是人为构造的)示例:即使创建一个能保持相对准确的双向边际的合成数据库也很困难。从积极的方面来看,给定一组 Q \mathcal{Q} Q查询和一个从全域 X \mathcal{X} X中抽取行的 n n n行数据库,可以在关于 n , ∣ X ∣ n,\left| \mathcal{X}\right| n,∣X∣和 ∣ Q ∣ \left| \mathcal{Q}\right| ∣Q∣的多项式时间内生成一个合成数据库。
如果我们放弃合成数据库的目标,满足于一种数据结构,从中我们可以获得每个查询答案的相对准确近似值,那么情况会有趣得多。事实证明,这个问题与追踪叛徒问题密切相关,在追踪叛徒问题中,目标是在向付费客户分发数字内容的同时阻止盗版。
如果对手被限制在多项式时间内,那么实现差分隐私就会变得更容易。事实上,安全函数评估这一极其强大的概念提供了一种自然的方法来避免使用可信的数据管理者(同时比随机响应方法具有更高的准确性),也提供了一种自然的方法来允许多个出于法律原因不能共享其数据集的可信数据管理者,对实际上是合并后的数据集进行查询响应。简而言之,安全函数评估是一种密码学原语,它允许一组 n n n 个参与方 p 1 , p 2 , … , p n {p}_{1},{p}_{2},\ldots ,{p}_{n} p1,p2,…,pn (其中故障参与方的比例小于某个固定分数,该分数根据故障类型而异;对于“诚实但好奇”的故障,该分数为 1)合作计算任何函数 f ( x 1 , … , x n ) f\left( {{x}_{1},\ldots ,{x}_{n}}\right) f(x1,…,xn) ,其中 x i {x}_{i} xi 是参与方 p i {p}_{i} pi 的输入或值,以这样一种方式进行计算,即任何故障参与方联盟都无法破坏计算过程,也无法了解非故障参与方的值,除非这些值可以从函数输出和联盟成员的值中推导出来。这两个属性传统上被称为正确性和隐私性。这种隐私概念,我们称之为安全函数评估隐私(SFE 隐私),与差分隐私有很大不同。设 V V V 是故障参与方持有的值的集合,设 p i {p}_{i} pi 是一个非故障参与方。如果 x i {x}_{i} xi 可以从 V ∪ { f ( x 1 , … , x n ) } V \cup \left\{ {f\left( {{x}_{1},\ldots ,{x}_{n}}\right) }\right\} V∪{f(x1,…,xn)} 中推导出来,SFE 隐私允许故障参与方了解 x i {x}_{i} xi ;因此,差分隐私不允许精确发布 f ( x 1 , … , x n ) f\left( {{x}_{1},\ldots ,{x}_{n}}\right) f(x1,…,xn) 。然而,用于计算函数 f f f 的安全函数评估协议可以很容易地修改为 f f f 的差分隐私协议,只需定义一个新函数 g g g ,它是在 f f f 的值上添加拉普拉斯噪声 Lap ( Δ f / ε ) \operatorname{Lap}\left( {{\Delta f}/\varepsilon }\right) Lap(Δf/ε) 的结果。原则上,安全函数评估允许对 g g g 进行评估。由于 g g g 是差分隐私的,并且将 SFE 隐私属性应用于 g g g 时表明,除了从 g ( x 1 , … , x n ) g\left( {{x}_{1},\ldots ,{x}_{n}}\right) g(x1,…,xn) 的值和 V V V 中可以了解到的信息之外,无法了解到关于输入的任何其他信息,因此,只要故障参与者被限制在多项式时间内,就可以确保差分隐私。因此,安全函数评估允许在不使用可信数据管理者的情况下实现差分隐私的计算概念,并且与使用可信数据管理者时所能达到的准确性相比没有损失。特别是,在确保计算差分隐私的同时,可以以恒定的预期误差回答计数查询,而无需可信数据管理者。我们将看到,在不使用密码学的情况下,误差必须为 Ω ( n 1 / 2 ) \Omega \left( {n}^{1/2}\right) Ω(n1/2) ,这证明了在多方情况下,计算假设确实可以提高准确性。
1 {}^{1} 1 回想一下,双向边际是指对于每一对属性值,数据库中具有该属性值对的行数的计数。
2 {}^{2} 2 在“诚实但好奇”的情况下,我们可以为任何参与方 P j {P}_{j} Pj 设定 V = { x j } V = \left\{ {x}_{j}\right\} V={xj} 。
9.1 多项式时间的数据管理者
在本节中,我们表明,在标准的密码学假设下,要创建一个合成数据库,使其能够对适当选择的一类计数查询给出准确答案,同时确保哪怕是最基本的隐私概念,在计算上也是困难的。
这一结果有几个扩展;例如,查询集较小(但数据域仍然很大)的情况,以及数据域较小(但查询集很大)的情况。此外,对于某些自然的查询族,如对应于合取的查询族,也得到了类似的负面结果。
我们将使用“合成(syntheticize)”这一术语来表示以保护隐私的方式生成合成数据库的过程 3 {}^{3} 3。因此,本节的结果涉及合成过程的计算难度。我们所定义的隐私概念将远弱于差分隐私,因此合成的难度意味着以差分隐私的方式生成合成数据库也具有难度。具体而言,如果即使避免完整泄露输入项都很困难,我们就称合成是困难的。也就是说,总会有某些项完全暴露。
3 {}^{3} 3 在第6节中,合成器的输入是一个概要;这里我们从一个数据库开始,它是一个简单的概要。
请注意,如果相反,泄露少量输入项不被视为隐私泄露,那么通过发布输入项的一个随机子集就可以轻松实现合成。这个“合成数据库”的实用性来自采样边界:在很大概率上,即使对于大量计数查询,这个子集也能保留实用性。
在引入复杂性假设时,我们需要一个安全参数来表示大小;例如,集合的大小、消息的长度、解密密钥的比特数等等,以及表示计算难度。安全参数用 κ \kappa κ表示,代表“合理”的大小和工作量。例如,假设对一个大小为安全参数的(任意固定)多项式的集合进行穷举搜索是可行的。
计算复杂性是一个渐近概念——我们关注的是随着对象(数据全域、数据库、查询族)的大小增长,任务的难度如何增加。因此,例如,我们不仅需要考虑单一大小数据库的分布(在本专著的其余部分我们称之为 n n n),还需要考虑由安全参数索引的分布族。与此相关,当我们引入复杂性时,我们倾向于“弱化”断言:伪造签名并非不可能——也许会有运气!相反,我们假设没有高效算法能以不可忽略的概率成功,其中“高效”和“不可忽略”是根据安全参数定义的。在我们的直观讨论中,我们将忽略这些细节,但在正式的定理陈述中会保留它们。
非正式地说,如果对于任何高效的(所谓的)合成器,从该分布中抽取的数据库在很大概率上,至少有一个数据库项可以从所谓的合成器的输出中提取出来,那么数据库的一个分布就很难合成(相对于某个查询族 Q \mathcal{Q} Q)。当然,为了避免平凡情况,我们还要求当这个泄露的项从输入数据库中排除(例如,用一个随机的不同项替换)时,它能从输出中提取出来的概率非常小。这意味着任何高效的(所谓的)合成器确实在很强的意义上损害了输入项的隐私。
下面的定义9.1将形式化我们对合成器的实用性要求。有三个参数: α \alpha α描述了准确性要求(在 α \alpha α范围内被认为是准确的); γ \gamma γ描述了成功合成允许不准确的查询比例, β \beta β将是失败的概率。
对于一个产生合成数据库的算法 A A A,如果对于 1 − γ 1 - \gamma 1−γ比例的查询 q ∈ Q q \in \mathcal{Q} q∈Q有 ∣ q ( A ( x ) ) − q ( x ) ∣ ≤ α \left| {q\left( {A\left( x\right) }\right) - q\left( x\right) }\right| \leq \alpha ∣q(A(x))−q(x)∣≤α,我们就说输出 A ( x ) A\left( x\right) A(x)对于查询集 Q \mathcal{Q} Q是 ( α , γ ) \left( {\alpha ,\gamma }\right) (α,γ) - 准确的。
定义9.1 ( ( α , β , γ ) -Utility ) \left( {\left( {\alpha ,\beta ,\gamma }\right) \text{-Utility}}\right) ((α,β,γ)-Utility)。设 Q \mathcal{Q} Q是一个查询集, X \mathcal{X} X是一个数据全域。如果对于任何 n n n项数据库 x x x,合成器 A A A对于 Q \mathcal{Q} Q和 X \mathcal{X} X具有 ( α , β , γ ) \left( {\alpha ,\beta ,\gamma }\right) (α,β,γ) - 实用性:
Pr [ A ( x ) is ( α , γ ) -accurate for Q ] ≥ 1 − β \Pr \left\lbrack {A\left( x\right) \text{ is }\left( {\alpha ,\gamma }\right) \text{-accurate for }\mathcal{Q}}\right\rbrack \geq 1 - \beta Pr[A(x) is (α,γ)-accurate for Q]≥1−β
其中概率是基于 A A A的随机选择。
设 Q = { Q n } n = 1 , 2 , … \mathcal{Q} = {\left\{ {\mathcal{Q}}_{n}\right\} }_{n = 1,2,\ldots } Q={Qn}n=1,2,…为查询族集合, X = { X n } n = 1 , 2 , … \mathcal{X} = {\left\{ {\mathcal{X}}_{n}\right\} }_{n = 1,2,\ldots } X={Xn}n=1,2,…为数据全域集合。若一个算法的运行时间为关于 ( n , log ( ∣ Q n ∣ ) , log ( ∣ X n ∣ ) ) \left( {n,\log \left( \left| {\mathcal{Q}}_{n}\right| \right) ,\log \left( \left| {\mathcal{X}}_{n}\right| \right) }\right) (n,log(∣Qn∣),log(∣Xn∣))的多项式,则称该算法是高效的。
在接下来的定义中,我们将描述一族分布难以合成意味着什么。更具体地说,我们将说明生成提供 ( α , γ ) \left( {\alpha ,\gamma }\right) (α,γ) - 精度的合成数据库困难意味着什么。和往常一样,我们必须将其表述为一个渐近性陈述。
定义9.2( ( ( μ , α , β , γ , Q ) (\left( {\mu ,\alpha ,\beta ,\gamma ,\mathcal{Q}}\right) ((μ,α,β,γ,Q) - 难以合成的数据库分布)。设 Q = { Q n } n = 1 , 2 , … \mathcal{Q} = {\left\{ {\mathcal{Q}}_{n}\right\} }_{n = 1,2,\ldots } Q={Qn}n=1,2,…为查询族集合, X = \mathcal{X} = X= { X n } n = 1 , 2 , … {\left\{ {\mathcal{X}}_{n}\right\} }_{n = 1,2,\ldots } {Xn}n=1,2,…为数据全域集合,且设 μ , α , β , γ ∈ [ 0 , 1 ] \mu ,\alpha ,\beta ,\gamma \in \left\lbrack {0,1}\right\rbrack μ,α,β,γ∈[0,1]。设 n n n为数据库大小, D \mathcal{D} D为分布集合,其中 D n {\mathcal{D}}_{n} Dn是关于从 X n {X}_{n} Xn中选取的 n + 1 n + 1 n+1个项的集合。
我们用 ( x , i , x i ′ ) ∼ D n \left( {x,i,{x}_{i}^{\prime }}\right) \sim {\mathcal{D}}_{n} (x,i,xi′)∼Dn表示这样一个实验:选择一个 n n n - 元素数据库,从 [ n ] \left\lbrack n\right\rbrack [n]中均匀选取一个索引 i i i,并从 X n {\mathcal{X}}_{n} Xn中选取一个额外元素 x i ′ {x}_{i}^{\prime } xi′。从 D n {\mathcal{D}}_{n} Dn中抽取的一个样本会得到一对数据库: x x x以及将 x x x的第 i i i个元素(在规范排序下)替换为 x i ′ {x}_{i}^{\prime } xi′后的结果。因此,我们认为 D n {\mathcal{D}}_{n} Dn指定了一个关于 n n n - 项数据库(及其相邻数据库)的分布。
我们称 D \mathcal{D} D是 ( μ , α , β , γ , Q ) \left( {\mu ,\alpha ,\beta ,\gamma ,\mathcal{Q}}\right) (μ,α,β,γ,Q) - 难以合成的,如果存在一个高效算法 T T T,使得对于任何所谓的高效合成器 A A A,以下两个条件成立:
- 在数据库 x ∼ D x \sim \mathcal{D} x∼D 的选择以及 A A A 和 T T T 的随机硬币抛掷结果上,以概率 1 − μ 1 - \mu 1−μ 而言,如果 A ( x ) A\left( x\right) A(x) 对 1 − γ 1 - \gamma 1−γ 比例的查询保持 α \alpha α -效用,那么 T T T 可以从 A ( x ) A\left( x\right) A(x) 中恢复 x x x 的某一行:
概率
( x , i , x i ′ ) ∼ D n \left( {x,i,{x}_{i}^{\prime }}\right) \sim {D}_{n} (x,i,xi′)∼Dn
A , T A,T A,T 的硬币抛掷结果
[ ( A ( x ) maintains ( α , β , γ ) -utility ) and ( x ∩ T ( A ( x ) ) = ∅ ) ] ≤ μ \left\lbrack {\left( {A\left( x\right) \text{ maintains }\left( {\alpha ,\beta ,\gamma }\right) \text{-utility}}\right) \text{ and }\left( {x \cap T\left( {A\left( x\right) }\right) = \varnothing }\right) }\right\rbrack \leq \mu [(A(x) maintains (α,β,γ)-utility) and (x∩T(A(x))=∅)]≤μ
- 对于每一个高效算法 A A A,以及每一个 i ∈ [ n ] i \in \left\lbrack n\right\rbrack i∈[n],如果我们从 D D D 中抽取 ( x , i , x i ′ ) \left( {x,i,{x}_{i}^{\prime }}\right) (x,i,xi′),并将 x i {x}_{i} xi 替换为 x i ′ {x}_{i}^{\prime } xi′ 以形成 x ′ , T {x}^{\prime },T x′,T,那么除了以极小的概率外,无法从 A ( x ′ ) A\left( {x}^{\prime }\right) A(x′) 中提取 x i {x}_{i} xi:
Pr ( x , i , x i ′ ) ∼ D n [ x i ∈ T ( A ( x ′ ) ) ] ≤ μ . coin flips of A , T \begin{array}{l} \;\mathop{\Pr }\limits_{{\left( {x,i,{x}_{i}^{\prime }}\right) \sim {D}_{n}}}\left\lbrack {{x}_{i} \in T\left( {A\left( {x}^{\prime }\right) }\right) }\right\rbrack \leq \mu . \\ \text{ coin flips of }A,T \\ \end{array} (x,i,xi′)∼DnPr[xi∈T(A(x′))]≤μ. coin flips of A,T
稍后,我们将关注能生成任意概要(不一定是合成数据库)的离线机制。在这种情况下,我们将关注难以清理(而非难以合成)的相关概念,为此我们只需去掉 A A A 生成合成数据库这一要求。
9.2 一些难以合成的分布
我们现在构造三种难以合成的分布。
一个签名方案由三元组(可能是随机化的)算法(Gen、Sign、Verify)给出:
-
Gen: 1 N → { ( S K , V K ) n } n = 1 , 2 , … {1}^{\mathbb{N}} \rightarrow {\left\{ {\left( \mathrm{{SK}},\mathrm{{VK}}\right) }_{n}\right\} }_{n = 1,2,\ldots } 1N→{(SK,VK)n}n=1,2,… 用于生成一个由(秘密)签名密钥和(公开)验证密钥组成的对。它仅以一元形式表示的安全参数 κ ∈ N \kappa \in \mathbb{N} κ∈N 作为输入,并生成一个从 ( S K , V K ) κ {\left( \mathrm{{SK}},\mathrm{{VK}}\right) }_{\kappa } (SK,VK)κ 中抽取的对, ( S K , V K ) κ {\left( \mathrm{{SK}},\mathrm{{VK}}\right) }_{\kappa } (SK,VK)κ 是由 κ \kappa κ 索引的(签名、验证)密钥对的分布;我们分别用 p s ( κ ) , p v ( κ ) , ℓ s ( κ ) {p}_{s}\left( \kappa \right) ,{p}_{v}\left( \kappa \right) ,\ell s\left( \kappa \right) ps(κ),pv(κ),ℓs(κ) 表示签名密钥、验证密钥和签名的长度。
-
Sign: S K κ × { 0 , 1 } ℓ ( κ ) → { 0 , 1 } ℓ s ( κ ) {\mathrm{{SK}}}_{\kappa } \times \{ 0,1{\} }^{\ell \left( \kappa \right) } \rightarrow \{ 0,1{\} }^{\ell s\left( \kappa \right) } SKκ×{0,1}ℓ(κ)→{0,1}ℓs(κ) 以从 ( S K , V K ) κ {\left( \mathrm{{SK}},\mathrm{{VK}}\right) }_{\kappa } (SK,VK)κ 中抽取的密钥对中的签名密钥和长度为 ℓ ( κ ) \ell \left( \kappa \right) ℓ(κ) 的消息 m m m 作为输入,并生成 m m m 的签名;
-
Verify: V K κ × { 0 , 1 } ∗ × { 0 , 1 } ℓ ( κ ) → { 0 , 1 } {\mathrm{{VK}}}_{\kappa } \times \{ 0,1{\} }^{ * } \times \{ 0,1{\} }^{\ell \left( \kappa \right) } \rightarrow \{ 0,1\} VKκ×{0,1}∗×{0,1}ℓ(κ)→{0,1} 以验证密钥、字符串 σ \sigma σ 和长度为 ℓ ( κ ) \ell \left( \kappa \right) ℓ(κ) 的消息 m m m 作为输入,并检查 σ \sigma σ 是否确实是在给定验证密钥下 m m m 的有效签名。
密钥、消息长度和签名长度在 κ \kappa κ 上均为多项式。
所需的安全性概念是,给定任意多项式(关于 κ \kappa κ)数量的有效(消息,签名)对,伪造任何新的签名是困难的,即使是对先前已签名消息的新签名(请回想一下,签名算法可能是随机化的,因此在相同的签名密钥下,同一消息可能存在多个有效签名)。这样的签名方案可以从任何单向函数构造出来。通俗地说,单向函数是易于计算的函数—— f ( x ) f\left( x\right) f(x) 可以在关于 x x x 的长度(比特数)的多项式时间内计算出来,但难以求逆:对于每个概率多项式时间算法,在安全参数 κ \kappa κ 的多项式时间内运行,在 f f f 的定义域中随机选择 x x x 时,找到 f ( x ) f\left( x\right) f(x) 的任何有效原像的概率,增长速度比 κ \kappa κ 的任何多项式的倒数都慢。
难以合成分布 I:固定一个任意的签名方案。计数查询集合 Q κ {\mathcal{Q}}_{\kappa } Qκ 为每个验证密钥 v k ∈ V K κ {vk} \in {\mathrm{{VK}}}_{\kappa } vk∈VKκ 包含一个计数查询 q v k {q}_{vk} qvk。数据全域 X κ {\mathcal{X}}_{\kappa } Xκ 由所有可能的(消息,签名)对组成,这些对的形式是使用 V K κ {\mathrm{{VK}}}_{\kappa } VKκ 中的密钥对长度为 ℓ ( κ ) \ell \left( \kappa \right) ℓ(κ) 的消息进行签名得到的。
数据库上的分布 D κ {\mathcal{D}}_{\kappa } Dκ 由以下采样过程定义。运行签名方案生成器 Gen ( 1 κ ) \operatorname{Gen}\left( {1}^{\kappa }\right) Gen(1κ) 以获得(私钥,公钥)。在 { 0 , 1 } ℓ ( κ ) \{ 0,1{\} }^{\ell \left( \kappa \right) } {0,1}ℓ(κ) 中随机选择 n = κ n = \kappa n=κ 条消息,并对每条消息运行签名过程,得到一组由密钥 s k {sk} sk 签名的 n n n 个(消息,签名)对。这就是数据库 x x x。请注意,数据库中的所有消息都使用相同的签名密钥进行签名。
数据全域项 ( m , σ ) \left( {m,\sigma }\right) (m,σ) 满足谓词 q v k {q}_{vk} qvk 当且仅当 Verify ( v k , m , σ ) = 1 \operatorname{Verify}\left( {{vk},m,\sigma }\right) = 1 Verify(vk,m,σ)=1,即根据验证密钥 v k {vk} vk, σ \sigma σ 是 m m m 的有效签名。
设 x ∈ R D κ x{ \in }_{R}{\mathcal{D}}_{\kappa } x∈RDκ 为一个数据库,设 s k {sk} sk 为所使用的签名密钥,对应的验证密钥为 v k {vk} vk。假设合成器生成了 y y y,那么 y y y 的几乎所有行在 v k {vk} vk 下都必须是有效签名(因为查询 v k {vk} vk 中 x x x 的分数计数为 1)。根据签名方案的不可伪造性,所有这些签名都必须来自输入数据库 x − x - x−,因为多项式时间受限的管理者在时间 poly ( κ ) \left( \kappa \right) (κ) 内无法生成新的有效(消息,签名)对。更正式地(只是稍微更正式),一个高效算法能够生成一个可以用密钥 v k {vk} vk 验证但不在 x x x 中的(消息,签名)对的概率是可以忽略不计的,因此,一个高效合成器生成的任何 y y y 极有可能只包含 x 4 3 x\frac{4}{3} x34 的行。这与(任何合理的)隐私概念相矛盾。
在这种构造中, Q κ {\mathcal{Q}}_{\kappa } Qκ(验证密钥集合)和 X κ {\mathcal{X}}_{\kappa } Xκ((消息,签名)对集合)都很大(相对于 κ \kappa κ是超多项式的)。当这两个集合都较小时,就可以高效地进行合成数据集的差分隐私生成。也就是说,存在一个差分隐私合成器,其运行时间相对于 n = κ , ∣ Q κ ∣ n = \kappa ,\left| {\mathcal{Q}}_{\kappa }\right| n=κ,∣Qκ∣和 ∣ X κ ∣ \left| {\mathcal{X}}_{\kappa }\right| ∣Xκ∣是多项式的:使用拉普拉斯机制计算带噪声的计数以获得概要,然后运行第6节中的合成器。因此,当这两个集合的大小相对于 κ \kappa κ是多项式时,合成器的运行时间相对于 κ \kappa κ也是多项式的。
我们现在简要讨论将第一个困难性结果推广到其中一个集合较小(但另一个仍然很大)的情况。
难以合成的分布II:在上述数据库分布中,我们选择了一个单一的(sk,vk)密钥对,并生成了一个消息数据库,所有消息都使用 s k {sk} sk进行签名;通过要求合成器在 s k {sk} sk下生成一个新签名,使得合成后的数据库能够为查询 q v k {q}_{vk} qvk提供准确答案,从而得到了困难性。为了在查询集合的大小仅相对于安全参数是多项式时获得合成的困难性,我们再次使用数字签名,用唯一的密钥进行签名,但我们无法为每个可能的验证密钥 v k {vk} vk设置一个查询,因为这些密钥数量太多。
4 {}^{4} 4量化顺序很重要,否则合成器可能会将签名密钥硬编码进去。我们首先固定合成器,然后运行生成器并构建数据库。概率是基于实验中的所有随机性:密钥对的选择、数据库的构建以及合成器使用的随机性。
为了解决这个问题,我们做了两个改变:
-
数据库行现在的形式为(验证密钥, 消息, 签名)。更准确地说,数据全域由(key,message,signature)三元组 X = { ( v k , m , s ) : v k ∈ V K κ , m ∈ \mathcal{X} = \left\{ {\left( {{vk},m,s}\right) : {vk} \in {\mathrm{{VK}}}_{\kappa },m \in }\right. X={(vk,m,s):vk∈VKκ,m∈ { 0 , 1 } ℓ ( κ ) , s ∈ { 0 , 1 } ℓ s ( κ ) } \{ 0,1{\} }^{\ell \left( \kappa \right) },s \in \{ 0,1{\} }^{\ell s\left( \kappa \right) }\} {0,1}ℓ(κ),s∈{0,1}ℓs(κ)}组成。
-
我们向查询类中精确添加 2 p v ( κ ) 2{p}_{v}\left( \kappa \right) 2pv(κ)个查询,其中 p v ( κ ) {p}_{v}\left( \kappa \right) pv(κ)是运行生成算法 Gen ( 1 κ ) \operatorname{Gen}\left( {1}^{\kappa }\right) Gen(1κ)产生的验证密钥的长度。查询的形式为(i,b),其中 1 ≤ i ≤ p v ( κ ) 1 \leq i \leq {p}_{v}\left( \kappa \right) 1≤i≤pv(κ)且 b ∈ { 0 , 1 } b \in \{ 0,1\} b∈{0,1}。查询“(i,b)”的含义是,“数据库行中形式为(vk,m,s)且 Verify ( v k , m , s ) = 1 \operatorname{Verify}\left( {{vk},m,s}\right) = 1 Verify(vk,m,s)=1并且 v k {vk} vk的第 i i i位是 b b b的行所占的比例是多少?” 通过用根据单个密钥 v k {vk} vk签名的消息填充数据库,我们确保当 v k i = b v{k}_{i} = b vki=b时,对于所有 1 ≤ i ≤ p ( κ ) 1 \leq i \leq p\left( \kappa \right) 1≤i≤p(κ),这些查询的响应应该接近1,而当 v k i = 1 − b v{k}_{i} = 1 - b vki=1−b时,应该接近0。
考虑到这一点,数据库上难以合成的分布是通过以下采样过程构建的:生成一个签名 - 验证密钥对 ( s k , v k ) ← Gen ( 1 κ ) \left( {{sk},{vk}}\right) \leftarrow \operatorname{Gen}\left( {1}^{\kappa }\right) (sk,vk)←Gen(1κ),并从 { 0 , 1 } ℓ ( κ ) \{ 0,1{\} }^{\ell \left( \kappa \right) } {0,1}ℓ(κ)中均匀选择 n = κ n = \kappa n=κ条消息 m 1 , … , m n {m}_{1},\ldots ,{m}_{n} m1,…,mn。数据库 x x x将有 n n n行;对于 j ∈ [ n ] j \in \left\lbrack n\right\rbrack j∈[n],第 j j j行是验证密钥、第 j j j条消息及其有效签名,即元组 ( v k , m j , Sign ( m j , s k ) ) \left( {{vk},{m}_{j},\operatorname{Sign}\left( {{m}_{j},{sk}}\right) }\right) (vk,mj,Sign(mj,sk))。接下来,从 [ n ] \left\lbrack n\right\rbrack [n]中均匀选择 i i i。为了生成第 ( n + 1 ) \left( {n + 1}\right) (n+1)项 x i ′ {x}_{i}^{\prime } xi′,只需生成一个新的消息 - 签名对(使用相同的密钥 s k {sk} sk)。
难以合成的分布III:为了证明多项式(关于 κ \kappa κ)大小的消息空间(但超多项式大小的查询集)情况下的难度,我们使用伪随机函数。粗略地说,这些是具有简短描述的多项式时间可计算函数,仅根据其输入 - 输出行为,无法有效地将它们与真正的随机函数(其描述很长)区分开来。只有当我们坚持为所有查询保持实用性时,这个结果才表明合成的难度。实际上,如果我们只关心确保平均实用性,那么第6节中描述的计数查询的基本生成器在全域 X \mathcal{X} X是多项式大小时,即使 Q \mathcal{Q} Q是指数大的,也能产生一种有效的合成算法。
设 { f s } s ∈ { 0 , 1 } κ {\left\{ {f}_{s}\right\} }_{s \in \{ 0,1{\} }^{\kappa }} {fs}s∈{0,1}κ是一个从 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ]到 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ]的伪随机函数族,其中 ℓ ∈ poly ( κ ) \ell \in \operatorname{poly}\left( \kappa \right) ℓ∈poly(κ)。更具体地说,我们需要 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ]中所有元素对的集合“小”,但大于 κ \kappa κ;这样,描述该函数族中一个函数的 κ \kappa κ位字符串比描述一个将 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ]映射到 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ]的随机函数所需的 ℓ log 2 ℓ \ell {\log }_{2}\ell ℓlog2ℓ位要短。这样的伪随机函数族可以从任何单向函数构造出来。
我们的数据全域将是 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ]中所有元素对的集合: X = { ( a , b ) : a , b ∈ [ ℓ ] } . Q κ \mathcal{X} = \{ \left( {a,b}\right) : a,b \in \left\lbrack \ell \right\rbrack \} .{\mathcal{Q}}_{\kappa } X={(a,b):a,b∈[ℓ]}.Qκ将包含两种类型的查询:
-
对于该函数族中的每个函数 { f s } s ∈ { 0 , 1 } κ {\left\{ {f}_{s}\right\} }_{s \in \{ 0,1{\} }^{\kappa }} {fs}s∈{0,1}κ,都会有一个查询。全域元素 ( a , b ) ∈ X \left( {a,b}\right) \in \mathcal{X} (a,b)∈X满足查询 s s s当且仅当 f s ( a ) = b {f}_{s}\left( a\right) = b fs(a)=b。
-
将有相对较少数量(比如 κ \kappa κ)的真正随机查询。这样的查询可以通过为每个 ( a , b ) ∈ X \left( {a,b}\right) \in \mathcal{X} (a,b)∈X随机选择(a,b)是否满足该查询来构造。
难以合成的分布生成方式如下。首先,我们随机选择一个字符串 s ∈ { 0 , 1 } κ s \in \{ 0,1{\} }^{\kappa } s∈{0,1}κ,它指定了我们函数族中的一个函数。接下来,对于从 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ] 中无放回随机选取的 n = κ n = \kappa n=κ 个不同值 a 1 , … , a n {a}_{1},\ldots ,{a}_{n} a1,…,an,我们生成宇宙元素 ( a , f s ( a ) ) \left( {a,{f}_{s}\left( a\right) }\right) (a,fs(a))。
其直觉很简单,仅依赖于第一种类型的查询,并且不利用 a i {a}_{i} ai 的独特性。给定一个根据我们的分布生成的数据库 x x x,其中伪随机函数由 s s s 给出,合成器必须创建一个合成数据库,(几乎)其所有行都必须满足查询 s s s。直觉是它无法可靠地找到不出现在 x x x 中的输入 - 输出对。更准确地说,对于任意元素 a ∈ [ ℓ ] a \in \left\lbrack \ell \right\rbrack a∈[ℓ],使得 x x x 中没有形式为 ( a , f s ( a ) ) \left( {a,{f}_{s}\left( a\right) }\right) (a,fs(a)) 的行, f s {f}_{s} fs 的伪随机性表明,一个高效的合成器找到 f s ( a ) {f}_{s}\left( a\right) fs(a) 的概率最多只比 1 / ℓ 1/\ell 1/ℓ 略大一点。从这个意义上说,伪随机性给我们带来的性质与我们从数字签名中获得的性质类似,尽管稍弱一些。
当然,对于任何给定的 a ∈ [ ℓ ] a \in \left\lbrack \ell \right\rbrack a∈[ℓ],合成器确实可以以概率 1 / ℓ 1/\ell 1/ℓ 猜出值 f s ( a ) {f}_{s}\left( a\right) fs(a),因此如果没有第二种类型的查询,显然没有什么能阻止它忽略 x x x,选择任意的 a a a,并输出一个包含 n n n 个 (a, b) 副本的数据库,其中 b b b 是从 [ ℓ ] \left\lbrack \ell \right\rbrack [ℓ] 中均匀随机选取的。现在的直觉是,这样的合成数据库会给出错误的比例 - 要么是零,要么是一,而真正随机查询的正确答案应该约为 1 / 2 − 1/2 - 1/2−。
形式上,我们有:
定理 9.1。设 f : { 0 , 1 } κ → { 0 , 1 } κ f : \{ 0,1{\} }^{\kappa } \rightarrow \{ 0,1{\} }^{\kappa } f:{0,1}κ→{0,1}κ 是一个单向函数。对于每个 a > 0 a > 0 a>0,以及每个整数 n = poly ( κ ) n = \operatorname{poly}\left( \kappa \right) n=poly(κ),存在一个大小为 exp ( poly ( κ ) ) \exp \left( {\operatorname{poly}\left( \kappa \right) }\right) exp(poly(κ)) 的查询族 Q \mathcal{Q} Q、一个大小为 O ( n 2 + 2 a ) O\left( {n}^{2 + {2a}}\right) O(n2+2a) 的数据宇宙 X \mathcal{X} X,以及一个大小为 n n n 的数据库上的分布,该分布对于 α ≤ \alpha \leq α≤ 1 / 3 , β ≤ 1 / 10 1/3,\beta \leq 1/{10} 1/3,β≤1/10 和 μ = 1 / 40 n 1 + a \mu = 1/{40}{n}^{1 + a} μ=1/40n1+a 是 ( μ , α , β , 0 , Q ) \left( {\mu ,\alpha ,\beta ,0,\mathcal{Q}}\right) (μ,α,β,0,Q) - 难以合成的(即,对于最坏情况的查询难以合成)。
上述定理表明了使用合成数据进行数据清理的难度。然而,请注意,当查询集较小时,人们总是可以简单地为每个查询发布带噪声的计数。我们得出结论,对于小查询类(具有大数据宇宙)进行数据清理是一项将高效合成与高效概要生成(具有任意输出的数据清理)区分开来的任务。
9.2.1 一般概要的难度结果
上一节的难度结果仅适用于合成器——创建合成数据库的离线机制。更通用形式的隐私保护离线机制(我们一直称之为离线查询发布机制或概要生成器)的难度与叛徒追踪方案的存在之间存在着紧密的联系。叛徒追踪方案是一种内容分发方法,在该方法中,(短)密钥字符串以某种方式分发给订阅者,使得发送者可以广播加密消息,任何订阅者都可以解密这些消息,并且由恶意订阅者联盟构建的任何有用的“盗版”解码器都可以追溯到至少一个合谋者。
一个(私钥、无状态)叛徒追踪方案由算法设置(Setup)、加密(Encrypt)、解密(Decrypt)和追踪(Trace)组成。设置算法为广播者生成一个密钥 b k {bk} bk和 N N N个订阅者密钥 k 1 , … , k N {k}_{1},\ldots ,{k}_{N} k1,…,kN。加密算法使用广播者的密钥 b k {bk} bk对给定的比特进行加密。解密算法使用任何一个订阅者密钥对给定的密文进行解密。追踪算法获取密钥 b k {bk} bk并以预言机方式访问一个(盗版、无状态)解密盒,然后输出用于创建盗版盒的密钥 k i {k}_{i} ki的索引 i ∈ { 1 , … , N } i \in \{ 1,\ldots ,N\} i∈{1,…,N}。
叛徒追踪方案的一个重要参数是其抗合谋性:如果只要用于创建盗版解码器的密钥不超过 t t t个,追踪就保证有效,那么该方案就是 t t t - 抗合谋的。当 t = N t = N t=N时,即使所有订阅者联合起来试图创建一个盗版解码器,追踪仍然有效。下面是一个更完整的定义。
定义9.3。如上所述的方案(设置、加密、解密、追踪)是一个t - 抗合谋叛徒追踪方案,如果(i)它生成的密文是语义安全的(粗略地说,多项式时间算法无法区分0的加密和1的加密),并且(ii)没有多项式时间敌手 A A A能以不可忽略的概率(在设置、 A A A和追踪的随机硬币上)在以下游戏中“获胜”:
A A A接收用户数量 N N N和一个安全参数 κ \kappa κ,并(自适应地)请求最多 t t t个用户 { i 1 , … , i t } \left\{ {{i}_{1},\ldots ,{i}_{t}}\right\} {i1,…,it}的密钥。然后敌手输出一个盗版解码器Dec。使用密钥 b k {bk} bk并以黑盒方式 5 {}^{5} 5访问Dec来运行追踪算法;它输出一个用户的名称 i ∈ [ N ] i \in \left\lbrack N\right\rbrack i∈[N]或错误符号 ⊥ \bot ⊥。我们说敌手 A A A“获胜”,如果Dec在解密密文方面有不可忽略的优势(甚至比创建一个可用的盗版解密设备的条件更弱),并且追踪的输出不在 { i 1 , … , i t } \left\{ {{i}_{1},\ldots ,{i}_{t}}\right\} {i1,…,it}中,这意味着敌手避免了被检测。
5 {}^{5} 5以黑盒方式访问一个算法意味着无法访问该算法的内部结构;只能向算法提供输入并观察其输出。
叛徒追踪方案为何意味着计数查询发布存在难度结果的直观解释如下。固定一个叛徒追踪方案。我们必须描述那些查询发布在计算上困难的数据库和计数查询。
对于任何给定的 n = κ n = \kappa n=κ,数据库 x ∈ { { 0 , 1 } d } n x \in {\left\{ \{ 0,1{\} }^{d}\right\} }^{n} x∈{{0,1}d}n将包含来自 n n n个合谋用户的叛逆者追踪方案的用户密钥;这里 d d d是在输入 1 κ {1}^{\kappa } 1κ上运行设置算法时获得的解密密钥的长度。查询族 Q κ {\mathcal{Q}}_{\kappa } Qκ将针对每个可能的密文 c c c有一个查询 q c {q}_{c} qc,询问“对于多少比例的行 i ∈ [ n ] i \in \left\lbrack n\right\rbrack i∈[n],密文 c c c在第 i i i行的密钥下解密为1?” 请注意,由于每个用户都可以解密,如果发送者分发比特1的加密 c c c,答案将是1:所有行都将 c c c解密为1,因此这样的行的比例为1。相反,如果发送者分发比特0的加密 c ′ {c}^{\prime } c′,答案将是0:因为没有行将 c ′ {c}^{\prime } c′解密为1,所以将 c ′ {c}^{\prime } c′解密为1的行的比例为0。因此,对于查询 q c {q}_{c} qc(其中 c c c是1比特消息 b b b的加密)的准确答案就是 b b b本身。
现在,假设存在一种针对 Q \mathcal{Q} Q中的查询的高效离线差分隐私查询发布机制。合谋者可以使用该算法高效地生成数据库的概要,使数据分析师能够高效地计算查询 q c {q}_{c} qc的近似答案。如果这些近似值并非无意义,那么分析师可以使用它们进行正确解密。也就是说,合谋者可以利用这一点来制造一个盗版解码器盒。但叛逆者追踪确保了,对于任何这样的盒子,追踪算法可以恢复至少一个用户的密钥,即数据库的一行。这违反了差分隐私,与存在一种用于发布 Q \mathcal{Q} Q的高效差分隐私算法的假设相矛盾。
这一方向已被用于排除针对特定类别的 2 O ~ ( n ) {2}^{\widetilde{O}\left( \sqrt{n}\right) } 2O (n)计数查询的高效离线清理器的存在;这可以扩展到排除针对从第二个(大)类中自适应抽取的 Θ ~ ( n 2 ) \widetilde{\Theta }\left( {n}^{2}\right) Θ (n2)计数查询的高效在线清理器的存在。
计数查询的离线查询发布困难意味着叛逆者追踪的直觉在于,未能保护隐私会立即产生某种形式的可追踪性;也就是说,在为一组行(解密密钥)提供(近似)功能等价物的同时保护每一行(解密密钥)的隐私的难度——即制造一个不可追踪的解码器的难度——正是我们在叛逆者追踪方案中所寻求的。
更详细地说,给定一个难以清理的数据库分布和计数查询族,随机抽取的 n n n项数据库可以充当“主密钥”,其中用于解密消息的秘密是该数据库上随机查询的计数。对于随机选择的多对数(n)个查询的子集 S S S,从数据库中随机抽取的多对数(n)行的集合(很可能)能很好地近似 S S S中的所有查询。因此,可以通过将数据库随机划分为 n / n/ n/个多对数(n)行的多对数(n)集合,并将每个集合分配给不同的用户来获得各个用户的密钥。这些集合足够大,以至于在压倒性概率下,它们在例如多对数(n)个随机查询集合上的计数都接近原始数据库的计数。
为了完成这个论证,我们设计了一种加密方案,其中解密等同于计算小的随机查询集合上的近似计数。由于根据定义,盗版解密盒可以进行解密,因此盗版盒可以用于计算近似计数。如果我们将这个盒子视为数据库的清理结果,我们可以得出结论(因为清理是困难的),解密盒可以“追溯”到用于创建它的密钥(数据库项)。
9.3 多项式时间敌手
定义9.4(计算差分隐私)。当且仅当对于所有仅相差一行的数据库 x , y x,y x,y,以及所有非均匀多项式(关于 κ \kappa κ)算法 T T T,随机算法 C κ : X n → Y {C}_{\kappa } : {\mathcal{X}}^{n} \rightarrow Y Cκ:Xn→Y 是 ε \varepsilon ε -计算差分隐私的。
Pr [ T ( C κ ( x ) ) = 1 ] ≤ e ε Pr [ T ( C κ ( y ) ) = 1 ] + ν ( κ ) , \Pr \left\lbrack {T\left( {{C}_{\kappa }\left( x\right) }\right) = 1}\right\rbrack \leq {e}^{\varepsilon }\Pr \left\lbrack {T\left( {{C}_{\kappa }\left( y\right) }\right) = 1}\right\rbrack + \nu \left( \kappa \right) , Pr[T(Cκ(x))=1]≤eεPr[T(Cκ(y))=1]+ν(κ),
其中 ν ( ⋅ ) \nu \left( \cdot \right) ν(⋅) 是任何增长速度比任何多项式的倒数都慢的函数,并且算法 C κ {C}_{\kappa } Cκ 在 n n n、 log ∣ X ∣ \log \left| \mathcal{X}\right| log∣X∣ 和 κ \kappa κ 的多项式时间内运行。
直观地说,这意味着如果对手被限制在多项式时间内,那么计算差分隐私机制提供的隐私程度与 ( ε , ν ( κ ) ) \left( {\varepsilon ,\nu \left( \kappa \right) }\right) (ε,ν(κ)) -差分隐私算法相同。一般来说,消除 ν ( κ ) \nu \left( \kappa \right) ν(κ) 项是没有希望的;例如,当涉及加密时,总是有一些(极小的)机会猜出解密密钥。
一旦我们假设对手被限制在多项式时间内,我们就可以使用安全多方计算的强大技术来提供分布式在线查询发布算法,用模拟可信策展人的分布式协议取代可信服务器。因此,例如,一组医院,每家医院都持有许多患者的数据,可以协作对其患者的联合数据进行统计分析,同时确保每个患者的差分隐私。一个更激进的影响是,个人可以维护自己的数据,选择参与或不参与每个特定的统计查询或研究,同时确保自己数据的差分隐私。
我们已经看到了一种分布式解决方案,至少对于计算 n n n 位之和的问题:随机响应。这种解决方案不需要计算假设,并且预期误差为 Θ ( n ) \Theta \left( \sqrt{n}\right) Θ(n)。相比之下,使用密码学假设允许进行更准确和广泛的分析,因为通过模拟策展人,它可以运行拉普拉斯机制的分布式实现,该机制具有恒定的预期误差。
这就引出了一个自然的问题,即是否存在某种不依赖于密码学假设的其他方法,在分布式环境中比随机响应具有更高的准确性。或者更一般地说,计算差分隐私所能实现的与“传统”差分隐私所能实现的之间是否存在差异?也就是说,密码学是否确实为我们带来了一些好处?
在多方环境中,答案是肯定的。仍然将我们的注意力限制在对 n n n 位求和上,我们有:
定理9.2。对于 ε < 1 \varepsilon < 1 ε<1,每个用于计算 n n n 位(每方一位)之和的 n n n -方 ( ε , 0 ) \left( {\varepsilon ,0}\right) (ε,0) -差分隐私协议在高概率下会产生误差 Ω ( n 1 / 2 ) \Omega \left( {n}^{1/2}\right) Ω(n1/2)。
如果 δ ∈ \delta \in δ∈ o ( 1 / n ) o\left( {1/n}\right) o(1/n),对于 ( ε , δ ) \left( {\varepsilon ,\delta }\right) (ε,δ) -差分隐私也有类似的定理成立。
证明。(概要)设 X 1 , … , X n {X}_{1},\ldots ,{X}_{n} X1,…,Xn 是均匀独立的位。协议的记录 T T T 是一个随机变量 T = T ( P 1 ( X 1 ) , … , T = T\left( {{P}_{1}\left( {X}_{1}\right) ,\ldots ,}\right. T=T(P1(X1),…, P n ( X n ) {P}_{n}\left( {X}_{n}\right) Pn(Xn),其中对于 i ∈ [ n ] i \in \left\lbrack n\right\rbrack i∈[n],玩家 i i i 的协议表示为 P i {P}_{i} Pi。在 T = t T = t T=t 的条件下,位 X 1 , … , X n {X}_{1},\ldots ,{X}_{n} X1,…,Xn 仍然是独立的位,每个位的偏差为 O ( ε ) O\left( \varepsilon \right) O(ε)。此外,通过差分隐私、 X i {X}_{i} Xi 的均匀性和贝叶斯定律,我们有:
Pr [ X i = 1 ∣ T = t ] Pr [ X i = 0 ∣ T = t ] = Pr [ T = t ∣ X i = 1 ] Pr [ T = t ∣ X i = 0 ] ≤ e ε < 1 + 2 ε . \frac{\Pr \left\lbrack {{X}_{i} = 1 \mid T = t}\right\rbrack }{\Pr \left\lbrack {{X}_{i} = 0 \mid T = t}\right\rbrack } = \frac{\Pr \left\lbrack {T = t \mid {X}_{i} = 1}\right\rbrack }{\Pr \left\lbrack {T = t \mid {X}_{i} = 0}\right\rbrack } \leq {e}^{\varepsilon } < 1 + {2\varepsilon }. Pr[Xi=0∣T=t]Pr[Xi=1∣T=t]=Pr[T=t∣Xi=0]Pr[T=t∣Xi=1]≤eε<1+2ε.
为完成证明,我们注意到 n n n 个独立比特(每个比特都有恒定偏差)的和,以很高的概率落在任何大小为 o ( n ) o\left( \sqrt{n}\right) o(n) 的区间之外。因此,以很高的概率,和 ∑ i X i \mathop{\sum }\limits_{i}{X}_{i} i∑Xi 不在区间 [ output ( T ) − o ( n 1 / 2 ) , output ( T ) + o ( n 1 / 2 ) ] \left\lbrack {\operatorname{output}\left( \mathrm{T}\right) - o\left( {n}^{1/2}\right) ,\operatorname{output}\left( \mathrm{T}\right) + o\left( {n}^{1/2}\right) }\right\rbrack [output(T)−o(n1/2),output(T)+o(n1/2)] 内。
一个更复杂的证明表明,即使在两方的情况下,计算差分隐私(computational differential privacy)和普通差分隐私(ordinary differential privacy)之间也存在差异。在可信策展人(trusted curator)的情况下,计算假设是否能为我们带来任何好处,这是一个引人入胜的开放性问题。初步结果是否定的:对于少量实值查询,即查询数量不随安全参数增长的情况,存在一类自然的效用度量,包括 L p {L}_{p} Lp 距离和均方误差,对于这些度量,任何计算上私密的机制都可以转换为一个统计上私密的机制,该机制大致同样高效,并且能实现几乎相同的效用。
9.4 参考文献注释
多项式时间有界策展人的负面结果以及与叛徒追踪(traitor tracing)的联系归功于 Dwork 等人 [28]。Ullman [82] 进一步研究了与叛徒追踪的联系,他表明,假设单向函数存在,以差分隐私回答 n 2 + o ( 1 ) {n}^{2 + o\left( 1\right) } n2+o(1) 个任意线性查询在计算上是困难的(即使在不考虑隐私的情况下,答案很容易计算)。在《我们的数据,我们自己》(“Our Data, Ourselves”)中,Dwork、Kenthapadi、McSherry、Mironov 和 Naor 使用安全函数评估技术代替可信策展人,考虑了差分隐私前身的分布式版本 [21]。[64] 中开始了对计算差分隐私的正式研究,定理 9.2 中多方和单策展人情况下 ( ε , 0 ) \left( {\varepsilon ,0}\right) (ε,0) -差分隐私所能达到的准确性之间的差异归功于 McGregor 等人 [58]。关于在可信策展人情况下,对对手的计算假设是否能带来任何好处的初步结果归功于 Groce 等人 [37]。
从任何单向函数构造伪随机函数(pseudorandom functions)归功于 Håstad 等人 [40]。
目录导航
第1章:https://blog.csdn.net/AdamCY888/article/details/146454841
第2章:https://blog.csdn.net/AdamCY888/article/details/146455093
第3章(1/3):https://blog.csdn.net/AdamCY888/article/details/146455756
第3章(2/3):https://blog.csdn.net/AdamCY888/article/details/146455796
第3章(3/3):https://blog.csdn.net/AdamCY888/article/details/146455328
第4章:https://blog.csdn.net/AdamCY888/article/details/146455882
第5章:https://blog.csdn.net/AdamCY888/article/details/146456100
第6章(1/2):https://blog.csdn.net/AdamCY888/article/details/146456712
第6章(2/2):https://blog.csdn.net/AdamCY888/article/details/146456972
第7章:https://blog.csdn.net/AdamCY888/article/details/146457037
第8章:https://blog.csdn.net/AdamCY888/article/details/146457172
第9章:https://blog.csdn.net/AdamCY888/article/details/146457257
第10章:https://blog.csdn.net/AdamCY888/article/details/146457331
第11章:https://blog.csdn.net/AdamCY888/article/details/146457418
第12章:https://blog.csdn.net/AdamCY888/article/details/146457489
第13章(含附录):https://blog.csdn.net/AdamCY888/article/details/146457601