本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是指一種基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法。
背景技術(shù):
第五代(5g)移動(dòng)通信技術(shù)的提出吸引了大眾的注意力,隨后多個(gè)國(guó)家加速了對(duì)5g技術(shù)的研究,5g包含多種技術(shù),因此相應(yīng)的也需要采取多種安全機(jī)制,特別是多種網(wǎng)絡(luò)的共存產(chǎn)生的網(wǎng)絡(luò)融合也帶來(lái)了諸多需要解決的問(wèn)題,包括5g通信標(biāo)準(zhǔn)下的密文數(shù)據(jù)安全搜索。5g是一種全新的技術(shù),是特指?jìng)鬏斔俾蔬_(dá)到10gb/s的新一代移動(dòng)通信技術(shù),相比于4g技術(shù),5g技術(shù)有更多的創(chuàng)新,4g是對(duì)3g網(wǎng)絡(luò)技術(shù)的擴(kuò)展,提高了網(wǎng)絡(luò)帶寬的利用率,增強(qiáng)了網(wǎng)絡(luò)傳輸速率,4g網(wǎng)絡(luò)是以通信設(shè)備為核心的格局,5g是以功能為核心的網(wǎng)絡(luò),并結(jié)合了網(wǎng)絡(luò)功能虛擬化、定義網(wǎng)絡(luò)等關(guān)鍵技術(shù),體現(xiàn)出了高靈活性和高動(dòng)態(tài)擴(kuò)展等特性,由此發(fā)展而來(lái)的5g標(biāo)準(zhǔn)下的數(shù)據(jù)安全搜索就是其特性之一,在搜索5g通信標(biāo)準(zhǔn)下的數(shù)據(jù)時(shí)有多個(gè)安全隱患需要考慮,例如:
第一、數(shù)據(jù)傳輸安全,數(shù)據(jù)傳輸安全是指客戶(hù)端與數(shù)據(jù)接收端之間通信前后的數(shù)據(jù)一致性和隱秘性,現(xiàn)有的數(shù)據(jù)通信方式多半是以超文本傳輸協(xié)議(hypertexttransferprotocol,http)、文件傳輸協(xié)議(filetransferprotocol,ftp)、遠(yuǎn)程登錄(telnet)等,為了保證數(shù)據(jù)在傳輸過(guò)程中不被非法用戶(hù)竊取和篡改,可以通過(guò)增加安全套接層(securesocketslayer,ssl)數(shù)字證書(shū)來(lái)提供對(duì)傳輸數(shù)據(jù)的加密、服務(wù)器認(rèn)證、消息完整性校驗(yàn)等方式來(lái)保證數(shù)據(jù)的安全。
第二、信道安全,即信道中的數(shù)據(jù)是否安全,保護(hù)機(jī)密的數(shù)據(jù),確保數(shù)據(jù)的完整性,防止數(shù)據(jù)被破壞或丟失,信道中存在著各種各樣的漏洞,非法用戶(hù)可以基于此對(duì)其發(fā)起攻擊,從而導(dǎo)致信息的泄露,通常的安全措施是在系統(tǒng)中增加加密模塊,多重身份驗(yàn)證來(lái)保障數(shù)據(jù)的相對(duì)安全。
現(xiàn)有技術(shù)中,在搜索5g通信標(biāo)準(zhǔn)下的數(shù)據(jù),針對(duì)每次搜索,會(huì)想用戶(hù)客戶(hù)端返回全部的搜索結(jié)果,導(dǎo)致用戶(hù)客戶(hù)端與服務(wù)端之間的通信開(kāi)銷(xiāo)大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法,以解決現(xiàn)有技術(shù)所存在的用戶(hù)客戶(hù)端與服務(wù)端之間的通信開(kāi)銷(xiāo)大的問(wèn)題。
為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供一種基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法,包括:
在數(shù)據(jù)提供者客戶(hù)端建立文檔與關(guān)鍵詞的正向索引,對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件,并對(duì)文檔明文進(jìn)行逐行加密,得到密文集合,其中,所述正向索引的索引項(xiàng)包括:文檔編號(hào)、關(guān)鍵詞、關(guān)鍵詞位置信息、關(guān)鍵詞與文檔的相關(guān)度;
將加密得到的正向索引文件和密文集合上傳至服務(wù)端;
在服務(wù)端,根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表;
在服務(wù)端,接收用戶(hù)上傳的查詢(xún)陷門(mén),其中,所述查詢(xún)陷門(mén)包括:關(guān)鍵詞陷門(mén)和文檔編號(hào)解密密鑰;
判斷倒排索引表是否有與關(guān)鍵詞陷門(mén)一致的索引項(xiàng),若有,則以文檔編號(hào)解密密鑰對(duì)文檔編號(hào)密文進(jìn)行解密,根據(jù)解密結(jié)果,密文集合中的文檔按照關(guān)鍵詞與文檔的相關(guān)度從大到小進(jìn)行排序,結(jié)合關(guān)鍵詞位置信息,向用戶(hù)客戶(hù)端返回關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文和相應(yīng)的文檔編號(hào)密文;
在用戶(hù)客戶(hù)端對(duì)文檔摘要密文進(jìn)行逐行解密,根據(jù)解密得到的摘要明文,選中至少一個(gè)文檔編號(hào)密文發(fā)送至服務(wù)端,服務(wù)端返回相應(yīng)的文檔密文至用戶(hù)客戶(hù)端;
在用戶(hù)客戶(hù)端,對(duì)服務(wù)端返回的文檔密文進(jìn)行解密。
進(jìn)一步地,所述對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件,并對(duì)文檔明文進(jìn)行逐行加密,得到密文集合包括:
生成密鑰x、y、k;
利用密鑰x結(jié)合第一加密算法對(duì)關(guān)鍵詞wi進(jìn)行加密,生成c(wi);
采用保序加密算法對(duì)關(guān)鍵詞與文檔的相關(guān)度si,j進(jìn)行加密,生成c(si,j),其中,i代表關(guān)鍵詞的下標(biāo),j代表文檔的下標(biāo);
利用第二加密算法,結(jié)合密鑰y、關(guān)鍵詞wi、生成fy(wi),再以fy(wi)作為密鑰結(jié)合安全對(duì)稱(chēng)加密算法對(duì)文檔編號(hào)idj、關(guān)鍵詞位置信息loci,j、c(si,j)的拼接字符串進(jìn)行加密,得到c(idj+loci,j+c(si,j));
根據(jù)c(wi)和c(idj+loci,j+c(si,j)),生成正向索引文件,其中,正向索引文件中的每一個(gè)正向索引項(xiàng)包括:c(wi)和c(idj+loci,j+c(si,j));
利用密鑰k對(duì)文檔明文進(jìn)行逐行加密,得到密文集合。
進(jìn)一步地,所述生成密鑰x、y、k包括:
利用隨機(jī)函數(shù)和隨機(jī)種子生成隨機(jī)字符串x1、y1、k1;
將x1作為輸入結(jié)合哈希函數(shù)sha-1生成密鑰x;
將y1、k1作為輸入結(jié)合哈希函數(shù)sha-256生成密鑰y、k,其中,y為256位密鑰,k為256位密鑰。
進(jìn)一步地,所述在服務(wù)端,根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表包括:
在服務(wù)端上,使用mapreduce并行計(jì)算模型對(duì)正向索引文件中的數(shù)據(jù)進(jìn)行整合,通過(guò)map函數(shù)接收<c(idj+loci,j+c(si,j)),c(wi)>形式的輸入,產(chǎn)生<c(wi),c(idj+loci,j+c(si,j))>形式的中間輸出;
通過(guò)reduce函數(shù)以中間輸出作為輸入,產(chǎn)生<c(wi),list(c(idj+loci,j+c(si,j)))>形式的輸出;
匯總reduce函數(shù)的輸出結(jié)果,得到倒排索引表,倒排索引表中的數(shù)據(jù)均為密文形式;
其中,<c(wi),list(c(idj+loci,j+c(si,j)))>中l(wèi)ist(·)表示相同關(guān)鍵詞下不同索引項(xiàng)之集合。
進(jìn)一步地,所述在服務(wù)端,接收用戶(hù)上傳的查詢(xún)陷門(mén)之前,所述方法還包括:
在用戶(hù)客戶(hù)端,接收用戶(hù)提交的關(guān)鍵詞wi;
利用密鑰x結(jié)合第一加密算法對(duì)關(guān)鍵詞wi進(jìn)行加密,生成關(guān)鍵詞陷門(mén)c(wi);
利用第二加密算法,結(jié)合密鑰y、關(guān)鍵詞wi、生成文檔編號(hào)解密密鑰fy(wi);
根據(jù)生成的關(guān)鍵詞陷門(mén)c(wi)和文檔編號(hào)解密密鑰fy(wi),得到查詢(xún)陷門(mén)t={c(wi),fy(wi)}。
進(jìn)一步地,所述判斷倒排索引表是否有與關(guān)鍵詞陷門(mén)一致的索引項(xiàng),若有,則以文檔編號(hào)解密密鑰對(duì)文檔編號(hào)密文進(jìn)行解密,根據(jù)解密結(jié)果,密文集合中的文檔按照關(guān)鍵詞與文檔的相關(guān)度從大到小進(jìn)行排序,結(jié)合關(guān)鍵詞位置信息,向用戶(hù)客戶(hù)端返回關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文和相應(yīng)的文檔編號(hào)密文包括:
在服務(wù)端,將t={c(wi),fy(wi)}解析成t=(τ1,τ2),其中τ1=c(wi),τ2=fy(wi);
判斷倒排索引表中是否有與τ1一致的索引項(xiàng);
若有,則以τ2作為解密密鑰進(jìn)行解密,得到文檔編號(hào)密文對(duì)應(yīng)的明文idj,其中,每一個(gè)解密之后的文檔編號(hào)都對(duì)應(yīng)著關(guān)鍵詞與該文檔的相關(guān)度c(si,j);
密文集合中的文檔根據(jù)關(guān)鍵詞與文檔的相關(guān)度c(si,j)從大到小進(jìn)行排序,得到經(jīng)過(guò)排序的文檔;
根據(jù)排序后的文檔,服務(wù)端將關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文發(fā)送至用戶(hù)客戶(hù)端。
進(jìn)一步地,所述根據(jù)排序后的文檔,服務(wù)端將關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文發(fā)送至用戶(hù)客戶(hù)端包括:
在服務(wù)端對(duì)關(guān)鍵詞位置信息loci,j進(jìn)行解密,并遍歷相應(yīng)的文檔,根據(jù)解密出來(lái)的行號(hào)將相應(yīng)的行密文取出,作為文檔摘要密文;
將文檔編號(hào)密文c(idj+loci,j+c(si,j))、相應(yīng)的文檔摘要密文返回至用戶(hù)客戶(hù)端。
進(jìn)一步地,所述在用戶(hù)客戶(hù)端對(duì)文檔摘要密文進(jìn)行逐行解密,根據(jù)解密得到的摘要明文,選中至少一個(gè)文檔編號(hào)密文發(fā)送至服務(wù)端,服務(wù)端返回相應(yīng)的文檔密文至用戶(hù)客戶(hù)端包括:
在用戶(hù)客戶(hù)端對(duì)文檔摘要密文進(jìn)行逐行解密,得到多條文檔摘要明文<idj,r(wi,j,n)>,其中,idj表示編號(hào)為j的文檔編號(hào),r(wi,j,n)表示編號(hào)為i的關(guān)鍵詞、出現(xiàn)在編號(hào)為j的文檔的第n行;
根據(jù)解密得到的多條文檔摘要明文,選中至少一個(gè)文檔編號(hào)密文發(fā)送至服務(wù)端;
服務(wù)端利用密鑰fy(wi)對(duì)接收到的所述至少一個(gè)文檔編號(hào)密文進(jìn)行解密,根據(jù)解密結(jié)果,返回相應(yīng)的文檔密文至用戶(hù)客戶(hù)端。
進(jìn)一步地,所述在用戶(hù)客戶(hù)端,對(duì)服務(wù)端返回的文檔密文進(jìn)行解密包括:
在用戶(hù)客戶(hù)端,利用密鑰k對(duì)服務(wù)端返回的文檔密文進(jìn)行解密。
進(jìn)一步地,所述在用戶(hù)客戶(hù)端,對(duì)服務(wù)端返回的文檔密文進(jìn)行解密之后還包括:
若解密得到的文檔明文符合用戶(hù)的需求,則結(jié)束本次搜索;
若解密得到的文檔明文不符合用戶(hù)的需求,則再次向服務(wù)端發(fā)出選中的文檔編號(hào)密文。
本發(fā)明的上述技術(shù)方案的有益效果如下:
上述方案中,在數(shù)據(jù)提供者客戶(hù)端建立文檔與關(guān)鍵詞的正向索引,對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件,并將加密后的正向索引文件發(fā)送至服務(wù)端;服務(wù)端根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表,從而通過(guò)利用服務(wù)端的計(jì)算能力減少了數(shù)據(jù)提供者客戶(hù)端的計(jì)算開(kāi)銷(xiāo);并結(jié)合關(guān)鍵詞在文檔中的位置信息,使得用戶(hù)在執(zhí)行查詢(xún)請(qǐng)求時(shí),服務(wù)端首先僅會(huì)返回符合用戶(hù)預(yù)查結(jié)果的前k個(gè)結(jié)果的摘要信息及和相應(yīng)的文檔編號(hào)密文,而不是全部結(jié)果的全部文檔密文,從而能夠大幅減少用戶(hù)客戶(hù)端與服務(wù)端之間的通信開(kāi)銷(xiāo)。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例提供的基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索系統(tǒng)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例提供的基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的詳細(xì)流程示意圖;
圖4為本發(fā)明實(shí)施例提供的正向索引的明文結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例提供的生成密鑰的流程示意圖;
圖6為本發(fā)明實(shí)施例提供的正向索引中索引項(xiàng)的加密流程示意圖;
圖7為本發(fā)明實(shí)施例提供的正向索引密文結(jié)構(gòu)示意圖;
圖8為本發(fā)明實(shí)施例提供的倒排索引表結(jié)構(gòu)示意圖;
圖9為本發(fā)明實(shí)施例提供的索引查詢(xún)流程示意圖。
具體實(shí)施方式
為使本發(fā)明要解決的技術(shù)問(wèn)題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。
本發(fā)明針對(duì)現(xiàn)有的用戶(hù)客戶(hù)端與服務(wù)端之間的通信開(kāi)銷(xiāo)大的問(wèn)題,提供一種基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法。
參看圖1所示,本發(fā)明實(shí)施例提供的基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法,包括:
步驟101,在數(shù)據(jù)提供者客戶(hù)端建立文檔與關(guān)鍵詞的正向索引,對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件,并對(duì)文檔明文進(jìn)行逐行加密,得到密文集合,其中,所述正向索引的索引項(xiàng)包括:文檔編號(hào)、關(guān)鍵詞、關(guān)鍵詞位置信息、關(guān)鍵詞與文檔的相關(guān)度;
步驟102,將加密得到的正向索引文件和密文集合上傳至服務(wù)端;
步驟103,在服務(wù)端,根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表;
步驟104,在服務(wù)端,接收用戶(hù)上傳的查詢(xún)陷門(mén),其中,所述查詢(xún)陷門(mén)包括:關(guān)鍵詞陷門(mén)和文檔編號(hào)解密密鑰;
步驟105,判斷倒排索引表是否有與關(guān)鍵詞陷門(mén)一致的索引項(xiàng),若有,則以文檔編號(hào)解密密鑰對(duì)文檔編號(hào)密文進(jìn)行解密,根據(jù)解密結(jié)果,密文集合中的文檔按照關(guān)鍵詞與文檔的相關(guān)度從大到小進(jìn)行排序,結(jié)合關(guān)鍵詞位置信息,向用戶(hù)客戶(hù)端返回關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文和相應(yīng)的文檔編號(hào)密文;
步驟106,在用戶(hù)客戶(hù)端對(duì)文檔摘要密文進(jìn)行逐行解密,根據(jù)解密得到的摘要明文,選中至少一個(gè)文檔編號(hào)密文發(fā)送至服務(wù)端,服務(wù)端返回相應(yīng)的文檔密文至用戶(hù)客戶(hù)端;
步驟107,在用戶(hù)客戶(hù)端,對(duì)服務(wù)端返回的文檔密文進(jìn)行解密。
本發(fā)明實(shí)施例所述的基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法,在數(shù)據(jù)提供者客戶(hù)端建立文檔與關(guān)鍵詞的正向索引,對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件,并將加密后的正向索引文件發(fā)送至服務(wù)端;服務(wù)端根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表,從而通過(guò)利用服務(wù)端的計(jì)算能力減少了數(shù)據(jù)提供者客戶(hù)端的計(jì)算開(kāi)銷(xiāo);并結(jié)合關(guān)鍵詞在文檔中的位置信息,使得用戶(hù)在執(zhí)行查詢(xún)請(qǐng)求時(shí),服務(wù)端首先僅會(huì)返回符合用戶(hù)預(yù)查結(jié)果的前k個(gè)結(jié)果的摘要信息及和相應(yīng)的文檔編號(hào)密文,而不是全部結(jié)果的全部文檔密文,從而能夠大幅減少用戶(hù)客戶(hù)端與服務(wù)端之間的通信開(kāi)銷(xiāo)。
如圖2所示,實(shí)現(xiàn)本實(shí)施例所述的基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法需要相應(yīng)的系統(tǒng),所述系統(tǒng)可以包括:服務(wù)端、數(shù)據(jù)提供者客戶(hù)端、合法授權(quán)用戶(hù)客戶(hù)端(簡(jiǎn)稱(chēng):用戶(hù)客戶(hù)端),其中,所述數(shù)據(jù)提供者客戶(hù)端用于向服務(wù)端提供加密后的正向索引文件和密文集合;服務(wù)端根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表;所述用戶(hù)客戶(hù)端中的用戶(hù)指的是合法授權(quán)用戶(hù),所述合法授權(quán)用戶(hù)包括:數(shù)據(jù)提供者;所述用戶(hù)客戶(hù)端用于向服務(wù)端提交查詢(xún)陷門(mén),并接收服務(wù)端返回的密文信息,在整個(gè)過(guò)程中正向索引文件、倒排索引表、查詢(xún)陷門(mén)、密文文檔缺一不可,每個(gè)子項(xiàng)都有各自負(fù)責(zé)的工作,通過(guò)協(xié)議的有序進(jìn)行,使得用戶(hù)的密文查詢(xún)過(guò)程順序的進(jìn)行。
本實(shí)施例中,在數(shù)據(jù)提供者客戶(hù)端建立文檔與關(guān)鍵詞的正向索引的步驟包括:
如圖3所示,在數(shù)據(jù)提供者客戶(hù)端先統(tǒng)計(jì)出各個(gè)文檔中所含關(guān)鍵詞,建立文檔與關(guān)鍵詞的正向索引,如圖4所示,每一個(gè)正向索引項(xiàng)包括文檔編號(hào)idj、關(guān)鍵詞wi、關(guān)鍵詞位置信息loci,j、關(guān)鍵詞與文檔的相關(guān)度si,j,其中,i代表關(guān)鍵詞的下標(biāo),j代表文檔的下標(biāo),二者組合在一起時(shí)可鎖定某個(gè)文檔下的某個(gè)關(guān)鍵詞。
本實(shí)施例中,在統(tǒng)計(jì)關(guān)鍵詞時(shí),首先遍歷所有的文檔,然后以預(yù)定的規(guī)則提取文檔當(dāng)中的關(guān)鍵詞,例如,假設(shè)本實(shí)施例提供的文檔數(shù)據(jù)來(lái)源于rfc,該文檔數(shù)據(jù)為全英文字符組成,幾乎涵蓋了所有的互聯(lián)網(wǎng)通信協(xié)議,所以以換行符、空格符等特殊符號(hào)對(duì)文本單詞進(jìn)行分割,得到文檔的關(guān)鍵詞集合、相應(yīng)的關(guān)鍵詞詞頻、關(guān)鍵詞總數(shù)等信息,并根據(jù)關(guān)鍵詞詞頻、關(guān)鍵詞總數(shù)計(jì)算關(guān)鍵詞與文檔的相關(guān)度。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件,并對(duì)文檔明文進(jìn)行逐行加密,得到密文集合包括:
生成密鑰x、y、k;
利用密鑰x結(jié)合第一加密算法對(duì)關(guān)鍵詞wi進(jìn)行加密,生成c(wi);
采用保序加密算法對(duì)關(guān)鍵詞與文檔的相關(guān)度si,j進(jìn)行加密,生成c(si,j),其中,i代表關(guān)鍵詞的下標(biāo),j代表文檔的下標(biāo);
利用第二加密算法,結(jié)合密鑰y、關(guān)鍵詞wi、生成fy(wi),再以fy(wi)作為密鑰結(jié)合安全對(duì)稱(chēng)加密算法對(duì)文檔編號(hào)idj、關(guān)鍵詞位置信息loci,j、c(si,j)的拼接字符串進(jìn)行加密,得到c(idj+loci,j+c(si,j));
根據(jù)c(wi)和c(idj+loci,j+c(si,j)),生成正向索引文件,其中,正向索引文件中的每一個(gè)正向索引項(xiàng)包括:c(wi)和c(idj+loci,j+c(si,j));
利用密鑰k對(duì)文檔明文進(jìn)行逐行加密,得到密文集合。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述生成密鑰x、y、k包括:
利用隨機(jī)函數(shù)和隨機(jī)種子生成隨機(jī)字符串x1、y1、k1;
將x1作為輸入結(jié)合哈希函數(shù)sha-1生成密鑰x;
將y1、k1作為輸入結(jié)合哈希函數(shù)sha-256生成密鑰y、k,其中,y為256位密鑰,k為256位密鑰。
本實(shí)施例中,如圖5所示,生成密鑰x、y、k的具體步驟可以包括:先通過(guò)自定義的隨機(jī)函數(shù)random(·)和隨機(jī)種子生成隨機(jī)字符串x1、y1、k1,將隨機(jī)字符串x1作為輸入結(jié)合哈希函數(shù)sha-1生成密鑰x,因?yàn)閤是用于加密關(guān)鍵詞,一般而言,關(guān)鍵詞字符串長(zhǎng)度較短,為節(jié)省存儲(chǔ)開(kāi)銷(xiāo),可以選用sha-1生成160位的密鑰x。將y1、k1作為輸入結(jié)合哈希函數(shù)sha-256生成密鑰y、k(sha-256算法加密之后會(huì)生成256位的輸出結(jié)果),其中,y為256位密鑰,是因?yàn)樾枰ㄟ^(guò)對(duì)稱(chēng)加密算法aes256生成加密文檔編號(hào)的密鑰,而aes256是必須以256位的密鑰作為輸入的;其中,k為256位密鑰,是因?yàn)橛糜诩用芪臋n明文,考慮其安全性,選擇生成256位的密鑰,生成的密鑰x、y、k以文檔形式存儲(chǔ)在數(shù)據(jù)提供者客戶(hù)端和用戶(hù)客戶(hù)端當(dāng)中。
本實(shí)施例中,由數(shù)據(jù)提供者在數(shù)據(jù)提供者客戶(hù)端完成所有的加密操作,并上傳至服務(wù)端,需要進(jìn)行加密的包含5個(gè)部分:文檔關(guān)鍵詞wi、文檔編號(hào)idj、文檔與關(guān)鍵詞的相關(guān)度si,j、文檔明文,關(guān)鍵詞位置信息loci,j。
本實(shí)施例中,根據(jù)索引項(xiàng)中各子項(xiàng)的作用不同,選用不同的加密密鑰和加密函數(shù)對(duì)其進(jìn)行處理,如圖6所示,所述對(duì)建立的正向索引進(jìn)行加密得到加密后的正向索引文件具體步驟可以包括:
采用保序加密算法(orderpreservingencryption,ope)對(duì)關(guān)鍵詞與文檔的相關(guān)度si,j進(jìn)行加密,生成c(si,j),保序加密算法的特點(diǎn)在于,si,j加密之后在服務(wù)端可在其密文狀態(tài)下比較關(guān)鍵詞與文檔的相關(guān)度值之間的大小關(guān)系,對(duì)其依照大小順序進(jìn)行排序;利用密鑰x結(jié)合第一加密算法(例如,哈希運(yùn)算消息認(rèn)證算法hmac-sha1(該算法會(huì)輸出密鑰長(zhǎng)度為160位的哈希序列))對(duì)wi進(jìn)行加密,利用第二加密算法(例如,哈希函數(shù)簇中的hmac-sha256(該算法會(huì)輸出密鑰長(zhǎng)度為256位的哈希序列)),結(jié)合密鑰y、關(guān)鍵詞wi、生成fy(wi),再以fy(wi)作為密鑰結(jié)合安全對(duì)稱(chēng)加密算法(例如,aes256算法)對(duì)idj、loci,j、c(si,j)的拼接字符串進(jìn)行加密,具體如圖7所示,最終生成多個(gè)加密的正向索引文件,正向索引文件中的每一個(gè)正向索引項(xiàng)包括:c(wi)、c(idj+loci,j+c(si,j))。
本實(shí)施例中,出于安全方面的考慮,用256位的密鑰k結(jié)合aes256對(duì)文檔明文進(jìn)行逐行加密(這是改進(jìn)協(xié)議的重要一步,只有這樣才能使得服務(wù)端具備查詢(xún)摘要的能力),得到密文集合c,最后,將加密得到的正向索引文件和密文集合c一起上傳至服務(wù)端。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述在服務(wù)端,根據(jù)接收到的正向索引文件,創(chuàng)建密文形式的倒排索引表包括:
在服務(wù)端上,使用mapreduce并行計(jì)算模型對(duì)正向索引文件中的數(shù)據(jù)進(jìn)行整合,通過(guò)map函數(shù)接收<c(idj+loci,j+c(si,j)),c(wi)>形式的輸入,產(chǎn)生<c(wi),c(idj+loci,j+c(si,j))>形式的中間輸出;
通過(guò)reduce函數(shù)以中間輸出作為輸入,產(chǎn)生<c(wi),list(c(idj+loci,j+c(si,j)))>形式的輸出;
匯總reduce函數(shù)的輸出結(jié)果,得到倒排索引表,倒排索引表中的數(shù)據(jù)均為密文形式;
其中,<c(wi),list(c(idj+loci,j+c(si,j)))>中l(wèi)ist(·)表示相同關(guān)鍵詞下不同索引項(xiàng)之集合。
本實(shí)施例中,在服務(wù)端構(gòu)建倒排索引表,服務(wù)端接收數(shù)據(jù)提供者客戶(hù)端上傳的加密處理后的正向索引文件后,利用并行計(jì)算模型mapreduce(mapreduce是一個(gè)國(guó)外研發(fā)的計(jì)算框架,無(wú)中文名稱(chēng))對(duì)其進(jìn)行處理并最后轉(zhuǎn)化為倒排索引表。mapreduce將對(duì)大數(shù)據(jù)集的操作分發(fā)給一個(gè)主節(jié)點(diǎn)管理下的各個(gè)從節(jié)點(diǎn)共同完成,其中,主節(jié)點(diǎn)即負(fù)責(zé)所有任務(wù)分配的計(jì)算機(jī),從節(jié)點(diǎn)即完成主節(jié)點(diǎn)所分配任務(wù)的計(jì)算機(jī),然后通過(guò)整合各個(gè)節(jié)點(diǎn)的中間結(jié)果得到最終結(jié)果,mapreduce框架負(fù)責(zé)處理了并行計(jì)算當(dāng)中的分布式存儲(chǔ)、工作調(diào)度、負(fù)載均衡、容錯(cuò)均衡、容錯(cuò)處理以及網(wǎng)絡(luò)通信等復(fù)雜問(wèn)題,并把處理過(guò)程高度抽象為兩個(gè)函數(shù):map和reduce,map負(fù)責(zé)把任務(wù)分解成多個(gè)任務(wù),reduce負(fù)責(zé)把分解后多任務(wù)處理的結(jié)果匯總起來(lái)。
本實(shí)施例中,map函數(shù)接收<c(idj+loci,j+c(si,j)),c(wi)>形式的輸入(因?yàn)閙ap僅接受<key,value>形式輸入數(shù)據(jù),所以可以將idj、loci,j、c(si,j)之間用“+”號(hào)連接起來(lái),“+”號(hào)表示連接符),然后產(chǎn)生<c(wi),c(idj+loci,j+c(si,j))>形式的中間輸出,再通過(guò)reduce函數(shù)以中間輸出作為輸入,產(chǎn)生<c(wi),list(c(idj+loci,j+c(si,j)))>形式的輸出,如圖8所示,<c(wi),list(c(idj+loci,j+c(si,j)))>中l(wèi)ist(·)表示相同關(guān)鍵詞下不同索引項(xiàng)之集合,最后匯總所有的reduce結(jié)果,得到倒排索引表,倒排索引表中所有數(shù)據(jù)均為密文形式。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述在服務(wù)端,接收用戶(hù)上傳的查詢(xún)陷門(mén)之前,所述方法還包括:
在用戶(hù)客戶(hù)端,接收用戶(hù)提交的關(guān)鍵詞wi;
利用密鑰x結(jié)合第一加密算法對(duì)關(guān)鍵詞wi進(jìn)行加密,生成關(guān)鍵詞陷門(mén)c(wi);
利用第二加密算法,結(jié)合密鑰y、關(guān)鍵詞wi、生成文檔編號(hào)解密密鑰fy(wi);
根據(jù)生成的關(guān)鍵詞陷門(mén)c(wi)和文檔編號(hào)解密密鑰fy(wi),得到查詢(xún)陷門(mén)t={c(wi),fy(wi)}。
本實(shí)施例中,查詢(xún)陷門(mén)包括:關(guān)鍵詞陷門(mén)c(wi)和文檔編號(hào)解密密鑰fy(wi)兩部分,用戶(hù)客戶(hù)端根據(jù)用戶(hù)提交的要查詢(xún)的關(guān)鍵詞wi,利用第一加密算法,例如,哈希函數(shù)π:{0,1}k×{0,1}*→{0,1}p(其中,k、*表示參與計(jì)算的參數(shù)位數(shù),p表示計(jì)算之后的結(jié)果位數(shù)),結(jié)合密鑰x對(duì)用戶(hù)提交的關(guān)鍵字進(jìn)行加密,生成要查詢(xún)的關(guān)鍵詞陷門(mén)c(wi),并利用第二加密算法,例如,隨機(jī)函數(shù)f:{0,1}k×{0,1}*→{0,1}l(其中,k、*表示參與計(jì)算的參數(shù)位數(shù),l表示計(jì)算之后的結(jié)果位數(shù)),結(jié)合密鑰y和關(guān)鍵詞wi生成fy(wi),其中涉及到的具體算法與加密索引結(jié)構(gòu)時(shí)對(duì)應(yīng)的算法一致,將此c(wi)和fy(wi)一起上傳至服務(wù)端。
本實(shí)施例中,生成查詢(xún)陷門(mén)的操作由用戶(hù)客戶(hù)端完成,具體的,用戶(hù)在用戶(hù)客戶(hù)端提交關(guān)鍵詞wi,可以以x作為密鑰結(jié)合hmac-sha1算法生成c(wi)(加密方式與生成正向索引時(shí)使用的方法保持一致),利用哈希函數(shù)簇中的hmac-sha256算法,結(jié)合密鑰y、關(guān)鍵詞wi、生成fy(wi),最終生成查詢(xún)陷門(mén)t={c(wi),fy(wi)}并上傳至服務(wù)端,其中,在t中,c(wi)表示關(guān)鍵詞陷門(mén)和fy(wi)表示文檔編號(hào)解密密鑰。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述判斷倒排索引表是否有與關(guān)鍵詞陷門(mén)一致的索引項(xiàng),若有,則以文檔編號(hào)解密密鑰對(duì)文檔編號(hào)密文進(jìn)行解密,根據(jù)解密結(jié)果,密文集合中的文檔按照關(guān)鍵詞與文檔的相關(guān)度從大到小進(jìn)行排序,結(jié)合關(guān)鍵詞位置信息,向用戶(hù)客戶(hù)端返回關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文和相應(yīng)的文檔編號(hào)密文包括:
在服務(wù)端,將t={c(wi),fy(wi)}解析成t=(τ1,τ2),其中τ1=c(wi),τ2=fy(wi);
判斷倒排索引表中是否有與τ1一致的索引項(xiàng);
若有,則以τ2作為解密密鑰進(jìn)行解密,得到文檔編號(hào)密文對(duì)應(yīng)的明文idj,其中,每一個(gè)解密之后的文檔編號(hào)都對(duì)應(yīng)著關(guān)鍵詞與該文檔的相關(guān)度c(si,j);
密文集合中的文檔根據(jù)關(guān)鍵詞與文檔的相關(guān)度c(si,j)從大到小進(jìn)行排序,得到經(jīng)過(guò)排序的文檔;
根據(jù)排序后的文檔,服務(wù)端將關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文發(fā)送至用戶(hù)客戶(hù)端。
本實(shí)施例中,如圖9所示,服務(wù)端接收查詢(xún)陷門(mén)t={c(wi),fy(wi)}之后,將其解析成t=(τ1,τ2)(其中τ1=c(wi),τ2=fy(wi)),在倒排索引表中查詢(xún)是否有與τ1一致的索引項(xiàng),若有,則以τ2作為解密密鑰結(jié)合安全對(duì)稱(chēng)加密算法(例如,aes256)對(duì)<listc(idj)>進(jìn)行解密,得到文檔編號(hào)密文對(duì)應(yīng)的明文idj,每一個(gè)解密之后的文檔編號(hào)都對(duì)應(yīng)著關(guān)鍵詞與該文檔之間的相關(guān)度c(si,j),服務(wù)端再根據(jù)<list(c(si,j))>之間的數(shù)值大小關(guān)系進(jìn)行排序(因?yàn)閟i,j是由保序加密算法opm進(jìn)行加密的,所以c(si,j)即使是密文狀態(tài),仍然能保持大小關(guān)系),得到經(jīng)過(guò)排序的order<list(idj+c(si,j))>之后,服務(wù)端將返回相關(guān)度排名前k(在海量數(shù)量下,包含wi的文檔數(shù)較多,將所有的匹配結(jié)果全部返回不但會(huì)占用大量的通信帶寬,還會(huì)極大增加客戶(hù)端的解密時(shí)的計(jì)算開(kāi)銷(xiāo))的文檔摘要密文至用戶(hù)客戶(hù)端,其中,k值為預(yù)先設(shè)定的。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述根據(jù)排序后的文檔,服務(wù)端將關(guān)鍵詞與文檔的相關(guān)度排名前k的文檔摘要密文發(fā)送至用戶(hù)客戶(hù)端包括:
在服務(wù)端對(duì)關(guān)鍵詞位置信息loci,j進(jìn)行解密,并遍歷相應(yīng)的文檔,根據(jù)解密出來(lái)的行號(hào)將相應(yīng)的行密文取出,作為文檔摘要密文;
將文檔編號(hào)密文c(idj+loci,j+c(si,j))、相應(yīng)的文檔摘要密文返回至用戶(hù)客戶(hù)端。
本實(shí)施例中,因?yàn)榈古潘饕碇械男畔ǎ宏P(guān)鍵詞出現(xiàn)在文檔中的位置信息,服務(wù)端可以對(duì)所有的位置信息進(jìn)行解密,然后通過(guò)遍歷相關(guān)文檔,根據(jù)解密出來(lái)的行號(hào)將所有的相關(guān)“行密文”取出,作為文檔摘要密文,再將文檔編號(hào)密文c(idj+loci,j+c(si,j))、相應(yīng)的文檔摘要密文返回至用戶(hù)客戶(hù)端。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述在用戶(hù)客戶(hù)端對(duì)文檔摘要密文進(jìn)行逐行解密,根據(jù)解密得到的摘要明文,選中至少一個(gè)文檔編號(hào)密文發(fā)送至服務(wù)端,服務(wù)端返回相應(yīng)的文檔密文至用戶(hù)客戶(hù)端包括:
在用戶(hù)客戶(hù)端對(duì)文檔摘要密文進(jìn)行逐行解密,得到多條文檔摘要明文<idj,r(wi,j,n)>,其中,idj表示編號(hào)為j的文檔編號(hào),r(wi,j,n)表示編號(hào)為i的關(guān)鍵詞、出現(xiàn)在編號(hào)為j的文檔的第n行;
根據(jù)解密得到的多條文檔摘要明文,選中至少一個(gè)文檔編號(hào)密文發(fā)送至服務(wù)端;
服務(wù)端利用密鑰fy(wi)對(duì)接收到的所述至少一個(gè)文檔編號(hào)密文進(jìn)行解密,根據(jù)解密結(jié)果,返回相應(yīng)的文檔密文至用戶(hù)客戶(hù)端。
本實(shí)施例中,在用戶(hù)客戶(hù)端接收到服務(wù)端返回的文檔摘要密文之后,以密鑰k結(jié)合算法aes256對(duì)文檔摘要密文進(jìn)行逐行解密,這樣,用戶(hù)在用戶(hù)客戶(hù)端可以看到多條摘要明文<idj,r(wi,j,n)>,其中,r(wi,j,n)表示編號(hào)為i的關(guān)鍵詞、出現(xiàn)在編號(hào)為j的文檔的第n行,和常用的明文搜索引擎里返回的查詢(xún)摘要一致,用戶(hù)可以在用戶(hù)客戶(hù)端自行瀏覽;然后,用戶(hù)在用戶(hù)客戶(hù)端瀏覽文檔摘要明文后,可以選中一個(gè)或多個(gè)與自己需求最相關(guān)的文檔摘要,并查看與之匹配的文檔編號(hào)密文list<c(idj+loci,j+c(si,j))>(此時(shí)idj、loci,j、c(si,j)組合在一起是一個(gè)密文整體,無(wú)法單獨(dú)拆分返回),將list<c(idj+loci,j+c(si,j))>發(fā)送至服務(wù)端。
本實(shí)施例中,服務(wù)端接到用戶(hù)選擇的文檔編號(hào)密文list<c(idj+loci,j+c(si,j))>之后,通過(guò)使用密鑰fy(wi)對(duì)c(idj+loci,j+c(si,j))進(jìn)行解密得到idj,返回與之對(duì)應(yīng)的文檔密文至用戶(hù)客戶(hù)端。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述在用戶(hù)客戶(hù)端,對(duì)服務(wù)端返回的文檔密文進(jìn)行解密包括:
在用戶(hù)客戶(hù)端,利用密鑰k對(duì)服務(wù)端返回的文檔密文進(jìn)行解密。
本實(shí)施例中,在用戶(hù)客戶(hù)端得到服務(wù)端返回用戶(hù)指定的文檔對(duì)應(yīng)的文檔密文之后,用密鑰k結(jié)合算法ε:{0,1}l×{0,1}r→{0,1}l進(jìn)行解密,其中,l、r分別表示參與計(jì)算的參數(shù)位數(shù),由具體實(shí)驗(yàn)情況選定。
在前述基于5g通信標(biāo)準(zhǔn)的密文數(shù)據(jù)搜索方法的具體實(shí)施方式中,進(jìn)一步地,所述在用戶(hù)客戶(hù)端,對(duì)服務(wù)端返回的文檔密文進(jìn)行解密之后還包括:
若解密得到的文檔明文符合用戶(hù)的需求,則結(jié)束本次搜索;
若解密得到的文檔明文不符合用戶(hù)的需求,則再次向服務(wù)端發(fā)出選中的文檔編號(hào)密文。
本實(shí)施例中,用戶(hù)自行瀏覽解密后得到的文檔明文,若符合用戶(hù)的需求則結(jié)束本次搜索,若不符合用戶(hù)的需求,則再次向服務(wù)端發(fā)出指定的文檔編號(hào)密文集合list<c(idj+loci,j+c(si,j))>。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。