一种基于区块链分布式加密的文件存储方法及系统技术方案

技术编号:36048054 阅读:64 留言:0更新日期:2022-12-21 10:57
本申请提供一种基于区块链分布式加密的文件存储方法及系统,文件存储方法包括:生成待存储的大文件的公钥和私钥;基于预设门限加密算法,构建n个私钥分片,n为节点的数量,其中,私钥可通过至少m个私钥分片进行还原,m为预设门限阈值,m<n;将任一私钥分片随机发送至任一节点,并存储至节点对应的本地数据库模块;利用公钥对大文件进行加密得到加密大文件;将加密大文件切分为至少三个切片小文件;将每个切片小文件随机存储至节点对应的本地数据库模块。如此,通过将私钥分片和切片小文件随机发送至节点,完成对大文件的分布式加密;如果想要再访问大文件需要依次验证私钥、公钥和哈希值,极大地提高了大文件存储的安全性。性。性。

【技术实现步骤摘要】
一种基于区块链分布式加密的文件存储方法及系统


[0001]本申请涉及区块链应用领域,特别涉及一种基于区块链分布式加密的文件存储方法及系统。

技术介绍

[0002]区块链是由多个区块按照生成时间顺序连接形成的链条,其中,每个区块在生成时都存储了一定的信息。区块链通过分布式存储的方法保证其数据的安全性,具体来说,一条区块链同时被保存在多个节点中,一旦想更改某一区块内存储的信息,需要所有节点达成共识才能完成。
[0003]节点是为区块链提供存储和算力支持的服务器,包括区块链模块和本地数据库模块。其中,区块链模块联网,用于存储区块链并和其他节点通过网络联通。随着互联网的发展,需要上传区块链存储的占用空间较大的大文件(比如监控视频和图片等)越来越多,但是区块链模块的存储空间有限,如果将这些大文件直接上链,会造成网络的拥塞和区块链模块存储资源的浪费,为此,节点设置本地数据库模块专门用于存储大文件。
[0004]参见图1,为现有技术中大文件的存储方法示意图,当需要存储大文件A时,用户通过客户端获取大文件A的哈希值Hash A,再将Hash A上链存储至所有节点,同时将大文件A存储至目标节点的目标本地数据库模块中。然而,一方面本地数据库模块中的大文件A可以被单点删除,另一方面区块链系统中的任一节点都可以凭借Hash A自由访问目标节点,获取并传播大文件A。如此,现有的文件存储方法严重缺乏安全性。

技术实现思路

[0005]本申请提供了一种基于区块链分布式加密的文件存储方法及系统,可用于解决现有的文件存储方法严重缺乏安全性的技术问题。
[0006]第一方面,本申请提供一种基于区块链分布式加密的文件存储方法,应用于区块链系统中的客户端,所述区块链系统包括区块链、客户端和多个节点,所述客户端用于执行用户的具体操作,所述节点设置有区块链模块和本地数据库模块,所述区块链模块用于存储所述区块链,所述本地数据库模块用于存储所述节点的本地数据,所述文件存储方法包括:生成待存储的大文件的公钥和私钥;基于预设门限加密算法,构建n个私钥分片,所述n为所述节点的数量,其中,所述私钥可通过至少m个私钥分片进行还原,所述m为预设门限阈值,m<n;将任一私钥分片随机发送至任一节点,并存储至所述节点对应的所述本地数据库模块,其中,所有节点与所有私钥分片为一一对应;利用所述公钥对所述大文件进行加密,得到加密大文件;将所述加密大文件切分为至少三个切片小文件;将每个切片小文件随机发送至K个节点,并存储至所述节点对应的所述本地数据
库模块,其中,K=n

m+1。
[0007]在第一方面的一种可实现方式中,在所述通过预设算法生成待存储的大文件的公钥和私钥之前,所述文件存储方法还包括:获取待存储的文件,以及所述文件的占用空间;判断所述占用空间是否大于或者等于大文件阈值;所述大文件阈值为预先设置的大文件最小占用空间;如果所述占用空间小于所述大文件阈值,则将所述文件发送至所有节点的所述区块链模块,并上传至所述区块链存储;如果所述占用空间大于或者等于大文件阈值,则将所述文件确定为所述大文件。
[0008]在第一方面的一种可实现方式中,在所述判断所述占用空间是否大于或者等于大文件阈值之前,所述文件存储方法还包括:获取所述文件的哈希值;将所述哈希值发送至所有节点的所述区块链模块,并在所有节点达成共识后,将所述哈希值上传至所述区块链进行存储。
[0009]在第一方面的一种可实现方式中,所述基于预设门限加密算法,构建n个私钥分片,包括:根据所述节点的数量和所述预设门限阈值构建门限(m,n);根据所述私钥和所述门限构建门限多项式:,其中,SK为所述私钥,m为门限阈值,T为有限域中的随机数;根据所述门限多项式构建私钥分片,i=1,2,
……
,n。
[0010]在第一方面的一种可实现方式中,所述将任一私钥分片随机发送至任一节点,并存储至所述节点对应的所述本地数据库模块,包括:获取所述大文件的代号;将所述代号和所述私钥分片组合为私钥键值对(A,yi);其中,A为所述代号,yi为所述私钥分片;将每个私钥键值对(A,yi)发送至任一节点,并存储至所述节点对应的所述本地数据库模块。
[0011]在第一方面的一种可实现方式中,所述将每个切片小文件随机发送至K个节点,并存储至所述节点对应的所述本地数据库模块,包括:将所述代号和所述切片小文件组合为文件键值对(A,M_j),0<j<J+1;其中,M_j为所述切片小文件,J为所述切片小文件的个数;将每个文件键值对(A,M_j)随机发送至至K个节点,并存储至所述节点对应的所述本地数据库模块,其中,K=n

m+1。
[0012]在第一方面的一种可实现方式中,在所述将每个切片小文件随机发送至K个节点,并存储至所述节点对应的所述本地数据库模块之后,所述文件存储方法还包括:所述客户端通过以下步骤访问所述区块链系统中存储的目标大文件:确定待访问的目标大文件的代号A;
根据所述代号A,从所述区块链系统中获得所有私钥键值对(A,yi),并提取所有私钥分片yi;利用拉格朗日插值定理,根据所有私钥分片yi获得私钥SK;根据所述代号A,从所述区块链系统中获得所有文件键值对(A,M_j),并提取所有小文件M_j;将所有所有小文件M_j组合得到加密大文件M;利用私钥SK解密加密大文件M,得到目标大文件。
[0013]在第一方面的一种可实现方式中,所述利用拉格朗日插值定理,根据所有私钥分片y
i
获得私钥SK,包括:根据以下公式获得多项式F(x):令x=0,将F(0)确定为私钥SK。
[0014]在第一方面的一种可实现方式中,在所述利用私钥SK解密加密大文件M,得到目标大文件之后,所述文件存储方法还包括:所述客户端利用哈希算法提取目标大文件的目标哈希值;根据所述代号A,从所述区块链系统中获得所述区块链中存储的所述哈希值;判断所述目标哈希值和所述哈希值是否一致;如果所述目标哈希值和所述哈希值一致,则所述目标大文件访问正确;如果所述目标哈希值和所述哈希值不一致,则返回步骤确定待访问的目标大文件的代号A,重新请求访问目标大文件。
[0015]第二方面,本申请提供一种基于区块链分布式加密的文件存储系统,所述文件存储系统用于执行第一方面及各种可实现方式中的一种基于区块链分布式加密的文件存储方法,所述文件存储系统包括:公钥和私钥生成模块,用于生成待存储的大文件的公钥和私钥;私钥分片构建模块,用于基于预设门限加密算法,构建n个私钥分片,所述n为所述节点的数量,其中,所述私钥可通过至少m个私钥分片进行还原,所述m为预设门限阈值,m<n;私钥分片存储模块,用于将任一私钥分片随机发送至任一节点,并存储至所述节点对应的所述本地数据库模块,其中,所有节点与所有私钥分片为一一对应;大文件加密模块,用于利用所述公钥对所述大文件进行加密,得到加密大文件;加密大文件切片模块,用于将所述加密大文件切分为至少三个切片小文件;切片小文件存储模块,用于将每个切片本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于区块链分布式加密的文件存储方法,应用于区块链系统中的客户端,所述区块链系统包括区块链、客户端和多个节点,所述客户端用于执行用户的具体操作,所述节点设置有区块链模块和本地数据库模块,所述区块链模块用于存储所述区块链,所述本地数据库模块用于存储所述节点的本地数据,其特征在于,所述文件存储方法包括:生成待存储的大文件的公钥和私钥;基于预设门限加密算法,构建n个私钥分片,所述n为所述节点的数量,其中,所述私钥可通过至少m个私钥分片进行还原,所述m为预设门限阈值,m<n;将任一私钥分片随机发送至任一节点,并存储至所述节点对应的所述本地数据库模块,其中,所有节点与所有私钥分片为一一对应;利用所述公钥对所述大文件进行加密,得到加密大文件;将所述加密大文件切分为至少三个切片小文件;将每个切片小文件随机发送至K个节点,并存储至所述节点对应的所述本地数据库模块,其中,K=n

m+1。2.根据权利要求1所述的一种基于区块链分布式加密的文件存储方法,其特征在于,在所述通过预设算法生成待存储的大文件的公钥和私钥之前,所述文件存储方法还包括:获取待存储的文件,以及所述文件的占用空间;判断所述占用空间是否大于或者等于大文件阈值;所述大文件阈值为预先设置的大文件最小占用空间;如果所述占用空间小于所述大文件阈值,则将所述文件发送至所有节点的所述区块链模块,并上传至所述区块链存储;如果所述占用空间大于或者等于大文件阈值,则将所述文件确定为所述大文件。3.根据权利要求2所述的一种基于区块链分布式加密的文件存储方法,其特征在于,在所述判断所述占用空间是否大于或者等于大文件阈值之前,所述文件存储方法还包括:获取所述文件的哈希值;将所述哈希值发送至所有节点的所述区块链模块,并在所有节点达成共识后,将所述哈希值上传至所述区块链进行存储。4.根据权利要求1所述的一种基于区块链分布式加密的文件存储方法,其特征在于,所述基于预设门限加密算法,构建n个私钥分片,包括:根据所述节点的数量和所述预设门限阈值构建门限(m,n);根据所述私钥和所述门限构建门限多项式:,其中,SK为所述私钥,m为门限阈值,T为有限域中的随机数;根据所述门限多项式构建私钥分片,i=1,2,
……
,n。5.根据权利要求4所述的一种基于区块链分布式加密的文件存储方法,其特征在于,所述将任一私钥分片随机发送至任一节点,并存储至所述节点对应的所述本地数据库模块,包括:获取所述大文件的代号;
将所述代号和所述私钥分片组合为私钥键值对(A,y
i
);其中,A为所述代号,y
i
为所述私钥分片;将每个私钥键值对(A,y
i
)发送至任一节点,并存储至所述节点对应的所述本地数据库模块。6.根据权利要求5所述的一种基于区块链分布式加密的文件存储方法,其特征在于,所述将每个切片小文件随机发送至K个节点,并存储至所述节点对应的所述本地数据库模块,包括...

【专利技术属性】
技术研发人员:石宁钟亮亮姜冲
申请(专利权)人:南京可信区块链与算法经济研究院有限公司
类型:发明
国别省市:

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

1