Abstract
分布式存储网络的痛点:数据隐私和证明系统效率相关的若干挑战。
FileDES (去中心化加密存储)包含了三个基本要素:
-
隐私保护:FileDES在保持数据可用性的同时提供加密数据存储
-
可扩展存储证明:同时具有可扩展的加密存储证明PoES(自创)算法,能够抵御Sybil和Generation攻击。
-
批量验证:介绍了一种基于rollup的批量验证方法,使用公开可验证的简洁证明同时验证多个文件。
1. INTRODUCTION
1.1 去中心化存储网络DSNs
简介:聚合来自独立提供商的可用存储空间,允许对数据进行协调和可靠的存储和检索。DSN的优势包括存储容量扩展,数据共享促进和数据安全增强。通过代币激励机制可以实现比传统分布式存储网络更大的容量。
仍然存在的问题:
-
数据隐私泄露:DSNs的目标是促进数据共享,目前的解决方案提供了两种主要的数据存储选项,即明文和简单加密数据。前一种允许用户直接存储非敏感明文,对数据隐私缺乏足够的保障;后者允许存储仅对指定用户可见的加密数据。这种做法会对数据的可获得性产生不利影响,阻碍数据共享,所以需要开发一种能够保证数据隐私性和高数据可用性的DSN解决方案。
-
成本高昂或安全性较弱的证明系统:空间证明(PoS)和时空证明(PoSt)是DSN证明系统的组成部分,可以通过发布实时挑战和请求响应来验证存储矿工是否提供了合法的存储服务。证明生成是时间密集型的且对硬件要求较高,需要折衷安全性以提高效率。例如,在Filecoin网络中,证明生成涉及一个复杂的数据结构,称为Stacked Depth Robust Graph,这使得它的计算代价很高。因此,需要一个最小的硬件配置256GB RAM和一个具有11GB VRAM的GPU来参与存储服务。Sia和Swarm提供了部分数据的证明,而Storj的证明系统是基于节点信誉的,可能导致节点恶意伪装。
-
循环证明验证效率低:在DSNs中,常见的任务是验证PoS和PoSt。这种验证过程会带来巨大的计算,特别这两种情况。(1)节点频繁地向存储矿工发起验证。例如,Filecoin网络每30分钟验证一个文件,每天48次,以验证大量的证明。(2)管理一个文件的多个版本时,需要同时对多个版本进行验证。所以一个高效的证明系统是必不可少的。
1.2 FileDES的贡献
-
提供了隐私保护、可扩展存储证明和批量证明验证,与Filecoin和Sia相比,FileDES在各种典型条件下都表现出了更优越的性能。
-
为了在保证数据可用性的同时保护数据隐私,提出了一种基于RSA和单向代理重加密(PRE)的加密存储方案。该方法不仅可以防止Sybil和Generation攻击,而且便于安全存储机制,无需复杂的PoS&PoSt方案。
-
提出了一种新的加密存储证明(PoES),它以高效和可扩展的方式在加密数据上提供不可伪造的PoS&PoSt。为了减轻Sybil攻击,还结合了一个随机存储矿工选择算法作为激励机制。
-
为了减少存储冗余,FileDES只存储文件增量。此外,还介绍了一种基于Rollup的批量验证方法,该方法只需向区块链提交一个公开可验证的证明,即可验证多个证明。
2. RELATED WORK
2.1 去中心化存储网络
-
Filecoin利用星际文件系统(IPFS)和预期共识机制,根据存储矿工的存储数量和质量来调整他们被选中的机会。Filecoin引入了tipsets的概念来实现并发块处理,允许在同一块高处确认多个块。
-
Sia是一个使用工作证明共识的DSN,为每个文件创建一个Merkle树,根哈希作为文件标识符。Sia可以验证文件之前是否已经上传,并在目录级别启用重复数据删除。它使用Threefish算法加密文件,难以支持版本索引和共享。它的账本结构是一个链式结构,本质上不支持并发块处理。
-
Storj和Swarm是基于以太坊构建的DSN。它们都使用了权益证明共识和基于链的账本。
-
File DAG是基于Filecoin实现的DSN。它在存储多版本文件时实现文件级去重,并采用DAG - Rider共识机制创建基于DAG的两层区块链账本,用于灵活和节省存储的文件索引。
总结:Sia、Storj和Swarm简化了它们的证明系统,提高了效率,但牺牲了安全性。Storj和FileDAG分别使用纠删码和增量生成来减少冗余。对于隐私保护,这些DSN唯一可以采用的方法是使用简单的加密,但这种方法无法保证加密数据的可用性。Sia和Swarm提高了存储证明效率,增强了可扩展性。FileDAG利用基于DAG的区块链来增强共识模块的可扩展性。并没有现有的系统考虑批量验证。
2.2 基于区块链的数据共享
-
MedChain是一个医疗数据共享方案,它采用区块链、摘要链和结构化P2P网络技术来提高医疗数据共享的效率和安全性。
-
SPDL是一个去中心化的学习系统,使用区块链和拜占庭容错共识来促进机器学习过程中的安全和私有数据共享。
-
Ghostor是一种利用去中心化信任来保护用户隐私和数据完整性的数据共享系统。该系统从服务器中隐藏用户身份,用户能够检测服务器端的完整性违规行为。
-
TEMS是一个通过使用具有防伪造数据的可信执行环境系统和一致性协议的框架,将区块链信任从链上扩展到物理世界,以持续、真实地将数据上传到区块链。
3. MODELS AND PRELIMINARIES
3.1 DSN模型
本文研究的DSN由4个不同的实体组成:客户端、存储矿工、检索矿工和rollup矿工。设计的DSN包含以下三个功能:
-
Put(F,SM)→CID:客户端执行Put协议将文件F上传到存储矿工SM,并获得文件标识符CID。
-
Get(CID,ReM)→Fa:客户端执行Get协议,将文件标识符CID发送给检索矿工ReM,以从DSN中检索数据。
-
Manage(F,SM,ReM,RoM) :协调网络参与者控制可用存储、审计服务和修复潜在故障。rollup矿工RoM能够为DSN管理生成聚合证据。
3.2 攻击模型
3.2.1 Sybil Attack(女巫攻击)
核心思路:用「假身份」假装存储了多个文件副本,实际存储量远小于声称的数量。
类比:
假设你去图书馆借书,工作人员要求你提供10本不同的书作为抵押。但你实际上只有1本书,于是你伪造了9个假身份(比如用不同的名字、假证件),每个身份都声称自己带了1本书。虽然总共有10个“人”交了书,但实际上只有1本是真的。
技术场景:
-
在分布式存储系统(如云存储、P2P网络)中,攻击者创建大量虚拟节点(假身份),每个节点都声称存储了文件的独立副本。
-
例如:攻击者用1个真实节点存储文件,然后伪造9个虚拟节点,欺骗系统认为有10个独立存储的副本。
-
目的是通过虚假的存储量获取更多资源(如奖励、带宽)或绕过系统的冗余要求。
3.2.2 Generation Attack(生成攻击)
核心思路:根本不存储文件,而是在需要验证时临时生成数据,假装已经存储。
类比:
你告诉朋友“我家有一本《哈利波特》全集”,但实际上你没有买。当朋友要求看时,你快速用打印机打印了一本临时的书,等朋友走后就销毁。虽然每次都能“展示”书,但其实从未真正拥有过。
技术场景:
-
攻击者声称存储了文件F,但实际只保存了一个极小的“生成器”(如种子或程序)。
-
每次需要验证时,攻击者用生成器快速生成文件内容,而不是直接读取存储的副本。
-
例如:存储1KB的程序,每次验证时用它生成1GB的文件,从而节省999MB的存储空间。
-
目的是节省存储成本,同时通过动态生成绕过存储证明机制。
3.3 其他知识
3.3.1 单向代理重加密(PRE):
math代码解读复制代码PRE = (KeyGen, ReKeyGen, Enc, ReEnc, Dec).
在FileDES中,PRE方案方便存储挖掘者将使用一个密钥加密的密文转换为使用不同密钥的新密文,而不需要访问明文。
3.3.2 零知识简洁非交互式知识论证(zk-SNARK)
zk-SNARK 能够在不泄露机密信息的前提下,验证一种关系的真实性。验证者可以确认矿工是否真的存储了数据,而无需矿工提供数据本身或其他敏感信息。
math代码解读复制代码ZK = (Setup, Prove, Verify)
4. THE DESIGN OF FILEDES
4.1 加密存储
FileDES设计包含了基于RSA或PRE的两个加密选项,以应对不同的场景。
4.2 加密存储的证明(PoES)
math代码解读复制代码PoES = (Setup, Prove, CycleProve, Verify),
由一系列多项式时间算法构成,具体如下:
-
PoES.Setup(客户端执行):客户端先计算文件
F
的第i
次增量F[i]
,并根据不同的加密方案(RSA或PRE),为F[i]
生成ctr
个加密副本 。每个副本都有唯一的文件标识符CID[i,j]
。之后通过RandomSelect
算法从存储矿工列表SM
中随机选择一个存储矿工SMr
,并使用DSN.Put
协议将加密副本上传至该矿工。最后将所有副本的标识符记录在CID
中,用于后续验证和检索。 -
RandSelect(客户端执行):该算法用于从存储矿工列表中选择存储副本的矿工。客户端遍历每个矿工
SMi
,获取其共识能力POWSMi
以及与上次确认存储交易的块高度差∆H
,计算每个矿工被选中的概率PSMi
。最终根据概率分布,通过生成随机数r
选择一个矿工SMr
。这种随机选择机制可有效抵御Sybil攻击,因为攻击者很难同时获取存储文件副本的任务。 -
PoES.Prove(存储矿工执行):存储矿工根据接收到的挑战
c
和文件标识符CID
,从本地存储获取加密副本FE
。然后为FE
构建Merkle树,其根节点为rt
。从Merkle树中选择一个特定叶子节点,并确定从该叶子节点到根节点的路径τc
。最后使用ZK.Prove
算法生成存储证明πPOS
,用于验证存储行为的真实性。 -
PoES.CycleProve(存储矿工执行):此算法用于生成时空证明
πPOST
,以证明数据被持续存储。存储矿工根据输入的挑战c
、轮数t
和文件标识符CID
,先从本地获取加密副本并构建Merkle树。在每一轮中,根据上一轮的时空证明πPOST
、当前挑战c
和轮数i
生成新的挑战c′
,调用PoES.Prove
生成存储证明πPOS
,再使用ZK.Prove
生成当前轮的临时证明。经过t
轮后,输出最终的时空证明πPOST
。 -
PoES.Verify(智能合约执行):智能合约通过
ZK.Verify
函数验证接收到的证明(πPOS
或πPOST
)是否有效。若证明有效,输出1
;若无效,则输出0
并惩罚提供该证明的存储矿工,如广播消息使该矿工的PSMi
为0,降低其后续被选择存储文件的概率。
4.3 批量验证和文件检索
由一组多项式时间算法和一个检索函数构成:
math代码解读复制代码Rollup = (Prepare, Collect, Aggregate),
- Rollup(批量验证算法集)
-
Rollup.Prepare(存储矿工执行):存储矿工执行该算法,向Rollup矿工(RoM)发送文件的内容标识符(CID),请求Rollup矿工聚合证明,并等待区块链确认相应的聚合证明。这一步是启动批量验证流程的开端,它让Rollup矿工知晓需要处理哪些文件的证明。
-
Rollup.Collect(Rollup 矿工执行):Rollup矿工执行此算法,输入内容标识符向量CID和时间参数(t) 。Rollup矿工首先确定存储CID所指示文件增量的存储矿工,然后向每个存储矿工发送挑战值c,请求他们执行PoES.CycleProve生成证明。Rollup矿工使用AsyncWait接收证明,并将有效证明维护在πPOST中。该算法实现了对多个文件证明的收集和初步筛选。
-
Rollup.Aggregate(Rollup 矿工执行):Rollup矿工利用此算法,根据π POST中的多个有效证明计算出一个长度为256字节的简洁证明πROLL。具体做法是使用一个根据πPOST大小进行预配置的Rollup电路,将得到的证明πROLL传输到智能合约进行最终确认,并在区块链上记录简要证明,以便在检索相应文件时进行链上验证。
- Retrieve(客户端执行):由想要检索特定文件的客户端执行。客户端首先获取与CID对应的πROLL并验证其有效性。然后,对于恢复完整文件所需的每个文件片段,客户端通过调用DSN.Get或
FE ← GetReEnc(CID[i,j], ReM)
,从检索矿工处请求文件片段,并在本地解密以获得FD。所有文件片段收集在F[i]中,客户端最终将所有文件片段组合在一起恢复文件。如果πROLL无效,则返回空值。
5. EVALUATION
5.1 对比Filecoin的区别
其中灰色模块代表从Filecoin修改的模块,蓝色模块代表从Filecoin修改或改进的模块,绿色模块代表新开发的模块。
5.2 系统结果对比
6. CONCLUSION
本研究引入FileDES协议,该协议集成了去中心化存储的三个关键要素:隐私保护、可扩展存储证明和批量证明验证。所提出的协议旨在解决DSN先行者面临的现有挑战,如数据隐私泄露、昂贵的存储证明和循环证明验证的低效率。FileDES在证明生成/验证效率、存储成本和可扩展性等方面都优于现有技术。
评论记录:
回复评论: