本发明涉及云存储技术领域,尤其涉及一种基于纠删码的多云碎片化安全存储方法及系统。
背景技术:
随着新兴信息技术与现代经济社会的交汇融合,各行业产生的数据量正快速增长,大数据正快速聚集规模巨大、种类繁多、复杂多变的数据,并对其进行收集、存储、处理和分析应用,从海量数据中发现规律、提取价值、创造财富的服务业态。由于数据中隐藏了巨大的价值财富,使得数据逐渐成为一个国家的基础性战略资源,同时大数据基础设施、分析和服务技术的发展使企业能够转型为数据驱动型机构。由于大数据的重要性,国家、企业、组织机构都需要构建大数据能力来保持竞争力。我国近年来大力支持大数据发展应用,推动国家数据中心平台建设,推进信用、交通、医疗、就业等领域政府数据资源适度向社会开发,以消除信息孤岛,达到建设数据强国目的。
数据中心具有数据规模大、种类多、结构多样等特征,且要求高可靠性、高安全性、高扩展性,对数据存储安全提出了新要求。云存储能支持海量资源数据存储和有效管理百亿级文件,为数据中心建设提供可靠的解决方案。现有数据存储安全技术及存在问题如下:①数据加密:存在数据可用性问题,如数据损坏、丢失等。②副本技术:存储开销过大;③raid和纠删码技术:数据安全性问题,如传输过程被窃取等。此外,假设将数据存储在单云数据中心,存在数据可用性、可靠性等问题,如云数据中心故障、不可信等。因此,数据安全存储一直是数据中心的核心问题。
国内专利:一种基于多个云存储系统的安全存储方法及系统(cn103118089a),提供了包括数据写操作、读操作的安全存储方法,数据写操作步骤包括数据分块、数据加密、冗余编码、数字签名、分享处理及数据存储字步骤;数据读操作步骤包括解密元数据分片文件、数字签名检查、冗余编码及解密密文数据块子步骤。同时安全存储系统,包括加解密编码模块、冗余编码模块、秘密分享模块和数字签名模块。但没有保证数据存储阶段的时间消耗及服务质量。
国外文献:implementationofcloud-raid:asecureandreliablestorageabovetheclouds(internationalconferenceongridandpervasivecomputing,springerberlinheidelberg,2013)提供多个云存储供应商以避免锁定问题,利用raid技术保证数据可用性、机密性和完整性,但当多个云存储供应商出现故障时,无法保证数据可用性,且无法保证用户与系统交互服务质量。
因此,针对以上问题,迫切需要一种新型的适用数据中心的云存储系统,不仅满足数据安全性、可用可靠性、机密性,而且能极大的节约数据中心建设成本,同时保证用户与云存储系统之间交互的服务质量。
技术实现要素:
本发明所要解决的技术问题是提供一种基于纠删码的多云碎片化安全存储方法及系统,用于数据中心解决数据安全存储等问题,同时提升用户与云存储系统之间交互的服务质量。
为了实现上述技术目的,本发明的技术方案是:
一种基于纠删码的多云碎片化安全存储方法,包括多云数据中心的数据存储步骤和多云数据中心的数据读取步骤,
所述的多云数据中心的数据存储步骤,包括数据碎片化步骤、数据分发步骤和数据条带存储步骤:
1)、数据碎片化:
对用户上传数据通过密钥进行加密,生成加密数据,然后将加密数据进行编码后生成多个文件块,并生成记录包括密钥在内的文件块信息的元数据文件;
2)、数据分发:
根据各个云数据中心的响应时间按照从小到大进行排序,将步骤1)中生成的文件块依次分发到排序后的各个云数据中心;
3)、数据条带存储:
每个云数据中心提供逻辑上连续的地址空间,同一个加密数据存储在不同云数据中心上的文件块形成一个条带组;
所述的多云数据中心的数据读取步骤,包括元数据文件读取步骤、数据碎片化读取步骤和数据还原步骤;
①、元数据文件读取:
从元数据服务器中读取元数据文件,以获取数据的n个文件块信息;
②、数据碎片化读取:
根据文件块信息查找存储了相应文件块的云数据中心,并下载文件块;
③、数据还原:
通过密钥解密数据,得到原始数据。
所述的一种基于纠删码的多云碎片化安全存储方法,所述的数据碎片化步骤的具体步骤包括:
首先,使用密钥为key的对称加密算法对数据data进行加密,生成加密数据data′;
其次,采用纠删码算法编码加密数据data′,生成n个文件块,其中包括k个数据块和m个编码块,且n=k+m;
同时,产生一份data′的元数据文件,元数据文件存储在元数据服务器中。元数据文件包括数据data名称、大小,数据块个数k、编码块个数m、纠删码算法名称,密钥key。
所述的一种基于纠删码的多云碎片化安全存储方法,所述的数据碎片化步骤中,还包括采用散列算法对用户上传数据data进行哈希值运算,将得到的哈希值作为对称加密算法密钥key的步骤。
所述的一种基于纠删码的多云碎片化安全存储方法,所述的数据分发步骤的具体步骤包括:
云数据中心的数量为c个,c取自然数,按照响应时间大小,将云数据中心排序为{c1,c2,...,cc}的集合c,将n个文件块分发存储到s个云数据中心,其中s∈c;
若n>c,则按照云数据中心排序的顺序依次分发存储文件块;
若1≤n≤c,则选取前n个云数据中心分发存储文件块。
所述的一种基于纠删码的多云碎片化安全存储方法,所述的数据分发步骤中,响应时间θ=te-tb,其中te为相应的云数据中心开始接收第一个数据字节的时间,tb为系统开始向相应的云数据中心发送请求时间。
所述的一种基于纠删码的多云碎片化安全存储方法,所述的数据碎片化读取步骤中,在下载文件块时,还包括当某个云数据中心上的文件块下载失败时,则根据从其他云数据中心下载的存活文件块进行解码计算,从而恢复该数据。
所述的一种基于纠删码的多云碎片化安全存储方法,所述的数据还原步骤中,还包括采用散列算法对解密后数据进行哈希值运算,再与原始哈希值进行比较的步骤,若哈希值相等,则读取的数据为原始数据,否则判定为读取数据失败。
一种基于纠删码的多云碎片化安全存储系统,包括数据碎片层、数据调度层和云服务层:
所述数据碎片层包括用户应用服务模块、数据加密/解密服务模块、数据编码/解码服务模块和元数据服务模块;
(1)、用户应用服务模块用于提供与用户进行交互的接口服务,对用户身份进行标识登记,并为不同类型用户设置不同的访问及功能权限;
(2)、数据加密/解密服务模块用于为用户在存储数据和读取数据时分别通过密钥进行加密和解密服务;
(3)、数据编码服务模块用于生成文件块,包括将加密后的数据进行切分为多个数据块并通过纠删码编码计算产生多个编码块;数据解码服务模块用于从各云数据中心下载相应的文件块,通过纠删码解码计算恢复加密数据;
(4)、元数据服务模块用于生成记录包括密钥在内的文件块信息的元数据文件;
所述数据调度层包括数据调度服务模块和数据分发服务模块;
ⅰ、数据调度服务模块用于根据系统与各云数据中心的响应时间,将云数据中心按照优→差进行排序,以此来调度编码后生成的文件块;
ii、数据分发服务模块用于通过restfulapi(互联网应用程序的api设计理论)与各云数据中心进行连接,将文件块分发到各个云数据中心;
所述云服务层由多个云数据中心组成,用于进行云数据储存。
所述的一种基于纠删码的多云碎片化安全存储系统,所述的数据加密服务模块在用户存储数据时,先采用散列算法计算数据的哈希值,将哈希值作为密钥key,再采用密钥为key的对称加密算法加密数据;
所述的数据解密服务模块在用户读取数据时,从元数据文件中获取密钥key值,再采用密钥为key的对称加密算法解密数据。
所述的一种基于纠删码的多云碎片化安全存储系统,所述的数据编码服务模块将加密后的数据采用(n,k)纠删码算法平均切分为k个数据块,再通过编码计算产生m个编码块,其中k个数据块和m个编码块的大小均相等,共生成n=k+m个文件块;
所述的元数据服务模块所生成的元数据文件中记录有数据名称、大小,数据块个数k、编码块个数m、纠删码算法名称和密钥key。
所述的数据解码服务模块在用户读取数据时,先从元数据文件中获取各个文件块存储的云数据中心信息,再从各云数据中心下载相应的文件块,若部分文件块不可用或失效,则根据(n,k)纠删码算法解码计算恢复数据。
本发明的技术效果在于:
(1)数据经加密算法和纠删码算法处理后,存储在多个云数据中心,既节省数据中心硬件建设成本,又避免单云数据中心所导致的数据可用可靠性问题,能最大化云数据中心多样性、最大程度容忍云数据中心不可用,实现容错最大化和提高数据访问效率。
(2)文件块根据响应时间来选择相应的云数据中心,能提高文件块分发效率,提升用户与云存储系统之间交互的服务质量。
(3)文件块分散存储在多个云数据中心,元数据存储在元数据服务器上,能避免云数据中心垄断窃取用户数据,同时避免系统开发者获取用户数据,提升数据中心数据的存储安全性。
附图说明
图1为基于纠删码的多云碎片化安全存储系统示意图。
图2为本发明多云数据中心的数据存储流程示意图。
图3为本发明多云数据中心的数据读取流程示意图。
图4为本发明数据存储方法流程图。
图5为本发明数据读取方法流程图。
图6为本发明系统架构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明基于raid思想和多个云数据中心,如图1所示,各用户通过云存储系统将数据存储在多个云数据中心,云数据中心由一些大型云存储供应商组成,如amazons3,microsoftazure,阿里云,腾讯云和百度云等。
本发明所提供的一种基于纠删码的多云碎片化安全存储方法,包括多云数据中心的数据存储和多云数据中心的数据读取。
多云数据中心的数据存储,主要由数据碎片化、数据分发和数据条带存储组成。
(1)数据碎片化:
首先,采用散列算法对用户上传数据data进行哈希值运算,将得到的哈希值作为对称加密算法密钥key,再使用密钥为key的对称加密算法对数据data进行加密,生成加密数据data′;
其次,采用纠删码算法编码加密数据data′,生成n个文件块,其中包括k个数据块和m个编码块,且n=k+m。
同时,产生一份data′的元数据文件,元数据文件存储在元数据服务器中。元数据文件包括数据data名称、大小,数据块个数k、编码块个数m、纠删码算法名称,密钥key。
(2)数据分发
设系统由c个不同的云数据中心组成,记为c={1,2,...,c}。
定义响应时间θ=te-tb,其中te为相应的云数据中心开始接收第一个数据字节的时间,tb为系统开始向相应的云数据中心发送请求时间。
按照响应时间大小,将云数据中心排序为{c1,c2,...,cc}。将n个文件块分发存储到s个云数据中心,其中s∈c。
若n>c,则按照云数据中心排序的顺序依次分发存储文件块;
若1≤n≤c,则选取前n个云数据中心分发存储文件块。
(3)数据条带存储
每个云数据中心提供逻辑地址连续但物理存放地址可能并不连续的数据存储空间,数据data′存储在不同云数据中心上的文件块称为条带组。
多云数据中心的数据读取,主要由元数据文件读取、数据碎片化读取、哈希值检查组成。
(1)元数据文件读取
从元数据服务器中读取数据碎片化后存储的元数据文件,从元数据文件上获取n个文件块信息。
(2)数据碎片化读取
根据文件块信息查找存储了相应文件块的云数据中心,从云数据中心获取文件块碎片信息,开始下载文件块。若某云数据中心上的文件块下载失败,则根据其他存活文件块解码计算恢复该数据。
再通过密钥为key的对称加密算法解密数据,得到原始数据。
(3)数据还原
采用散列算法对解密后数据进行哈希值运算,再与原始哈希值进行比较,若相等则读取的数据为原始数据,若不相等,则读取数据失败。
本发明所提供的一种基于纠删码的多云碎片化安全存储系统,包括数据碎片层、数据调度层和云服务层:
所述数据碎片层由用户应用服务、数据加密/解密服务、元数据服务和数据编码/解码服务组成。
①用户应用服务。提供与用户进行交互的接口服务,对用户身份进行标识登记,不同类型用户具有不同的访问权限及可以使用不同的功能。
②数据加密/解密服务。
数据加密服务。当用户存储数据时,先采用散列算法计算数据的哈希值,将哈希值作为密钥key,再采用密钥为key的对称加密算法加密数据。
数据解密服务。当用户读取数据时,从元数据文件中获取密钥key值,再采用密钥为key的对称加密算法解密数据。
③数据编码/解码服务。
数据编码服务。加密后的数据采用(n,k)纠删码算法先将数据平均切分为k个数据块,再通过编码计算产生m个编码块,其中k个数据块和m个编码块大小均相等,共生成n=k+m个文件块。编码后生成1份元数据文件,其中包含数据名称、大小,数据块个数k、编码块个数m、纠删码算法名称,密钥key。
数据解码服务。当用户读取数据时,先从元数据文件中获取各个文件块信息,根据文件块信息查找存储的云数据中心,再从各云数据中心下载相应的文件块,若部分文件块不可用或失效(失效数小于m),则根据(n,k)纠删码算法编码计算恢复数据。
④元数据服务
元数据服务。数据编码后生成元数据文件,包含数据名称、大小,数据块个数k、编码块个数m、纠删码算法名称,密钥key。
所述数据调度层由数据调度服务、数据分发服务组成。
①数据调度服务。
根据系统与各云数据中心的响应时间,将云数据中心按照优→差进行排序,以此来调度编码后生成的文件块。
②数据分发服务。
系统通过restfulapi与各云数据中心进行连接,将文件块分发到各个云数据中心。
所述云服务层,主要由若干云数据中心组成,云数据中心是知名互联网企业云存储产品,如amazons3、microsoftazure、阿里云、腾讯云和百度云等。
本发明的实施例选取5个云数据中心,分别为amazons3、microsoftazure、阿里云、腾讯云、百度云,各数据节点位置分别为东京、中国东部数据中心、杭州、广州、北京。
该基于纠删码的多云碎片化安全存储系统(简写:rclouds),rclouds系统示意图如图1所示,包括多云数据中心的数据存储和多云数据中心的数据读取步骤;
多云数据中心的数据存储,如图2所示,包括如下三个过程:
(1.1)数据碎片化
假设用户需要存储的数据data大小为129643295b,使用md5哈希算法计算哈希值为6392103b85a39d790f979f7fcb21c320,再采用key为该哈希值的aes算法加密数据,生成加密数据data′。
加密数据采用(6,4)rs纠删码算法编码处理,先将加密数据切分为4个大小为32440320的数据块di,i∈[1,5],再编码处理生成2个大小为32440320的编码块ej,j∈[1,2],总共有6个文件块。编码处理完成后,生成1份元数据文件,元数据文件包括数据data名称、大小,数据块个数k、编码块个数m、纠删码算法名称,密钥key。其中元数据文件存储在元数据服务器中。
(1.2)数据分发
评估5个云数据中心传输性能,通过restfulapi与各云数据中心进行连接,定义响应时间θ=te-tb,其中te为相应的云数据中心开始接收第一个数据字节的时间,tb为系统开始发送向相应的云数据中心发送请求时间。将θ值从小到大进行排序,对应云数据中心为腾讯云、阿里云、microsoftazure、百度云、amazons3。加密数据编码后生成大小相等的6个文件块,其中d1分发到腾讯云,d2分发到阿里云,d3分发到microsoftazure,d4分发到百度云,e1分发到amazons3,e2分发到腾讯云。
(1.3)数据条带存储
6个文件块依次存储在不同的云数据中心,这6个文件块称为条带组。
图4为多云数据中心的数据存储方法流程图。
多云数据中心的数据读取,如图3所示,包括如下三个过程:
(2.1)元数据文件读取
当用户需要读取数据时,先从元数据服务器中读取数据碎片化后存储的元数据文件,从元数据文件中获取n个文件块信息,根据文件信息查找存储的云数据中心。
(2.2)数据碎片化读取
从云数据中心获取文件块碎片信息,开始下载文件块。若某云数据中心上的文件块下载失败,则根据其他存活文件块编码计算恢复该数据。再通过密钥为key的对称加密算法解密数据,得到原始数据。
(2.3)数据还原
采用md5散列算法对解密后数据进行哈希值运算,再与原始哈希值进行比较,若相等则读取的数据为原始数据,若不相等,则读取数据失败。
图5为多云数据中心的数据读取流程图。
rclouds系统架构如图6所示,rclouds系统主要由数据碎片层、数据调度层和云服务层组成。
(1)数据碎片层,主要包括:①用户应用服务。②数据加密/解密服务。③元数据服务。④数据编码/解码服务。
(2)数据调度层,主要包括:①数据调度服务。②数据分发服务。
(3)云服务层,主要包括:amazons3、microsoftazure、阿里云、腾讯云、百度云等云数据中心。