私有且安全的秘密共享MapReduce(扩展摘要)
摘要
数据外包允许数据所有者将其数据存储在公共云中,但无法确保数据和计算的隐私。一种用于分布式处理数据的基本且有用的框架是 MapReduce。本文研究并提出在公共云中执行MapReduce计算的同时实现隐私保护的技术。具体而言,我们提出一种利用Shamir秘密共享方案将数据库外包至公共云的技术,并提供基于MapReduce的隐私保护算法,用于执行搜索和获取、等值连接以及范围查询。因此,在我们所提出的算法中,公共云无法获知数据库内容或计算过程。所有提出的算法均消除了数据库所有者的持续参与,其仅需一次性创建并分发秘密份额,并最小化了用户的参与,用户仅需执行简单的操作以重构结果。我们通过以下三个方面评估效率:(i) 用户与云之间的通信轮次数量,(ii) 用户与云之间传输的总比特流量,以及(iii) 用户端和云端的计算负载。
1 引言
数据和计算外包将数据库和计算从私有云转移到不受单个用户控制的公共云。因此,外包减少了私有云在数据库维护、基础设施以及查询执行方面的负担。然而,在公共云中存储数据和执行计算虽然便捷,却带来了数据库和计算安全与隐私被侵犯的风险。
MapReduce[4]提供了高效且容错的并行处理大规模数据的能力,但未涉及数据和计算的安全性与隐私。在对抗性(公共)云中构建隐私保护框架的主要障碍是计算和存储效率。对抗性云可能会破坏数据和计算的隐私。本文提出了一种在公共云中执行MapReduce计算的同时实现隐私保护的技术。
激励性示例
我们提供一个等值连接的示例,以说明在公共云中使用 MapReduce进行数据和查询执行时对安全性和隐私的需求。
两个关系的隐私保护等值连接 X(A, B) 和Y(B, C)。问题描述:关系 X(A, B) 和 Y(B, C)的连接,其中连接属性为 B,输出元组为 〈a, b, c〉,其中(a, b)属于 X且(b, c)属于 Y。在 X(A, B)和 Y(B, C)的等值连接中,两个关系中该属性 B值相同的全部元组应被合并,以生成最终的输出元组。
假设关系 X和 Y分别属于两个组织,e.g.,一家公司和一家医院,而第三个用户希望执行等值连接。然而,这两个组织都希望在不向另一组织或用户透露整个数据库的前提下提供结果,i.e.,保护其数据库的隐私。因此,需要以安全且隐私保护的方式执行等值连接。
我们的贡献
我们致力于在公共云中实现一种安全且隐私保护的、计算和存储高效的MapReduce计算技术。因此,我们的重点是信息论安全的数据与计算外包技术以及基于MapReduce的查询执行。具体而言,我们使用Shamir 秘密共享(SSS) [14]对关系中的每个元组生成秘密份额,并将其发送到云中。用户可以利用累积自动机(AA) [5]在这些秘密份额上执行查询,而无需向云泄露查询或数据。我们可以以隐私保护方式实现计数(第4.1节),搜索和获取操作(第4.2节)。由于篇幅限制,我们省略了隐私保护范围选择和等值连接的详细内容,相关内容可在[7]中找到。
相关工作
PRISM[2], PIRMAP [12], EPiC [1], MrCrypt [16],和 Crypsis [15]提供了在云中对加密数据进行隐私保护的MapReduce执行。然而,由于依赖于数据的加密和解密,所有这些协议都增加了计算时间。
作者[8]提出了一种基于秘密共享的隐私保护连接操作。然而,该方法[8]要求两个不同的数据所有者共享某些信息,以在其关系中为相同值构造相同的份额。作者[9]提出了一种使用SSS变体的数据外包技术。然而,该方法[9]存在两个主要缺点,如下所述:(i)为了生成查询结果,数据所有者必须处理所有的份额,因此数据所有者需要完成大量工作,而不是由
私有且安全的秘密共享MapReduce 153
云;以及(ii)第三方无法直接对秘密份额发起任何查询,必须与数据所有者联系。在[9],中,作者提供了一种构造多项式的方法,能够保持秘密的顺序。然而,这类多项式基于整数环(无模约简),而非有限域;因此,存在潜在的安全风险。
还有一些其他工作 [3,10,11] 提供了对秘密份额的搜索操作。在 [11], 中,数据所有者根据查询构建一个Merkle哈希树 [13]。在 [10], 中,用户知道目标元组的地址,因此他们可以从云无感知地获取所有这些元组,而无需在云中执行搜索操作。
表1. 不同算法与我们的算法的比较
| 算法 | 通信 cost | User | 云 | 轮数 | 匹配 | 基于 on |
|---|---|---|---|---|---|---|
| Count操作 | ||||||
| EPiC [1] | 1 | 在线 | E | |||
| 我们的解决方案4.1 | O(1) | O(1) | nw | 1 | 在线 | SS |
| O(1) | O(1) | O(n) | ||||
| Search和单个元组 fetch操作 | ||||||
| Chor 等人 [3] | O(nmw) | O(nmw) | log₂n | 在线 | SS | |
| PRISM [2] | O((nm)¹⁄² w) | O((nm)¹⁄² w) | O(nmw) | q | E | |
| 我们的解决方案4.2 | O(mw) | O(mw) | O(mw) | 1 | 在线 | SS |
| O(1) | ||||||
| Search和多元组 fetch操作 | ||||||
| rPIR [10] | O(nm) | O(nmw) | 1 | No | SS | |
| PIRMAP [12] | O(nmw) | O(mw) | O(nmw) | 1 | No | E |
| Goldberg [11] | O(n+ m) | O(m) | O(nm) | 2 | 离线 | SS |
| Emekci 等人 [9] | O(βm) | O(βm) | O(n) | 2 | 离线 | vSS |
| 我们的解决方案: 知道 地址 4.2 | O((logβn+log₂β)β) | O((logβn+log₂β)β) | O((logβn+log₂β)βnw) | logβn + ⌈log₂β⌉ + 1 | 在线 | SS |
| 我们的解决方案: 获取 元组 4.2 | O((n+ m)βw) | O((n+ βm)w) | O(βnmw) | 1 | 在线 | SS |
| O(1) | ||||||
| 等值连接 | ||||||
| 我们的解决方案 (见 [7]) | 2nwk+2k² mw | 2nw+2k² mw | 2² kmw | 2k | 在线 | SS |
符号说明:Online:在云中执行字符串匹配。Offline:在用户端执行字符串匹配。E:基于加密解密。SS:基于秘密共享。vSS:SS的变体。 n:元组数量, m:属性数量, β:模式(β ≤n)的出现次数, w:模式的位长度。
据我们所知,目前尚无一种算法能够:(i)除了一次性创建和分发秘密份额外,无需数据库所有者参与;(ii)最小化用户端的开销;以及(iii)在云中提供信息论安全的MapReduce计算。本文中,我们构建了一种基于SSS和AA[5]的数据与计算外包技术。此外,我们的算法能够在云中对以秘密份额形式存储的数据执行字符串匹配操作,而无需下载整个数据库的秘密份额。然而,大多数现有的基于秘密共享的隐私保护算法无法在云中执行字符串匹配操作;参见表1。
所提出的技术克服了现有基于秘密共享的数据外包技术的所有缺点[3,8–11]。因此,无需(i)不同数据所有者之间共享信息,(ii)数据库所有者参与除秘密份额的创建和分发之外的任何工作,(iii)同一值的多次出现具有相同的份额,以及(iv)第三方可直接在云中执行其查询,而无需向云透露其查询内容。
2 系统与对抗性设置
我们首次考虑将数据与计算外包以秘密份额的形式提供给 c non-communicating云,这些云彼此之间不交换数据,仅与用户或数据库所有者交换数据。
系统架构
该架构简单而强大,并基于以下假设:
Step 1。数据所有者将其以秘密份额形式存在的数据库一次性外包给c(互不通信的)云;参见图1中的说明。我们利用 c云来实现隐私保护计算。需要注意的是,单个云无法使用秘密共享来提供隐私保护计算。
Step 2. 在希望执行MapReduce计算的用户端会进行一个初步步骤。用户以秘密份额的形式向所有 c云发送查询,以获取以秘密份额形式表示的所需结果;参见 Step 2图1。该查询必须发送给至少 c′< c个云,其中 c′是SSS阈值。
Step 3。云部署一个主进程,通过分配映射任务和归约任务来执行计算;参见图 Step 3中 1的说明。用户仅与云中的主进程交互,主进程向用户提供输出结果的地址。需要注意的是,假定用户与云之间的通信是与用户和主进程之间的通信相同。
私有且安全的秘密共享MapReduce 155
Step 4。用户从云中获取输出,并借助归约器进行插值以获得秘密值;参见 Step 4图1。
对抗性设置
我们假设,一方面,攻击者无法对数据所有者发起任何攻击,且无法访问数据库所有者端的秘密共享算法和机器。另一方面,攻击者可以访问公共云及其存储的数据。希望在公共云中存储的数据上执行计算的用户也可能表现为攻击者。此外,云本身也可作为攻击者,因为它对所有机器和存储具有完全权限。用户和云都可能发动任何攻击以破坏数据或计算的隐私。我们考虑的是诚实但好奇的攻击者,其会正确执行指定的计算任务,但试图破坏数据或 MapReduce计算的隐私。然而,此类攻击者不会修改或删除数据中的信息。
我们假设攻击者所知晓的存储数据库并执行查询的云的位置少于 c′< c个。此外,攻击者无法窃听所有 c′或 c信道(数据库所有者与云之间、用户与云之间的信道)。因此,我们不要求使用私有通信信道。在此类对抗性设置下,我们提供了一种有保障的解决方案,使得攻击者无法获知数据或计算内容。需要指出的是,如果攻击者通过串通 c′个云,便可能破坏我们的协议,而该数量正是秘密共享方案所设计的阈值。
分析参数
我们基于以下参数分析我们的隐私保护算法:(i)通信开销:是用户与云之间需要传输的所有比特的总和;(ii)计算开销:是云或用户所处理的所有比特的总和;以及(iii)轮数:表示用户为获得结果与云通信的次数。
3 关系的秘密共享创建与分发
假设一个数据库仅包含英文单词。由于英文字母表由26个字母组成,每个字母可以表示为具有26比特的一元向量。因此,字母‘A’表示为(1₁, 0₂, 0₃,…, 0₂₆),其中下标表示字母的位置;由于‘A’是第一个字母,向量中的第一个值为1,其余为0。类似地,‘B’为(0₁, 1₂, 0₃,…,0₂₆),依此类推。
此处使用一元表示的原因在于,它非常便于验证两个字母是否相同。表达式 S= ∑ᵣᵢ₌₀ uᵢ × vᵢ,用于比较两个字母,其中(u₀, u₁,··· uᵣ)和(v₀, v₁,···, vᵣ)是两个一元表示。显然,只要任意两个字母相同, S就等于1;否则, S等于0。
二进制表示也可以被接受,但其比较函数与一元表示中使用的比较函数[6]不同。
156 S.多列夫 等
创建秘密份额的一种安全方法
在将向量外包给云时,我们使用SSS,并通过选择相同次数的不同多项式来为每一位生成秘密份额。例如,对于字母‘A’的向量((1₁, 0₂, 0₃,…,0₂₆)),由于向量长度为26,我们使用26个相同次数的多项式来生成其秘密份额。随后,我们可以为所有其他字母创建秘密份额,并将其分发到不同的云中。
由于我们使用了SSS,云无法推断出秘密。此外,需要强调的是,我们为数据库中每个字母的秘密共享创建使用了不同的多项式;因此,数据库中一个单词的多次出现具有不同的秘密共享。因此,云也无法得知该单词在整个数据库中的总出现次数。
数值的秘密份额
我们采用与字母类似的方法来创建数值的秘密份额。具体而言,我们创建一个长度为10的一元向量,除根据数字所在位置设置为1外,其余所有值均为0。例如,‘1’变为(1₁, 0₂,…,0₁₀)。然后,对每个向量中的每一位使用SSS,通过为每个数字选择相同次数的不同多项式生成秘密份额,并将其发送到多个云中。
4 基于MapReduce在云中对秘密份额的隐私保护查询处理
4.1 计数查询
我们提出了一种在云中对模式 p出现次数进行计数的隐私保护算法;在本节中,我们用 p表示一个模式。该算法分为两个阶段: Phase 1:在云中的隐私保护计数,以及 Phase 2:在用户端的结果重构。
简而言之,我们应用一种字符串匹配算法,该算法通过属性认证(AA)实现,将关系中的每个值与 p进行比较。如果某个值与 p匹配,则结果为1;否则为0。我们对每个值应用相同的算法,并累加所有结果为1的项,从而得到 p的出现次数。需要注意的是,关系中的所有值、模式以及结果(即0或1)均以秘密共享的形式存在。
在用户端工作
用户为 p的每个字母创建一元向量。为了隐藏 p的向量,用户按照第3节建议的方法,为 p的每个向量创建秘密份额,并将其发送给 c个云。此外,用户还将 p的长度(x)以及需要进行计数的 p的关系属性(m′)发送给 c个云。
在云中工作
现在,一个云包含两部分内容:(i) 形式为秘密份额的关系,以及 (ii) 形式为具有长度 x的秘密份额的搜索模式。为了计数 p的出现次数,云中的映射器执行 x+ 1个步骤,参见表2,用于将该模式与关系中指定属性的每个值进行比较。
表2. 映射器针对长度为 x的模式所执行的步骤
| Step 1: N= 1₁ , N₀ₓ= 0 |
| Step 2: N⁽ⁱ⁾₂= N₁ × v₁ |
| Step 3: N⁽ⁱ⁾₃= N⁽ⁱ⁾₂ × v₂ |
| … |
| Step x+ 1: N⁽ⁱ⁾ₓ= N⁽ⁱ⁻¹⁾ₓ + N⁽ⁱ⁾ₓ₋₁ × vₓ₋₁ |
符号 N⁽ⁱ⁾ⱼ显示节点 j 是在迭代 i 中执行一个步骤。最终值节点 Nx+1发送给用户的内容是模式的出现次数。
此时,映射器无法知道每次迭代中节点 Nx+1的值,并将 Nx+1的最终值以 〈键,值〉对的形式发送给用户,其中键是执行操作的输入分割的标识,对应的值是以秘密份额形式表示的节点 Nx+1的最终值。用户从所有云或足够数量的云中收集 〈键,值〉对。
用户端的结果重构
我们需要重构节点 Nx+1的最终值。用户从所有云中获得了 〈键值〉对。所有对应于某个键的值被分配给一个归约器,该归约器执行拉格朗日插值并提供节点 Nx+1的最终值。如果有多个归约器,则在插值之后,最终值的和表示 p的出现次数总和。
Aside .如果用户在包含“John”和“Johnson”等姓名的数据库中搜索John,则我们的算法将显示John的两次出现。然而,这是与字符串匹配相关的问题。为了精确搜索模式,我们可以使用终止符来表示模式的结束。
4.2 搜索和获取查询
在本节中,我们提供了一种用于获取包含 p的所有元组的隐私保护算法。所提出的算法首先计数包含 p的元组数量,然后在获得其地址后获取所有这些元组。具体而言,我们提供了两阶段算法,其中: Phase 1:查找包含 p的元组的地址,以及 Phase 2:获取包含 p的所有元组。
模式的单一出现
当仅有一个元组包含 p时,无需获取该元组的地址,因此我们以隐私保护方式获取整个元组。此处,我们说明如何获取包含 p的单个元组。
获取元组 。用户发送 p的秘密份额。云在特定属性上执行映射函数,该映射函数将 p与该属性的 ith值进行匹配。因此,映射函数的结果是以秘密份额形式表示的0或1,如果 p与该属性的 ith值匹配,则结果为1。随后,映射函数将该结果(0或1)乘以 ith元组的所有 m值。通过这种方式,映射函数生成一个包含 n个元组和 m个属性的关系。当映射函数处理完所有 n个元组后,它将每个属性的所有秘密份额相加,并将结果 S₁||S₂|| … ||Sm发送给用户。
158 S.多列夫 等
其中 Si 是 ith 属性的秘密份额之和。用户在收到来自所有云的份额后,执行一个归约函数,该函数进行插值并提供包含 p的目标元组。
Aside .当我们把字符串匹配操作的输出(以秘密份额的形式)与元组中的所有值相乘时,结果是该元组的所有值都变为0或1(以秘密份额的形式)。因此,对某一属性的所有秘密份额求和,仅得到对应包含 p的元组中该属性的值。通过对每个元组执行相同的操作,最后将每个属性的所有秘密份额相加,云无法得知获取的是哪个元组。
模式的多次出现
当多个元组包含 p时,我们无法在不获取其地址的情况下无感知地获取所有这些元组。因此,我们首先需要执行一个模式搜索算法以获取包含 p的所有元组的地址,然后以隐私保护方式获取这些元组。在本节中,我们假设有 β个元组包含 p。该算法具有两阶段,如下: Phase 1:查找所需 β元组的地址,以及 Phase 2:获取所有 β元组。
基于树的算法
我们提出一种基于搜索树的关键词搜索算法,该算法包含两个阶段:第一阶段通过多轮查找找到所需 β元组的地址,第二阶段再用一轮获取所有 β元组。如果仅存在一个元组包含 p,我们还可以以隐私保护方式获得其地址(或行号)。因此,对于查找包含 p的 β元组地址的情况,我们将整个关系划分为若干块,使得每个块属于以下情况之一:
- 一个数据块不包含 p的任何出现,因此不需要获取操作。
- 一个数据块包含一个/多个元组,但仅有一个元组包含 p。
- 一个数据块包含 h个元组,且所有 h个元组都包含 p。
- 一个数据块包含多个元组,但只有较少的元组包含 p。
查找地址 。我们采用一种对数据库进行分区并在各分区内计数 p出现次数的方法,直到每个分区满足上述提到的某一种情况为止。具体而言,我们启动一系列查询与回答(Q&A)轮次。在第一轮Q&A中,我们统计 p在整个数据库(或分配给映射器的输入分割)中的出现次数,然后将数据库划分为 β个块,因为我们假设共有 β个元组包含 p。在第二轮中,我们再次统计 p在每个块中的出现次数,并重点关注满足情况4的块。对于满足情况2或情况3的块则无需进一步处理,因为在两种情况下均可应用针对模式单一出现所给出的算法。然而,如果在第二轮中的某个块内有多个元组包含 p,即.,情况4,则我们需要对该块再次进行划分,直到其满足情况1、情况2或情况3为止。此后,我们可以采用类似于针对模式单一出现所给算法的方法,获取相关元组的地址。
获取元组 。在获取元组的地址后,我们采用朴素算法中描述的方法来获取多个元组。
私有且安全的秘密共享MapReduce(扩展摘要)
5 结论
MapReduce提供了高效的大规模数据处理能力,但未涉及数据与计算的隐私和安全。为了避免数据库所有者在维护和执行查询时产生的开销,数据库被外包到可能泄露数据库和计算过程的不可信公共云上。我们提出了一种新的信息论安全的数据与计算外包技术。通过所提出的技术,用户可以在公共云中执行其计算,而无需数据库所有者的参与,且云无法获知数据库或计算内容。我们提供了基于MapReduce的隐私保护算法,用于在公共云中执行计数、搜索和获取查询。由于篇幅限制,隐私保护的范围查询和等值连接在[7]中给出。与现有算法相比,我们的算法在不引入计算和通信开销的情况下实现了完美的隐私保护。
45

被折叠的 条评论
为什么被折叠?



