本發(fā)明公開(kāi)一種分布式key-value存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)位置加密方法,屬于信息安全技術(shù)領(lǐng)域。
背景技術(shù):
隨著個(gè)人與企業(yè)用戶對(duì)數(shù)據(jù)存儲(chǔ)業(yè)務(wù)需求的快速增長(zhǎng),云端存儲(chǔ)系統(tǒng)技術(shù)快速發(fā)展,分布式key-value存儲(chǔ)系統(tǒng)以其良好的拓展性、可靠性、高效性及成本優(yōu)勢(shì)獲得了極大的發(fā)展,在其之上可以構(gòu)建多種云端應(yīng)用,包括網(wǎng)上云盤(pán)、云主機(jī)的底層存儲(chǔ)等,且,基于大數(shù)據(jù)技術(shù)對(duì)數(shù)據(jù)進(jìn)行有效利用也具有極高的數(shù)據(jù)價(jià)值。
云端存儲(chǔ)系統(tǒng)中存儲(chǔ)有個(gè)人及企業(yè)用戶的各種數(shù)據(jù),包括賬戶數(shù)據(jù)、隱私數(shù)據(jù)、涉密數(shù)據(jù)等,因而,存儲(chǔ)系統(tǒng)的數(shù)據(jù)安全性需要很好的解決,以保證用戶私有數(shù)據(jù)的安全可靠性;傳統(tǒng)的分布式key-value存儲(chǔ)系統(tǒng)要么沒(méi)有對(duì)數(shù)據(jù)進(jìn)行加密處理,使得系統(tǒng)管理員可利用其高權(quán)限任意查看用戶數(shù)據(jù),甚者造成用戶數(shù)據(jù)的泄露,要么直接對(duì)數(shù)據(jù)文件進(jìn)行加密,導(dǎo)致系統(tǒng)性能低下,也對(duì)大數(shù)據(jù)分析帶來(lái)極大的困難。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述原因,本發(fā)明的目的在于提供一種分布式key-value存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)位置加密方法,通過(guò)對(duì)數(shù)據(jù)存儲(chǔ)路徑進(jìn)行加密處理,使得管理員無(wú)法任意查看用戶數(shù)據(jù),既增加了數(shù)據(jù)安全性,又保證了系統(tǒng)性能穩(wěn)定高效。
為實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
一種分布式key-value存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)位置加密方法,系統(tǒng)包括若干存儲(chǔ)節(jié)點(diǎn),包括:
設(shè)置用戶密鑰;
根據(jù)存儲(chǔ)數(shù)據(jù)生成數(shù)據(jù)對(duì)象存儲(chǔ)位置,該數(shù)據(jù)對(duì)象存儲(chǔ)位置包括數(shù)據(jù)對(duì)象鍵值;
根據(jù)數(shù)據(jù)對(duì)象存儲(chǔ)位置,利用用戶密鑰生成數(shù)據(jù)文件存儲(chǔ)路徑,生成密文數(shù)據(jù)對(duì)象鍵值,
根據(jù)密文數(shù)據(jù)對(duì)象鍵值確定特定存儲(chǔ)節(jié)點(diǎn);
將存儲(chǔ)數(shù)據(jù)存儲(chǔ)于該特定存儲(chǔ)節(jié)點(diǎn)。
進(jìn)一步的,
所述數(shù)據(jù)對(duì)象存儲(chǔ)位置包括用戶名、應(yīng)用名稱、所述數(shù)據(jù)對(duì)象鍵值及數(shù)據(jù)對(duì)象值,所述數(shù)據(jù)文件存儲(chǔ)路徑包括根據(jù)該用戶名生成的用戶目錄,根據(jù)該應(yīng)用名稱生成的業(yè)務(wù)目錄,且用戶目錄/業(yè)務(wù)目錄。
在所述特定存儲(chǔ)節(jié)點(diǎn)的用戶目錄/業(yè)務(wù)目錄下,生成m個(gè)密文目錄{DIR31,DIR32,…DIR3m},根據(jù)所述密文數(shù)據(jù)對(duì)象鍵值獲取數(shù)值q,q∈{1,2,…,m},將所述存儲(chǔ)數(shù)據(jù)保存于第q個(gè)密文目錄DIR3q下。
根據(jù)所述密文數(shù)據(jù)對(duì)象鍵值基于一致性哈希算法確定主存儲(chǔ)節(jié)點(diǎn)和副本存儲(chǔ)節(jié)點(diǎn),所述存儲(chǔ)數(shù)據(jù)分別保存于主存儲(chǔ)節(jié)點(diǎn)與副本存儲(chǔ)節(jié)點(diǎn)中。
對(duì)所述密文數(shù)據(jù)對(duì)象鍵值進(jìn)行求余計(jì)算獲得所述數(shù)值q。
數(shù)據(jù)存儲(chǔ)過(guò)程為:
S10:客戶端配置所述用戶密鑰;
S11:根據(jù)存儲(chǔ)數(shù)據(jù)生成所述數(shù)據(jù)對(duì)象存儲(chǔ)位置;
S12:根據(jù)所述數(shù)據(jù)對(duì)象存儲(chǔ)位置,利用所述用戶密鑰生成所述數(shù)據(jù)文件存儲(chǔ)路徑,生成密文數(shù)據(jù)對(duì)象鍵值;
S13:客戶端向系統(tǒng)任意一存儲(chǔ)節(jié)點(diǎn)發(fā)送寫(xiě)數(shù)據(jù)請(qǐng)求,該存儲(chǔ)節(jié)點(diǎn)確定所述特定存儲(chǔ)節(jié)點(diǎn);
該寫(xiě)數(shù)據(jù)請(qǐng)求包括所述用戶目錄、業(yè)務(wù)目錄、數(shù)據(jù)對(duì)象鍵值、數(shù)據(jù)對(duì)象值、密文數(shù)據(jù)對(duì)象鍵值,
S14:所述特定存儲(chǔ)節(jié)點(diǎn)根據(jù)寫(xiě)數(shù)據(jù)請(qǐng)求存儲(chǔ)數(shù)據(jù);
所述特定存儲(chǔ)節(jié)點(diǎn)查找是否存在相應(yīng)的用戶目錄/業(yè)務(wù)目錄,若不存在,則創(chuàng)建該用戶目錄/業(yè)務(wù)目錄,在該業(yè)務(wù)目錄下創(chuàng)建m個(gè)密文目錄{DIR31,DIR32,…DIR3m},對(duì)密文數(shù)據(jù)對(duì)象鍵值進(jìn)行求余計(jì)算,根據(jù)得到的值q確定對(duì)應(yīng)的目錄DIR3q,將該數(shù)據(jù)對(duì)象值保存于目錄DIR3q下;
若已存在相應(yīng)的用戶目錄/業(yè)務(wù)目錄,在該業(yè)務(wù)目錄下,對(duì)密文數(shù)據(jù)對(duì)象鍵值進(jìn)行求余計(jì)算,根據(jù)得到的值q確定對(duì)應(yīng)的目錄DIR3q,將該數(shù)據(jù)對(duì)象值保存于目錄DIR3q中。
數(shù)據(jù)讀取過(guò)程為:
S20:客戶端輸入讀取密鑰;
S21:根據(jù)讀取的數(shù)據(jù)生成所述數(shù)據(jù)對(duì)象存儲(chǔ)位置;
S22:根據(jù)生成的數(shù)據(jù)對(duì)象存儲(chǔ)位置,利用讀取密鑰生成所述數(shù)據(jù)文件存儲(chǔ)路徑,生成密文讀取數(shù)據(jù)對(duì)象鍵值;
S23:客戶端向系統(tǒng)中任意一存儲(chǔ)節(jié)點(diǎn)發(fā)送讀數(shù)據(jù)請(qǐng)求,該存儲(chǔ)節(jié)點(diǎn)確定所述特定存儲(chǔ)節(jié)點(diǎn);
該讀數(shù)據(jù)請(qǐng)求包括所述用戶目錄、業(yè)務(wù)目錄、數(shù)據(jù)對(duì)象鍵值、數(shù)據(jù)對(duì)象值、密文讀取數(shù)據(jù)對(duì)象鍵值,
S24:所述特定存儲(chǔ)節(jié)點(diǎn)查找并讀取數(shù)據(jù);
所述特定存儲(chǔ)節(jié)點(diǎn)根據(jù)該用戶目錄、業(yè)務(wù)目錄,查找是否存在相應(yīng)的用戶目錄/業(yè)務(wù)目錄,若未找到,則無(wú)法讀取數(shù)據(jù);
若查找到,則在該業(yè)務(wù)目錄下,對(duì)所述密文讀取數(shù)據(jù)對(duì)象鍵值進(jìn)行求余計(jì)算,根據(jù)得到的數(shù)值q確定對(duì)應(yīng)的目錄DIR3q,從該目錄DIR3q下讀取數(shù)據(jù)。
所述任意一存儲(chǔ)節(jié)點(diǎn)根據(jù)密文讀取數(shù)據(jù)對(duì)象鍵值基于一致性哈希算法確定主存儲(chǔ)節(jié)點(diǎn)和副本存儲(chǔ)節(jié)點(diǎn),所述存儲(chǔ)數(shù)據(jù)分別保存于該主存儲(chǔ)節(jié)點(diǎn)與副本存儲(chǔ)節(jié)點(diǎn);所述任意一存儲(chǔ)節(jié)點(diǎn)根據(jù)密文讀取數(shù)據(jù)對(duì)象鍵值基于一致性哈希算法確定主存儲(chǔ)節(jié)點(diǎn)和副本存儲(chǔ)節(jié)點(diǎn),從該主存儲(chǔ)節(jié)點(diǎn)與副本存儲(chǔ)節(jié)點(diǎn)中查找并讀取數(shù)據(jù)。
本發(fā)明的優(yōu)點(diǎn)是:
本發(fā)明的分布式key-value存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)位置加密方法,通過(guò)對(duì)數(shù)據(jù)存儲(chǔ)位置進(jìn)行加密,而不對(duì)數(shù)據(jù)文件本身進(jìn)行加密,一方面,攻擊者或管理員若無(wú)用戶密鑰則無(wú)法成功讀取數(shù)據(jù),保證了數(shù)據(jù)安全性,另一方面,大幅降低了加密運(yùn)算量,保證了系統(tǒng)性能的穩(wěn)定性和高效性,不會(huì)對(duì)利用數(shù)據(jù)進(jìn)行大數(shù)據(jù)分析造成影響。
附圖說(shuō)明
圖1是本發(fā)明的系統(tǒng)架構(gòu)示意圖。
圖2是本發(fā)明的存儲(chǔ)數(shù)據(jù)的方法流程圖。
圖3是本發(fā)明的讀取數(shù)據(jù)的方法流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述。
如圖1所示,本發(fā)明公開(kāi)的分布式key-value存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)位置加密方法,基于分布式key-value存儲(chǔ)系統(tǒng)實(shí)現(xiàn),該系統(tǒng)包括主存儲(chǔ)節(jié)點(diǎn)(以下簡(jiǎn)稱主節(jié)點(diǎn))和副本存儲(chǔ)節(jié)點(diǎn)(以下簡(jiǎn)稱副本節(jié)點(diǎn)),n個(gè)存儲(chǔ)節(jié)點(diǎn)中每個(gè)存儲(chǔ)節(jié)點(diǎn)既可以是主節(jié)點(diǎn)也可以是副本節(jié)點(diǎn),客戶端的用戶數(shù)據(jù)存儲(chǔ)于主節(jié)點(diǎn)中,備份的用戶數(shù)據(jù)存儲(chǔ)于副本節(jié)點(diǎn)中,副本節(jié)點(diǎn)的數(shù)量可根據(jù)需要設(shè)置,客戶端與分布式key-value存儲(chǔ)系統(tǒng)通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)交互。
主節(jié)點(diǎn)與副本節(jié)點(diǎn)上文件系統(tǒng)的數(shù)據(jù)文件存儲(chǔ)路徑為D(文件目錄D),其中逐級(jí)向下劃分為用戶目錄層DIR1、業(yè)務(wù)目錄層DIR2、密文目錄層DIR3,用戶數(shù)據(jù)文件保存于目錄DIR3下,即:D/DIR1/DIR2/DIR3/FILENAME。
如圖2所示,用戶于客戶端存儲(chǔ)數(shù)據(jù)的方法流程為:
S10:用戶配置密鑰P;
用戶可以設(shè)置密鑰,或是通過(guò)第三方認(rèn)證機(jī)構(gòu)獲取密鑰。
S11:用戶存儲(chǔ)數(shù)據(jù),根據(jù)存儲(chǔ)數(shù)據(jù)生成數(shù)據(jù)對(duì)象存儲(chǔ)位置;
用戶數(shù)據(jù)的數(shù)據(jù)對(duì)象存儲(chǔ)位置格式為L(zhǎng)(username,application,key,value),其中,username為用戶名,application為應(yīng)用名稱,key為數(shù)據(jù)對(duì)象鍵值,一般為數(shù)據(jù)文件的名稱,value為數(shù)據(jù)對(duì)象值,對(duì)應(yīng)數(shù)據(jù)文件。
例如,用戶admin欲將圖片文件test.jpg存儲(chǔ)于網(wǎng)盤(pán)應(yīng)用中,則對(duì)應(yīng)的數(shù)據(jù)對(duì)象存儲(chǔ)位置格式為:L(admin,網(wǎng)盤(pán),test,test.jpg)。
S12:根據(jù)數(shù)據(jù)對(duì)象存儲(chǔ)位置,利用密鑰P生成數(shù)據(jù)文件存儲(chǔ)路徑,并生成密文鍵值key_P;
利用密鑰P基于對(duì)稱加密算法對(duì)用戶名username進(jìn)行加密處理生成DIR1,利用密鑰P基于對(duì)稱加密算法對(duì)應(yīng)用名稱application進(jìn)行加密處理生成DIR2,利用密鑰P基于對(duì)稱加密算法對(duì)數(shù)據(jù)對(duì)象鍵值key進(jìn)行加密處理生成密文鍵值key_P。
S13:客戶端向系統(tǒng)發(fā)送寫(xiě)數(shù)據(jù)請(qǐng)求,系統(tǒng)確定主節(jié)點(diǎn)和副本節(jié)點(diǎn);
客戶端向系統(tǒng)發(fā)送寫(xiě)數(shù)據(jù)請(qǐng)求,該寫(xiě)數(shù)據(jù)請(qǐng)求包括數(shù)據(jù)文件存儲(chǔ)路徑(DIR1,DIR2)、鍵-值對(duì)(key,value)及密文鍵值key_P,即寫(xiě)數(shù)據(jù)請(qǐng)求包括(DIR1,DIR2,key,value,key_P),分布式key-value存儲(chǔ)系統(tǒng)中的任意一個(gè)存儲(chǔ)節(jié)點(diǎn)接收該寫(xiě)數(shù)據(jù)請(qǐng)求,該存儲(chǔ)節(jié)點(diǎn)利用key_P基于一致性哈希算法確定主節(jié)點(diǎn)和副本節(jié)點(diǎn),然后將該寫(xiě)數(shù)據(jù)請(qǐng)求分別發(fā)送至確定出的主節(jié)點(diǎn)和副本節(jié)點(diǎn)。
S14:主節(jié)點(diǎn)和副本節(jié)點(diǎn)根據(jù)寫(xiě)數(shù)據(jù)請(qǐng)求存儲(chǔ)用戶數(shù)據(jù)。
主節(jié)點(diǎn)與副本節(jié)點(diǎn)分別接收寫(xiě)數(shù)據(jù)請(qǐng)求,主節(jié)點(diǎn)與副本節(jié)點(diǎn)存儲(chǔ)用戶數(shù)據(jù)的過(guò)程相同,以下僅以主節(jié)點(diǎn)為例說(shuō)明存儲(chǔ)過(guò)程。
主節(jié)點(diǎn)未查找到目錄DIR1,DIR2,判定為初次存儲(chǔ)數(shù)據(jù),主節(jié)點(diǎn)根據(jù)DIR1,DIR2依次創(chuàng)建存儲(chǔ)路徑DIR1/DIR2,在目錄DIR2下,創(chuàng)建m個(gè)目錄DIR3,即:DIR31、DIR32、DIR33……DIR3m,m值可以根據(jù)用戶設(shè)置確定,或是取系統(tǒng)默認(rèn)值,主節(jié)點(diǎn)對(duì)密文鍵值key_P進(jìn)行求余數(shù)計(jì)算,即計(jì)算q=key_P%m,得到的q值即對(duì)應(yīng)目錄DIR3q,然后將用戶欲存儲(chǔ)的數(shù)據(jù)文件value保存于目錄DIR3q中。
主節(jié)點(diǎn)查找到目錄DIR1,DIR2,則為非初次存儲(chǔ)數(shù)據(jù),主節(jié)點(diǎn)根據(jù)DIR1,DIR2查找存儲(chǔ)路徑DIR1/DIR2,在目錄DIR2下,對(duì)密文鍵值key_P進(jìn)行求余數(shù)計(jì)算,即計(jì)算q=key_P%m,得到q值對(duì)應(yīng)目錄DIR3q,然后將用戶欲存儲(chǔ)的數(shù)據(jù)文件value保存于目錄DIR3q中。
如圖3所示,用戶于客戶端讀取數(shù)據(jù)的方法流程為:
S20:用戶讀取數(shù)據(jù),輸入密鑰P`;
S21:根據(jù)讀取的數(shù)據(jù)生成數(shù)據(jù)對(duì)象存儲(chǔ)位置;
該數(shù)據(jù)對(duì)象存儲(chǔ)位置格式為L(zhǎng)(username`,application`,key`,value`)。
S22:根據(jù)生成的數(shù)據(jù)對(duì)象存儲(chǔ)位置,利用密鑰P`生成數(shù)據(jù)文件存儲(chǔ)路徑,并生成密文鍵值key_P`;
利用密鑰P`基于對(duì)稱加密算法對(duì)用戶名username`進(jìn)行加密處理生成DIR1`,利用密鑰P`基于對(duì)稱加密算法對(duì)應(yīng)用名稱application`進(jìn)行加密處理生成DIR2`,同時(shí),利用密鑰P`基于對(duì)稱加密算法對(duì)數(shù)據(jù)對(duì)象鍵值key`進(jìn)行加密處理生成密文鍵值key_P`。
S23:客戶端向系統(tǒng)發(fā)送讀數(shù)據(jù)請(qǐng)求,系統(tǒng)確定主節(jié)點(diǎn)和副本節(jié)點(diǎn);
該讀數(shù)據(jù)請(qǐng)求包括數(shù)據(jù)文件存儲(chǔ)路徑(DIR1`,DIR2`)、鍵-值對(duì)(key`,value`)及密文鍵值key_P`,即讀數(shù)據(jù)請(qǐng)求包括(DIR1`,DIR2`,key`,value`,key_P`);分布式key-value存儲(chǔ)系統(tǒng)中的任意一個(gè)存儲(chǔ)節(jié)點(diǎn)接收該讀數(shù)據(jù)請(qǐng)求,該存儲(chǔ)節(jié)點(diǎn)利用key_P`基于一致性哈希算法確定主節(jié)點(diǎn)和副本節(jié)點(diǎn),然后將該讀數(shù)據(jù)請(qǐng)求分別發(fā)送至確定出的主節(jié)點(diǎn)和副本節(jié)點(diǎn)。
S24:主節(jié)點(diǎn)和副本節(jié)點(diǎn)查找并讀取用戶數(shù)據(jù)。
主節(jié)點(diǎn)與副本節(jié)點(diǎn)分別接收讀數(shù)據(jù)請(qǐng)求,主節(jié)點(diǎn)與副本節(jié)點(diǎn)查找、讀取用戶數(shù)據(jù)的過(guò)程相同,以下僅以主節(jié)點(diǎn)為例說(shuō)明數(shù)據(jù)讀取過(guò)程。
主節(jié)點(diǎn)根據(jù)DIR1`、DIR2`查找目錄DIR1`、DIR2`,若未找到,表明密鑰與存儲(chǔ)數(shù)據(jù)時(shí)的密鑰不一致,密鑰錯(cuò)誤,無(wú)法讀取數(shù)據(jù);若查找到,則在目錄DIR2`下,對(duì)key_P`進(jìn)行求余數(shù)計(jì)算,即計(jì)算q`=key_P`%m,根據(jù)得到的q`值,找到對(duì)應(yīng)的目錄DIR3q`,然后從目錄DIR3q`下讀取出數(shù)據(jù)文件value`。
本發(fā)明中,系統(tǒng)的數(shù)據(jù)安全性取決于存儲(chǔ)節(jié)點(diǎn)數(shù)n,副本節(jié)點(diǎn)數(shù)r,用戶數(shù)u,總應(yīng)用數(shù)a,以及密文目錄DIR3數(shù)m,數(shù)據(jù)對(duì)象存儲(chǔ)位置L的最終取值為C(n,r)*u*a*m,在u、a一定的情況下,n、m值越大,數(shù)據(jù)安全性越高。系統(tǒng)性能方面,系統(tǒng)的性能損失為對(duì)L值的加密損失,當(dāng)L值大小在千字節(jié)范圍內(nèi)時(shí),加密速度將遠(yuǎn)遠(yuǎn)大于一個(gè)大數(shù)據(jù)文件的存儲(chǔ)速度,對(duì)系統(tǒng)性能的影響較小,因此,本發(fā)明的方法特別適用于大規(guī)模、多用戶的分布式key-value存儲(chǔ)系統(tǒng)中。
以上所述是本發(fā)明的較佳實(shí)施例及其所運(yùn)用的技術(shù)原理,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),在不背離本發(fā)明的精神和范圍的情況下,任何基于本發(fā)明技術(shù)方案基礎(chǔ)上的等效變換、簡(jiǎn)單替換等顯而易見(jiàn)的改變,均屬于本發(fā)明保護(hù)范圍之內(nèi)。