本发明属于数据信息分发技术改进领域,尤其涉及一种基于分布式对象存储系统安全的信息分散方法及系统。
背景技术:
在全球经济高速发展、科技不断创新的今天,云计算、物联网等信息产业蓬勃发展,全球数据量和存储规模呈指数型增长。随着大数据时代的到来,为缓解本地数据存储及维护的成本压力,越来越多的个人及组织将数据从本地迁移到云服务提供商所提供的云存储平台上。
在不断增长的互联网数据中,非结构化数据的增长尤为显著。非结构化数据中蕴含着巨大的潜在价值,然而因其存储方式不统一、数据格式众多、业务流程多样、标准化困难、信息量庞大等特点至今没有得到充分的利用和挖掘。如何解决互联网中大规模非结构化数据的存储、管理和分析是云存储系统面临的重大挑战之一。此外,随着网络空间安全问题日益凸显,云存储系统中数据泄漏、数据篡改、数据丢失等事故频发,对个人及云服务提供商造成了难以估量的损失。
云存储是在云计算的基础上衍生和发展而来,采用软件定义存储的技术将大量异构的存储设备通过网络整合为一个易于扩展且弹性透明的虚拟化存储资源池,并将其按需分配给授权用户。已授权用户可以通过互联网在云存储平台上完成存储资源的访问和管理,无需考虑数据分布、自动容错、系统可扩展性等复杂的大规模分布式存储系统的技术细节,在提高工作效率的同时降低存储成本。简而言之,云存储是一个以数据存储和管理为核心的云计算系统。云存储具有如下几个特性:
1.超大规模。云存储集群的规模庞大,需要管理的节点成千上万,存储的数据量高达pb级别。
2.可扩展性。云存储系统能够根据数据规模的变化动态伸缩,并且随着集群规模的增大,系统的整体性能将呈线性增长,同时不需要增加过多的运维成本。
3.低成本性。云存储系统的自动容错和负载均衡机制使其可以构建在普通计算机上,不需要采购高性能的专用服务器。此外,云存储的数据中心可以建立在电力资源丰富且温度适宜的地区从而大幅降低能源成本。
4.高性能。云存储系统具备优越的数据读写性能,用户拥有着良好的存储体验。
5.按需服务、透明服务。云存储为用户提供了统一的存储空间,用户可以按需购买使用。此外,云存储系统为用户提供了统一的存储接口,并且集群存储节点的变化对用户透明。
6.高数据安全性。云存储系统能够通过复制策略、纠删码技术、信息分散算法等数据安全存储技术确保用户数据不被丢失、篡改以及泄漏。
云存储可以分为文件存储、块存储以及对象存储等三种存储方式。其中文件存储向用户提供了一个网络文件系统(networkfilesystem,nfs),用户可以通过nfs、cifs(commoninternetfilesystem)等协议进行访问。块存储向用户提供一个虚拟磁盘,用户可以通过iscsi(smallcomputersysteminterface)等协议进行访问。对象存储以灵活可定制的对象为存储单元,为用户提供了一个统一的存储空间,用户可以通过对象存储接口进行访问。
近年来,基于对象的分布式存储即分布式对象存储系统逐渐成为云上存储的主流解决方案。对象存储最为凸显的优势在于其适用于非结构化数据的存储。互联网中的众多应用需要存储大量的图片、音频、视频等非结构化数据,这类数据通常以对象的形式被组织,且互相之间并没有任何关联。对象存储通过单向散列等索引方法能够直接定位到对象的存储位置,无需进行逐层查找,从而加快系统读写性能。此外对象存储对外提供rest或者soap的存储接口,这种基于对象接口的存储方式使得高性能、跨平台、易共享的存储结构成为可能。
对象存储通常采用扁平化的数据组织方式,其基本的存储单元是对象。对象一般由对象标识、对象数据、对象属性以及对象元数据等四个部分组成。对象标识用于对象的全局索引,每个对象拥有唯一的对象标识。对象数据可以是图片、音频、视频、文本文件、二进制文件等任意类型。对象属性是用于描述对象自身属性的数据,以键值对(key-value,k-v)的形式存储在文件的扩展属性当中。对象元数据包括对象名称、对象标识、对象存储位置等关键信息,通常以结构化的方式集中存放在元数据服务器或者分布式数据库当中。
分布式对象存储系统通常将元数据与对象数据分别存储,从而将系统的控制流与数据流分离,使得系统具有高吞吐量以及高可扩展等特性。基于对象的分布式存储架构既具备nas架构易于数据共享的优势又拥有san架构高速直接访问的长处。图1是一个经典的基于对象的分布式存储架构。
图1中的分布式对象存储系统由客户端(client)、对象存储设备(object-basedstoragedevice,osd)、元数据服务器(metadataserver,mds)等三部分组成。其中客户端为用户提供一个简单易用的存储服务平台,并与元数据服务器及对象存储设备相交互。元数据服务器用于对象元数据的存储和管理,向客户端提供访权限访问控制、对象定位服务等功能。此外,元数据服务器对集群节点起到监控和协调作用,负责系统负载均衡、故障迁移等功能。对象存储设备是该分布式对象存储架构的核心,具有独立的cpu、内存、网络以及存储介质等硬件资源,用于管理及持久化对象。对象存储设备向客户端提供对象读写接口,客户端可以通过对象标识、偏移量完成数据读写。此外,对象存储设备可以利用自身硬件资源优化数据分布,通过数据预取的方式加快对象的读写速率。
zigzag-decodable码(zzd码)是一种基于二进制移位和异或运算的最大距离可分码,具有比crs更为高效的编解码效率,其生成矩阵是一个标准的范德蒙矩阵。
zzd码的编码流程简单,首先将原始数据填充后切分为k个等长的数据块,记作s0,s1,...,sk-1,然后使用公式1对切分后的数据块进行编码,从而获得m个校验数据块c0,c1,...,cm-1,其中计算过程中涉及到的加法运算均看作异或运算,ssii→ii*(jj 1)表示将原始数据块ssii向右移动ii*(jj 1)位,并在左侧使用比特“0”进行填充。
zzd码的解码流程相较于传统的rs码及crs码较为复杂,然而具有更快的解码速率。zzd码采用了高效的zigzag解法,其解码的主要过程如下:
1.将未丢失的原始数据块中的信息元从校验数据块中消除;
2.从校验数据块中寻找并获得原始信息元;
3.将已知的原始信息元从校验数据块中消除;
4.转到第2步,直到需要的原始信息元被全部解出。
zzd码在迭代获取原始信息元前,需要将未损坏的原始数据块的信息元从校验块中消除。假设有r个原始数据块丢失,此步操作需要选取r个校验数据块,并将(k-r)*l个原始数据块的信息元从中消除,共需要执行(k-r)*r*l次异或运算。zzd码每次迭代可以获得1个原始信息元,为了从校验数据块中消除1个信息元,需要进行r-1次异或运算。zzd码需要进行r*l次迭代恢复出r个丢失的原始数据块,因此迭代过程共计使用了(r-1)*r*l次异或运算。综上,zzd码在解码流程中共使用了(k-r)*r*l (r-1)*r*l=(k-1)*r*l次异或运算,平均每修复一个信息元仅需使用k-1次异或运算。
经过上述分析,相较于rs码和crs码,zzd码在编解码流程中拥有着优越的计算性能,然而在计算校验数据块时,需要对原始数据块进行右移补“0”操作,不可避免的增加了存储开销,共计需要额外(k-1)*(1 2 … m)比特的存储空间。此外,从zzd解码流程可以看出,该码虽然能够同时解码出所有丢失的原始数据块,但是不能够像rs码和crs码一样仅修复部分指定丢失数据块。
aont-rs算法作为首个融合aont算法和纠删码的信息分散算法,为后来aont-crs、aont-lt、raont-rs、saont-rs等优化算法的提出奠定了基础。该算法能够以较低存储及计算开销提高数据的安全性,适用于对数据安全保护程度要求高的存储场景。
aont-rs算法的数据分发阶段如图2所示,算法首先在原始数据后额外添加一段公开且固定的数据段canary,然后使用随机生成的密钥k对明文执行aont转换从而获得密文c,接着使用sha2-256散列算法计算出密文c的散列值h并与随机密钥k做异或运算获得数据段diference并将该数据段添加到密文c尾部构成aont包,最后通过rs码对aont包进行编码生成多个数据块后分散至不同的存储位置。
在aont-rs算法的重构阶段中,算法首先从存储系统获取到足够多的数据块并使用rs码解码出原始aont包,并从中获取密文c以及difference数据段,然后使用分发阶段采用的散列算法计算出密文c的散列值h并与difference数据段做异或运算恢复出随机密钥k,接着使用随机密钥k对密文c通过aont算法解码出原始数据及canary数据段,最后通过校验canary数据段来确保数据的完整性。如果aont-rs算法恢复出的canary数据段有误,那么算法认为数据的重构阶段出现了异常,且重构出的原始数据有误。
aont-rs算法利用强不可分性的aont算法确保数据的机密性,利用rs码确保数据的可用性,以及利用额外添加的canary数据段确保数据完整性。综上所述,aont-rs算法能够在很大程度上保护数据的安全性。
aont-rs算法作为首个融合aont算法与纠删码的信息分散算法,能够在很大程度上保证数据的机密性、可用性以及完整性。然而,虽然aont-rs算法能够通过canary数据段检验数据的完整性,进而确保重构数据的正确性,但是当有数据块被篡改时,aont-rs算法并不能够定位到错误的数据块并正确恢复出原始数据。此外,aont-rs算法在原始数据过短时存在两种数据泄漏的风险。为修复aont-rs算法中存在的安全漏洞,raont-rs、saont-rs等算法被相继提出。raont-rs算法通过结合承诺方案和纠错码能够有效确保数据的可恢复性,然而其计算复杂度较高,并不适用于某些对计算效率要求较高的场景。saont-rs算法采用sha3-512散列算法替代了aont-rs算法中用于密文散列值计算的sha2-256散列算法以扩展aont包长,进而降低原始数据过短时系统出现数据泄漏的风险,并采用校验数据块散列值的方式确保存储设备中数据块的完整性以确保原始数据的可恢复性。然而,saont-rs算法因为其所采用的sha3-512散列算法编码速率较低,所以其整体计算复杂度较高。此外,攻击者可能通过暴力攻击saont-rs算法中数据块的散列值获取数据块的信息,进而造成系统出现数据泄漏。
在纠删码的选择上,aont-rs、raont-rs、saont-rs等算法采用了基于有限域上多项式运算的rs码,aont-crs算法采用了基于二进制矩阵异或运算的crs码。相较于rs码和crs码,基于二进制移位及异或运算的nzzd码拥有更高的编解码速率。因此,将aont-rs系列算法中的纠删码替换为nzzd码可以有效提升算法的整体计算效率。此外,aont-rs系列算法中用于aont转换的对称加密算法可以更换为编码速率更为出色的散列算法,以此进一步提升算法的整体计算效率。
互联网的本质是共享的,存储系统中往往存储着大量的重复数据,数据去重是一种高效的数据压缩技术,也被称为单例存储(singleinstancestorage,sis),对内容相同的数据单元在存储系统中仅存储一份,能够有效提高存储系统的存储利用率,大幅节省存储成本。此外,当有对象被重复上传时,实现数据去重功能的存储系统能够自动跳过该对象的存储流程,进而提升用户的存储体验。
aont-rs系列算法中的aont转换流程均采用随机密钥加密的方式来确保数据的机密性,这意味着相同的数据输入在不同的随机密钥下将生成完全不同的数据输出,因而aont-rs系列算法无法支持数据去重功能。
技术实现要素:
本发明的目的在于提供一种基于分布式对象存储系统安全的信息分散方法及系统,旨在解决aont-rs系列算法中存在的安全漏洞的同时提升算法的计算效率的技术问题。
本发明是这样实现的,一种基于分布式对象存储系统安全的信息分散方法,所述基于分布式对象存储系统安全的信息分散方法包括以下步骤:
s1、通过加盐的方式计算数据块散列值来抵御散列函数的碰撞攻击提升数据的机密性;
s2、利用sha2-512散列算法提升计算效率,并采用原始数据的散列值替换随机密钥;
s3、使得具有相同内容的数据输入经过aont-nzzd算法编码后生成的数据块内容完全相同实现数据去重。
本发明的进一步技术方案是:所述s1中包括加密过程,其步骤如下:其中算法的输入为原始数据m,输出数据为aont包p:
sjia1、使用公式h=h(m,l)计算出原始数据m的散列值h,其中h是sha2-512散列算法,l是原始数据m的长度并将其作为盐值添加在m之后;
sjia2、定义一个生成函数g,且当输入相同时,其输出一定相同;
sjia3、利用公式mg=g(h,l)生成数据段mg,其中l为长度;
sjia4、利用公式
sjia5、利用公式hc=h(c,l)计算密文c的散列值hc;
sjia6、利用公式
本发明的进一步技术方案是:所述s1中还包括解密过程,其步骤如下:其中算法的输入为aont包p,输出数据为原始数据m:
sjie1、切分aont包p并从中获得密文c以及数据段cd,其中cd的长度是固定的;
sjie2、通过公式
sjie3、获得密文c的长度l,并使用与加密流程中相同的生成函数g通过公式mg=g(h,l)、h=h(m,l)计算出数据段mg;
sjie4、通过公式
本发明的进一步技术方案是:所述步骤s2中包括以下步骤:
s21、输入待分发的原始数据m,使用aont算法加密生成aont包p;
s22、使用nzzd码编码生成n个数据块形成序列vm;
s23、计算每个数据块散列值,其中将该数据块的长度作为盐值添加其后;
s24、输出编码生成的数据块序列vm及其散列值序列vh。
本发明的进一步技术方案是:所述步骤s3中包括以下步骤:
s31、从不同的存储位置获取足够数量的数据块;
s32、计算出各自的散列值并与元数据服务器中在数据分发阶段计算得到的散列值进行对比以确保数据块的完整性;
s33、丢弃散列值校验失败的数据块并由剩余校验成功的数据块并使用nzzd码解码出aont包;
s34、利用aont算法恢复出原始数据。
本发明的另一目的在于提供一种基于分布式对象存储系统安全的信息分散系统,所述基于分布式对象存储系统安全的信息分散系统包括:
提升模块,用于通过加盐的方式计算数据块散列值来抵御散列函数的碰撞攻击提升数据的机密性;
替换模块,用于利用sha2-512散列算法提升计算效率,并采用原始数据的散列值替换随机密钥;
去重模块,用于使得具有相同内容的数据输入经过aont-nzzd算法编码后生成的数据块内容完全相同实现数据去重。本发明的进一步技术方案是:所述提升模块中包括加密过程,其提升模块包括:其中算法的输入为原始数据m,输出数据为aont包p:
计算散列值单元,用于使用公式h=h(m,l)计算出原始数据m的散列值h,其中h是sha2-512散列算法,l是原始数据m的长度并将其作为盐值添加在m之后;
函数生成单元,同于定义一个生成函数g,且当输入相同时,其输出一定相同;
数据段生成单元,用于利用公式mg=g(h,l)生成数据段mg,其中l为长度;
密文获取单元,用于利用公式
密文散列值计算单元,用于利用公式hc=h(c,l)计算密文c的散列值hc;
aont构成单元,用于利用公式
本发明的进一步技术方案是:所述提升模块中包括解密过程,其提升模块包括:其中算法的输入为aont包p,输出数据为原始数据m:
切分单元,用于切分aont包p并从中获得密文c以及数据段cd,其中cd的长度是固定的;
获取散列值单元,用于通过公式
获取数据段单元,用于获得密文c的长度l,并使用与加密流程中相同的生成函数g通过公式mg=g(h,l)、h=h(m,l)计算出数据段mg;
恢复数据单元,用于通过公式
本发明的进一步技术方案是:所述替换模块中包括:
输入单元,用于输入待分发的原始数据m,使用aont算法加密生成aont包p;
序列形成单元,用于使用nzzd码编码生成n个数据块形成序列vm;
计算单元,用于计算每个数据块散列值,其中将该数据块的长度作为盐值添加其后;
输出单元,用于输出编码生成的数据块序列vm及其散列值序列vh。
本发明的进一步技术方案是:所述去重单元中包括:
获取单元,用于从不同的存储位置获取足够数量的数据块;
计算单元,用于计算出各自的散列值并与元数据服务器中在数据分发阶段计算得到的散列值进行对比以确保数据块的完整性;
丢弃单元,用于丢弃散列值校验失败的数据块并由剩余校验成功的数据块并使用nzzd码解码出aont包;
恢复单元,用于利用aont算法恢复出原始数据。
本发明的有益效果是:aont-nzzd算法采用sha2-516散列算法取代aont-rs算法中的sha2-256算法从而将数据段cd扩展到516位,进一步能够扩展aont包的长度,因此能够有效降低明文过短时数据泄漏的风险,进而提升算法的数据机密性。aont-nzzd算法在计算数据块散列值时额外选取数据块的长度作为散列运算的盐值,以抵御攻击者进行散列函数攻击。aont-nzzd算法采用了基于二进制移位与异或运算的nzzd码,拥有相对较优的编解码速率。
附图说明
图1是本发明实施例提供的基于对象的分布式存储架构示意图。
图2是本发明实施例提供的aont-rs算法的数据分发阶段示意图;
图3是本发明实施例提供的改进后的aont算法加密流程图。
图4是本发明实施例提供的改进后的aont算法解密流程图。
图5是本发明实施例提供的aont-nzzd算法的数据分发阶段示意图。
图6是本发明实施例提供的aont-nzzd算法的数据重构阶段示意图。
具体实施方式
如图1-5所示,本发明提供的基于分布式对象存储系统安全的信息分散方法,其详述如下:
为在解决aont-rs系列算法中存在的安全漏洞的同时提升算法的计算效率,本发明改进了aont算法并结合nzzd码,提出了一种安全高效且支持数据去重的信息分散算法aont-nzzd。
aont-nzzd算法借鉴saont-rs算法的思路,采用校验数据块散列值的方式来确保原始数据的可恢复性,不同的是aont-nzzd算法在计算数据块散列值时通过加盐的方式来抵御散列函数的碰撞攻击进一步提升数据的机密性。为提升saont-rs算法的计算效率,aont-nzzd算法选用sha2-512散列函数替代saont-rs算法中的sha3-512散列算法,并且选用了编解码效率更高的nzzd码。此外,改进后的aont算法使用sha2-512散列算法取代原算法中用于原始数据加密的aes-256对称加密算法以进一步提升算法计算效率,并且采用原始数据的散列值替代原算法中用于aont转换的随机密钥,使得具有相同内容的数据输入经过aont-nzzd算法编码后生成的数据块内容完全相同,因此可以实现数据去重功能。下面将从aont算法的改进、aont-nzzd算法数据的分发阶段以及重构阶段等三部分详细介绍aont-nzzd算法的工作流程。
aont算法改进
将从改进后的aont算法的加密流程及解密流程等两部分对算法的工作原理进行详细介绍。
改进后的aont算法加密流程如图3所示。
其具体的算法步骤如下,其中算法的输入为原始数据m,输出数据为aont包p:
使用公式2计算出原始数据m的散列值h,其中h是sha2-512散列算法,l是原始数据m的长度并将其作为盐值添加在m之后:
h=h(m,l);式(2)
定义一个生成函数g,且当输入相同时,其输出一定相同,本文实现的生成函数g的伪码如下所示:
使用公式3生成数据段mg(长度为l):
mg=g(h,l);式(3)
使用公式4对原始数据m进行加密后获得密文c:
5.使用公式5计算密文c的散列值hc:
hc=h(c,l);式(5)
6.使用公式6计算数据段cd并将其添加在密文c后构成aont包p:
改进后的aont算法解密流程如图4所示。
其具体的算法步骤如下,其中算法的输入为aont包p,输出数据为原始数据m:
切分aont包p并从中获得密文c以及数据段cd(cd的长度是固定的,仅与散列算法h相关,因此可以从aont包尾部直接获得,剩余部分为密文c);
按照公式7计算出密文c的散列值hc,并使用公式3.6计算出原始数据的散列值h:
获得密文c的长度l,并使用与加密流程中相同的生成函数g通过公式3.2计算出数据段mg;
4.按照公式8恢复出原始数据m:
从上述改进后的aont算法加解密流程可以看出,该算法采用原始数据的散列值取代原aont算法中用于加密数据的随机密钥,使得相同的原始数据输入会获得完全相同的aont包,使得算法支持数据去重功能。同时,该算法通过sha2-512散列函数取代aont中sha2-256以及saont中sha3-512,不仅扩展了aont包长以抵御短明文攻击,而且保持了良好的编码速率。此外,改进后的aont算法相较于原始算法仅采用了散列运算以及异或运算,并未采用对称加密算法用于原始数据的加密,能够有效降低算法的计算复杂度。
数据分发阶段
aont-nzzd算法的数据分发阶段流程图如图5所示。
其算法伪代码如下:
数据重构阶段
aont-nzzd算法的数据重构阶段流程图如图6所示。
其算法伪代码如下:
aont-nzzd算法的数据重构阶段首先从不同的存储位置获取足够数量的数据块,然后计算出各自的散列值并与元数据服务器中在数据分发阶段计算得到的散列值进行对比以确保数据块的完整性,接着丢弃散列值校验失败的数据块并由剩余校验成功的数据块并使用nzzd码解码出aont包,最后通过改进后的aont算法恢复出原始数据。
本发明保证了数据的机密性,完整性以及可用性,下面将分别对其进行阐述。
数据机密性
数据机密性是指数据在其传输、存储的过程中不会发生泄漏,非授权用户不能够从系统中获取到任何有价值的信息。aont-nzzd算法能够被形式化描述为一个(n,k,k-1)三元组。aont-nzzd算法在数据分发阶段将原始数据编码为n个数据块存储至系统中,在数据重构阶段获取其中任意k个数据块即可重构出原始数据,且无法通过任何k-1个数据块获取到与原始数据相关的有用信息。
假定攻击者能够从存储设备获取到k-1个数据块并且已知nzzd码的生成矩阵,攻击者虽然可以利用nzzd码的编解码原理窃取aont包的部分信息,但是无法获取到整个aont包。根据aont算法强不可分的特性可以得知,攻击者如果无法获取到完整的aont包,那么则不能获取到任何与原始数据有关的信息。从aont-nzzd算法数据重构阶段流程可以发现,当密文c的全部信息以及数据段cd的部分信息泄漏时,攻击者可以计算出密文c的散列值hc,却无法通过异或运算计算出原始数据m的散列值h,进而无法通过生成函数g计算出数据段mg,最终无法获取任何与原始数据m相关的信息;当密文c的部分信息以及数据段cd的全部信息泄漏时,攻击者无法计算出密文c的散列值hc,进而无法通过异或运算计算出原始数据m的散列值h,最终无法获取到任何与原始数据m的相关信息。此外,aont-nzzd算法采用sha2-516散列算法取代aont-rs算法中的sha2-256算法从而将数据段cd扩展到516位,进一步能够扩展aont包的长度,因此能够有效降低明文过短时数据泄漏的风险,进而提升算法的数据机密性。
数据完整性
数据完整性是指数据在其传输、存储过程中不被篡改,或者在篡改后能够被迅速发现并正确恢复。由上文可知,aont-nzzd算法弃用了aont-rs算法中用于完整性检验的canary数据段,并采用校验数据块散列值的方式确保数据块的完整性从而在数据重构阶段确保数据的完整性。
假定攻击者恶意篡改了存储设备中的n-k个数据块,aont-nzzd算法能够在数据重构阶段通过数据块完整性校验弃用校验失败的数据块,并使用剩余k个校验完整的数据块,并通过nzzd码解码出完整的aont包,进而通过aont算法恢复出原始数据。这种方式在数据重构的开始阶段就对数据进行完整性检查不用等到数据被完全重构后进行完整性检查,从而大大提升算法的执行效率。此外,相较于saont-rs算法,aont-nzzd算法在计算数据块散列值时额外选取数据块的长度作为散列运算的盐值,以抵御攻击者进行散列函数攻击。
数据可用性
数据可用性是指数据在存储过程中出现丢失或者由于不可抗力、硬件故障或者恶意攻击导致部分存储服务失效时,存储系统仍然能够向授权用户提供可靠的数据访问。由上文可知,虽然aont-nzzd算法支持数据去重功能,相同内容的数据单元在存储系统中仅存储一份,但是算法采用nzzd码作为其数据冗余机制仍能够有效保证数据的可用性。
假定攻击者恶意从存储设备中删除了n-k个数据块,aont-nzzd算法仍然能够通过剩余的k个未丢失的数据块使用nzzd码解码出完整的aont包,进而通过aont算法恢复出正确的原始数据。相较于aont-rs系列算法,aont-nzzd算法采用了基于二进制移位与异或运算的nzzd码,拥有相对较优的编解码速率。
为应对如何确保数据的安全性这一云存储解决方案中的重大挑战,本发明对分布式对象存储系统中的数据安全存储技术展开研究,在对现存信息分散算法深入分析的基础上,改进了aont算法并结合nzzd码,提出了一个安全高效且支持数据去重的信息分散算法aont-nzzd。
本发明能够有效保证数据的机密性,完整性以及可用性,同时具有良好的存储空间利用率。
本发明的另一目的在于提供一种基于分布式对象存储系统安全的信息分散系统,所述基于分布式对象存储系统安全的信息分散系统包括:
提升模块,用于通过加盐的方式计算数据块散列值来抵御散列函数的碰撞攻击提升数据的机密性;
替换模块,用于利用sha2-512散列算法提升计算效率,并采用原始数据的散列值替换随机密钥;
去重模块,用于使得具有相同内容的数据输入经过aont-nzzd算法编码后生成的数据块内容完全相同实现数据去重。本发明的进一步技术方案是:所述提升模块中包括加密过程,其提升模块包括:其中算法的输入为原始数据m,输出数据为aont包p:
计算散列值单元,用于使用公式h=h(m,l)计算出原始数据m的散列值h,其中h是sha2-512散列算法,l是原始数据m的长度并将其作为盐值添加在m之后;
函数生成单元,同于定义一个生成函数g,且当输入相同时,其输出一定相同;
数据段生成单元,用于利用公式mg=g(h,l)生成数据段mg,其中l为长度;
密文获取单元,用于利用公式
密文散列值计算单元,用于利用公式hc=h(c,l)计算密文c的散列值hc;
aont构成单元,用于利用公式
本发明的进一步技术方案是:所述提升模块中包括解密过程,其提升模块包括:其中算法的输入为aont包p,输出数据为原始数据m:
切分单元,用于切分aont包p并从中获得密文c以及数据段cd,其中cd的长度是固定的;
获取散列值单元,用于通过公式
获取数据段单元,用于获得密文c的长度l,并使用与加密流程中相同的生成函数g通过公式mg=g(h,l)、h=h(m,l)计算出数据段mg;
恢复数据单元,用于通过公式
本发明的进一步技术方案是:所述替换模块中包括:
输入单元,用于输入待分发的原始数据m,使用aont算法加密生成aont包p;
序列形成单元,用于使用nzzd码编码生成n个数据块形成序列vm;
计算单元,用于计算每个数据块散列值,其中将该数据块的长度作为盐值添加其后;
输出单元,用于输出编码生成的数据块序列vm及其散列值序列vh。
本发明的进一步技术方案是:所述去重单元中包括:
获取单元,用于从不同的存储位置获取足够数量的数据块;
计算单元,用于计算出各自的散列值并与元数据服务器中在数据分发阶段计算得到的散列值进行对比以确保数据块的完整性;
丢弃单元,用于丢弃散列值校验失败的数据块并由剩余校验成功的数据块并使用nzzd码解码出aont包;
恢复单元,用于利用aont算法恢复出原始数据。
为评估aont-nzzd算法的存储空间利用率,本节以aont-rs算法作对照组计算了aont-nzzd算法存储一个4kb的原始数据所需要的存储空间,其中纠删码的参数设置为(n=16,k=10,m=6),其计算结果如表2.1所示。
由aont-nzzd算法的数据分发阶段流程可知,aont-nzzd算法中密文c的长度与原始数据长度相同,因此本例中密文c的长度为4kb。数据段cd是由密文c的散列值hc与原始数据的散列值h异或获得,且aont-nzzd算法采用了sha2-512散列算法,因此本例中数据段cd的长度为512比特(64b)。aont包p由密文c与数据段cd共同构成,因此本例中aont包p的长度为二者之和,记为4160b。由2.2.4节nzzd码的编码原理可知,存储nzzd码生成的校验数据块需要额外
aont-rs算法中canary数据段长度为16b,因此本例中由对称加密函数生成的密文c的长度为明文长度与canary数据段长度之和,记为4112b。diference字段由16b的随机密钥k与密文c的散列值异或生成,所以本例中difference字段长度为16b。aont包是由密文c以及数据字段difference共同构成,且aont包需要填充字节使其在rs编码过程中能够被均匀切分(填充后的aont包长应是k的整数倍),因此本例中填充字段长度为2b,aont包的总长为4130b。根据rs码编码原理可知,本例中aont包经过rs码编码生成的数据块总长度为6608b。aont-rs因为不需要存储额外的数据块散列值,所以本例中共计占用存储系统总量为6608b。
表2.1aont-nzzd和aont-rs算法所需的存储空间
从计算结果来看,虽然二者生成的数据块总长基本相同,但是aont-nzzd算法比aont-rs算法需要较多的存储空间,其差距主要体现在aont-nzzd算法需要额外存储数据块的散列值,且此部分存储空间占用将随着参数n的增大呈线性增长。进一步分析可以发现,当原始数据长度较大时,用与存储数据块散列值的存储空间可以被忽略不计,aont-nzzd算法的存储利用率与aont-rs算法相仿。当原始数据长度很小时,虽然aont-nzzd算法的存储利用率略差于aont-rs算法,但是aont-nzzd算法能够通过额外存储的数据块散列值确保数据的可恢复性。综上,aont-nzzd算法具有良好的存储利用率,适用于大规模分布式对象存储系统。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种基于分布式对象存储系统安全的信息分散方法,其特征在于,所述基于分布式对象存储系统安全的信息分散方法包括以下步骤:
s1、通过加盐的方式计算数据块散列值来抵御散列函数的碰撞攻击提升数据的机密性;
s2、利用sha2-512散列算法提升计算效率,并采用原始数据的散列值替换随机密钥;
s3、使得具有相同内容的数据输入经过aont-nzzd算法编码后生成的数据块内容完全相同实现数据去重。
2.根据权利要求1所述的基于分布式对象存储系统安全的信息分散方法,其特征在于,所述s1中包括加密过程,其步骤如下:其中算法的输入为原始数据m,输出数据为aont包p:
sjia1、使用公式h=h(m,l)计算出原始数据m的散列值h,其中h是sha2-512散列算法,l是原始数据m的长度并将其作为盐值添加在m之后;
sjia2、定义一个生成函数g,且当输入相同时,其输出一定相同;
sjia3、利用公式mg=g(h,l)生成数据段mg,其中l为长度;
sjia4、利用公式
sjia5、利用公式hc=h(c,l)计算密文c的散列值hc;
sjia6、利用公式
3.根据权利要求2所述的基于分布式对象存储系统安全的信息分散方法,其特征在于,所述s1中还包括解密过程,其步骤如下:其中算法的输入为aont包p,输出数据为原始数据m:
sjie1、切分aont包p并从中获得密文c以及数据段cd,其中cd的长度是固定的;
sjie2、通过公式
sjie3、获得密文c的长度l,并使用与加密流程中相同的生成函数g通过公式mg=g(h,l)、h=h(m,l)计算出数据段mg;
sjie4、通过公式
4.根据权利要求1所述的基于分布式对象存储系统安全的信息分散方法,其特征在于,所述步骤s2中包括以下步骤:
s21、输入待分发的原始数据m,使用aont算法加密生成aont包p;
s22、使用nzzd码编码生成n个数据块形成序列vm;
s23、计算每个数据块散列值,其中将该数据块的长度作为盐值添加其后;
s24、输出编码生成的数据块序列vm及其散列值序列vh。
5.根据权利要求1所述的基于分布式对象存储系统安全的信息分散方法,其特征在于,所述步骤s3中包括以下步骤:
s31、从不同的存储位置获取足够数量的数据块;
s32、计算出各自的散列值并与元数据服务器中在数据分发阶段计算得到的散列值进行对比以确保数据块的完整性;
s33、丢弃散列值校验失败的数据块并由剩余校验成功的数据块并使用nzzd码解码出aont包;
s34、利用aont算法恢复出原始数据。
6.一种基于分布式对象存储系统安全的信息分散系统,其特征在于,所述基于分布式对象存储系统安全的信息分散系统包括:
提升模块,用于通过加盐的方式计算数据块散列值来抵御散列函数的碰撞攻击提升数据的机密性;
替换模块,用于利用sha2-512散列算法提升计算效率,并采用原始数据的散列值替换随机密钥;
去重模块,用于使得具有相同内容的数据输入经过aont-nzzd算法编码后生成的数据块内容完全相同实现数据去重。
7.根据权利要求6所述的基于分布式对象存储系统安全的信息分散系统,其特征在于,所述提升模块中包括加密过程,其提升模块包括:其中算法的输入为原始数据m,输出数据为aont包p:
计算散列值单元,用于使用公式h=h(m,l)计算出原始数据m的散列值h,其中h是sha2-512散列算法,l是原始数据m的长度并将其作为盐值添加在m之后;
函数生成单元,同于定义一个生成函数g,且当输入相同时,其输出一定相同;
数据段生成单元,用于利用公式mg=g(h,l)生成数据段mg,其中l为长度;
密文获取单元,用于利用公式
密文散列值计算单元,用于利用公式hc=h(c,l)计算密文c的散列值hc;
aont构成单元,用于利用公式
8.根据权利要求7所述的基于分布式对象存储系统安全的信息分散系统,其特征在于,所述提升模块中包括解密过程,其提升模块包括:其中算法的输入为aont包p,输出数据为原始数据m:
切分单元,用于切分aont包p并从中获得密文c以及数据段cd,其中cd的长度是固定的;
获取散列值单元,用于通过公式
获取数据段单元,用于获得密文c的长度l,并使用与加密流程中相同的生成函数g通过公式mg=g(h,l)、h=h(m,l)计算出数据段mg;
恢复数据单元,用于通过公式
9.根据权利要求8所述的基于分布式对象存储系统安全的信息分散系统,其特征在于,所述替换模块中包括:
输入单元,用于输入待分发的原始数据m,使用aont算法加密生成aont包p;
序列形成单元,用于使用nzzd码编码生成n个数据块形成序列vm;
计算单元,用于计算每个数据块散列值,其中将该数据块的长度作为盐值添加其后;
输出单元,用于输出编码生成的数据块序列vm及其散列值序列vh。
10.根据权利要求9所述的基于分布式对象存储系统安全的信息分散系统,其特征在于,所述去重单元中包括:
获取单元,用于从不同的存储位置获取足够数量的数据块;
计算单元,用于计算出各自的散列值并与元数据服务器中在数据分发阶段计算得到的散列值进行对比以确保数据块的完整性;
丢弃单元,用于丢弃散列值校验失败的数据块并由剩余校验成功的数据块并使用nzzd码解码出aont包;
恢复单元,用于利用aont算法恢复出原始数据。
技术总结