一种针对不可篡改文件的加密存储方法与流程

文档序号:11199897阅读:2841来源:国知局
一种针对不可篡改文件的加密存储方法与流程

本发明涉及一种加密存储方法,尤其涉及一种针对不可篡改文件的加密存储方法。



背景技术:

现实生活中,我们总是会有很多的文件需要加密,公司的合同、员工信息、个人的隐私信息等。随着越来越多的信息数字化,如何安全的存储数字信息成为了现代社会的重中之重。一方面,分布式文件系统在解决了存储容量、数据备份的同时也留下了数据安全方面的隐患。另一方面,加密算法的不断演化,让文件的安全性得到显著提高。由于流行的加密服务器/客户端模式,服务器的吞吐容量成为整个系统的瓶颈。如何在分布式的环境下提高验证效率是十分关键的问题。

merkeltree是一种文件hash摘要的计算方法,最初是由ralfmerkle在1979提出的。它已经被运用在分布式账本技术中用于验证数据的完整性和可靠性。它的原理如附图1所示:在最底层,和哈希列表一样,我们把数据分成小的数据块,有相应地哈希和它对应。但是往上走,并不是直接去运算根哈希,而是把相邻的两个哈希合并成一个字符串,然后运算这个字符串的哈希,这样每两个哈希就结婚生子,得到了一个“子哈希”。如果最底层的哈希总数是单数,那到最后必然出现一个单身哈希,这种情况就直接对它进行哈希运算,所以也能得到它的子哈希。于是往上推,依然是一样的方式,可以得到数目更少的新一级哈希,最终必然形成一棵倒挂的树,到了树根的这个位置,这一代就剩下一个根哈希了,我们把它叫做merkleroot。merkle树很适合适合用于大文件校验,同时碰撞的几率也低于md5。



技术实现要素:

本发明的目的在于提供一种针对不可篡改文件的加密存储方法,旨在提高文件的安全性,在文件被恶意篡改之后能够及时发现篡改,进而实现一定程度的防篡改。

本发明采用如下技术方案实现:

一种针对不可篡改文件的加密存储方法,其特征在于,该方法包括如下步骤:1)在文件上传阶段,进行审核查询,审核查询的内容是要求系统中一定比例的用户审核通过,文件才可以被上传至分布式存储系统;

2)在步骤1)中审核通过的文件被存储在分布式集群中,文件被分片,分片的大小可以人工设定。

3)对文件的分片信息进行加密:通过加密模块进行加密,该模块中包含多个可选用的加密算法,如rsa。具体来说,审核文件的用户都具有一对公、私钥,系统采用mofn的形式确认权限,也就是说n个公钥中有m个公钥给出了配对的私钥。在文件审核通过后,用户对存储路径进行加密签名,加密后的信息数据存放在文件管理节点上。

4)对步骤2)中的分片文件进行merkle树的hash计算,将结果作为树的叶子节点,然后每两个叶子节点进行再次hash合并成一个父节点,一轮过后,再将父节点两两进行同样的操作,每一轮最后落单的节点自动升级成为自己的父节点,最后得到一个树根hashroot,所述树根hashroot也就是该文件的信息指纹,一个分片的信息被微小改动都会导致树根hashroot的偏差,这样就可以方便的查看文件是否被篡改过。

5)将文件id和步骤4)中的树根hashroot作为键值对存进内存数据库中,日后在相关人员获取文件后,可在本地计算hashroot,然后再根据id进行比对就可以判断文件是否被篡改。

6)在取文件的阶段,重复步骤1)中的权限查询,然后根据在步骤2)中选用的加密算法进行解密获取分片路径,也就获得了原文件。

进一步的,审核查询的内容是要求系统中所有用户的2/3审核通过,文件才可以被上传至分布式存储系统。

进一步的,在步骤3)中,所述加密模块中包含rsa加密算法。

本发明的有益技术效果是:采用本发明对文件进行加密存储,进一步提高了分布式文件存储的可靠性,将文件丢失的风险分散到多节点、将文件管理的任务交给多个用户,并且采用默克尔树的结构简要存储分片信息,提高了系统对文件篡改的敏感性,能进一步满足对安全性要求高的文件存储要求。

附图说明

图1是分布式文件加密存储的流程图。

具体实施方式

通过下面对实施例的描述,将更加有助于公众理解本发明,但不能也不应当将申请人所给出的具体的实施例视为对本发明技术方案的限制,任何对部件或技术特征的定义进行改变和/或对整体结构作形式的而非实质的变换都应视为本发明的技术方案所限定的保护范围。

本发明主要是提供一种新的分布式加密防篡改存储策略,从文件信息存储以及采用一种信息指纹存储来提高对被篡改数据的敏感性。同时,对文件的操作权限控制采用部分签名的方式。

首先,将待加密文件上传到分布式存储系统上之前,需要进行一个用户多签名认证,也就是说将所有相关用户的公钥发送给系统,在文件入系统之前,向系统索要一定比例的用户(默认设为所有用户1/3)的私钥,只有达到要求文件才可以被写入系统,审核不通过则返回给用户是否有问题需要修改或确认。这样做的好处是减少了误操作,避免了单个用户的恶意行为。

其次,进入文件信息存储阶段,进入分布式文件存储系统后,文件会被分为多个分片(分片大小默认为1kb),会被分散的存储在多个独立的节点上,采用分布式存储的好处是文件容错性更高。相较于其他方案中对整个文件加密,本发明采用对文件分片的路径进行加密,这样加密的数据量小很多,具体加密采用rsa加密算法,利用文件写入时的提供私钥的多个用户的公钥对数据进行多重加密,相对应的解密是需要相应的用户进行多重解密,这样的加密策略显然会大幅提高文件的安全性。

最终,本发明引入了一种信息指纹的方法来二次确保文件的防篡改性,分片结束后,将具体的分片数据hash为20bits的数据,并将这些hash之后的数据作为merkle树的叶子节点,接着逐层hash各叶子节点,最终构成一棵merkle树。在该发明中,为了需要将该默克尔树的根root1存下来,此处本方案将代表文件唯一性的id和默克尔树的根作为键值对也就是本文件的信息指纹存储进外部数据库中。日后只要有一个分片遭到篡改,新的分片的默克尔树根root2就会与原来的根root1千差万别,以此保证文件不被篡改。

如图1所示,本方案采用分布式存储的方式,对存储路径采用部分签名的方式进行加密,采用merklehash树的方法获得数据的信息指纹提高监测数据是否被篡改的效率。

首先,将所有相关用户的公钥发送给系统,需要被存储的文件将由申请人发送给相关用户审核。只有系统中一定比例的用户(默认设为所有用户2/3)审核通过了,文件才可以被写入分布式存储系统。这样做的好处是减少了误操作,避免了单个用户的恶意行为。

其次,文件会被分为多个分片,每一片都会复制多个备份,然后存储在独立的节点上。文件分片大小默认为1kb。采用分布式存储的好处是文件容错性更高。系统的加密模块将根据用户的签名信息对文件的分片信息进行加密。

分片结束后,将按照merkle树计算hash值。每一片数据在hash完后作为merkle树的叶节点,逐层进行hash计算最终构成一棵merkle树。merkleroot将作为信息指纹存储下来,此处本方案将代表文件唯一性的id和默克尔树的根作为键值对存在内存数据库中。日后,只要有一个分片遭到篡改,新的分片的merkleroot就会与原来的merkleroot千差万别。相较于其他方案中对整个文件加密,本方案采用对文件分片的路径进行加密,这样加密的数据量小很多,具体加密采用rsa加密算法,利用文件写入时的提供私钥的多个用户的公钥对数据进行多重加密,相对应的解密是需要相应的用户进行多重解密,这样的加密策略显然会大幅提高文件的安全性。

当然,本发明还可以有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可以根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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