基于区块链的可公开仲裁分布式云存储方法及系统与流程

文档序号:16128832发布日期:2018-12-01 00:04阅读:196来源:国知局

本发明涉及云计算安全技术领域,特别涉及一种基于区块链的可公开仲裁分布式云存储方法及系统。

背景技术

随着大数据时代的来临,网络中的数据量呈现爆炸式增长,其增长速度已经超越了几何量级。如果要将产生的数据存储下来,必然需要极大的网络存储能力。这对云存储技术也提出了更高的要求。

如今用户往往采用第三方存储商提供的云存储服务存储海量数据,导致了中心化问题严重。另外,当前基于第三方的云存储模型中往往都需要ttp(thirdtrustedparty,可信第三方)来保证数据的完整性和可用性,这也使得审计操作变得更加中心化。一旦ttp审计错误或者执行恶意操作,就会导致存储服务参与方受到损失。反观,一方面,存储服务需求非常旺盛,另一方面,大量用户的本地存储并没有得到有效的利用,供需失衡问题严重。因此,构建安全、公开、稳定的分布式云存储系统是当前云存储服务面临的一个重大挑战。

因此,设计能够保证数据正确存储的健壮安全的方案尤为重要。针对海量数据云存储,一方面需要解决海量数据的存储空间和完整性的问题,另一方面要引入去中心化的仲裁验证方法。

区块链诞生自中本聪的比特币,自2009年以来,出现了各种各样的基于公有区块链的类比特币数字货币。区块链本质上是一个去中心化的数据库,具有去中心化、信息防篡改、公开透明、健壮性高等优点。智能合约是二十世纪九十年代由尼克萨博提出的理念,它是运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、储存和发送价值。智能合约就是传统合约的数字化版本。它们是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此合约是不可更改的。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种基于区块链的可公开仲裁分布式云存储方法,该方法具有不需要可信第三方进行审计操作就可以智能合约规范全网的服务,保证存储和查询过程的公平性的优点。

本发明的另一个目的在于提出一种基于区块链的可公开仲裁分布式云存储系统。

为达到上述目的,本发明一方面实施例提出了一种基于区块链的可公开仲裁分布式云存储方法,包括以下步骤:制定服务合约并进行第一次用户匹配,以建立用户与存储服务提供者之间的第一次链下连接;通过所述第一次链下连接建立包含存储押金和存储服务费的存储合约并发布至全网;根据发布至全网的所述存储合约进行数据存储,且根据存储记录进行第二次用户匹配,以建立所述用户与所述存储服务提供者之间的第二次链下连接;以及通过所述第二次链下连接建立链下微支付通道,以进行查询交易,并将最后一笔交易内容签名提交至全网以进行认证。

本发明实施例的基于区块链的可公开仲裁分布式云存储方法,通过向全网矿工提交一个包含存储押金的存储合约,以有效利用全网节点的本地存储空间,并建立规范的链下微支付通道,以进行交易和查询,具有不需要可信第三方进行审计操作就可以智能合约规范全网的服务,保证存储和查询过程的公平性的优点。

另外,根据本发明上述实施例的基于区块链的可公开仲裁分布式云存储方法还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述制定服务合约并进行第一次用户匹配,以建立用户与存储服务提供者之间的第一次链下连接,进一步包括:制定所述服务合约,并将所述存储押金转服务合约账户地址以及声明所述存储服务提供者设定的存储时间;根据所述用户在区块链上查询的所需服务建立所述用户与所述存储服务提供者之间的所述第一次链下连接。

进一步地,在本发明的一个实施例中,所述通过所述第一次链下连接,建立包含存储押金和存储服务费的存储合约,并将所述存储合约发布至全网,进一步包括:通过分块算法将待存数据m分块得到k个等大小的数据块{m1,m2…,mk},加密每一块数据得到{c1,c2…,ck},保留加密后数据块的哈希{hash(c1),hash(c2)…,hash(ck)}及对应索引;将含所述索引的所有分块和任意一个随机挑战值c(c∈[1,k])发送给所述存储服务提供者,且所述存储服务提供者返回有效的存储证明至所述用户;如果所述用户验证通过,则根据所述存储押金和所述存储服务费达成所述存储合约c并声明协商好的存储量和存储时间,并将所述存储合约发布至全网。

进一步地,在本发明的一个实施例中,所述建立链下微支付通道流程,进一步包括:假设所述用户锁定n·γ到所述存储合约账户作为查询费;在第一次查询时,根据所述用户锁定给所述存储服务提供者的γ查询费,记录所述查询费为γ1,发送数据至所述用户;在所述存储服务提供者获取到向存储合约转的总存储押金的前提下,所述存储服务提供者获得所述查询费γ1;在每次查询中,通过所述用户签订累加转账费用γ给所述存储服务提供者,剩余转账给所述用户的交易,在收到合法签名的交易后,发送数据给所述用户;待查询操作完成后,对所述交易进行签名,将包含双重签名的交易发送到全网;通过验证所述矿工交易签名,若通过,则接受所述交易,资金转移过程完成。

进一步地,在本发明的一个实施例中,所述链下数据传输采用http协议或ipfs协议。

为达到上述目的,本发明另一方面实施例提出了一种基于区块链的可公开仲裁分布式云存储系统,包括:第一次匹配模块,用于制定服务合约并进行第一次用户匹配,以建立用户与存储服务提供者之间的第一次链下连接;存储合约建立模块,用于通过所述第一次链下连接,建立包含存储押金和存储服务费的存储合约并发布至全网;第二次匹配模块,用于根据发布至全网的所述存储合约进行数据存储,且根据存储记录进行第二次用户匹配,以建立所述用户与所述存储服务提供者之间的第二次链下连接;以及微支付通道建立模块,用于通过所述第二次链下连接建立链下微支付通道,以进行查询交易,并将最后一笔交易内容签名提交至全网以进行认证。

本发明实施例的基于区块链的可公开仲裁分布式云存储系统,通过向全网矿工提交一个包含存储押金的存储合约,以有效利用全网节点的本地存储空间,并建立规范的链下微支付通道,以进行交易和查询,具有不需要可信第三方进行审计操作就可以智能合约规范全网的服务,保证存储和查询过程的公平性的优点。

另外,根据本发明上述实施例的基于区块链的可公开仲裁分布式云存储系统还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述第一次匹配模块,进一步用于:制定所述服务合约,并将所述存储押金转服务合约账户地址以及声明所述存储服务提供者设定的存储时间;根据所述用户在区块链上查询的所需服务,建立所述用户与所述存储服务提供者之间的所述第一次链下连接。

进一步地,在本发明的一个实施例中,所述存储合约建立模块,进一步用于:通过分块算法将待存数据m分块得到k个等大小的数据块{m1,m2…,mk},加密每一块数据得到{c1,c2…,ck},保留加密后数据块的哈希{hash(c1),hash(c2)…,hash(ck)}及对应索引;将含所述索引的所有分块和任意一个随机挑战值c(c∈[1,k])发送给所述存储服务提供者,且所述存储服务提供者返回有效的存储证明至所述用户;如果所述用户验证通过,则根据所述存储押金和所述存储服务费达成所述存储合约c并声明协商好的存储量和存储时间,并将所述存储合约发布至全网。

进一步地,在本发明的一个实施例中,所述下微支付通道建立流程,进一步包括:假设所述用户锁定n·γ到所述存储合约账户作为查询费;在第一次查询时,根据所述用户锁定给所述存储服务提供者的γ查询费,记录所述查询费为γ1,发送数据至所述用户;在所述存储服务提供者获取到向存储合约转的总存储押金的前提下,所述存储服务提供者获得所述查询费γ1;在每次查询中,通过所述用户签订累加转账费用γ给所述存储服务提供者,剩余转账给所述用户的交易,在收到合法签名的交易后,发送数据给所述用户;待查询操作完成后,对所述交易进行签名,将包含双重签名的交易发送到全网;通过验证所述矿工交易签名,若通过,则接受所述交易,资金转移过程完成。

进一步地,在本发明的一个实施例中,所述链下数据传输采用http协议或ipfs协议。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本发明实施例的基于区块链的可公开仲裁分布式云存储方法的流程图;

图2为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法数据存储过程的示意图;

图3为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法数据查询过程的示意图;

图4为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法的服务合约参数的示意图;

图5为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法存储合约参数的示意图;

图6为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法存储合约伪代码的示意图;

图7为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法的链下微支付通道的流程图;

图8为根据本发明一个实施例的基于区块链的可公开仲裁分布式云存储方法存储证明的结构示意图;

图9为根据本发明实施例的基于区块链的可公开仲裁分布式云存储系统的结构示意图。

附图标记说明:

在图2中,c为user-a发送给server-b的随机挑战值;

在图3中,restore为存储记录单;

在图4中,pgserve为存储者的押金,nserve为可提供的存储量,tserve为存储时间,tesever-i为存储者server-i的联系地址;

在图5中,pgstore为总共需要支付的押金额,tstore为存储服务时间,rm为数据m的默克尔树根;pgcheck为查询费用;

在图7中,nγ为用户锁定的查询费用;γ1为第一次查询某一块数据的查询费;

在图8中,nmax为索引的最大值,rm为存储数据的默克尔树根,c为用户对于某索引的挑战值。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参照附图描述根据本发明实施例提出的基于区块链的可公开仲裁分布式云存储方法及系统,首先将参照附图描述根据本发明实施例提出的基于区块链的可公开仲裁分布式云存储方法,首先对符号及算法进行解释:

(1)c代表user-a发送给server-b的随机挑战值,该值对应某数据块的索引值;

(2)rm代表存储数据的默克尔树根;

(3)pka、ska为user-a的公私钥对,pkb、skb为server-b的公钥对;

(4)hash(m)→ω,m∈{0,1}*,表示将数据m做哈希运算得到ω;

(5)sig(ski,m)→σ,m∈{0,1}*,表示用私钥ski对m进行签名得到σ;

(6)c-ser代表服务合约的内容,c-sto代表存储合约的内容;

(7)addseve-i代表i创建的服务合约账户地址,addstore代表存储合约的账户地址;

(8)nγ代表user-a锁定到存储合约的查询费用,每个数据分块的查询费为γ。γ1代表第一次查询某块数据的查询费,若不查询γ1为0,否则为γ;;

(9)pgserve代表服务合约账户金额,pgstore代表交易双方需要向存储合约转的总存储押金,pgtotal代表存储合约账户总的金额,pgcheck代表user-a的查询押金;

(10)tserve代表服务合约中存储者声明的存储时长,nserve代表存储者可提供的存储量,price-unit代表当前存储市场单价,有pgserve=tserve×nserve×price-unit;

(11)tstore代表存储合约中的存储时长,tcer代表用户容忍的存储证明返回时延;

(12)cerstore-c代表挑战c对应的存储证明,证明包括c作为索引的数据块内容mc及其到rm的路径;restore代表存储记录单,记录特定数据和其对应存储者。

图1为根据本发明实施例的基于区块链的可公开仲裁分布式云存储方法的流程图。

如图1所示,该基于区块链的可公开仲裁分布式云存储方法包括数据存储阶段和数据查询阶段,其中,数据存储阶段包括步骤s101和s102,数据查询阶段包括s103和s104,具体为:

在步骤s101中,制定服务合约并进行第一次用户匹配,以建立用户与存储服务提供者之间的第一次链下连接。

结合图2-4,在本发明的一个实施例中,server-b制定服务合约c-serb,。server-b将服务押金转入addseve-b并声明存储时间tstore。tstore是由server-b设定,在合约有效期内固定不变。nserve随pgserve和市场存储价格price-unit线性变动(当pgserve减少或者price-unit上升时,nserve会自动减少,反之亦然)。user-a到区块链上查询所需要的服务,在链下与相应的server-b建立连接。

在步骤s102中,通过第一次链下连接建立包含存储押金和存储服务费的存储合约并发布至全网。

在本发明的一个实施例中,user-a将待存数据m分块得到k个等大小的数据块{m1,m2…,mk},并把所有分块、分块对应索引和一个随机挑战值c(c∈[1,k])发送给server-b,server-b计算cerstore-c发给user-a验证;

如图5所示验证通过后user-a制定存储合约内容cstore,计算签名sstore=sig(ska,hash(cstore))。将cstore和sstore一起发给server-b;

server-b验证成功后若同意该合约,计算sstore-b=sig(skb,hash(cstore)),将cstore、sstore-a和sstore-b发布到网络;

矿工验证该合约,包括检测合约内容的完整性,双重签名的正确性。矿工验证有效后再将该合约打包进区块,获得该合约的服务费;

双方向合约地址addstore提交押金转账,在规定时间ttrans内若押金成功转入,合约生效,user-a将此次存储交易记录到restore。否则转入的押金退还,合约无效;

tstore到达后,若server-b没有不诚实存储行为(即server-b每次都能正确返回查询结果或者存储证明给user-a),pgstore都转给server-b,否则pgstore都转给user-a。

在步骤s103中,根据发布至全网的存储合约进行数据存储,且根据存储记录进行第二次用户匹配,以建立用户与存储服务提供者之间的第二次链下连接。

在本发明的一个实施例中,user-a根据存储记录单restore获取server-b的联系地址,与server-b建立链下的连接。链下数据传输可采用http协议或ipfs协议。

在步骤s104中,通过第二次链下连接建立链下微支付通道,以进行查询交易,并将最后一笔交易内容签名提交至全网以进行认证。

如图6-8所示,在本发明的一个实施例中,微支付通道建立的流程为:

(1)假设user-a锁定n·γ到存储合约账户addstore作为查询费pgcheck;

(2)第一次查询时,user-a锁定给server-b的γ查询费(记此查询费为γ1),server-b发送一份数据给user-a。在server-b获取到pgstore的前提下,server-b才能获得γ1,否则在tstore后将该费用退还给user-a;

(3)在之后的每次查询中,user-a每次签订累加转账费用γ给server-b,剩余转账给user-a的交易,收到合法签名的交易后,server-b发送一份数据给user-a。例如在第2次查询时,对转γ给server-b且转(n-2)γ给user-a的交易签名后发送给server-b;第3次查询时,对转2γ给server-b且转(n-3)γ给user-a的交易签名后发给server-b……依次进行;

(4)待查询操作完成后,server-b对其中最后一笔交易进行签名,将包含双重签名的交易发送到全网;

(5)矿工验证交易签名,若通过,则接受交易,资金转移过程完成;

(6)当user-a付了钱而server-b却没有返回某数据块时,user-a向全网提交对于server-b的存储挑战交易,要求server-b给出针对该数据块的存储证明(包括数据块的内容及其到rm的路径,见图7)。若server-b不能在tcer内向全网矿工提交有效的存储证明,待tstore到达后γ1转给user-a;若server-b没有不诚实存储行为被user-a发现,则待tstore到达后γ1转给user-a。

在建立链下微支付通道,进行查询交易后,进行数据更新,其具体流程如下所示:

(1)在链下,user-a将更新数据所需的信息(索引,新数据块)和对该数据的操作指令(插入、删除、更新)发送给server-b,计算新默克尔树根值,并将该值签名发送给server-b;

(2)server-b对应更新存储结构计算出新的默克尔树根,与user-a提供的值进行比较,若相等,将该值双重签名并返回;

(3)user-a验证server-b返回签名的正确性;

(4)user-a生成一笔更新交易将新默克尔树根值、双重签名与时间戳提交给全网矿工;

(5)矿工验证通过后将该交易作为对应存储合约的输入,以修改存储合约的默克尔树根值。

此外,在本发明的实施例中,以上方案都是采用一对一的具体实施例,本发明的其他实施例还可以满足一对多、多对一和多对多的情况。

一对多:即一个用户的数据存储给多个存储者,用户为了增强数据的鲁棒性,可以使用两种方式来实现一对多的方案,包括数据整体的多次存储或数据分块放到不同存储者空间,具体为:

方式一:用户与多个存储者建立连接;对应不同的存储者,用户对同一数据切片后使用不同的对称加密密钥加密,然后将加密后的数据发送给存储者。

方式二:用户与多个存储者建立连接;用户对数据整体按纠删码(erasurecodes)的方式进行编码;用户使用对称加密方式加密编码后的数据块,将这些数据块分散发送给不同的存储者。

多对一:即多个用户对应同一存储数据,多个用户均可对存储数据进行查询、更新。此方式实际上是通常意义上的数据分享。用户完成与存储者的存储交易,然后将存储者的联系方式、自身私钥、数据的哈希和索引、数据的解密方式等链下分享给该用户信任的其他用户。

多对多:将上述多对一和一对多实施例结合形成,在此就不在赘述。

本发明实施例的基于区块链的可公开仲裁分布式云存储方法,通过向全网矿工提交一个包含存储押金的存储合约,以有效利用全网节点的本地存储空间,并建立规范的链下微支付通道,以进行交易和查询,具有不需要可信第三方进行审计操作就可以智能合约规范全网的服务,保证存储和查询过程的公平性的优点。

其次参照附图描述根据本发明实施例提出的基于区块链的可公开仲裁分布式云存储系统。

图9为根据本发明实施例的基于区块链的可公开仲裁分布式云存储系统的结构示意图。

如图9所示,该基于区块链的可公开仲裁分布式云存储系统10包括:第一次匹配模块100、存储合约建立模块200、第二次匹配模块300和微支付通道建立模块400。

其中,第一次匹配模块100用于制定服务合约并进行第一次用户匹配,以建立用户与存储服务提供者之间的第一次链下连接。存储合约建立模块200用于通过第一次链下连接,建立包含存储押金和存储服务费的存储合约。第二次匹配模块300用于根据发布至全网的存储合约进行数据存储,且根据存储记录进行第二次用户匹配,以建立用户与存储服务提供者之间的第二次链下连接。微支付通道建立模块400用于通过第二次链下连接建立链下微支付通道,以进行查询交易,并将最后一笔交易内容签名提交至全网以进行认证。该系统具有不需要可信第三方进行审计操作就可以智能合约规范全网的服务,保证存储和查询过程的公平性。

需要说明的是,前述对基于区块链的可公开仲裁分布式云存储方法实施例的解释说明也适用于该实施例的基于区块链的可公开仲裁分布式云存储系统,此处不再赘述。

进一步地,在本发明的一个实施例中,第一次匹配模块100,进一步用于:制定服务合约,并将存储押金转服务合约账户地址以及声明存储服务提供者设定的存储时间;根据用户在区块链上查询的所需服务,建立用户与存储服务提供者之间的第一次链下连接。

进一步地,在本发明的一个实施例中,存储合约建立模块200,进一步用于:通过分块算法将待存数据m分块得到k个等大小的数据块{m1,m2…,mk},加密每一块数据得到{c1,c2…,ck},保留加密后数据块的哈希{hash(c1),hash(c2)…,hash(ck)}及对应索引;将含索引的所有分块和任意一个随机挑战值c(c∈[1,k])发送给存储服务提供者,且存储服务提供者返回有效的存储证明至用户;如果用户验证通过,则根据存储押金和存储服务费达成存储合约c并声明协商好的存储量和存储时间,并将存储合约发布至全网。

进一步地,在本发明的一个实施例中,下微支付通道建立流程,进一步包括:假设用户锁定n·γ到存储合约账户作为查询费;在第一次查询时,根据用户锁定给存储服务提供者的γ查询费,记录查询费为γ1,发送数据至用户;在存储服务提供者获取到向存储合约转的总存储押金的前提下,存储服务提供者获得查询费γ1;在每次查询中,通过用户签订累加转账费用γ给存储服务提供者,剩余转账给用户的交易,在收到合法签名的交易后,发送数据给用户;待查询操作完成后,对交易进行签名,将包含双重签名的交易发送到全网;通过验证矿工交易签名,若通过,则接受交易,资金转移过程完成。

进一步地,在本发明的一个实施例中,链下数据传输采用http协议或ipfs协议。

本发明实施例的基于区块链的可公开仲裁分布式云存储系统,通过向全网矿工提交一个包含存储押金的存储合约,以有效利用全网节点的本地存储空间,并建立规范的链下微支付通道,以进行交易和查询,具有不需要可信第三方进行审计操作就可以智能合约规范全网的服务,保证存储和查询过程的公平性的优点。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1