高效的文件分享交互式验证方法及基于其的文件分享方法技术

技术编号:36681092 阅读:20 留言:0更新日期:2023-02-27 19:38
本发明专利技术公开了一种高效的文件分享交互式验证方法及基于其的文件分享方法,包括文件分享者P生成初始证明文件,并广播用户标识id

【技术实现步骤摘要】
高效的文件分享交互式验证方法及基于其的文件分享方法


[0001]本专利技术涉及区块链
和文件分享领域,具体来说,涉及一种高效的文件分享交互式验证方法及基于其的文件分享方法。

技术介绍

[0002]基于P2P技术的分布式文件分享技术被广泛应用于互联网,常见的应用包括BitTorrent、eDonkey、eMule、μTorrent、Napster、KaZaA等,这些应用依赖在线节点互相进行文件传输,极大地提高了文件分享效率。为了确保P2P文件分享网络中的资源不枯竭,需要有大量在线用户持续分享文件,因此,一种能够吸引更多用户参与文件分享的激励机制对P2P文件分享系统的正常运行至关重要。传统的激励机制依赖网络中的诚实节点或者中心化服务器来计算奖惩值,存在恶意用户攻击、中心化服务器单点失效或数据被篡改等安全问题。
[0003]针对这些问题,一种有效的解决方案是将区块链技术和P2P文件分享系统进行结合,利用数字货币奖励分享文件的用户。区块链的交互式验证协议可以确保参与分享文件的用户具备文件分享的资格,区块链的分布式和防篡改等特性可以确保系统不会发生单点失效或者信息被篡改等安全问题。目前,基于区块链的文件分享技术的研究分为两个方向。
[0004]一个方向是将P2P文件分享系统与成熟的区块链技术结合,如BTFS、BlockIPFS、Siacoin、Storj等,该方向专注于将文件分享过程与区块链现有的交互式验证协议结合,用户的文件分享资格验证依赖于现有的区块链交互式验证协议。为了通过分享文件获得代币奖励,用户需要保存该文件,并具备完成交互式验证协议所需的其他能力,例如强大的计算能力、大量权益证明、大量的存储空间等。上述需求在造成资源浪费的同时,由于交互式验证协议没有与被分享文件的内容相关联,因此也很难验证被分享的文件确实是文件下载者需要的。
[0005]另一个方向是研究适用于文件分享场景的交互式验证协议,这些交互式验证协议使用存储资源作为凭证完成文件分享资格验证。例如,空间证明(Proof of Space,PoSpace)通过向外界证明一定量的磁盘空间已经被占用来验证资格,简单时空证明(simple Proof of SpaceTime,PoST)允许用户向外界证明自己在一段时间内确实保存了一定量的文件。然而,上述交互式验证协议只考虑了文件大小,无法与文件内容相关联,因此很难验证该文件是否为文件下载者所需要。Filecoin是目前比较流行的基于区块链的文件系统(主要被用于文件存储,也可被用于文件分享),其交互式验证协议与文件内容相关联,Filecoin使用复制证明(Proof of Replication,PoRep)和时空证明(Proof of Spacetime,PoST)来向验证者证明用户确实在某个时间段内存储了特定文件,同时使用了一个较复杂的零知识证明zk

SNARKs来确保证明的过程中不泄露隐私信息。但是,在实际使用过程中,zk

SNARKs运行效率较低且需要依赖可信第三方来生成公共参数,将会导致新的安全风险。
[0006]已公开的专利申请CN111950027A提供了一种基于区块链智能合约的文件分享方
法,该专利的实现过程为:分享者登录DAPP,选择需要分享的本地文件,选择/输入分享对象的DAPP账号,通过智能合约将该分享文件和分享对象存入链上,并返回分享文件的链上ID,由链上ID生成分享链接并向外发送;该分享链接接收者打开该分享链接,提示登陆DAPP,若核实确为分享对象,则允许其查阅/下载该分享文件。但是需要发送方和接收方的交互。
[0007]已公开的专利申请CN112100144A提供了一种基于区块链的文件分享方法,该专利的实现过程为:根据目标加密方式对源文件进行加密;对加密后的所述源文件进行分割,得到至少一个分割文件;将分割文件上传至区块链网络进行存储;其中,分割文件包括基于加密密钥生成的身份验证序列,用于文件接收方验证接收到的文件是否为目标分割文件,加密密钥为目标加密方式使用的密钥。但是该方法下其他用户节点无法帮助验证文件的正确性。

技术实现思路

[0008]针对现有方案中存在的技术问题,本专利技术公开了一种高效的文件分享交互式验证方法及基于其的文件分享方法,其核心思想是将文件内容和协议进行关联,使用交互式时空证明来完成文件分享资格验证,用户可以向外界证明特定的文件确实被存储了一段时间。
[0009]本专利技术的技术方案如下:
[0010]一种高效的文件分享交互式验证方法,其步骤包括:
[0011]1)文件分享者P生成初始证明文件,并广播用户标识id
P
与初始证明文件的随机抽样,以使任一保存被分享文件的文件分享者V,生成一随机挑战ch;
[0012]2)将针对随机挑战ch生成的响应,发送给文件分享者V,以使文件分享者V验证所述响应后,文件分享者P具有文件分享资格。
[0013]进一步地,通过以下步骤生成初始证明文件:
[0014]1)对分享文件F进行分块,计算每一分块B[k]的消息摘要H
B
[k];
[0015]2)将每一消息摘要H
B
[k]切为p个分片,对每一分片P生成一节点列表N[i];
[0016]3)通过尝试不同的随机数,获取符合设定条件的节点列表N[i];
[0017]4)基于符合设定条件的节点列表N[i],使用固定随机挑战ch

执行证明阶段,生成初始证明文件。
[0018]进一步地,通过以下步骤生成所述响应:
[0019]1)根据节点列表的总数,计算索引j,并根据随机挑战ch,生成一大小为m的数组CH,其中数组中的每个元素CH[i]占j

1位;
[0020]2)以元素CH[i]的值作为序号选择节点列表N[i],并连接被选择的节点列表N[i]后,计算摘要值D;
[0021]3)将摘要值D与所有的节点列表N[i]进行拼接后,计算哈希值HD[i];
[0022]4)将每一哈希值HD[i]作为叶子节点g,构建Merkle树,其中Merkle树内部父节点的值是通过拼接两个子节点后进行随机预言得到,Merkle树的根标签使用nroot表示;
[0023]5)根据叶子节点总数,计算索引x,并对根标签nroot进行随机预言后,切割为一组大小为q的数组E;
[0024]6)计算各叶子节点g到根节点的路径π
g
,其中路径π
g
包含相应节点的nonce;当E[g]是奇数时,路径π
g
包含从叶子节点N[E[g]]到根节点的路径,E[g]表示数组E的第g个元素;当E[g]是偶数,路径π
g
包含从叶子节点N[E[g]]与叶子节点N[E[g]‑
1]到根节点的路径;
[0025]7)输出响应X={nroot,π1,π2,


g本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高效的文件分享交互式验证方法,其步骤包括:1)文件分享者P生成初始证明文件,并广播用户标识id
P
与初始证明文件的随机抽样,以使任一保存被分享文件的文件分享者V,生成一随机挑战ch;2)将针对随机挑战ch生成的响应,发送给文件分享者V,以使文件分享者V验证所述响应后,文件分享者P具有文件分享资格。2.如权利要求1所述的方法,其特征在于,通过以下步骤生成初始证明文件:1)对分享文件F进行分块,计算每一分块B[k]的消息摘要H
B
[k];2)将每一消息摘要H
B
[k]切为p个分片,对每一分片P生成一节点列表N[i];3)通过尝试不同的随机数,获取符合设定条件的节点列表N[i];4)基于符合设定条件的节点列表N[i],使用固定随机挑战ch

执行证明阶段,生成初始证明文件。3.如权利要求2所述的方法,其特征在于,通过以下步骤生成所述响应:1)根据节点列表的总数,计算索引j,并根据随机挑战ch,生成一大小为m的数组CH,其中数组中的每个元素CH[i]占j

1位;2)以元素CH[i]的值作为序号选择节点列表N[i],并连接被选择的节点列表N[i]后,计算摘要值D;3)将摘要值D与所有的节点列表N[i]进行拼接后,计算哈希值HD[i];4)将每一哈希值HD[i]作为叶子节点g,构建Merkle树,其中Merkle树内部父节点的值是通过拼接两个子节点后进行随机预言得到,Merkle树的根标签使用nroot表示;5)根据叶子节点总数,计算索引x,并对根标签nroot进行随机预言后,切割为一组大小为q的数组E;6)计算各叶子节点g到根节点的路径π
g
,其中路径π
g
包含相应节点的nonce;当E[g]是奇数时,路径π
g
包含从叶子节点N[E[g]]到根节点的路径,E[g]表示数组E的第g个元素;当E[g]是偶数,路径π
g
包含从叶子节点N[E[g]]与叶子节点N[E[g]

1]到根节点的路径;7)输出响应X={nroot,π1,π2,

,π
g
}。4.如权利要求3所述的方法,其特征在于,通过以下步骤生成数组CH:1)使用散列算法,计算随机挑战ch的散...

【专利技术属性】
技术研发人员:苏帅原方圆袁煜琳曾力陈驰
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1