41、云存储数据去重方案:安全与效率的平衡之道

云存储数据去重方案:安全与效率的平衡之道

在当今数字化时代,云存储已成为数据管理的重要手段。然而,数据的安全性和存储效率一直是云存储面临的两大挑战。本文将介绍一种基于单服务器的数据去重方案,该方案旨在解决这些问题,确保数据的安全存储和高效利用。

1. 云服务器图像验证方法

首先,我们来看一种云服务器验证客户端提供的图像是否与 phash 匹配的方法:
1. PR 操作 :PR 随机生成一个排列 π,计算图 H = πI,然后将 H 发送给 VE。
2. VE 操作 :VE 生成一个比特值 θ ∈{0, 1} 并发送给 PR。
3. PR 响应 :PR 根据 θ 的值做出不同反应:
- 若 (θ = 1),PR 发送 β = π。
- 若 (θ = 0),PR 发送 β = πϕ。
4. VE 计算
- 若 (θ = 0),βIθ = πϕP = πI = H。
- 若 (θ = 1),βIθ = πI = H。

通过上述方法,云服务器可以有效地验证客户端提供的图像与 phash 的匹配性。

2. 系统模型

本方案采用客户端去重策略,无需额外服务器来解决暴力猜测攻击。该方案包含三种角色:
- 上传客户端 (C) :需要将数据外包到云服务器的用户。为保护数据隐私,存储的文件应进行加密。为节省存储和带宽,C 会通过发送文件指纹检查上传文件在服务器上是否存在,重复文件将不被上传。
- 云服务器 (CS) :存储客户端的私有数据。为节省存储成本,需要对图片和视频等多媒体数据进行去重。CS 会严格执行指令,但可能会尝试猜测客户端隐私(诚实但好奇)。
- 并行客户端 (PCi) :已在 CS 上存储数据的客户端。当 C 可能持有相似或相同图像时,PCi 协助 CS 完成 C 的数据所有权验证。若 C 通过验证,将被定义为新的 PCi 成员,并获得解密数据的密钥。

系统框架如下:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(上传客户端 C):::process -->|上传准备| B(云服务器 CS):::process
    A -->|首次上传| B
    A -->|去重| B
    C(并行客户端 PCi):::process -->|去重| B
    C -->|检查| B
3. 威胁模型

在本方案中,三个实体都不完全可信,各自存在不同的安全威胁:
- 恶意上传客户端 :C 可能使用文件指纹发起数据所有权欺骗攻击,或进行伪造攻击,即使用正确标签反复检查,但上传与标签不一致的伪造密文,损害其他客户端文件的完整性。
- 诚实但好奇的云服务 :CS 会忠实地执行存储和去重指令,但可能试图窃取和理解存储密文的底层内容,还可能与 C 或 PCi 勾结猜测存储内容,从而窃取用户数据信息。
- 恶意并行客户端 :PCi 可能在与 C 的哈希比较中虚假报告信息,导致重复数据未被去重,浪费 CS 的存储空间。此外,PCi 还可能与 CS 合谋窃取 C 的私人信息。

虽然三个实体两两勾结的概率较低,但仍有可能发生,且普通用户很难察觉隐私是否泄露,因此系统的安全性需要进一步提高。

4. 设计目标

基于上述威胁模型,本方案设计了以下安全目标:
- 数据隐私 :即使数据在不安全的通道中传输并被对手窃取,没有解密密钥,对手也无法得知数据的明文。
- 抗暴力攻击 :即使对手获得所有数据明文,也无法通过特定标签数据猜测存储在 CS 上的加密数据。
- 抗勾结攻击 :即使两个实体合作交换通信参数和其他信息,也无法获取其他有效的私人数据信息。
- 标签一致性 :严格检查 C 上传的数据是否与标签匹配,因为标签不一致会对后续的去重和下载工作产生严重负面影响。
- 追踪对手 :在安全系统中,数据安全无法得到绝对保证,但必须有一种方法在受到攻击后追踪对手。
- 效率 :本方案的主要目标是在确保用户隐私和安全的同时,高效地检测和删除重复数据,力求在去重过程中实现最大效率并保持低开销。

5. 方案符号说明

为了更好地理解后续的方案流程,我们先介绍一下方案中使用的符号及其含义:
| 符号 | 描述 |
| ---- | ---- |
| ID | C 的身份标识 |
| pkc | C 的公钥 |
| skc | C 的私钥 |
| kc | 对称加密密钥 |
| IDi | PCi 的身份标识 |
| pkpci | PCi 的公钥 |
| skpci | PCi 的私钥 |
| pkci | CS 的公钥 |
| skci | CS 的私钥 |
| phc | 来自 C 的图像指纹 |
| phci | 来自 PCi 的图像指纹 |
| d(·) | 汉明距离计算操作 |
| D | 去重阈值 |
| url | C 的存储地址 |
| OutPut(·) | 短哈希构造函数 |
| Enc(·) | 公钥加密算法 |
| E(·) | 对称加密算法 |

6. 方案流程

本方案包括四个主要阶段:上传准备、首次上传、去重和下载。下面我们将详细介绍每个阶段的具体步骤。

6.1 上传准备

客户端需要按照以下步骤确定其文件是否需要去重:
- 客户端操作
1. CS 检查 I 和 P 是否匹配,验证通过后进行后续流程。
2. C 从图像中提取 phash 并转换为 phashi(为方便 CS 计算相似指纹,C 应选择 phash1 或 phash2)。
3. C 生成公钥 pkc、私钥 skc 和 id,获取云存储服务器的公钥 pkci 并使用 pkci 加密 phashi。
4. C 向 CS 发送 M1:M1 = Encpkci (id, phash1)。
- 云服务操作
1. 生成公钥 pkci 和私钥 skci。
2. 接受 M1 并使用 skci 解密 M1。
3. 进行去重检查,确认上传的图像是否为近似重复文件,并决定是否进行进一步的去重操作:
- 若 d > D,执行首次上传。
- 若 d ≤D,执行去重。

上传准备阶段的流程如下:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(上传客户端 C):::process -->|提取 phash 并进行 POW| B(云服务器 CS):::process
    A -->|创建 (pkc, skc, id)| B
    A -->|M1 = Encpkci(id, phash1)| B
    B -->|创建 (pkci, skci)| B
    B -->|m1 = Deskci(M1)| B
    B -->|去重检查| B
    B -->|d = d(phash1, phashpci)| B
    B -->|若 d > D| C(执行首次上传):::process
    B -->|若 d ≤D| D(执行去重):::process
6.2 首次上传

如果 CS 中没有重复文件,C 将在重复数据删除检查后被要求上传图像,具体步骤如下:
1. CS 创建一个公共资源定位符 URL 来存储 C 的加密文件:URL = Encpkc(url)。
2. C 接受 URL 并使用 skc 解密。
3. C 使用 kc 加密图像 (img) 并将 Ic 发送给 CS:Ic = Ekc(img)。
4. CS 接受 Ic 并记录 {Ic, phashi, id}。

首次上传阶段的流程如下:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(上传客户端 C):::process -->|接受 URL| B(云服务器 CS):::process
    A -->|Deskc (URL)| A
    A -->|Ic = Ekc (img)| B
    B -->|创建 URL = Encpkc (url)| B
    B -->|记录 {Ic, phashi, id}| B
6.3 去重

当 C 进入去重阶段时,意味着 CS 可能已经存储了与上传图像相似的图像,此时 C 需要与 CS 和 PCi 进行交互。具体步骤如下:
- 步骤 1:CS 通过汉明距离确定 C 可能与 PCi 有相似或相同的图像
1. CS 从云数据库中查找 PCi。
2. CS 构建一个 n′ 位的 OutPut 函数,n′ 是输出 phash 的长度,n′ ∈(n/2, n]。
3. CS 使用 pkc 加密 IDci 和 D′(D′ 是当前轮次确定图像是否相似的阈值):IDi = Encpkc(IDci||D′)。
4. CS 使用 pkpci 加密 IDc 和 D′:IDc = Encpkpci (IDc||D′)。
5. CS 将 IDi 发送给 C,将 IDc 发送给 PCi。
- 步骤 2:C 和 PCi 通信以确定 C 的文件是否与 PCi 的文件相似
1. C 使用输出函数重新生成 ph′c:ph′c = OutPut(n′, phc)。
2. C 使用 pkpci 加密 ph′c 并发送给 PCi:Encpkpci (ph′c)。
3. PCi 使用输出函数重新生成 ph′ci:ph′ci = OutPut(n′, phci)。
4. PCi 使用 pkc 加密 ph′ci 并发送给 C:Encpkc (phci′)。
5. C 和 PCi 计算 ph′ci 和 ph′c 之间的汉明距离 d(∗),并判断两个文件是否相似,算法如下:

Algorithm 1. Algorithm for Judging File Similarity (First Round)
dl = d(ph′c, ph′ci)
if
dl > D′ then
    Execute First Upload;
else
    ph′′c = OutPut(n, phc)
    Encpkpci (ph′′c).
end
这里需要强调两点:
    - 为避免 CS 和 C(或 PCi)的勾结攻击,本轮构建的 phash 长度应小于 n。如果当前轮次的 phash 长度达到 n,CS 可以获取图像的完整 phash,并使用字典攻击获取图像的明文信息。
    - CS 执行首次上传操作的前提是 PCi 和 C 反馈给 CS 的结果都是执行首次上传。如果 P 和 C 的反馈不一致,CS 有理由怀疑存在恶意对手。
  • 步骤 3:本次通信将最终确定 C 的图像在 CS 中是否有相似图像
    1. C 使用输出函数重新生成 ph′′c:ph′′c = OutPut(n, phc)。
    2. C 使用 pkpci 加密 ph′′c 并发送给 PCi:Encpkpci (ph′′c)。
    3. PCi 使用输出函数重新生成 ph′′ci:ph′′ci = OutPut(n, phci)。
    4. PCi 使用 pkc 加密 ph′′ci 并发送给 C:Encpkc (ph′′ci)。
    5. C 和 PCi 计算 ph′′ci 和 ph′′c 之间的汉明距离 d(∗),并判断两个文件是否相似,算法如下:
Algorithm 2. Algorithm for Judging File Similarity (Second Round)
dl′ = d(phc′′, ph′′ci)
if
dl′ > D then
    Execute First Upload;
else
    Execute Deduplication.
end
如果 CS 执行去重操作,将 C 添加到 PCi 中。此外,C 和 PCi 通过相互认证后,PCi 将使用 pkc 加密解密图像的 kc 和 URL 并发送给 C。这里也有两点需要强调:
    - 用于比较的 phash 长度应为 n,phash 长度越长,比较越准确,去重率越高。
    - CS 对 C 的图像进行去重操作,意味着 C 和 PCi 有相似或相同的图像,C 将加入 PCi 并在未来 CS 的去重工作中协助认证。

去重阶段的流程较为复杂,可参考以下 mermaid 流程图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(云服务器 CS):::process -->|查找 PCi| B(并行客户端 PCi):::process
    A -->|构建 n′ 位输出函数| A
    A -->|IDi = Encpkc (IDci||D′)| C(上传客户端 C):::process
    A -->|IDc = Encpkpci (IDc||D′)| B
    C -->|phc′ = OutPut(n′, phc)| C
    C -->|Encpkpci (phc′)| B
    B -->|phci′ = OutPut(n′, phci)| B
    B -->|Encpkc (phci′)| C
    C -->|dl = d(phc′, phci′)| C
    C -->|若 dl > D′| D(执行首次上传):::process
    C -->|若 dl ≤D′| C
    C -->|phc′′ = OutPut(n, phc)| C
    C -->|Encpkpci (phc′′)| B
    B -->|phci′′ = OutPut(n, phci)| B
    B -->|Encpkc (phc′′)| C
    C -->|dl′ = d(phc′′, phci′′)| C
    C -->|若 dl′ > D| D(执行首次上传):::process
    C -->|若 dl′ ≤D| E(执行去重):::process
    E -->|将 C 加入 PCi| B
    B -->|Encpkc (kc, urli)| C
    C -->|保存 (kc, urli)| C
6.4 下载

只有之前在 CS 中存储过图像的客户端 C 才能进入下载阶段,C 已保存 (kc, urli),因此可以直接通过 URL 找到图像存储位置,并使用 kc 解密图像。具体步骤如下:
1. C 找到与恢复图像 img 相关的信息 kc, url。
2. C 通过 url 找到存储地址,并使用 kc 解密 img,解密公式为:img = Dekc(Ekc(img))。

下载阶段的流程相对简单,可总结为:客户端 C 凭借已保存的信息找到存储地址并解密图像。

综上所述,该云存储数据去重方案通过一系列的操作流程和安全机制,在保证数据隐私和安全的前提下,实现了高效的数据去重和存储管理。在实际应用中,需要根据具体的安全需求和系统环境,合理调整方案中的参数和策略,以达到最佳的安全和效率平衡。同时,持续关注和应对不断变化的安全威胁,也是保障云存储系统安全稳定运行的关键。

7. 安全分析

本方案在多个方面进行了安全设计,下面我们将详细分析其安全性。

7.1 数据保密性

在基于单服务器的数据去重方案中,安全性是重中之重。对于上传到云服务器的客户端数据,CS 和不拥有相似文件的 PCi 无法得知其内容。在本方案中,CS 存储了来自 C 的 {IDi, Encpkc, phashi},但 CS 没有解密 img 的密钥,因此不具备解密条件。本方案采用公钥加密方法,其中设计的 pkc 和 skc 在数学上相关。虽然 pkc 是公开的,但仅依靠 pkc 无法推导出 skc(或者说无法在多项式时间内破解 skc)。在整个方案中,唯一可能泄露 skpci 的是 PCi,但一旦 PCi 泄露 skpci,就相当于泄露了自己的私有信息,所以这种情况不会发生。此外,只有合法用户才能知道 url,这有效地防止了对手获取机密数据。关于通过 phash 窃取用户数据的安全问题,将在后续详细讨论。

7.2 抗暴力攻击

本方案中的暴力攻击主要体现在两个方面:
1. 离线猜测 :在本方案中,原始数据的 phash 长度为 64 位二进制 {0, 1}n(n = 64)。恶意对手想要直接离线猜测并使用暴力破解的概率为 P。由于每一位有两种选择,总共 64 位,根据概率计算公式 P = (1/2)64,我们可以认为成功猜测的概率极低,因此可以抵抗离线猜测攻击。
2. 在线猜测 :对手在 PC 和 C 的相互验证过程中进行猜测。验证过程中的 phashi′ 比 CS 中存储的 phashi 长 26 位,所以正确猜测的概率为 U。同样,每一位有两种选择,26 位的概率为 U = (1/2)26。而且,PC 和 C 之间的通信次数是有限的,对手无法一直进行猜测。综合考虑,我们认为在线猜测成功的概率极低,因此可以抵抗在线猜测攻击。

综上所述,本方案能够有效抵抗暴力攻击。此外,关于暴力获取解密密钥的问题,在数据保密性部分已经进行了讨论。

7.3 抗重放攻击

重放攻击是指攻击者发送已被目标主机接收的数据包,以欺骗系统获取其他用户的私人信息。在本方案中,假设对手在首次上传阶段获得了 phashi,对手可以使用 phashi 与 CS 通信并顺利进入去重阶段。但在去重阶段,PCi 和对手会进行相互验证并计算汉明距离 d(hashi, hashci)。在此过程中,phashi 的长度满足 (n′ > n/2),毫无疑问 (d > D),所以 PCi 不会通过对手的验证。

7.4 抗勾结攻击

本方案假设三个实体中的任意两个都可能勾结,即使这种勾结会影响实体的声誉。勾结情况可分为以下几种:
1. CS 和 C 合谋欺骗 PCi 的私人信息 :CS 和 C 合谋意味着直接进入去重阶段。在这个阶段,PCi 会使用自己的 phci 和 C 的 phashc 计算汉明距离。由于 C 没有能力提供长度改变后的 phash′c,所以检查不会通过。此外,本方案还限制了每个实体的在线通信次数,以更有效地防止信息泄露。
2. CS 和 PCi 合谋获取 C 的信息 :当 CS 故意让 C 进入去重阶段,使 PCi 有机会窃取 phashC,然后通过字典解密 C 的 img 时,在本方案中,C 和 CS 会同时进行首次验证。PCi 不提供正确的 phashci,C 执行汉明距离计算,通过 (d > D),C 会直接取消与 PCi 的后续通信,记录 PCi 的 ID,并将该 PCi 视为恶意客户端。
3. C 和 PCi 合谋 :CS 会在上传准备阶段对 C 进行标签一致性验证。为了通过验证,C 只能使用同伙 PCi 的数据,这意味着 PCi 将其数据泄露给了 C。因此,我们分析认为 C 和 PCi 之间不会发生勾结。

7.5 标签一致性

在本方案中,有两个地方可以进行标签验证:
1. 首次验证 :验证方法如图 2 所示(此处虽未给出图,但不影响理解原理)。在这个过程中,C 向 CS 证明 img 和 phash 的一致性,同时避免了自己信息的泄露。这种提前验证标签一致性的方法弥补了事后验证的缺陷(事后验证损失不可挽回)。
2. C 和 PC 之间的相互验证 :如果 C 和 PC 反馈给 CS 的结果不一致,说明其中一方存在问题。此时,CS 只需检查 C 和另一个 PC′i,根据第二次检查的结果,就可以确定是 C 还是 PCi 存在问题(定位对手)。CS 检查来自 C 的消息 M1、来自 PCi 的消息 M2 和来自 PC′i 的消息 M3,判断标准如下:
- 如果 C 和 PCi 的反馈结果不一致,CS 会进一步检查 C 和 PC′i。
- 通过比较 M1、M2 和 M3 的内容和特性,结合去重阈值 D 和汉明距离计算结果,判断哪个实体提供的信息存在问题。

总结

本云存储数据去重方案通过精心设计的系统模型、威胁模型和安全目标,构建了一套完整的数据去重和存储管理体系。在方案流程方面,涵盖了上传准备、首次上传、去重和下载四个主要阶段,每个阶段都有明确的操作步骤和安全机制。在安全分析部分,从数据保密性、抗暴力攻击、抗重放攻击、抗勾结攻击和标签一致性等多个角度进行了详细分析,确保了方案在各种安全威胁下的可靠性。

在实际应用过程中,为了达到最佳的安全和效率平衡,需要根据具体的安全需求和系统环境,合理调整方案中的参数和策略。例如,调整去重阈值 D、输出 phash 的长度 n′ 等。同时,由于安全威胁不断变化,持续关注和应对这些变化也是保障云存储系统安全稳定运行的关键。只有不断优化和改进方案,才能适应日益复杂的云存储安全环境,为用户提供更加可靠的数据存储服务。

安全特性 描述
数据保密性 采用公钥加密,CS 无解密密钥,合法用户掌握 url 防止机密数据泄露
抗暴力攻击 离线猜测概率极低,在线猜测受通信次数和 phash 长度限制
抗重放攻击 去重阶段通过汉明距离验证防止重放攻击
抗勾结攻击 多种合谋情况均有应对措施,限制通信次数防止信息泄露
标签一致性 两次验证确保标签与数据匹配,可定位恶意实体
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(数据保密性):::process --> B(抗暴力攻击):::process
    B --> C(抗重放攻击):::process
    C --> D(抗勾结攻击):::process
    D --> E(标签一致性):::process
    E --> F(整体安全保障):::process

通过上述分析可以看出,该方案在保障数据安全和提高存储效率方面具有显著优势,但在实际应用中仍需不断完善和优化,以应对不断变化的安全挑战。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值