POR‐2P: 基于网络编码的数据提供‐支付系统 可恢复性证明
大本和正和陈芳草(B)
日本先进科学技术大学院大学(JAIST),石川县能美市浅出 1‐1,邮编923‐1292,日本{omote,tpthao}@jaist.ac.jp
摘要
可恢复性证明(POR)是一种支持数据拥有者检查存储在云服务器中的数据是否可用、完整且可检索的协议。基于POR,网络编码技术已被应用于提高数据传输和数据修复的效率与吞吐量。尽管已提出许多基于网络编码的POR方案,但大多数方案未考虑一种实际场景:不仅数据拥有者能够对存储在不可信服务器中的数据进行检查和检索,而且不可信用户也能在不了解数据拥有者密钥的情况下对存储在服务器中的数据进行检查和检索。这种场景在现实中十分常见。例如,在一个 data provision-payment system中,用户必须支付金钱以获取存储在服务器中的数据。本文提出了一种新的基于网络编码的POR方案,命名为 POR‐2P(用于数据提供‐支付系统的基于网络编码的POR),以应对该场景。此外,复杂性分析和性能评估表明,POR‐2P在实际云系统中具有很高的效率和适用性。
关键词 :云存储 · Proof可检索性 · Network coding · 同态MAC
1 引言
由于数据量呈指数级增长,被称为云的远程存储提供商被提出,以帮助数据拥有者减轻数据存储和管理的负担。然而,云提供商可能不可信。因此,这在数据安全方面引入了三个挑战:可用性、完整性和机密性。机密性包含两种研究方法:密码学方法和信息论方法。本文聚焦于可用性、完整性和信息论保密性。
可恢复性证明(POR)。POR[1–3]已被提出以支持数据拥有者检查其存储在服务器中的数据是否可用,完整且可检索。POR 是数据拥有者与服务器之间的挑战‐响应协议,包含五个功能:密钥生成、编码、检查、修复和检索。基于 POR,通常使用以下技术。
-
复制 。复制,提出于[4,5],是一种允许数据拥有者在每个服务器中存储一个文件副本的技术。数据拥有者可以定期对服务器进行检查。当检测到损坏的服务器时,数据拥有者可以使用一个正常的副本在损坏的服务器中修复数据。然而,该技术的缺点是存储成本高,因为数据拥有者必须在每个服务器中存储完整的文件。
-
纠删码 。纠删码被应用于实现最优的数据冗余。与复制方式不同,复制会在每个服务器上存储一个文件副本,而使用纠删码时,数据拥有者将文件块存储在各个服务器上,从而降低了存储成本。然而,该技术的缺点是:为了修复一个损坏的服务器,数据拥有者必须先重构原始文件,然后再进行修复,因此在数据修复过程中计算成本增加。
-
oblivious RAM (ORAM) 。最近,ORAM已被应用于POR[8,9]。该技术最初是为保护隐私的数据访问模式而提出的。通过使用ORAM结构,服务器在数据拥有者执行数据检查时无法获知访问模式。对于数据修复,基于ORAM的 POR结合了纠删码以修复损坏。由于其分层存储结构,ORAM结构导致较高的存储成本;同时,由于每进行若干次读/写操作都需要执行洗牌过程,也带来了较高的计算成本。
-
网络编码 。为了解决纠删码的缺陷,已将网络编码应用于[10–12]以提高数据传输和数据修复的效率和吞吐量。与纠删码不同,数据拥有者在生成新的编码块之前无需重建整个文件。相反,可以从健康服务器收集到的编码块来生成新的编码块。与ORAM相比,网络编码的结构更为简单,它没有分层存储结构,没有类似ORAM的洗牌过程,也没有纠删码的缺点。因此,本文重点研究网络编码。
MAC与签名的比较 。存储在服务器中的数据如果没有额外的认证信息,即消息认证码(MAC)或签名,则无法进行检查。MAC也称为标签。传统的 MAC和签名不适用于网络编码。因此,研究人员提出了称为同态MAC [14–16] 和同态签名 [17,18] 的新技术。此外,MAC用于对称密钥设置,而签名用于非对称密钥环境。由于本文侧重于对称密钥设置以提高效率,因此我们在方案中使用同态MAC。
Contribution
本文提出了一种基于网络编码的POR(称为POR‐2P),具有以下贡献:
-
POR‐2P 可以处理数据提供-支付系统 ,在该系统中,不仅数据拥有者和服务器,用户也可以参与。用户支付金钱以获取存储在服务器中的数据。该系统存在两个安全问题:
- 用户可能没有支付足够的金钱 :POR‐2P 可通过仅允许用户每次检索部分数据(称为数据块)而非完整数据来解决此问题。在获取一个数据块后,用户必须付款才能获取下一个数据块。如果用户收集到足够的数据块,便可检索完整数据。换句话说,当已检索的数据块数量大于或等于某一阈值时,即可完全恢复整个数据。这正是本文选择信息论保密性的原因。
- 服务器可能不提供有效数据 :POR‐2P 通过要求用户检查从服务器提供的每个数据块来解决此问题。此处引出以下挑战:数据在存储到不可信服务器之前由数据拥有者进行编码,此外,用户也是不可信的。因此,数据拥有者不能将其用于计算 MAC 的密钥交给用户。那么,用户如何在不了解数据拥有者密钥的情况下检查服务器提供的数据块是否有效?POR‐2P 可通过使用一种称为正交密钥生成的技术来应对这一挑战。 -
POR‐2P 基于对称密钥设置构建 ,众所周知,对称密钥设置比非对称密钥环境更高效。用户可以在没有任何公钥的情况下检查由不可信服务器发送的数据块。
-
POR‐2P 可以通过我们的密钥管理在检索过程中实现访问控制 。具体而言,数据拥有者可以控制用户被允许检索哪些数据以及不被允许检索哪些数据。
-
POR‐2P 的复杂性分析表明 ,其通信和计算成本低于某些可比较的先前方案中的这些成本。性能评估表明,POR‐2P 非常适用于实际系统。
路线图
相关工作在第2节中介绍。3节描述了预备知识。第4和 5节提出了系统模型和对抗模型。第6节提出了POR‐2P方案。第7和 8节讨论了安全性和效率分析以及性能评估。最后,第9节给出了结论和未来工作。
2 相关工作
有一些值得注意的基于网络编码的POR。Dimakis等人[12]首次将网络编码应用于分布式存储系统。他们的工作显著降低了修复组件的通信开销。
Acedanski等人[13]证明了当采用随机线性编码应用于分布式存储系统,其性能表现良好,且在分发到多个位置之前无需在中央服务器上消耗额外的存储空间。此外,下载者需要连接的最小存储位置数量(用于重构整个文件)以接近于1的概率,可以非常接近存储位置与下载者之间完全协调的情况。李等人[19]提出了一种基于线性网络编码的树形结构数据再生方法,通过使用无向加权最大生成树和Prim算法,实现了高效的再生流量和带宽利用率。随后,陈等人提出了RDC‐NC [20](基于网络编码的分布式存储系统的远程数据检查),该方案通过在健康服务器上重新编码编码块,为高效的数据修复提供了可行的解决方案。陈等人还提出了NC‐Cloud [21](一种在云中云环境下的基于网络编码的存储系统),利用功能最小存储再生(FMSR)码来改进成本有效的修复,并在修复过程中放宽了存储节点的编码要求。NC‐Audit [22](网络编码存储审计)也被提出,用于实现高效的数据检查与修复以及防止数据泄露,其结合了同态MAC(称为SpaceMac)和选择明文攻击(CPA)安全加密(称为NCrypt)。
在这些先前的方案中,系统模型通常包含两个实体:(i)将数据外包、编码并检查其数据的数据拥有者;(ii)存储数据并向数据拥有者提供证明的服务器。一些论文讨论了多个数据拥有者[23,24]的情况。然而,此前没有任何方案考虑到一个非常实际的场景:除了数据拥有者和服务器之外,系统模型还应包含另一个实体,即用户。该用户能够检索存储在服务器中的数据。例如,在数据提供-支付系统中,用户支付金钱以获取存储在服务器中的数据。
3 预备知识
3.1 可检索性证明(POR)
POR [1–3],是一种数据拥有者(验证者)与服务器(证明者)之间的挑战‐响应协议,旨在帮助验证者检查其存储在服务器上的数据是否可用、完整且可检索。POR 具有以下功能:
-
keygen(1λ)
:数据拥有者执行此函数,输入一个安全参数(λ),输出一个私钥(sk)和一个公钥(pk)。对于对称密钥系统,公钥(pk)设为null。
-
encode(sk F)
:该函数允许数据拥有者将原始文件(F)编码为编码文件(F′)。随后将 F′存储在服务器上。
-
check(sk)
:该函数执行数据拥有者与服务器之间的挑战‐响应协议,期间数据拥有者使用sk生成一个挑战(c),并将 c发送给服务器。服务器计算相应的响应(r),并将 r返回给数据拥有者。数据拥有者随后基于 c和 r对服务器进行检查。
-
retrieve(c0,···, cm−1)
:当数据拥有者希望基于某些服务器的一组编码块检索 F时,执行此函数。该函数选择一些健康服务器,并请求所选服务器发送它们的编码块(c)。
-
repair()
:当检查功能检测到服务器上的损坏数据时,此函数由数据拥有者执行以修复损坏的数据。修复功能依赖于所使用的技术,例如复制、擦除编码或网络编码。
3.2 网络编码
网络编码 [10–12]被提出以提高数据传输的成本效益。假设一个数据拥有者拥有一份文件 F并希望将冗余编码块存储在服务器中,使得数据拥有者能够重构 F并且能够修复损坏服务器中的编码块。数据拥有者首先将 F划分为 m个块:F= v1|| ··· ||vm ∈ Fz q。 vk ∈ Fz q其中 k ∈{1,···, m}且 Fz q表示一个素数阶的 z维有限域 q。然后,数据拥有者将 vk扩展为一个长度为 m的向量,该向量在位置k处包含一个单个‘1’,其余位置有(m−1)个单个‘0’。所得到的块称为增广块(例如, wk)。 wk具有以下形式:
$$
w_k = (v_k, \underbrace{0,\cdots, 0, 1}_{k}, 0,\cdots, 0) \in F^{z+m}_q \tag{1}
$$
随后,数据拥有者随机选择 m个系数 α1,···, αm ∈ Fq,通过线性组合计算编码块:
$$
c = \sum_{k=1}^m \alpha_k \cdot w_k \in F^{z+m}_q \tag{2}
$$
数据拥有者将这些编码块存储在服务器中。为了重构F,需要任意 m个编码块来求解 m增广块 w1,···, wm,使用包含在每个编码块最后 m个坐标中的累积系数。在 m增广块被求解后,从每个增广块的第一个坐标中获得 m 文件块 v1,···, vm。最后,通过连接文件块重构 F。注意,由用于构造任意 m个编码块的系数组成的矩阵应为满秩。Koetter 等人 [25]证明,如果选择足够大的素数 q,并随机选择系数,则该矩阵以高概率具有满秩。当某个服务器受损时,数据拥有者通过从健康服务器中检索编码块,并将其线性组合以重新生成新的编码块来进行修复。图1给出了数据修复的一个示例。
3.3 同态MAC
内积MAC
。该MAC是最简单的同态MAC,由以下算法组成:
-
Gen(1λ) → k
:该算法输入一个安全参数 λ ,并输出一个密钥 k。
-
Tagk(M) → t
:该算法输入 k和一条消息 M;并输出一个标签 t,使得:
$$
t = M \cdot k \tag{3}
$$
-
Verk(M, t) →{0, 1}
:该算法输入 M, t和 k;如果 t是有效的标签,则输出1,否则输出0。
Wegman‐Carten MAC
。当内积MAC与网络编码结合时,可能无法防范响应重放攻击(见第5.2节)。因此引入了Wegman‐Carten MAC,如下所示:
-
Gen(1λ) →{k, k′}
:该算法输入一个安全参数 λ ,并输出密钥{k, k′}。 k 用于对消息 M进行打标签, k′用于对标签进行置换。
-
Tag{k,k′}(M) → t
:该算法输入{k, k′}和一条消息 M,并输出一个标签 t,使得:其中 f和 r分别表示伪随机函数和随机性。
$$
t = M \cdot k + f_{k’}(r) \tag{4}
$$
-
Ver{k,k′}(M, t) →{0, 1}
:如果 t是一个有效的标签,则输出1,否则输出0。
这种Wegman‐Carter MAC将被用于我们的方案中。
3.4 正交密钥生成
该技术在[26]中被提出,用于生成一个密钥,使其与所有增广块正交。正式表述为:给定一组增广块{w1,···, wm},该算法输出一个密钥 k,使得对于所有 i= 1,···, m,满足 k · wi= 0。该算法如下所示。
正交密钥生成 (w1 ,···, w m) → k :令 π 表示 w1 ,···, w m ∈F z+m q 的张成空间。令 M 为一个矩阵,其中每一个 m增广块作为一行
M的。rank(M) = m。设 πM为由 M的行向量张成的空间。 M的零空间,记作 πM⊥,是所有满足M · uT= 0的向量 u ∈ Fz+m q的集合。对于任意 m×(z+ m)矩阵,秩‐零度定理给出:
$$
\text{rank}(M) + \text{nullity}(M) = z + m \tag{5}
$$
其中,nullity(M) 是 πM⊥ 的维数。因此,
$$
\text{dim}(\pi_M^\perp) = (z + m) - m = z \tag{6}
$$
设{b1,···, bz} ∈ Fq^(z+m)是 πM⊥的一组基,可通过求解M · uT= 0得到。令 f为一个伪随机函数,满足 f: K ×[1, z] → Fq。密钥 k的计算方式如下:
- ri ← f(kPRF, i) ∈ Fq 对于 i ∈{1,···, z} 和 kPRF ∈ K。
- k ← ∑z i=1 ri · bi ∈ Fz+m q 。
4 系统模型
4.1 系统实体
系统模型(图2)包含以下三种类型的实体:
-
Data owner
:数据拥有者是一个可信实体,拥有数据并希望将数据存储在服务器中。在将数据存储到服务器之前,数据拥有者会对数据进行编码,并使用其密钥为数据计算标签。数据拥有者将定期检查服务器。如果检测到损坏的服务器,他将使用网络编码修复损坏。
-
User
:用户是一个不可信实体,希望检索数据拥有者的数据。用户会从数据拥有者处获得密钥(并非数据拥有者的密钥),用于在检索数据期间检查来自服务器的响应。
-
Servers
:服务器是存储数据的不可信实体。服务器有责任在检查和修复过程中向数据拥有者、在检索过程中向用户提供包含部分数据的证明。
4.2 系统需求与假设
- 只有数据拥有者才能使用其密钥计算数据的标签。尽管用户被给予密钥(与数据拥有者的密钥不同)以检查和修复服务器,但用户无法计算数据的标签。
- 用户与服务器之间不会相互勾结。
- 所有密钥均通过安全通道传输。
5 对抗模型
5.1 来自用户的攻击
用户执行以下两种攻击:
- 用户通过两种方式搜索数据拥有者的密钥:(i) 从用户的密钥进行暴力搜索, (ii) 在检索数据后进行正交密钥生成。
- 用户伪造一个新文件块的标签。注意,用户仅伪造新文件块的标签,因为对于旧文件块,标签已由数据拥有者计算完成,因此伪造旧文件块的标签没有意义。新文件块标签伪造的安全性将在第7节的定理3中证明。
5.2 来自服务器的攻击
响应重放攻击
。这种攻击意味着恶意服务器为了节省计算成本,重复使用过去检查阶段的正确响应,并且仍然能够通过当前检查阶段的验证。例如:
- 第1轮次:数据拥有者向服务器 SA发送挑战 Q。 SA响应{cA, tA},其中 cA和 tA分别表示聚合编码块和聚合标签。数据拥有者通过检查 tA= cA·kC 来验证 SA,其中 kC表示数据拥有者的密钥。假设该等式成立。
- 第2轮次:数据拥有者向 SA发送挑战 Q ′。 SA重用在第1轮次中生成的{cA, tA},而无需为 Q ′计算另一个响应。 SA仍然通过验证 tA= cA · kC。
污染攻击
。这种攻击是指恶意服务器在检查阶段响应一个有效编码块以通过检查,但在修复阶段提供无效编码块,从而阻止数据恢复。例如:
-
编码
:数据拥有者将增广块 {w1, w2, w3} 编码为六个编码块:
- c11= w1和 c12= w2+ w3。
- c21= w3和 c22= w1+ w2。
- c31= w1+ w3和 c32= w2+ w3。然后,{c11, c12}存储在服务器 S1中; {c21, c22}存储在服务器S2中;{c31, c32}存储在服务器 S3中。
-
检查
:检测到损坏的 S3。
-
修复
:为了修复 S3,数据拥有者要求 S1和 S2提供它们的聚合编码块。 S1提供 c1= 1c11+ 1c12= w1+ w2+ w3。假设 S2注入了一个污染块 c2= X,其为任意值。数据拥有者为新服务器 S′ 3计算两个新的编码块: c′ 31=1c1+ 1c2= X+ w1+ w2+ w3和 c′ 32= 1c1+ 2c2= 2X+ w1+ w2+ w3。
未知数的数量现在为(m+ 1),其中 m表示增广块的数量(在本例中为 m= 4),未知数为 X、 w1, w2和w3)。因此,无法从任意 m个或更多的编码块中检索出原始文件。
6 我们提出的POR‐2P方案
我们方案中使用的符号如下所示:
- DO表示数据拥有者。
- U表示用户。
- n表示服务器数量。
- Si表示一个服务器,其中 i ∈{1,···, n}。
- F表示原始文件。
- m表示文件块的数量。
- F z q表示一个素数阶的 z维有限域 q。
- vk表示一个文件块,其中 k ∈{1,···, m}。
- wk表示 vk的一个扩展块,其中 k ∈{1,···, m}。
- d表示存储在一个服务器中的编码块数量。
- cij表示一个编码块,其中 i ∈{1,···, n}, j ∈{1,···, d}。
- tij表示 cij的标签,其中 i ∈{1,···, n}, j ∈{1,···, d}。
- s表示抽查次数,其中 1 ≤ s ≤ d。
- Sr表示一个损坏的服务器。
- S′ r表示用于替换 Sr的新服务器。
- f表示一个伪随机函数:{0, 1} ∗ ×{0, 1}κ → F q。
6.1 设置
- 增广块 : DO将 F划分为 m个文件块 F= v1|| ··· ||vm。 vk ∈ Fz q其中 k ∈{1,···, m}。 DO创建 m个增广块。每个增广块具有以下形式:
$$
w_k = (v_k, \underbrace{0,\cdots, 0, 1}_{k}, 0,\cdots, 0) \in F^{z+m}_q \tag{7}
$$
-
密钥生成
: DO生成以下密钥:
- kDO r←and Fz+m q 。
- kφ ∈ Fz+m q ←正交密钥生成(w1,···, wm)。 kφ的性质是它与每个{w1,···, wm}正交。形式上,对所有k ∈{1,···, m}有 kφwk= 0。
- kPRF r←and Fκq。
DO然后计算:
$$
k_U = k_{DO} + k_\varphi \in F^{z+m}_q \tag{8}
$$
DO将{kU, kPRF}发送给 U。 DO保留{kDO, kφ, kPRF}。
6.2 编码
-
DO计算 nd个编码块和 nd个标签,如下所示: 对于 ∀i ∈{1,···, n}, ∀j ∈{1,···, d}:
- DO生成 m个系数: αijk r←and Fq。
- DO计算编码块:
$$
c_{ij} = \sum_{k=1}^m \alpha_{ijk} \cdot w_k \in F^{z+m}_q \tag{9}
$$
- DO计算标签:
$$
t_{ij} = k_{DO} \cdot c_{ij} + f_{k_{PRF}}(i||j) \in F_q \tag{10}
$$
- 对于 ∀j ∈{1, d}, DO将{cij , tij}发送给 Si。
6.3 检查(随机检查)
-
DO按如下方式生成挑战 Q:
- DO生成 s r←and{1,···, d}。 s在每次服务器和检查时间可以不同。
- DO生成挑战 Q,该挑战由 s对(b1, β1) ···,(bs, βs)组成,其中 bu r←and{1,···, d}和 βu r←and F q 对应于 u ∈{1,···, s}。
- DO将 Q={(b1, β1) ···,(bs, βs)}发送给 Si。 -
Si响应 DO如下:
- Si合并编码块:
$$
c_i = \sum_{u=1}^s \beta_u \cdot c_{ib_u} \in F^{z+m}_q \tag{11}
$$
- Si合并标签:
$$
t_i = \sum_{u=1}^s \beta_u \cdot t_{ib_u} \in F_q \tag{12}
$$
- Si将{ci, ti}发送给 DO。
-
DO按如下方式验证 Si:
- DO计算:
$$
t’
i = k
{DO} c_i + \sum_{u=1}^s \beta_u \cdot f_{k_{PRF}}(i||b_u) \tag{13}
$$
- DO检查以下等式是否成立。如果成立,则Si正常;否则, Si已损坏。
$$
t’_i = t_i. \tag{14}
$$
公式14的正确性证明如下:
证明
.
$$
t’
i = k
{DO} c_i + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u) \quad \text{//因为公式13}
$$
$$
= \sum_{u=1}^s k_{DO} \beta_u c_{ib_u} + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u) \quad \text{// 因为公式11}
$$
$$
= \sum_{u=1}^s \beta_u (k_{DO} c_{ib_u} + f_{k_{PRF}}(i||b_u)) = \sum_{u=1}^s \beta_u t_{ib_u} \quad \text{//因为公式10,其中 j= bu}
$$
$$
= t_i \quad \text{//因为公式12}
$$
6.4 修复
当检测到损坏的服务器(Sr)时,使用新服务器(S′ r)进行替换Sr。
-
DO执行与检查阶段相同的操作,直到获得足够数量的 d有效聚合编码块(包含在服务器响应中),即Rc={ci1 ,···, ci d} 。
-
DO计算 d编码块和 d标签,具体如下:
- DO将 d有效的聚合编码块分配为S′ r的新编码块:(cr1 ,···, crd) ←(ci1 ,···, ci d) 。
- DO计算新标签:trj = crj · kU+ fkPR F(r||j),其中 j ∈{1,···, d}。 -
DO将{crj , trj} 发送给 S′ r,其中 j ∈{1,···, d}。
6.5 检索
当 U想要检索 F时,首先他会执行类似于检查阶段的操作,以收集足够的 m 编码块。 U随后求解出 m文件块,并通过拼接所有文件块来恢复F。检查阶段 与检索阶段的区别在于,在检查阶段 DO使用 kDO和 kPRF来检查服务器,而 在检索阶段, U使用kU和 kPRF来检查服务器。具体而言, U执行如下操作:
-
U按如下方式生成挑战 Q :
- U生成 s r←and{1,···, d}。
- U生成挑战 Q,该挑战包含 s对(b1, β1) ···, (bs, βs),其中 bu r←and{1,···, d}和 βu r←and Fq对应 u ∈{1,···, s}。
- U将 Q={(b1, β1) ···,(bs, βs)}发送给 Si。 -
Si响应 U如下 :
- Si组合编码块:
$$
c_i = \sum_{u=1}^s \beta_u \cdot c_{ib_u} \in F^{z+m}_q \tag{15}
$$
- Si合并标签:
$$
t_i = \sum_{u=1}^s \beta_u \cdot t_{ib_u} \in F_q \tag{16}
$$
- Si将{ci, ti}发送给 U。
-
U按如下方式验证 Si
:
- U计算:
$$
t’
i = k_U c_i + \sum
{u=1}^s \beta_u \cdot f_{k_{PRF}}(i||b_u) \tag{17}
$$
- U检查以下等式是否成立。如果成立,则Si正常;否则, Si已损坏。
$$
t’_i = t_i. \tag{18}
$$
公式18的正确性证明如下:
Proof
.
$$
t’
i = k_U c_i + \sum
{u=1}^s \beta_u f_{k_{PRF}}(i||b_u) \quad \text{//because of Eq. 17}
$$
$$
= (k_{DO} + k_\varphi) c_i + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u) \quad \text{//because of Eq. 8}
$$
$$
= (k_{DO} + k_\varphi) \sum_{u=1}^s \beta_u c_{ib_u} + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u) \quad \text{//because of Eq. 15}
$$
$$
= (k_{DO} + k_\varphi) \sum_{u=1}^s \sum_{k=1}^m \beta_u \alpha_{ib_u k} w_k + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u)
\quad \text{//because of Eq. 9 when replacing j= bu}
$$
$$
= k_{DO} \sum_{u=1}^s \sum_{k=1}^m \beta_u \alpha_{ib_u k} w_k + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u)
\quad \text{// because } k_\varphi w_k = 0, \forall k \in {1,\cdots, m}
$$
$$
= k_{DO} \sum_{u=1}^s \beta_u c_{ib_u} + \sum_{u=1}^s \beta_u f_{k_{PRF}}(i||b_u) \quad \text{// because of Eq. 9 with j= bu}
$$
$$
= \sum_{u=1}^s \beta_u (k_{DO} c_{ib_u} + f_{k_{PRF}}(i||b_u)) = \sum_{u=1}^s \beta_u t_{ib_u} \quad \text{// because of Eq. 10 with b_u = j}
$$
$$
= t_i \quad \text{// because of Eq. 16}
$$
- 在收集到足够多的 m聚合编码块后,U通过使用高斯消元法计算出 m增广 块{w1,···, wm},然后获取每个增广块第一个元素中包含的 m文件块 {v1,···, vm}。最后, U恢复原始文件为 F= v1|| ··· ||vm。
访问控制
在本部分,我们说明 POR‐2P 如何在检索过程中实现访问控制。考虑以下场景: DO 拥有多个文件,并且存在多个用户。每个用户对每个文件具有不同的访问权限。为应对这一挑战,我们的主要思想是,若 DO 希望某用户能够检索某些文件,则 DO 将生成密钥 kφ,使其与这些文件正交。
具体而言,假设 DO拥有 h个文件:{F1,···, Fh}。令 x表示文件索引。然后,对于每个 x ∈{1,···, g}, DO执行:
- 将 Fx划分为 m个块: Fx= vx1|| ··· ||vxm。
- 创建增广块: {wx1,···, wxm}。
- 计算每个 i ∈{1,···, n}的编码块: {cxi1,···, cxid}。
- 计算每个 i ∈{1,···, n}的标签:{txi1,···, txid}。
假设有 h个用户{U1,···,Uh}参与系统。假设 DO允许 Uy,其中 y ∈{1,···, h}检索文件的子集:Γy={Fx1,···, Fxr} ⊆{F1,···, Fh}。为了 实现此访问控制, DO按如下方式管理密钥:
- kDO r←and F z+m q 。
- kφy ∈ F z+m q ←正交密钥生成(wx1,···, wxm),适用于所有 x ∈{x1,···, xr}。 kφy 的性质是,它与属于 Γy的所有文件的增广块正交。 形式化地,对所有x ∈{x1,···, xr}, kφy wx1= ···= kφy wxm= 0成立。
- kPRF r←and F κ q。
然后, DO将 kUy = kDO+ kφy 发送给 Uy。注意, kDO和 kPRF对所有用户都 相同,但只有 kφy 因用户而异,具体取决于该用户被允许检索的文件。
7 安全性分析
在描述POR如何从对抗模型中的攻击获得安全保障之前,我们首先给出数据检索条 件如下。
定理1 . 如果在任意轮次中,至少有 m个编码块是正常的,则可以检索到 F 。
证明 。 F= v1|| ··· ||vm。因此,为了检索 F,我们将 v1,···, vm视为需要求解的 m 未知数。由于每个编码块都是由所有 m文件块的线性组合计算得到,为了解出这 些 m编码块,我们需要至少m个编码块,以使线性系数矩阵具有满秩。
7.1 来自用户的攻击
We c考虑 U搜索 DO的密钥{kDO, kφ}的概率 .
定理2 . 给定kU,无法通过暴力搜索或正交密钥生成推导出{kDO, kφ}。
证明 。 因为kU= kDO+ kφ ∈ Fz+m q ,通过暴力搜索找到 kDO和 kφ的概率为 1/qz+m。如果 q选择得足够大(即160位),则找到{kDO, kφ}的概率为 1/(2160)(z+m),可以忽略不计。
除了暴力搜索外, U还可以按如下方式搜索{kDO, kφ} :在获得足够的 m编码块并检索所有 m增广块后, U运行正交密钥生成以找到与所有 m增广块正交的 所有基向量,从而获得 kφ。设{b1,···, bz}为U通过正交密钥生成找到的基向量 (如正交密钥生成中所述)。 kφ的计算方式为: kφ ← ∑z i=1 ri ·bi ∈ Fz+m q ,其中 ri ∈ Fq由伪随机函数随机生成。因此, U成功获得 kφ的概率为 z/q。这意味着 U必须猜出所有 z个随机的 ri才能获得 kφ。如果 q选择得足够大(例如160位), 则找到 kφ的概率为 z/2160,该概率可以忽略不计。
我们现在证明 U无法为任何新文件块计算标签。对于旧文件块, U没有计算标 签的必要,因为标签已经存在(由 DO计算得出)。
定理3 。 给定一个新文件块 vπ(vπ= v1,···, vm) 和密钥 kU= kDO+ kφ, U 无法伪 造 vπ 的标签。
证明 。 给定 vπ,新的编码块计算如下:
$$
c_{ij} = \sum_{k=1}^m \alpha_{ijk} w_k + \alpha_\pi w_\pi \in F^{z+m}_q \tag{19}
$$
其中 απ r←and F q。假设 U尝试使用 kU和kP来计算 cij的标签:
RF
$$
t_{ij} = k_U \cdot c_{ij} + f_{k_{PRF}}(i||j) \in F_q
= (k_{DO} + k_\varphi) \cdot c_{ij} + f_{k_{PRF}}(i||j)
= (k_{DO} + k_\varphi)(\sum_{k=1}^m \alpha_{ijk} w_k + \alpha_\pi w_\pi) + f_{k_{PRF}}(i||j)
= k_{DO} \sum_{k=1}^m \alpha_{ijk} w_k + (k_{DO} + k_\varphi)\alpha_\pi w_\pi + f_{k_{PRF}}(i||j) \quad \text{//because } k_\varphi w_k = 0
$$
请注意,由于只有DO知道 kφ,因此只有DO能够生成满足 kφvπ= 0的 vπ。 换句话说,如果 vπ不是由DO而是由其他方(即用户)生成的,则 kφvπ ≠ 0。
在检查阶段, DO使用 kDO和 kPRF通过公式14验证服务器:
$$
t’
i = k
{DO} c_i + \sum_{u=1}^s \beta_u \cdot f_{k_{PRF}}(i||b_u)
= \sum_{u=1}^s k_{DO} \beta_u c_{ib_u} + \sum_{u=1}^s \beta_u \cdot f_{k_{PRF}}(i||b_u)
= \sum_{u=1}^s \beta_u (k_{DO} c_{ib_u} + f_{k_{PRF}}(i||b_u))
= \sum_{u=1}^s \beta_u (k_{DO} (\sum_{k=1}^m \alpha_{ib_u k} w_k + \alpha_\pi w_\pi) + f_{k_{PRF}}(i||b_u))
= \sum_{u=1}^s \beta_u (k_{DO} \sum_{k=1}^m \alpha_{ib_u k} w_k + k_{DO} \alpha_\pi w_\pi + f_{k_{PRF}}(i||b_u))
$$
$$
t_i = \sum_{u=1}^s \beta_u t_{ib_u}
= \sum_{u=1}^s \beta_u (k_{DO} \sum_{k=1}^m \alpha_{ijk} w_k + (k_{DO} + k_\varphi) \alpha_\pi w_\pi + f_{k_{PRF}}(i||j))
\quad \text{// replace } t_{ib_u} = t_{ij} \text{ where } j = b_u
$$
很明显, ti ≠ t′ i。因此, U无法伪造 vπ的标签。
7.2 来自服务器的攻击
响应重放攻击
。 假设执行此攻击的恶意服务器是 Si。
- 第1轮次: DO通过 Q={(b1, β1) ···,(bs, βs)}对 Si发起挑战。 Si响应一个有效的{ci, ti}对。 DO验证 ti= kDOci+∑ s u=1 βu · fkPRF(i||bu)。
- 第2轮次: DO通过 Q′={(b′ 1, β′ s, β′ s)}对 Si发起挑战。 Si重用{ci, ti},但由于 ti≠ kDOci+∑ s u=1 β′ u · fkPRF(i||b′ u)而无法通过 验证。
因此, Si无法通过此攻击的验证。类似地,在检索阶段, U也使用其密钥 kU 和 kPRF如同检查阶段一样进行操作, Si也无法通过此攻击的验证。
污染攻击 。 假设恶意服务器 Si在修复阶段向{ci, ti}提供被污染的 DO,或在检 索阶段向 U提供。关键在于, DO和 U总会检查每一个提供的响应。 Si若 ti= kDOci+∑ s u=1 βu · fkPRF (i||bu)(公式14)和ti= kUci+∑ s u=1 βu · fkPRF (i||bu)(公式18)中的 ci和 ti不是编码块和标签在对应点上使用系数{b1,···, bs} 的{β1,···, βs}独立线性组合,则无法通过验证。
8 效率分析与性能评估
效率分析 。 表1给出了RDC‐NC[20],NC-Audit[22], MD-POR[23]与 POR‐2P方案之间的效率比较。NC‐Audit和MD‐POR方案支持公开认证,这意 味着一个称为第三方审计员(TPA)的实体被数据拥有者委派去检查服务器的 任务。MD‐POR具有多个数据拥有者。为了进行公平比较,我们假设 NC‐Audit和MD‐POR方案中的检查阶段由数据拥有者执行,并且假设 MD‐POR仅有一个数据拥有者。
| RDC‐NC [20] | NC‐Audit [22] | MD-POR [23] | POR‐2P(提案) | |
|---|---|---|---|---|
| 编码阶段 计算. (DO) | O(mnd) | O(mnd) | O(m) | O(mnd) |
| 编码阶段 计算. (服务器) | O(1) | O(1) | O(mnd) | O(1) |
| 编码阶段 Comm | O(nd(|F| m+ m)) | O(nd(|F| m+ m) + mnd) | O(mn(|F| m+ m)) | O(nd(|F| m+ m)) |
| 检查阶段 计算. (DO) | O(nds) | O(ns) | O(n) | O(n) |
| 检查阶段 计算. (服务器) | O(ndm) | O(ns) | O(nd) | O(ns) |
| 检查阶段 Comm | O(n(|F| m+ m)) | O(n(|F| m+ m)) | O(n(|F| m+ m)) | O(n(|F| m+ m)) |
| 修复阶段 计算 (DO) | O(ld) | O(ld) | O(ld) | O(sd) |
| 修复阶段 计算. (服务器) | O(ld) | O(ld) | O(ld) | O(sd) |
| 修复阶段 Comm | O((l+d)(|F| m+m)) | O((l+d)(|F| m+m)+ ld) | O((l+d)(|F| m+m)) | O((s+ d)(|F| m+ m)) |
| 检索阶段计算(U) 计算(DO) | O(sm)+ O(G) | O(sm)+ O(G) | O(sm)+ O(G) | O(sm) + O(G) |
| 检索阶段计算(U) 计算. (服务器) | O(|F| + m²) | O(sm) | O(|F| + m²) | O(sm) |
| 检索阶段计算(U) Comm | O(n(|F| m+ m)) | O(n(|F| m+ m)) | O(n(|F| m+ m)) | O(n(|F| m+ m)) |
注:l表示在RDC‐NC、NC‐Audit和MD‐POR中使用的健康服务器数量。O(G)表示使用高斯消元法求解 m个文件块的复杂度。Comp. 表示计算。Comm. 表示通信。N/A表示由于缺乏支持而不适用。
性能评估 。 我们评估了POR‐2P方案的计算性能,以表明其适用于实际系统。 实验程序使用Python 2.7.3编写,在配备Intel Core i5处理器、2.4 GHz主频、 4 GB内存和Windows 7 64位操作系统的计算机上运行。所使用的素数 q设为 256位。服务器数量设为10(n= 10)。每个服务器中存储的编码块数量设为 20(d= 20)。对每个服务器的抽查次数设为 d的一半(s= d/2= 10)。每 个文件块的大小设为 223位(1 MB)。通过改变文件大小,观察四种计算性能 的实验结果:图3(编码)、图4(检查)、图5(修复)和图6(检索)。
图3显示,编码和初始化(分割文件)函数的计算时间随文件大小线性增 加,而密钥生成函数的计算时间保持不变。当文件大小为1 GB时,编码和初始 化函数的计算时间分别约为8308.561秒和1863.914秒。图4显示,挑战、响应 和验证函数的计算时间保持不变。图5显示,修复函数的计算时间也保持不变。 图6显示,检索函数在用户端的计算时间几乎呈线性增长,在服务器端则保持 不变。当文件大小为1 GB时,用户端检索函数的计算时间约为2691.186秒。
尽管数据拥有者端的编码、初始化和检索函数的图表随文件大小呈线性增 长,但编码和初始化阶段仅在开始时执行一次,而检索阶段也执行次数极少。 与此同时,在系统生命周期中,检查和修复阶段会频繁执行,且计算量保持恒 定,如图表所示。上述结果表明,POR‐2P在实际系统中非常高效且适用。
9 结论和未来工作
本文提出了POR‐2P,以支持数据提供‐支付系统,在该系统中用户可以通过对 称密钥设置来检查和检索数据。POR‐2R还可以在检索过程中处理访问控制。 安全性分析表明,POR‐2P能够防止来自用户和服务器的攻击。此外,效率分析 和性能评估表明,POR‐2P非常适用于实际系统。进一步工作研究了先前的方案 的实现。
17

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



