摘要
Metadisk是一个开源软件项目,试图概念性地证明云存储应用可以更加去中心化、更安全并更高效。此外,Metadisk给完全去中心化网络提供了一个原型平台。为追寻这一目标,我们提出开发一个web应用,给非技术人员提供一个界面,和给原生应用与功能扩展提供底层API。一种加密货币会被用在激励和支付机制上,同时,一个独立的区块链将被用来存储文件元数据。此应用将寻求如对等网络中节点上运行开源代码一样自动操作,依靠公共区块链记录信息,而不是中心化数据库。Metadisk的主要目标是给Storj这个点对点云存储网络提供一个稳定的测试平台。Metadisk的最终目的是提供一套工具,将使storj与传统平台和用户更方便地集成。
1 简介
云存储是一个营销术语,它利用了大众对新奇事物的渴望。它抓住了大众,因为对普通用户来说,和英特网、客户-服务器,或者作为一种服务相比而言,云听起来像是一种新的技术。这种把现有的技术进行组合仅仅是简单的误导,而非魔幻。当数据存储在云上,它基于TCP/IP从客户端计算机转移到数据中心的服务器主机。自主机和终端存在以来就有的客户-服务器模式也是这样。然后,该服务器将其复制到其他服务器,以符合行业标准的冗余策略,即三个副本。当前云存储模式,通过中心机构委托私人信息,在很多方面天生存在不安全。通过政治策略、法律手段、技术手段,存储在服务器主机上的信息能被盗取、窥视,删除或者破坏。
随着时间的推移,这三种策略之间的区别变的越来越模糊。现在很清楚,个人隐私和企业信息安全只能这样实现,就是异地数据存储能够被保护免受每种类别操作的攻击。通过去中心化和自动化能够解决具有容易识别的中心点的内置攻击模式的问题。在当前的云存储模型中其他固有的安全漏洞是通过云存储服务当前广泛应用的支付机制的类型。这些机制,既不隐秘也不能保障信息安全,因为大多数在线支付技术都会存储和泄露支付人与收款人的信息。
我们需要一种云存储模式,不是基于客户端和服务器之间信任的模式。所有客户的私有数据,包括文件名、日期和其他元数据,在从客户端传输到云端之前都必须加密。这样就不会存在攻击者能够利用政策或者法律进行攻击的中心化点。不论资源提供者还是消费者,支付奖励都将自动执行,并且使用匿名的加密货币。是时候让云真正的变成云了,它由大量的小资源构成,能够像形成、移动和改变云形状一样增加和减少。
去中心化的存储网络的总体设计原则已经出现了好几年。一些项目如Madesafe[1]和Tornet[2]已经概述了可能的解决方案。不幸地是,实现一个真正的去中心化存储系统的安全性、可扩展性和成本效益,将需要巨大的技术复杂的软件。我们必须以一种非常安全的方式设计节点和网络,因为我们既不能相信通信线路,也不能相信节点本身。网络上的节点必须合作以达到目前中心化网络的冗余和性能的水平。此外,软件必须自己运行并且没有实际的或经济方面的人工干预,例如,在一个不受管理的环境中,这是从当前云网络中的主要出发点。
这些原理可以通过结合现有的技术如BitTorrent Sync[3],Bitcoin[4],公钥加密和加密哈希函数实现。Metadisk旨在允许以模块化的方式整合现有的开源项目简化去中心化存储网络的开发。这样的网络必须逐步建立,软件要有互操作性,模块要易更换并支持多种多种硬件,包括现有的云存储服务提供商提供的硬件即服务模式。
Metadisk可以使用类似于比特币采用的激励模式。比特币矿工给网络贡献加密哈希算力来获得区块奖励,Metadisk可以使用自己的加密货币,作为支付和交换存储空间和带宽的方式。该模型利用利益强大的自由市场的力量驱动的网络增长和效率同时保持去中心化。例如,如果另一种能更快传输文件的方法出现,网络将会倾向于这种方法,直到有人提出了更快的方法。节点必须能在不断改变并且竞争的环境中正常工作。
2 概述
MetaDisk作为非技术用户界面以及Storj网络的开发平台。使用Metadisk的web界面或者API,用户能够安全的从网络中上传和下载自己的文件。在客户端,文件在上传过程中,是通过用户自己提供的私钥被加密的。如果用户之前没有使用过Metadisk, 则web界面可以提供协助,帮助用户生成私钥。MetaDisk与网络通信以查找可用的存储资源,然后将文件传输到至少三(3)个单独的位置,以保留云存储行业标准的三倍冗余。用户或者应用可以增加额外费用来增加冗余。
我们设计了一种记录保存方法,当用户上传文件时,区块链作为数据存储提供有效功能,上传记录被刻画在了区块链上。这以特征将在Blockchain as a Metadisk Store章节详细介绍。
文件被加密后,我们得到SHA-256哈希,它既是唯一的标识符,也是一种检测文件篡改的方法。如果文件在上传之后被修改了,哈希值就会变。我们在底层平台Storj[5]中应用这一特性,不必直接访问文件就能在网络中检查文件。客户端还可以使用哈希来确保接收到的文件是可信的。此哈希值将和用于生成哈希值的文件的3个存储位置一起存放在区块链条目中。可以通过使用公钥加密来保护插入到区块链中的所有元数据,防止未经授权的读取和复制。因为进入网络的所有数据和元数据都被加密,并且我们可以通过哈希来验证数据,所以恶意实体不能窥探,伪造或修改数据。
2.1 Security
只有用户可以访问特定文件的解密密钥。 此外,在文件被加密以保持文件内容安全之后,用于在存储时标识文件的文件的哈希也被创建。因此,攻击者不能验证网络上的文件的内容,即使存在的文件可能是已知的。由于文件在传输前已加密,因此MetaDisk还可抵御中间人攻击,并可用于任何通信网络,包括开放的未加密Wifi网络。
MetaDisk可以添加客户端加密以进一步保护数据,但是有趣的是,浏览器内部加密是否真的安全[6]。 对于非私有或不敏感文件,传统模型就足够了。 对于其他任何事情,建议对文件进行加密,并通过API传递。以这种方式,完全失败的浏览器加密,并完全折中的MetaDisk节点将不会影响文件的安全性。 这可以通过其他本机应用程序和工具集轻松实现。
2.2 Redundancy
MetaDisk将对数据源运行定期检查,以确保文件可用且未修改。 如果数据源未通过这些检查或不可用,则可以从另一个数据源恢复数据。
2.3 Bootstrapping
为了快速获得并运行MetaDisk,我们希望启用使用现有的免费和公共文件主机作为存储提供程序。 使用Plowshare [7],用于流行文件共享网站的命令行(CLI)下载/上传工具,我们可以简化上传到这些数据源的任务。 在与每个TOS的相应TOS兼容的情况下,这些数据源对于节点的操作只有边际成本的带宽和保持,因为它在用户和存储提供主机之间来回往返时是自由的。
免费公共文件主机可能会被本地硬盘空间迅速超越。因此,我们正在实施我们自己的平台Storj [5],并计划与另一个平台Maidsafe [1]集成。 这两个平台允许用户从个人或企业计算设备提供自己的存储空间,并成为去中心化存储空间网络的一部分。这些平台更直接地解决诸如Sybil攻击,冗余,文件完整性和可用性等问题。
必须清楚的是,MetaDisk是平台无关的。 它将每个平台简单地视为数据源。 以这种方式,我们还可以通过MetaDisk节点的简化API为最终用户和应用程序提供访问分散式数据平台的权限。
3 Cost Calculations
使用VPS提供商数字海洋的示例测试用例,它可以轻松地托管MetaDisk节点,我们可以做一些成本估算。每月5美元,可以给我们提供最大1TB的传输。这在完全利用时大约0.0049美元每GB。在上下文中,100 GB将花费我们总共1.47美元存储,含3个冗余,和0.49美元完全检索。Dropbox对同样的100 GB存储每年收费99美元。因此,在本质上,在充分利用100 GB的一年,它将花费1.47美元加上需要传输的额外花费vs Dropboxs 99美元。通过采用按使用模式付费,我们避免用户为他们实际上不需要的存储空间付费。
随着存储介质容量以指数速率增长,每12个月增加一倍[17],云存储提供商长期存储文件并持续降低每GB的价格给消费者已成为行业标准做法。 因此,在我们的完全100 GB使用示例中,第一年的每100 GB 1.47美元的成本很容易是0.74美元,并在第二年和以后年份接近零。 这与集中式文件主机具有竞争力,因为即使存储介质的成本每年减半,其在数据中心租金,员工工资,会计成本,监管负担,法律费用等方面持续的运营成本将保持固定或逐年增加 ,限制了他们与没有这种成本的去中心化模式竞争的能力。
3.1 Reducing Cost and Increasing Profit
使用不按用量计费的节点可以进一步降低带宽的成本,但是不清楚主机提供商将如何响应MetaDisk节点可能生成的大量数据。如果节点被删除或破坏,它对网络或文件可用性没有影响,因此节点本身是一次性的。 这种可处置性是一种成本降低的方法,因为不需要承担额外费用来确保特定节点破坏,而只需持续创建。
一个示例用例是一个非计量的专用服务器提供者,如Hive-locity [9]。 对于1 Gbps非计量连接,他们的费用允许估计33万GB传输,每月总计638美元。 再次使用3冗余和Dropbox价格,我们实现节点运营商的每月9,166美元的毛利润。 显然,网络拥塞和提供商隐藏的上限可能限制传输,但是利润率如此之大,以致即使网络速度减少了一半,我们仍然会获得巨大的利润。
为了更加公平地对主机提供商和避免滥用共享主机提供商,另一个示例用例是一个未计量的专用服务器提供商如Hivelocity [10]。 对于1 Gbps非计量连接,他们的费用允许估计33万GB传输,每月总计638美元。 再次使用3x冗余和Dropbox价格,我们为节点运营商实现每月36,666美元的毛利润。
3.2 Ordinary Users and Sunk Costs
我们还可以考虑从他们的个人计算机运行他们自己的公共MetaDisk web节点的普通住宅高速带宽用户的利润。 在这种情况下,平均数据速度为2.0975 MB / s [10]。 使用Dropbox价格和3个冗余,此用户每月的毛利润为150美元。 在这种情况下,用户已经选择支付互联网连接和个人计算机 - 因此这些是既定成本。 考虑到额外的存储空间,电力和带宽使用只是他们整个家庭计算预算的总成本的一小部分,这样的用户的边际成本是非常小的。 这种利润潜力将推动MetaDisk创造强大的网络效应,使网络的所有用户都能够显着降低云存储成本。
许多潜在的住宅用户可能对MetaDisk的技术方面感到不舒服。 会有高级用户将能够理解加密货币的原则,但其他人可能不希望爬上这个学习曲线。 为了允许快速的网络增长和采用,同时等待大规模采用,我们建议设计MetaDisk和分布式存储网络,以便它可以是一个较低级别的服务,用户友好的较高级别的抽象可以操作,而不会混淆普通用户与隐秘细节。
3.3 Example Service
一个高级服务示例,我们可以选择调用Filebox,将给服务提供类似Dropbox的功能。Filebox可以有自己的简单云存储软件,并为文件存储收取有竞争力的费率。在后端,Filebox可以完全通过MetaDisk节点运行,消除了大多数启动和固定成本,否则这样的服务会导致。它可以购买信用其网络使用,同时保留自己的一些最常用的文件的缓存。Filebox将向最终用户提供非常需要的抽象和简单性,最终用户甚至不会意识到他们正在使用MetaDisk节点的Storj网络。 作为回报,Filebox将享受低市场进入成本,与其他集中式云存储提供持续的利润率。 它只需要维护顶级软件,而不是底层存储硬件。
4 Blockchain as a Metadata Store
Datacoin [11]是一个加密货币,其区块链是MetaDisk网络的元数据存储。 这是一个临时措施,在某些时候将在Storj平台上用一个解决方案替换。 使用Datacoin,数据永远存储在区块链中,并且可以使用事务哈希作为标识符来检索[11]。 不幸的是,这导致称为区块链膨胀的问题。 每个完整节点必须存储区块链中每个事务的副本。 这意味着,用户每个只存储几兆字节的数据,区块链将迅速扩展到难以管理的大小。 只存储一个电影文件将花费上传用户数千美元的Datacoin和泛滥的网络。 值得一提的是,一旦文件存储在Datacoin网络上,它几乎是不可修复的,对于必须存在的数据可能是重要的,如数学原理和科学知识百科全书,但对于更个人性质的数据不是必需的或可扩展的。
4.1 Blockchain Bloat
将文件本身存储在区块链上是不可能的,因为区块链膨胀。 我们通过仅仅存储关于区块链上每个文件的少量元数据信息来解决这个问题。 这是通过发送一个包含元数据的简单事务来完成的。 我们可以存储其哈希值,文件位置以及我们认为必要的任何其他信息。 出于隐私和安全原因,我们可以在将元数据插入到区块链之前对其进行加密。 此元数据的示例可能如下所示:
此示例元数据(不管上传的文件大小)占用大约330个字节的信息。 我们将它添加普通事务,大约500字节[12]。 添加一些额外的填充,我们得到每个事务大约1 KB。 在这种情况下,我们可以存储100万个文件,在我们的区块链中的元数据达到1 GB的大小。 通过进一步的细化,我们可以进一步最小化必要的元数据信息的数量,使用多个链,区块链修剪和压缩,从而大大增加这些数量。
4.2 Further Scaling
这对于初始文件网络确实是合理的,但是对于网络来说不可扩展以处理整个云的数据的全部容量。 我们受到每秒7次交易的Satoshi样式区块链限制的瓶颈[13]。 随着系统使用增加,我们可以转换到一个系统,其中blockchain存储merkle根,这是存储在事务中的所有文件的加密摘要。 这样,我们可以通过一个事务来证明数百万个文件的存在。 以这种方式,我们可以直接使用比特币和/或Storj区块链的安全性。 在写作的时候,我们正在探索Factom [14]和一些其他的解决方案。
5 Rewards
为了尽可能去中心化,我们将奖励和支付加密货币与我们用作数据存储的加密货币分开。Storjcoin X(或SJCX)的设计目标是让它成为一种稳健的货币。 为了做到这一点,它需要所有的代码和功能,已经开发了比特币(这使得比特币这样一个优秀的形式的钱),并扩展他们以提供一些可替代的价值,云存储,借钱给一个健全的超越了仅仅的社会接受。SJCX将是通过设计时间的通货紧缩货币,可以为每个SJCX增量购买的云存储增量的量将随着更多的资源添加到Storj网络而增长,并且其价值将增加。
SJCX将允许用户通过MetaDisk门户在Storj分布式存储网络上支付带宽和存储。 Storj软件将作为自主代理市场制造商,以SJCX增量为每个存储和带宽增量设置价格。 然后Storj软件将定期为存储和带宽Storjcoin增量付款,以便继续提供这些资源。 通过这些程序化的自动行为,Storjcoin充当一个自主代理,为用户和托管提供商提供价值和激励,以维护网络。 SJCX的性质和范围在Storj白皮书中讨论。
6 Proof of Resource
当我们考虑Nielsens Law [15]时预测带宽将变成一种稀缺的资源,而Nielsens Law预测每二十一(21)个月的高速住宅互联网速度就会翻一番;而Kryders Law [16]假设全球 存储容量将继续每十二(12)个月翻一番。为了保持我们的发展目标,将Storjcoin X看作是一种新的形式的货币,我们必须编写资源函数的证明。随着更多的资源提供商连接到网络,Storjcoin X增量可以购买的带宽连接存储量将增加。 与这种难度调整一致,存储提供商在一段时间内必须连接以获得Storj币X增量的带宽连接存储量也将增加。
这将使自由市场能够基于通过向网络提供带宽连接的存储硬件来获得SJCX的难度来设置SJCX的价格,就像比特币价格部分地由采矿比特币的成本决定的那样。
对于存储证明,我们打算使用散列文件加上种子值的技术来产生唯一的散列。 一个节点可以通过提供种子向另一个节点证明它持有特定文件,并且如果该另一节点具有该文件,则它可以产生匹配的唯一哈希。 资源证明算法的完整技术规范超出了本文描述MetaDisk的范围,将在Storj白皮书中进一步描述。
7 Conclusion
我们设计了一个新模型,其中区块链可以作为分布式应用程序MetaDisk的骨干。 此应用程序自主运行为运行开源代码的节点的对等网络。 我们对新型数据平台提供了坚实的介绍,但我们留下了与争议调解,Sybil攻击和Storj平台基础的安全模型相关的开放性问题。
参考文献
[1] MaidSafe. Distributed platform, maidsafe, (2014). http://maidsafe.net.
[2] Tornet - generic p2p tools, (2013).
https://github.com/bytemaster/tornet.
[3] Bittorrent sync, (2014). http://www.bittorrent.com/sync.
[4] S. Nakamoto. Bitcoin: A peer-to-peer electronic cash system, (2009).
https://bitcoin.org/bitcoin.pdf.
[5] Storj - decentralized cloud storage, (2014). http://storj.io/.
[6] Whats wrong with in-browser cryptography?, (2013).
http://tonyarcieri.com/whats-wrong-with-webcrypto.
[7] Plowshare - download and upload files from file sharing websites, (2014).
https://code.google.com/p/plowshare/.
[8] Pay-as-you-grow pricing, (2014).
https://www.digitalocean.com/pricing.
[9] Unmetered dedicated servers, (2014). https://hivelocity.net/
dedicated-servers/unmetered-dedicated-servers/.
[10] Download speed by country, (2014).
http://www.netindex.com/download/allcountries/.
[11] Datacoin, (2013). http://datacoin.info/index.php?id=index.
[12] Transaction fees, (2014).
https://en.bitcoin.it/wiki/Transaction fees/.
[13] Bitcoin needs to scale by a factor of 1000 to compete with visa. heres how
to do it, (2013). http://www.washingtonpost.com/blogs/the-switch/
wp/2013/11/12/bitcoin-needs-to-scale-by-a-factor-of-1000-tocompete-with-visa-heres-how-to-do-it/.
[14] Notarychains, (2014). https://github.com/NotaryChains/
NotaryChainDocs/blob/master/whitepaper.md.
[15] Nielsen’s law of internet bandwidth, (1998).
http://www.nngroup.com/articles/law-of-bandwidth/.
[16] Kryders law, (2005).
http://www.chipwalter.com/articles/profiles/kryder.pdf.
原文:https://storj.io/metadisk.pdf
本文来源:http://blog.csdn.net/yooliee/article/details/53594623