本发明公开一种分布式key-value存储系统的数据存储位置加密方法,属于信息安全技术领域。
背景技术:
随着个人与企业用户对数据存储业务需求的快速增长,云端存储系统技术快速发展,分布式key-value存储系统以其良好的拓展性、可靠性、高效性及成本优势获得了极大的发展,在其之上可以构建多种云端应用,包括网上云盘、云主机的底层存储等,且,基于大数据技术对数据进行有效利用也具有极高的数据价值。
云端存储系统中存储有个人及企业用户的各种数据,包括账户数据、隐私数据、涉密数据等,因而,存储系统的数据安全性需要很好的解决,以保证用户私有数据的安全可靠性;传统的分布式key-value存储系统要么没有对数据进行加密处理,使得系统管理员可利用其高权限任意查看用户数据,甚者造成用户数据的泄露,要么直接对数据文件进行加密,导致系统性能低下,也对大数据分析带来极大的困难。
技术实现要素:
鉴于上述原因,本发明的目的在于提供一种分布式key-value存储系统的数据存储位置加密方法,通过对数据存储路径进行加密处理,使得管理员无法任意查看用户数据,既增加了数据安全性,又保证了系统性能稳定高效。
为实现上述目的,本发明采用以下技术方案:
一种分布式key-value存储系统的数据存储位置加密方法,系统包括若干存储节点,包括:
设置用户密钥;
根据存储数据生成数据对象存储位置,该数据对象存储位置包括数据对象键值;
根据数据对象存储位置,利用用户密钥生成数据文件存储路径,生成密文数据对象键值,
根据密文数据对象键值确定特定存储节点;
将存储数据存储于该特定存储节点。
进一步的,
所述数据对象存储位置包括用户名、应用名称、所述数据对象键值及数据对象值,所述数据文件存储路径包括根据该用户名生成的用户目录,根据该应用名称生成的业务目录,且用户目录/业务目录。
在所述特定存储节点的用户目录/业务目录下,生成m个密文目录{DIR31,DIR32,…DIR3m},根据所述密文数据对象键值获取数值q,q∈{1,2,…,m},将所述存储数据保存于第q个密文目录DIR3q下。
根据所述密文数据对象键值基于一致性哈希算法确定主存储节点和副本存储节点,所述存储数据分别保存于主存储节点与副本存储节点中。
对所述密文数据对象键值进行求余计算获得所述数值q。
数据存储过程为:
S10:客户端配置所述用户密钥;
S11:根据存储数据生成所述数据对象存储位置;
S12:根据所述数据对象存储位置,利用所述用户密钥生成所述数据文件存储路径,生成密文数据对象键值;
S13:客户端向系统任意一存储节点发送写数据请求,该存储节点确定所述特定存储节点;
该写数据请求包括所述用户目录、业务目录、数据对象键值、数据对象值、密文数据对象键值,
S14:所述特定存储节点根据写数据请求存储数据;
所述特定存储节点查找是否存在相应的用户目录/业务目录,若不存在,则创建该用户目录/业务目录,在该业务目录下创建m个密文目录{DIR31,DIR32,…DIR3m},对密文数据对象键值进行求余计算,根据得到的值q确定对应的目录DIR3q,将该数据对象值保存于目录DIR3q下;
若已存在相应的用户目录/业务目录,在该业务目录下,对密文数据对象键值进行求余计算,根据得到的值q确定对应的目录DIR3q,将该数据对象值保存于目录DIR3q中。
数据读取过程为:
S20:客户端输入读取密钥;
S21:根据读取的数据生成所述数据对象存储位置;
S22:根据生成的数据对象存储位置,利用读取密钥生成所述数据文件存储路径,生成密文读取数据对象键值;
S23:客户端向系统中任意一存储节点发送读数据请求,该存储节点确定所述特定存储节点;
该读数据请求包括所述用户目录、业务目录、数据对象键值、数据对象值、密文读取数据对象键值,
S24:所述特定存储节点查找并读取数据;
所述特定存储节点根据该用户目录、业务目录,查找是否存在相应的用户目录/业务目录,若未找到,则无法读取数据;
若查找到,则在该业务目录下,对所述密文读取数据对象键值进行求余计算,根据得到的数值q确定对应的目录DIR3q,从该目录DIR3q下读取数据。
所述任意一存储节点根据密文读取数据对象键值基于一致性哈希算法确定主存储节点和副本存储节点,所述存储数据分别保存于该主存储节点与副本存储节点;所述任意一存储节点根据密文读取数据对象键值基于一致性哈希算法确定主存储节点和副本存储节点,从该主存储节点与副本存储节点中查找并读取数据。
本发明的优点是:
本发明的分布式key-value存储系统的数据存储位置加密方法,通过对数据存储位置进行加密,而不对数据文件本身进行加密,一方面,攻击者或管理员若无用户密钥则无法成功读取数据,保证了数据安全性,另一方面,大幅降低了加密运算量,保证了系统性能的稳定性和高效性,不会对利用数据进行大数据分析造成影响。
附图说明
图1是本发明的系统架构示意图。
图2是本发明的存储数据的方法流程图。
图3是本发明的读取数据的方法流程示意图。
具体实施方式
以下结合附图和实施例对本发明作进一步详细的描述。
如图1所示,本发明公开的分布式key-value存储系统的数据存储位置加密方法,基于分布式key-value存储系统实现,该系统包括主存储节点(以下简称主节点)和副本存储节点(以下简称副本节点),n个存储节点中每个存储节点既可以是主节点也可以是副本节点,客户端的用户数据存储于主节点中,备份的用户数据存储于副本节点中,副本节点的数量可根据需要设置,客户端与分布式key-value存储系统通过网络实现数据交互。
主节点与副本节点上文件系统的数据文件存储路径为D(文件目录D),其中逐级向下划分为用户目录层DIR1、业务目录层DIR2、密文目录层DIR3,用户数据文件保存于目录DIR3下,即:D/DIR1/DIR2/DIR3/FILENAME。
如图2所示,用户于客户端存储数据的方法流程为:
S10:用户配置密钥P;
用户可以设置密钥,或是通过第三方认证机构获取密钥。
S11:用户存储数据,根据存储数据生成数据对象存储位置;
用户数据的数据对象存储位置格式为L(username,application,key,value),其中,username为用户名,application为应用名称,key为数据对象键值,一般为数据文件的名称,value为数据对象值,对应数据文件。
例如,用户admin欲将图片文件test.jpg存储于网盘应用中,则对应的数据对象存储位置格式为:L(admin,网盘,test,test.jpg)。
S12:根据数据对象存储位置,利用密钥P生成数据文件存储路径,并生成密文键值key_P;
利用密钥P基于对称加密算法对用户名username进行加密处理生成DIR1,利用密钥P基于对称加密算法对应用名称application进行加密处理生成DIR2,利用密钥P基于对称加密算法对数据对象键值key进行加密处理生成密文键值key_P。
S13:客户端向系统发送写数据请求,系统确定主节点和副本节点;
客户端向系统发送写数据请求,该写数据请求包括数据文件存储路径(DIR1,DIR2)、键-值对(key,value)及密文键值key_P,即写数据请求包括(DIR1,DIR2,key,value,key_P),分布式key-value存储系统中的任意一个存储节点接收该写数据请求,该存储节点利用key_P基于一致性哈希算法确定主节点和副本节点,然后将该写数据请求分别发送至确定出的主节点和副本节点。
S14:主节点和副本节点根据写数据请求存储用户数据。
主节点与副本节点分别接收写数据请求,主节点与副本节点存储用户数据的过程相同,以下仅以主节点为例说明存储过程。
主节点未查找到目录DIR1,DIR2,判定为初次存储数据,主节点根据DIR1,DIR2依次创建存储路径DIR1/DIR2,在目录DIR2下,创建m个目录DIR3,即:DIR31、DIR32、DIR33……DIR3m,m值可以根据用户设置确定,或是取系统默认值,主节点对密文键值key_P进行求余数计算,即计算q=key_P%m,得到的q值即对应目录DIR3q,然后将用户欲存储的数据文件value保存于目录DIR3q中。
主节点查找到目录DIR1,DIR2,则为非初次存储数据,主节点根据DIR1,DIR2查找存储路径DIR1/DIR2,在目录DIR2下,对密文键值key_P进行求余数计算,即计算q=key_P%m,得到q值对应目录DIR3q,然后将用户欲存储的数据文件value保存于目录DIR3q中。
如图3所示,用户于客户端读取数据的方法流程为:
S20:用户读取数据,输入密钥P`;
S21:根据读取的数据生成数据对象存储位置;
该数据对象存储位置格式为L(username`,application`,key`,value`)。
S22:根据生成的数据对象存储位置,利用密钥P`生成数据文件存储路径,并生成密文键值key_P`;
利用密钥P`基于对称加密算法对用户名username`进行加密处理生成DIR1`,利用密钥P`基于对称加密算法对应用名称application`进行加密处理生成DIR2`,同时,利用密钥P`基于对称加密算法对数据对象键值key`进行加密处理生成密文键值key_P`。
S23:客户端向系统发送读数据请求,系统确定主节点和副本节点;
该读数据请求包括数据文件存储路径(DIR1`,DIR2`)、键-值对(key`,value`)及密文键值key_P`,即读数据请求包括(DIR1`,DIR2`,key`,value`,key_P`);分布式key-value存储系统中的任意一个存储节点接收该读数据请求,该存储节点利用key_P`基于一致性哈希算法确定主节点和副本节点,然后将该读数据请求分别发送至确定出的主节点和副本节点。
S24:主节点和副本节点查找并读取用户数据。
主节点与副本节点分别接收读数据请求,主节点与副本节点查找、读取用户数据的过程相同,以下仅以主节点为例说明数据读取过程。
主节点根据DIR1`、DIR2`查找目录DIR1`、DIR2`,若未找到,表明密钥与存储数据时的密钥不一致,密钥错误,无法读取数据;若查找到,则在目录DIR2`下,对key_P`进行求余数计算,即计算q`=key_P`%m,根据得到的q`值,找到对应的目录DIR3q`,然后从目录DIR3q`下读取出数据文件value`。
本发明中,系统的数据安全性取决于存储节点数n,副本节点数r,用户数u,总应用数a,以及密文目录DIR3数m,数据对象存储位置L的最终取值为C(n,r)*u*a*m,在u、a一定的情况下,n、m值越大,数据安全性越高。系统性能方面,系统的性能损失为对L值的加密损失,当L值大小在千字节范围内时,加密速度将远远大于一个大数据文件的存储速度,对系统性能的影响较小,因此,本发明的方法特别适用于大规模、多用户的分布式key-value存储系统中。
以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。