一种基于切片优化的星际文件系统加解密方法

文档序号:29862988发布日期:2022-04-30 11:47阅读:107来源:国知局
一种基于切片优化的星际文件系统加解密方法

1.本发明属于本发明涉及ipfs技术领域、数据安全领域,具体涉及一种基于切片优化的星际文件系统加解密方法。


背景技术:

2.随着网络规模的进一步扩大,集中式的系统带来的问题显得愈发严峻。集中式的系统容易受到单点故障或来自恶意行为者的外部攻击,恶意行为者可能会泄露数据或机密信息。尤其是涉及到用户隐私的情况下,这可能导致不利的影响。此外,过高的服务器成本和带宽成本也使得人们更趋向于使用分布式数据存储系统,因此分布式、去中心化等相关研究方向受到广泛的关注和研究。
3.星际文件系统(ipfs)是最具代表性的分布式数据存储系统之一,然而使得ipfs真正成为研究热点的原因在于区块链。区块链因为要将数据上传到公共区块链中,这可能会导致可伸缩性和隐私问题,事实上,在区块链交易中放入大量数据是不可取的,因为涉及的成本很高。在这种情况下,当节点需要下载整个账本时会出现延迟问题,此外区块链原本的优点例如不变性和透明性在涉及隐私数据时也会带来问题。因此,与ipfs的结合是目前较为完善的方案。
4.ipfs运用了众多成熟的技术,包括dht(分布式哈希表)、 bittorrent、git和sfs等技术,并将其简化、修改最终集成为一个单一的内聚系统,而不仅仅是其各个部分的总和。ipfs因与当前区块链平台的平滑集成,被广泛应用于链外扩展存储中,促成了它被许多区块链项目广泛采用,以解决链上存储空间不足问题。
5.然而ipfs存在安全性问题,它没有在连接级别提供访问控制,以限制不受信任的对等方获取未经授权的数据,即任何人持有该cid的用户都从该网络中获取相应的内容。从安全角度来说,不存在完全可信的存储节点,因此不能将文件的安全性仅仅依托于对节点的信任。
6.大部分关于ipfs的工作,一直都致力于使用ipfs作为分布式数据存储开发分散的应用程序(dapp),却并没有考虑到隐私数据的安全性问题。少数的针对安全性问题的论文大都是从访问控制的方向增加文件的安全性,仅有几篇试图从对文件对象进行加密的角度进行尝试,然而即使时这样,这些方案也存在工作量大、系统复杂等问题。此外,这还使得ipfs失去数据去重这一特色属性。


技术实现要素:

7.针对上述现有系统采用技术存在的不足,本发明提出一种基于切片优化的星际文件系统加解密方法,在保留原有ipfs所有功能且不影响去重效果,不影响网络性能的情况下,更改ipfs对块的处理方式,给用户提供以略微增加工作量为代价增加文件安全性的加解密方案。从而确保存储数据的安全性与存储空间的高效利用,防止提供存储空间的用户对存储在本地的他人数据进行窃取或其他用户对资源进行非授权获取。
8.一种基于切片优化的星际文件系统加解密方法,具体包括以下步骤:
9.步骤1,加密上传流程:为ipfs的ipfs add命令添加一个可选参数k来表示是否需要加密上传;如果需要加密,则ipfs将文件上传到ipfs网络后返回参数cid,同时返回一个参数k并将其作为对称加密密钥;
10.步骤1.1:文件经过切片器切片得到数个指定大小的块后,首先判断有没有可选参数k,如果有的话,进入步骤1.2,没有的话则按正常的流程继续;
11.步骤1.2:判断当前的块是否是第一个块,如果是的话,使用 sha256获取该块的hash作为加密密钥k;
12.步骤1.3:根据用户设置的加密策略判断当前块是否需要加密,如需要加密则用密钥k进行aes256加密,再将加密后的或不需要加密的文件块按原有的方式取构造dag并上传到ipfs网络;
13.步骤1.4:上传结束后,根据密钥k是否为空来决定返回的参数中是否包含密钥k;当密钥k为空时,只返回一个参数即cidc,当密钥k不为空时,多返回一个参数即密钥k;
14.步骤2,解密下载流程:为ipfs的ipfs cat命令添加一个可选参数k来表示是否需要解密下载;如果此次要获取的文件是加密上传的,则需要用户提供正确的密钥k才能成功下载该文件;
15.步骤2.1:判断是否有可选参数k,如果有,对第一个块进行解密并获取解密后的块的hash;如果该hash与用户提供的密钥k不等,则证明用户未提供正确的密钥,系统终止进程,删除已下载的数据,并将结果反馈给用户;如果hash与密钥k相等,则转入步骤2.2,块进入newdagreader模块;如果没有可选参数k,则转入步骤2.1,块进入newdagreader模块;
16.步骤2.2:判断在newdagreader中获取的各个块是否有大于 256kb的块,如果有,判断是否有密钥k,有的话进行解密获得大小为256kb的明文块;没有的话则终止进程,返回密码错误的提示。不大于256kb的块则正常进行组合文件;
17.步骤2.3:将最终组合好的文件返回给用户。
18.进一步地,步骤1.3中,所述加密策略为,在ipfs的配置文件 config中添加了两个属性,encryption_header加密头和 encryption_density加密密度;加密头表示文件开头连续n块必须要加密,加密密度代表除了加密头外,剩余的块有多少需要加密。
19.进一步地,所述encryption_header加密头的默认值设为4。
20.进一步地,所述encryption_density加密密度的默认值设为0.01,表示平均100个块加密1个块。
21.进一步地,所述加密策略中设定高优先级规则,除了第一个块之外,其余不满256kb的块不进行加密,即只会对首个块和256kb大小的块进行加密。
22.进一步地,针对首个块的加密采用zeropadding的方式,针对其余满256kb的块的加密采取在末尾填充密钥k后再加密的方式。
23.本发明达到的有益效果为:该方法可以顺利地集成到ipfs中,根据用户制定的策略在上传过程中对切片后的部分文件块进行加密,在下载过程中根据特殊的加密方法识别出加密块并对其进行解密。通过这种方法,可以在不会影响ipfs本身性能的情况下增加文件的安全性,并最大限度保留了ipfs的去重效果。
附图说明
24.图1是本发明实施例中所述加解密方法的效果概览图。
25.图2是本发明实施例中所述加解密方法的上传概览图。
26.图3是本发明实施例中所述加解密方法的下载概览图。
27.图4是本发明实施例中所述加解密方法的上传流程图。
28.图5是本发明实施例中所述加解密方法的下载流程图。
具体实施方式
29.下面结合说明书附图对本发明的技术方案做进一步的详细说明。
30.星际文档系统ipfs因为其自身独特的优点与其作为分布式文件系统所带来的优点,被越来越广泛的应用,此外由于其可以与当前区块链平台平滑集成,也被大量使用于链外存储扩展。然而ipfs存在一些隐私方面问题,即使是为其添加访问控制也不能完全避免恶意节点对数据的非授权访问。针对这一问题,本发明基于ipfs文件切片的特性结合aes256与sha256提出了一种轻量级加密方案,该方案可以顺利地集成到ipfs中,根据用户制定的策略在上传过程中对切片后的部分文件块进行加密,在下载过程中根据特殊的加密方法识别出加密块并对其进行解密。通过这种方案,系统可以在不会影响ipfs 本身性能的情况下增加文件的安全性,并最大限度保留了ipfs的去重效果。
31.实现效果概览如图1所示,从使用角度而言,对ipfs的更改便是给上传和下载功能分别添加一个可选的参数(如图1所示),即为上传功能添加可选择参数k来表示是否需要加密。如果需要加密,则ipfs将文件上传到ipfs网络后不仅会返回参数cid,还会返回一个参数k,对称加密密钥。下载功能添加可选参数k,如果此次要获取的文件是加密上传的,则需要用户提供正确的参数k才能成功下载该文件。
32.上传部分概览如图2所示,上传过程中,文件首先经过切片器切成一个个指定大小的块依次输入dagbuilder中。如果用户添加了可选参数k,则本方法改进的ipfs会将第一个切出来的块的hash作为密钥k。哈希方法采用sha256,这意味着会产生256bits大小的hash。然后采用该256bits的密钥k作为对称加密密钥来对需要加密的文件块进行加密,加密方式采用aes-256,这是一种在目前看来依然足以保证数据安全的加密算法。dag指的是默克尔有向无环图,一种数据存储结构,cid就相当于这个图中各个节点的下标,但一般默认指的是一个根节点的下标,即通过该根节点可以在dag中找到整个文件的所有数据。
33.哪些文件块需要加密主要由两个方面来决定,而这也是同时考虑到大文件和小文件的情况而决定的结果。在ipfs的配置文件config 中添加了两个属性供用户修改,encryption_header加密头和 encryption_density加密密度。加密头表示文件开头连续n块必须要加密,考虑到部分小文件即使是切割后也依旧是明码存储的,比如txt 文件,因此默认值设为4,将保证大部分小文件也可以保证安全性。加密密度代表除了加密头外,剩余的块有多少需要加密,考虑到特大文件的存在,因此默认值设为0.01(阈值),表示平均100个块加密 1个。
34.考虑到解密时的识别加密块的问题,加密应该有一个更高优先级的规则,除了第一个块之外,其余如果不满256kb的块则不会进行加密。这意味着,该方法只会对首个块和256kb大小的块进行加密。针对首个块的加密采用zeropadding的方式。针对其余满256kb的
块的加密,则采取在末尾填充密钥k后再加密的方式,以确保除首个块外,其余加密块均比256kb要大,从而方便识别。并且在这种情况下,即使上传的用户和下载的用户配置文件不一致,也不会影响功能。
35.下载部分概览如图3所示,由于文件在ipfs中是以文件块的形式进行存储,因此用户使用下载命令后,ipfs会根据记录文件切片信息的dag和记录存储节点信息的分布式哈希表,依次获取各个文件块,并最终将这些块在本地整合成完整的文件。然而,在上传功能更改后,原本的下载功能也不再适用,存在ipfs网络中的文件块不再只是小于等于256kb的明文块。因此,在下载过程中有必要对文件块进行识别,判断是否是密文块,如果是则需要先解密获得明文块。
36.根据上文的加密策略,检测文件块是否为密文块的规则主要有两个。第一,大于256kb的块都是密文块,第二,如果用户添加了可选参数密钥k的话则第一个块必定是密文块。
37.此外,由于有存在恶意用户的可能性,因此要考虑恶意用户下载加密文件而没有提供密钥或提供错误密钥的情况。针对这两种情况的检测方式如下,第一,检测到密文块而用户没有提供密钥k,第二,用户提供了密钥k,但与第一个块解密后的hash不等。
38.本发明提供基于切片优化的星际文件系统加解密方法,加密上传流程图如图4所示,下载解密流程图如图5所示。具体包括以下步骤。
39.步骤1,加密上传流程:为ipfs的ipfs add命令添加一个可选参数k来表示是否需要加密上传;如果需要加密,则ipfs将文件上传到ipfs网络后不仅会返回参数cid,还会返回一个参数k,对称加密密钥。
40.步骤1.1:文件经过切片器切片后,会首先判断有没有可选参数 k,如果有的话,进入步骤1.2,没有的话则按正常的流程继续。
41.步骤1.2:会首先判断当前的块是否是第一个块,如果是的话,使用sha256获取该块的hash作为加密密钥k。
42.步骤1.3:根据用户设置的加密策略判断当前块是否需要加密,如需要加密则用密钥k进行aes256加密,再将加密后的或不需要加密的文件块按原有的方式取构造dag并上传到ipfs网络。
43.步骤1.4:上传结束后,根据密钥k是否为空来决定返回的参数中是否包含密钥k。当密钥k为空时,只返回一个参数即cidc,当密钥k不为空时,多返回一个参数即密钥k。
44.步骤2,解密下载流程:为ipfs的ipfs cat命令添加一个可选参数k来表示是否需要解密下载;如果此次要获取的文件是加密上传的,则需要用户提供正确的密钥k才能成功下载该文件。
45.步骤2.1:判断是否有可选参数k,如果有,该系统会对第一个块进行解密并获取解密后的块的hash。如果该hash与用户提供的密钥k不等,则证明用户未提供正确的密钥,系统终止进程,删除已下载的数据,并将结果反馈给用户。如果hash与密钥k相等,则转入步骤2.2,块进入newdagreader模块。如果没有可选参数k,则照常进入newdagreader模块。
46.步骤2.2:在newdagreader中获取的一个个块是否有大于256kb 的块,如果有,判断是否有密钥k,有的话进行解密获得大小为256kb 的明文块。没有的话则终止进程,返回密码错误的提示。不大于256kb 的块则正常进行组合文件。
47.步骤2.3:将最终组合好的文件返回给用户。
48.以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1