SCI论文(www.lunwensci.com)
摘 要:在如今的互联网应用场景下,大文件分发变得越来越常见。为了提升服务质量,互联网服务提供者通常会使用 CDN 等技术来提升用户体验,随之而来的是高昂的存储成本。同时,由于 CDN 服务的不可控性,文件的安全性存在风险。本 文借助 IPFS 的部分系统架构与思想,在保障文件安全性的前提下,尽可能节省文件分发带来的存储成本与流量成本。
File Storage and Distribution Model Based on IPFS Optimization
LI Jiakun
(College of Information,Liaoning University, Shenyang Liaoning 110031)
【Abstract】: In today's Internet application scenario, large file distribution is becoming more and more common. To improve the quality of service, Internet companies often use technologies such as CDN to enhance user experience, with the attendant high storage costs. At the same time, the security of files is at risk due to the uncontrollable nature of CDN services. This paper draws on some of the system architecture and ideas of IPFS to save the storage and traffic costs associated with file distribution as much as possible, while ensuring file security.
【Key words】:IPFS;file service;file distribution
0 引言
随着互联网的普及,中国网民已经到达 10.32 亿, 普及率已经达到 73%。当我们观看长视频、短视频以 及使用网盘下载时,会产生大量的网络流量。探索一种 更高效率的存储与分发模型,可以节约宽带成本,提高 互联网产品在市场上的竞争力。
IPFS[1] 是一种点对点协议,同时也是一个分布式的 文件系统。本文将讨论一种基于 IPFS 的文件存储分发 模型,借助 IPFS 的部分技术和实现方式,优化现有的 CDN 内容分发模型,在保障文件不丢失的前提下,提 升服务网络的可用性、优化带宽利用率,加强文件的保 密性,同时节约互联网企业的运营成本。
1 技术背景
IPFS( 星际文件系统 ) 最初由 Juan Benet 设计,后 于 2014 年开始, 由 Protocol Labs 在开源社区的帮助 下发展。IPFS 是一个分布式的系统,同时也是一个无 需节点相互信任的对等系统。
现有的文件分发模型大都采用 CDN 进行文件分发, 有时会额外采用 P2P 模式。CDN( 内容分发网络 ) 是利 用距离用户最近的服务器,分发用户请求的文件。在使 用 CDN 的情况下, CDN 服务器上会部署原始服务器上 的 SSL 证书,同时 CDN 服务器会存放文件原始副本, 充当用户与核心服务的“中间人”[2]。
2 本文方案之系统架构
本文提出的系统架构主要有文件列表集群、核心存 储集群、文件分发网络、用户客户端 4 个部分。出于商 业实际考虑,本方案部分采用中心化思想,部分采用去 中心化思想。
在本文方案中,为了保障文件安全性,视文件列表集 群为完全可信集群,视核心存储集群为部分可信集群,视 内容分发网络为不可信集群。本文方案将核心存储集群、 文件分发网络与用户客户端置于同一个私有 IPFS 网络中。 2.1 文件列表集群文件列表集群用于记录各个文件的详细信息,由于IPFS 使用 Merkle DAG[3] 中各个节点对数据进行分片 与存储(如图 1 所示),并对每个分片产生 Hash,在 IPFS 中这类 Hash 被称作 CID(Content Identifier)。
为了保障文件的安全性,需要对文件进行落地加密 存储,因此文件列表中需要对每个文件块产生一串密 钥,用对称加密算法,对每个文件块进行加密。同时, 为了避免内容分发网络通过 CID 获取原始文件,需产 生并存储 CID 经过 Hash 后的字符串,用于内容分发 网络在无法获取原始明文分片以及 IPFS 文件标识的情 况下,用于识别文件块。出于审计考虑,需要存储文件 是否被拉黑的标识信息。基于以上考虑,需要对 IPFS 的数据结构做出修改,具体数据结构如下 :
type Link struct{
Name string
Hash0 Multihash
Hash1 Multihash
Size int
}
type Object struct{
type string
links []Link
Key string
IsBanned boolean
}
Object 为文件夹/ 文件/ 分片的对像,Object 的 type 字段可以分别为“directory”“file”“clip”。此外, 对于 分片对象, IsBanned 字段永远为 false。由于在文件列表 集群,不实际存储文件,故 Object 中 data 被移除。此外, 加密是针对分片的, 当 type 为“directory”“file”时, Key 字段必定为 null。
Link 为当前类型到子类型的链接,如文件夹到文件、 文件到分片。其中 Hash0 为 IPFS 生成的原始 hash, 可 在 IPFS 中用于查询子文件。Hash1 为切片加密后的 CID, 对于“directory”“file”类型,Hash1 为 null,Size 为指 向子目标的总大小。
2.2 核心存储集群
在核心存储集群中,文件均在切片后加密存储,为了避免通过 CID 在 IPFS 网络获得文件切片的明文内 容,仅存储 CID 经过一重单向 Hash 后的字符串用于 标识切片,用户通过切片的标识来获取文件。此外,还 需引入切片的引用次数,用于处理文件删除等情况。数 据结构如下 :
type Object struct{
type string
Hash1 Multihash
Size int
Times int
data []byte
}
其中,type 的类型必定为“clip”,data 为切片经 过加密的数据,每个切片的最大值为 256KB。Times 为切片被调用的次数,当次数为 0 时,切片会被清除。 2.3 文件分发网络
在文件分发网络中,为了降低存储成本, 通常仅缓 存热点数据,并不会将全部的文件切片存储在文件分发 网络中。故引入首次请求时间和请求次数 2 个变量,用 于计量未存储的文件块在当前地区的热度,当请求次数 达到设定阈值,便会计算当前时间与首次请求时间的差 值,基于这个差值,决定是否向核心存储集群或分发网 络其他服务器获取这个文件切片。具体数据结构如下 :
type Object struct{
type string
Hash1 Multihash
Size int
QueryTime time
QueryTimes int
data []byte
}
当没有切片数据时,data 字段为 null,QueryTimes 字段大于或等于 0 ;当存在切片数据时, QueryTimes 字段为 -1.此时 QueryTime 记录最近一次请求时间, 用于判断是否切片热度降低需要删除。
所有文件分发网络和核心存储集群,均在同一个私 有 IPFS 网络中,此外,获取文件切片时,在借助 IPFS 的 DHT 表外,还需考虑开销问题。开销会作为变量存 储在服务器标识中,每次获取新的切片时,会首先获取 开销信息,将开销作为获取新文件块的要素之一。
3 本文方案之实现过程
在本文提出的系统架构中,主要有文件上传过程、 文件分发过程、文件调度过程以及文件共享过程。
3.1 文件上传过程
文件上传过程,由客户端发起。(1)客户端对上传 的每个文件进行切片,计算切片的 CID,将 CID 以安 全的方式传送给文件列表集群 ;(2)文件列表集群查询 已存在的文件块,并列出需要上传的文件块,同时为这 些文件块生成不同的对称加密密钥,将需要上传的文件 块信息同密钥以及文件存储集群的入口节点,传送给客 户端 ;(3)根据文件列表集群给出的密钥和文件存储集 群入口信息对文件块进行加密,同时计算加密文件块的 CID(即前文的 Hash2),同时上传文件到指定入口节 点 ;(4)当上传完成时,将加密文件块的 CID 返回到 文件列表服务器,结束整个上传过程。
在整个过程中,离开用户设备的所有文件均被切片 并加密,且切片与密钥存储在不同的集群中,极大程度 上保障了用户文件的安全性。而且,整个上传过程的文 件安全性,仅依赖于客户端与文件列表集群通信时的传 输层安全,整体风险相对较小。
3.2 文件分发过程
文件分发过程,由客户端请求。(1)向文件列表集 群或本地文件列表缓存, 获取加密文件块的 CID(即前 文的 Hash2)以及解密密钥 ;(2)请求距离用户最近的 文件分发网络。若最近的文件分发网络持有文件切片, 则直接发送给客户端 ;若不持有,则通过 IPFS 查询持 有文件的最优服务器,返回给客户端,客户端从新的服 务器获取所需的文件切片。同时,客户端通过 IPFS 网 络,从 Peer 客户端获取相同的文件切片。
在下载过程中,基于本地的文件列表缓存,可以降 低文件列表集群的压力,以及提高服务可用性。基于 Peer 客户端的文件共享,可以降低总体流量开销。此 外,由于传输的文件块已经是加密的,不依赖传输层安 全性,可使用明文传输协议降低加密算力开销。
3.3 文件调度过程
文件调度过程仅发生在文件分发网络,用于缓存附 近热门文件,提升附近用户的服务体验。文件调度由某 一次下载请求触发,当单位时间内平均下载量达到一定 次数时,且接收请求的服务器没有对应文件片,便会触 发文件调度过程。
在文件调度过程中,首先会通过由文件存储集群 和文件分发网络组成的 IPFS 网络,对于一系列文件片 进行请求,获取含有文件的服务器,向这些服务器请 求开销,并将上述数据制成服务器列表 ;其次,会借 助 Kademlia 路由表求得当前服务器与服务器列表中 的 Peer 的距离 [4],将距离与开销配上一定系数后相加 ;
最后,从距离与开销较小的服务器下载对应文件片。
文件的调度过程, 文件安全性、完整性与链路上的 安全性以及文件分发集群的可信度完全无关。文件在调 度过程中会进行校验,在不安全的网络中,中间人修改 后的文件片将无法通过 Peer 的校验过程 [5]。文件片一 直保持加密状态,即使被截获也无法解密。
3.4 文件共享过程
文件共享过程发生在客户端,由 IPFS 网络的其他 客户端的下载请求触发。通过合理的用户奖励,针对客 户端已下载的文件,占用客户端的上行流量,向局域 网、城域网其他用户提供服务,是成本较低、效率较高 的方案。在流量高峰时期,客户端文件共享可以显著提 升闲置网络设施利用率,提升文件分发效率。
在文件共享过程中,当收到请求后,会根据加密 文件块的 CID 在本地文件列表查询对应文件是否存在, 若不存在则跳过 ;若存在,则根据记录的偏移信息,切 取文件块,然后通过已知密钥对文件块进行加密,生成 完全一致的加密文件块,并借助 IPFS 的 DHT 分享给 其他客户端。
4 总结
在文件的上传、存储、分发、共享过程中,本方案 均保持文件切片的加密状态,极大程度上保障了文件的 安全性。使用灵活调度的分发网络存储策略,可在一定 程度上降低文件在内容分发网络的存储成本。在首次请 求的分发服务器没有所需的文件时,将客户端就近调 度,调度时,选取最小开销,以及使用用户侧 P2P 共 享,可在一定程度上降低流量成本。
参考文献
[1] Juan Benet.IPFS -Content Addressed,Versioned,P2P File System[J].Eprint Arxiv,2014(7):1-11.
[2] 王泽,李文强,蔡权伟.面向HTTPS的内容分发网络代理关系 透明化[J].信息安全学报,2018.3(2):16-30.
[3] Leonhard Balduf,Sebastian Henningsen,Martin Florian,et al.Monitoring Data Requests in Decentralized Data Storage Systems:A Case Study of IPFS[J].ArXiv Prep rintArXiv,2021(04):92-102.
[4] 魏猛.基于Kademlia的P2P资源定位研究[D].济南:山东大 学,2014.
[5] AL-KUWARI S,DAVENPORT J H,BRADFORD R J. Cryptographic Hash Functions:Recent Design Trends and Security Notions[C]//Science Press of China,2010:133-150.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/57759.html