專利名稱:對加密倒排索引表進(jìn)行k匿名更新的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息更新技術(shù)領(lǐng)域,更具體地,涉及用于對加密倒排索引表進(jìn)行k匿名更新的方法和裝置。給定n行數(shù)據(jù)項(xiàng),每一行均具有作為索引的加密關(guān)鍵字、以及一個(gè)或多個(gè)加密數(shù)據(jù)項(xiàng)。假定選擇n行數(shù)據(jù)項(xiàng)中的一行作為將要修改的目標(biāo)行,即,要向該行中添加新的加密數(shù)據(jù)項(xiàng),或要從該行中刪除加密數(shù)據(jù)項(xiàng)。本發(fā)明的目的在于實(shí)現(xiàn)k匿名,即,在修改之前和之后觀察該n行數(shù)據(jù)項(xiàng)的好奇但誠實(shí)的攻擊方能夠識別出哪一行是目標(biāo)行的概率最多為1/k,這里k是預(yù)先定義的安全參數(shù)。
背景技術(shù):
目前出現(xiàn)兩種趨勢,即對保護(hù)個(gè)人隱私的普遍關(guān)注,以及向外部存儲服務(wù)器提供個(gè)人數(shù)據(jù)。在向外部存儲服務(wù)器提供個(gè)人數(shù)據(jù)的應(yīng)用中,由于保密和個(gè)人隱私等原因,所提供的文件以及建立于這些文件的倒排索引表都采用加密形式。加密倒排索引表(下面簡稱為“EIIT”)是一種典型的數(shù)據(jù)結(jié)構(gòu),由具有各種長度的多個(gè)無關(guān)行組成,便于半可信存儲服務(wù)器找到搜索方所指定的加密關(guān)鍵字的匹配結(jié)果。以專用加密關(guān)鍵字標(biāo)記的每一加密行包括與該關(guān)鍵字有關(guān)的所有加密文件信息。加密關(guān)鍵字的值被稱為“行標(biāo)識符”,行內(nèi)的加密文件信息被稱為“數(shù)據(jù)項(xiàng)”。
轉(zhuǎn)讓給相同申請人的名稱為“用于快速密文檢索的方法、裝置和系統(tǒng)”的另外兩個(gè)專利申請CN200810098359.1和CN200810145083.8描述了構(gòu)造加密倒排索引表(EIIT)的方法。EIIT可以包括成千上萬行。上述的n行是EIIT中的一部分或者是EIIT的所有行。
當(dāng)更新文件并向文件中添加新的關(guān)鍵字(或從文件中刪除關(guān)鍵字)時(shí),僅需更新EIIT中的唯一一行,即目標(biāo)行。
然而,僅更新EIIT的目標(biāo)行會使關(guān)鍵字和文件之間的關(guān)聯(lián)關(guān)系暴露于不可信的一方,即存儲有EIIT的存儲服務(wù)器。圖1以較為直觀的方式示出了這一問題。
在CN200810098359.1和CN200810145083.8中描述了一些被稱為“快速加密檢索方法(FSE)”的技術(shù)方案。這里結(jié)合圖2和圖3來概述該方案。圖2是解釋FSE方法和裝置的示意圖;圖3是示出了FSE方法和該方法如何更新加密行的示意圖。
(1)數(shù)據(jù)所有者首先根據(jù)要對加密目標(biāo)文件(ETD)執(zhí)行的更新,在存儲服務(wù)器中獲取所有希望的加密行,并輸出所獲取的行。
(2)對于加密行,數(shù)據(jù)所有者使用主密鑰對位于該行內(nèi)、數(shù)據(jù)所有者已知的預(yù)定位置處的特定項(xiàng)——E(主密鑰,行密鑰)——進(jìn)行解密,并獲得行密鑰;然后,數(shù)據(jù)所有者可以使用行密鑰獲得明文形式的數(shù)據(jù)項(xiàng)。
(3)對于要刪除的原始明文數(shù)據(jù)項(xiàng),數(shù)據(jù)所有者從該行中刪除該數(shù)據(jù)項(xiàng);和/或?qū)τ谝砑拥男碌拿魑臄?shù)據(jù)項(xiàng),數(shù)據(jù)所有者將其添加到該行中。
(4)數(shù)據(jù)所有者以明文形式的所有更新行和加密密鑰作為輸入,利用該加密密鑰對明文形式的更新行逐行進(jìn)行加密,利用主密鑰對與該加密密鑰對應(yīng)的解密密鑰(新的行密鑰)進(jìn)行加密以形成特定項(xiàng),輸出加密形式的更新行,然后,將加密形式的更新行上載到存儲服務(wù)器。
這種更新過程的一個(gè)明顯缺陷在于盡管都處于加密形式,但存儲服務(wù)器將獲知EIIT內(nèi)的更新行和ETD之間的引用關(guān)系。在最接近的現(xiàn)有技術(shù)中,即使在索引表已被加密的情況下,也可以通過比較修改之前和之后行的長度來揭示被修改文件(添加或刪除了數(shù)據(jù)項(xiàng))與加密索引表中的行之間的關(guān)系。從安全和保護(hù)個(gè)人隱私的觀點(diǎn)來看,這仍然存在潛在風(fēng)險(xiǎn)。
隨著更新次數(shù)的增加,上述問題將加劇,甚至將嚴(yán)重影響保密的目的。
發(fā)明內(nèi)容
假定選擇n行中的一行(下面將n行的集合稱為“大小為n行的行集合”,并簡稱為RS)作為一次修改的目標(biāo)行,即要向該目標(biāo)行中添加一個(gè)新的加密數(shù)據(jù)項(xiàng)或要從該目標(biāo)行中刪除一個(gè)加密數(shù)據(jù)項(xiàng),確保在修改之前和之后觀測該n行的好奇但誠實(shí)的攻擊方能夠識別出哪一行是目標(biāo)行的概率最多為1/k,這里k是預(yù)先定義的安全參數(shù) 較為直觀地講,可以通過在執(zhí)行更新時(shí),在每一行中引入偽數(shù)據(jù)項(xiàng)來實(shí)現(xiàn)該目標(biāo)。
根據(jù)本發(fā)明的第一方案,提供了一種對加密倒排索引表進(jìn)行k匿名更新的方法,包括從外部存儲設(shè)備中獲取n行加密數(shù)據(jù)項(xiàng);將所述n行加密數(shù)據(jù)項(xiàng)解密為n行解密數(shù)據(jù)項(xiàng);更新所述n行解密數(shù)據(jù)項(xiàng)中的一個(gè)目標(biāo)行,并對其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行執(zhí)行偽操作,以形成n行更新數(shù)據(jù)項(xiàng);將n行更新數(shù)據(jù)項(xiàng)加密為n行更新加密數(shù)據(jù)項(xiàng);以及將所述n行更新加密數(shù)據(jù)項(xiàng)上載到所述外部存儲設(shè)備,其中,n由預(yù)定安全參數(shù)k確定為n≥k,其中n和k是正整數(shù)。
優(yōu)選地,所述目標(biāo)行更新和偽操作執(zhí)行步驟包括在所述n行解密數(shù)據(jù)項(xiàng)中,將一個(gè)新的未加密數(shù)據(jù)項(xiàng)添加到所述目標(biāo)行,并向其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,所述目標(biāo)行更新和偽操作執(zhí)行步驟包括在所述n行解密數(shù)據(jù)項(xiàng)中,用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,在所述解密步驟之前,所述方法還包括確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行;如果所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行,則執(zhí)行所述解密步驟,其中所述目標(biāo)行更新和偽操作執(zhí)行步驟包括確定所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中是否存在至少一個(gè)偽數(shù)據(jù)項(xiàng);如果所述目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則用一個(gè)新的未加密數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)偽數(shù)據(jù)項(xiàng),并向從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng),其中n被確定為
更優(yōu)選地,所述方法還包括如果所述目標(biāo)行中沒有任何偽數(shù)據(jù)項(xiàng),則向所述目標(biāo)行添加所述一個(gè)新的未加密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,在所述解密步驟之前,所述方法還包括確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行;如果所有所述n行加密數(shù)據(jù)項(xiàng)都已初始化行,則執(zhí)行所述解密步驟,其中所述目標(biāo)行更新和偽操作執(zhí)行步驟包括用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并在從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的、具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行中刪除一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,所述方法還包括如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則執(zhí)行所述解密步驟,以及對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
優(yōu)選地,所述方法還包括如果所有所述n行加密數(shù)據(jù)項(xiàng)并不都是已初始化行,則從所述外部存儲設(shè)備中重新獲取其他n行加密數(shù)據(jù)項(xiàng)。
優(yōu)選地,重新獲取的其他n行加密數(shù)據(jù)項(xiàng)與先前獲取的n行加密數(shù)據(jù)項(xiàng)部分不同。
優(yōu)選地,所述方法還包括如果重新獲取的其他n行加密數(shù)據(jù)項(xiàng)連續(xù)不滿足所有n行加密數(shù)據(jù)項(xiàng)都是已初始化行的條件達(dá)預(yù)定次數(shù),則將所述n行加密數(shù)據(jù)項(xiàng)加密為n行解密數(shù)據(jù)項(xiàng),以及對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
優(yōu)選地,通過識別位于一行解密數(shù)據(jù)項(xiàng)中預(yù)定位置處的專用項(xiàng)來確定該行解密數(shù)據(jù)項(xiàng)是否是已初始化行。
優(yōu)選地,用于標(biāo)識未初始化行的專用項(xiàng)是E(主密鑰,行密鑰),而用于標(biāo)識已初始化行的專用項(xiàng)是E(主密鑰,行密鑰||$),其中符號“$”是用于區(qū)分未初始化行和已初始化行的專用符號。
優(yōu)選地,在所述加密步驟之前,所述方法還包括確定滿足下述條件的最大整數(shù)s所述n行更新數(shù)據(jù)中的每一行具有至少s個(gè)偽數(shù)據(jù)項(xiàng);確定是否滿足以下兩個(gè)條件1)和2)1)s-1≥1,以及2)所述n行更新數(shù)據(jù)項(xiàng)中每一行中的更新數(shù)據(jù)項(xiàng)的數(shù)目≥s+1;以及如果滿足上述兩個(gè)條件1)和2),則從所述n行更新數(shù)據(jù)項(xiàng)中的每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。
根據(jù)本發(fā)明的第二方案,提供了一種對加密倒排索引表進(jìn)行k匿名更新的裝置,包括獲取單元,用于從外部存儲設(shè)備中獲取n行加密數(shù)據(jù)項(xiàng);解密單元,用于將所述n行加密數(shù)據(jù)項(xiàng)解密為n行解密數(shù)據(jù)項(xiàng);更新單元,用于更新所述n行解密數(shù)據(jù)項(xiàng)中的一個(gè)目標(biāo)行,并對其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行執(zhí)行偽操作,以形成n行更新數(shù)據(jù)項(xiàng);加密單元,用于將n行更新數(shù)據(jù)項(xiàng)加密為n行更新加密數(shù)據(jù)項(xiàng);以及上載單元,用于將所述n行更新加密數(shù)據(jù)項(xiàng)上載到所述外部存儲設(shè)備,其中,n由預(yù)定安全參數(shù)k確定為n≥k,其中n和k是正整數(shù)。
優(yōu)選地,在所述n行解密數(shù)據(jù)項(xiàng)中,所述更新單元將一個(gè)新的未加密數(shù)據(jù)項(xiàng)添加到所述目標(biāo)行,并向其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,在所述n行解密數(shù)據(jù)項(xiàng)中,所述更新單元用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,所述裝置還包括初始化單元,用于確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行,其中如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則執(zhí)行初始化過程,否則,不執(zhí)行所述初始化過程,其中所述更新單元確定所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中是否存在至少一個(gè)偽數(shù)據(jù)項(xiàng),以及如果所述目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則用一個(gè)新的未加密數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)偽數(shù)據(jù)項(xiàng),并向從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng),其中n被確定為
更優(yōu)選地,如果所述目標(biāo)行中沒有任何偽數(shù)據(jù)項(xiàng),則所述更新單元向所述目標(biāo)行添加所述一個(gè)新的未加密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,所述裝置還包括初始化單元,用于確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行,其中如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則執(zhí)行初始化過程,否則,不執(zhí)行所述初始化過程,其中所述更新單元用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并在從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的、具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行中刪除一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
優(yōu)選地,如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則所述初始化單元對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
優(yōu)選地,如果所有所述n行加密數(shù)據(jù)項(xiàng)并不都是已初始化行,則所述獲取單元從所述外部存儲設(shè)備中重新獲取其他n行加密數(shù)據(jù)項(xiàng)。
優(yōu)選地,重新獲取的其他n行加密數(shù)據(jù)項(xiàng)與先前獲取的n行加密數(shù)據(jù)項(xiàng)部分不同。
優(yōu)選地,如果重新獲取的其他n行加密數(shù)據(jù)項(xiàng)連續(xù)不滿足所有n行加密數(shù)據(jù)項(xiàng)都是已初始化行的條件達(dá)預(yù)定次數(shù),則所述初始化單元對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
優(yōu)選地,所述初始化單元通過識別位于一行解密數(shù)據(jù)項(xiàng)中預(yù)定位置處的專用項(xiàng)來確定該行解密數(shù)據(jù)項(xiàng)是否是已初始化行。
優(yōu)選地,用于標(biāo)識未初始化行的專用項(xiàng)是E(主密鑰,行密鑰),而用于標(biāo)識已初始化行的專用項(xiàng)是E(主密鑰,行密鑰||$),其中符號“$”是用于區(qū)分未初始化行和已初始化行的專用符號。
優(yōu)選地,所述裝置還包括調(diào)整單元,用于確定滿足下述條件的最大整數(shù)s所述n行更新數(shù)據(jù)中的每一行具有至少s個(gè)偽數(shù)據(jù)項(xiàng),確定是否滿足以下兩個(gè)條件1)和2)1)s-1≥1,以及2)所述n行更新數(shù)據(jù)項(xiàng)中每一行中的更新數(shù)據(jù)項(xiàng)的數(shù)目≥s+1,以及如果滿足上述兩個(gè)條件1)和2),則從所述n行更新數(shù)據(jù)項(xiàng)中的每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。
根據(jù)本發(fā)明的一個(gè)具體實(shí)施例,在向目標(biāo)行添加一個(gè)新數(shù)據(jù)項(xiàng)的同時(shí),向其他n-1個(gè)偽行中的每一個(gè)添加一個(gè)偽數(shù)據(jù)項(xiàng)。因此,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,但所有n行的長度都增加1。在從目標(biāo)行中刪除一個(gè)加密數(shù)據(jù)項(xiàng)時(shí),用一個(gè)偽數(shù)據(jù)項(xiàng)替換目標(biāo)行中的加密數(shù)據(jù)項(xiàng),而其他n-1個(gè)偽行的長度都保持不變。因此,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,但是所有n行的長度都保持不變。因此,好奇但誠實(shí)的攻擊方可以識別RS的n行中的目標(biāo)行的概率最多為1/k,其中n被設(shè)置為n≥k。
根據(jù)本發(fā)明的另一具體實(shí)施例,在向目標(biāo)行添加一個(gè)新數(shù)據(jù)項(xiàng)時(shí),如果在目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則用該新數(shù)據(jù)項(xiàng)替換該偽數(shù)據(jù)項(xiàng),并向RS中的任意一行添加另一個(gè)偽數(shù)據(jù)項(xiàng)。另一方面,如果目標(biāo)行沒有偽數(shù)據(jù)項(xiàng),則簡單地將新數(shù)據(jù)項(xiàng)添加到目標(biāo)行,而不向其他n-1行添加額外的偽數(shù)據(jù)項(xiàng)。因此,在更新后的RS中,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,但是目標(biāo)行可能是增加了1項(xiàng)的一行(目標(biāo)行中沒有偽數(shù)據(jù)項(xiàng)),也可能是其他n-1行中的一行(目標(biāo)行中有至少一個(gè)偽數(shù)據(jù)項(xiàng))。也就是說,目標(biāo)行與更新后的RS內(nèi)的行長度改變沒有任何關(guān)系。在從目標(biāo)行中刪除加密數(shù)據(jù)項(xiàng)時(shí),用一個(gè)偽數(shù)據(jù)項(xiàng)替換目標(biāo)行中的加密數(shù)據(jù)項(xiàng);從RS中隨機(jī)地選擇具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行,從所選行中刪除一個(gè)偽數(shù)據(jù)項(xiàng)。對于上述刪除步驟而言,在最差情況下,在所獲取的n行中完全沒有偽數(shù)據(jù)項(xiàng),但是,由于在上述替換步驟中,一個(gè)新的偽數(shù)據(jù)項(xiàng)被引入目標(biāo)行,因此該方法不會在上述選擇步驟中發(fā)生意外的錯誤。也就是說,在該過程中總能找到具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行。因此,在更新后的RS中,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,目標(biāo)行可能是減少了一項(xiàng)的一行(所選行是目標(biāo)行),也可能是其他n-1行中的一行(所選行不是目標(biāo)行)。即,目標(biāo)行與更新后的RS內(nèi)的行長度改變沒有任何關(guān)系。
因此,好奇但誠實(shí)的攻擊方可以識別RS的n行中的目標(biāo)行的概率最多為1/k,其中對于添加而言,n被設(shè)置為
而對于刪除而言,n被設(shè)置為n≥k。此外,在保持相同的安全強(qiáng)度的同時(shí)引入了較少的偽數(shù)據(jù)項(xiàng),提高了空間效率。即,在本發(fā)明的另一具體實(shí)施例中,無論是添加一個(gè)新數(shù)據(jù)項(xiàng)還是刪除一個(gè)加密數(shù)據(jù)項(xiàng),偽數(shù)據(jù)項(xiàng)的數(shù)目保持不變。
根據(jù)本發(fā)明的再一具體實(shí)施例,如果滿足某些條件,可以進(jìn)一步提高空間效率。更具體地,假定s是當(dāng)前所有n行中偽數(shù)據(jù)項(xiàng)的共同數(shù)目,即每一行均包含至少s個(gè)偽數(shù)據(jù)項(xiàng)。如果s-1≥1且每一行的當(dāng)前長度至少為s+1,則可以從每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。因此,在保持相同安全強(qiáng)度的同時(shí),可以引入更少的偽數(shù)據(jù)項(xiàng)。
本發(fā)明使得好奇但誠實(shí)的攻擊方能夠從更新后的行集合中識別出目標(biāo)行的概率最多為1/k,這里k是給定的安全參數(shù)。
結(jié)合附圖,根據(jù)下面對本發(fā)明的非限制性實(shí)施例的詳細(xì)描述,本發(fā)明的上述及其他目的、特征和優(yōu)點(diǎn)將變得更加清楚,附圖中 圖1是示出了好奇但誠實(shí)的攻擊方如何找出修改行的示意圖; 圖2是解釋FSE方法和裝置的示意圖; 圖3是示出了FSE方法和裝置如何更新加密行的示意圖; 圖4和圖5是解釋根據(jù)本發(fā)明第一實(shí)施例的k匿名更新方法和裝置的示意圖; 圖6是示出了根據(jù)本發(fā)明第一實(shí)施例的k匿名更新方法和裝置如何更新加密行的示意圖; 圖7和圖8是解釋根據(jù)本發(fā)明第二實(shí)施例的k匿名更新方法和裝置的示意圖; 圖9是示出了根據(jù)本發(fā)明第二實(shí)施例的k匿名更新方法和裝置如何更新加密行的示意圖; 圖10和圖11是解釋根據(jù)本發(fā)明第三實(shí)施例的k匿名更新方法和裝置的示意圖;以及 圖12是示出了根據(jù)本發(fā)明第三實(shí)施例的k匿名更新方法和裝置如何更新加密行的示意圖。
具體實(shí)施例方式 下面,根據(jù)附圖描述本發(fā)明。在以下描述中,一些具體實(shí)施例僅用于描述目的,而不應(yīng)該理解為對本發(fā)明有任何限制,而只是本發(fā)明的示例。省略了常規(guī)結(jié)構(gòu)或構(gòu)造,以免導(dǎo)致對本發(fā)明的理解不清楚。
在k匿名更新的情況下,涉及兩方,即數(shù)據(jù)所有者和好奇但誠實(shí)的觀察者。在介紹具體的過程之前,首先定義一些特定符號和縮寫
k預(yù)定安全參數(shù),常數(shù)。
n參數(shù)n是為了滿足k匿名更新每次所要獲取的行的總數(shù),并且n還是行集合RS的大小。
好奇但誠實(shí)攻擊方將誠實(shí)地遵守預(yù)定過程,但是他/她對于的攻擊方窺探所保護(hù)的信息表現(xiàn)出好奇。
AIM以k匿名的方式添加數(shù)據(jù)項(xiàng)的方法。
DIM以k匿名的方式刪除數(shù)據(jù)項(xiàng)的方法。
EIIT加密倒排索引表。更具體地,EIIT由n行組成,每一行包括與指定的關(guān)鍵字有關(guān)的加密文件信息和/或一個(gè)或多個(gè)隨機(jī)數(shù)(偽數(shù)據(jù)項(xiàng)),并以從關(guān)鍵字和主密鑰計(jì)算出的隨機(jī)值來標(biāo)記每一行。
RS大小為n行的行集合,包含一個(gè)目標(biāo)行和n-1個(gè)偽行。
本發(fā)明包括三個(gè)實(shí)施例。下面,將給出對本發(fā)明的詳細(xì)描述。
[第一實(shí)施例] 關(guān)于第一實(shí)施例,對于給定的安全參數(shù)k,在行集合的大小(=n)被設(shè)置為n≥k時(shí),好奇但誠實(shí)的攻擊方從更新后的行集合RS中識別出目標(biāo)行的概率最多為1/k,其中n和k是正整數(shù)。
圖4和圖5是解釋根據(jù)本發(fā)明第一實(shí)施例的k匿名更新方法和裝置的示意圖。圖4示出了添加情況下的框圖,圖5示出了刪除情況下的框圖。
第一實(shí)施例中的AIM 在向目標(biāo)行添加一個(gè)新數(shù)據(jù)項(xiàng)的同時(shí),向其他n-1偽行中的每一行添加一個(gè)偽數(shù)據(jù)項(xiàng)。因此,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,但所有n行的長度都增加1。
對于第一實(shí)施例中添加一個(gè)新數(shù)據(jù)項(xiàng)的情況,下面結(jié)合圖4來描述各個(gè)組件。
(1)RS獲取單元,在外部存儲設(shè)備(不可信存儲設(shè)備-外部EIIT單元)中獲取加密形式的大小為n行的RS。
□n是根據(jù)給定值k計(jì)算的; □這里,給定值k對于RS獲取單元是預(yù)設(shè)的或由用戶輸入。
(2)密鑰存儲單元,存儲用于對RS內(nèi)的數(shù)據(jù)項(xiàng)進(jìn)行加密和解密的主密鑰。
(3)預(yù)處理單元,以所獲取的加密RS和主密鑰作為輸入,對RS內(nèi)的所有加密數(shù)據(jù)項(xiàng)進(jìn)行解密,并輸出明文形式的原始RS。在這一解密過程中,先利用主密鑰解密出行密鑰,再利用行密鑰解密出明文形式的原始RS。
(4)輸入數(shù)據(jù)項(xiàng)存儲單元,存儲要添加的新數(shù)據(jù)項(xiàng)。
(5)輸入RS存儲單元,存儲預(yù)處理單元的輸出。
(6)數(shù)據(jù)項(xiàng)插入單元,以要添加的數(shù)據(jù)項(xiàng)和明文形式的RS作為輸入,將該數(shù)據(jù)項(xiàng)添加到目標(biāo)行,輸出已將輸入數(shù)據(jù)項(xiàng)添加到目標(biāo)行的明文形式的RS。
(7)第一級RS存儲單元,存儲數(shù)據(jù)項(xiàng)插入單元的輸出。
(8)偽數(shù)據(jù)項(xiàng)插入單元,以更新后的RS作為輸入,將一個(gè)偽數(shù)據(jù)項(xiàng)添加到其他n-1偽行的每一行,并輸出輸入數(shù)據(jù)項(xiàng)已被添加到目標(biāo)行并且其他n-1偽行中的每一行都添加有一個(gè)偽數(shù)據(jù)項(xiàng)的明文形式的更新后的RS。
(9)第二級RS存儲單元,存儲偽數(shù)據(jù)項(xiàng)插入單元的輸出。
(10)后處理單元,以明文形式的更新后的RS以及主密鑰作為輸入,對更新后的RS內(nèi)的所有數(shù)據(jù)項(xiàng)逐行進(jìn)行重新加密,并輸出加密形式的更新后的RS。在這一加密過程中,首先利用加密密鑰(一個(gè)或多個(gè))對更新后的RS內(nèi)的各行內(nèi)的數(shù)據(jù)項(xiàng)進(jìn)行加密,然后利用主密鑰與各行所使用的加密密鑰對應(yīng)的解密密鑰(新的行密鑰)進(jìn)行加密以形成特定項(xiàng),從而形成加密形式的更新后的RS。
(11)更新RS存儲單元,存儲后處理單元的輸出。
(12)RS上載單元,以加密形式的大小為n行的更新后的RS作為輸入,將大小為n行的更新后的RS上載到外部存儲設(shè)備,并基于上載狀態(tài)來輸出真或假,即,如果上載成功則返回“真”;否則,返回“假”。
這里,主密鑰和/或行密鑰可以是對稱加密方案中使用的對稱密鑰、成對加密方案中使用的公鑰和私鑰對或公知的加密方案中使用的其他密鑰。在本發(fā)明中,加密/解密方案不受特定限制。
第一實(shí)施例中的DIM 在從目標(biāo)行中刪除一個(gè)加密數(shù)據(jù)項(xiàng)時(shí),用一個(gè)偽數(shù)據(jù)項(xiàng)替換目標(biāo)行中的加密數(shù)據(jù)項(xiàng),并且其他n-1偽行的長度都保持不變。因此,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,但是所有n行的長度都保持不變。
對于第一實(shí)施例中刪除一個(gè)無用數(shù)據(jù)項(xiàng)的情況,下面結(jié)合圖5來描述各個(gè)組件 (1)RS獲取單元、密鑰存儲單元、預(yù)處理單元、輸入RS存儲單元、第一級RS存儲單元、后處理單元、更新RS存儲單元和RS上載單元與第一實(shí)施例中添加一個(gè)新數(shù)據(jù)項(xiàng)的情況下的操作相同,已經(jīng)在第一實(shí)施例中的AIM中進(jìn)行了描述,因此為了簡明起見,省略關(guān)于這些單元的詳細(xì)描述。
(2)輸入數(shù)據(jù)項(xiàng)存儲單元,存儲要刪除的數(shù)據(jù)項(xiàng)。
(3)數(shù)據(jù)項(xiàng)置換單元,以要刪除的數(shù)據(jù)項(xiàng)和明文形式的RS作為輸入,對要刪除的數(shù)據(jù)項(xiàng)進(jìn)行定位并用一個(gè)偽數(shù)據(jù)項(xiàng)替換目標(biāo)行中的該數(shù)據(jù)項(xiàng),然后輸出已經(jīng)用一個(gè)偽數(shù)據(jù)項(xiàng)替換了要刪除的數(shù)據(jù)項(xiàng)的明文形式的更新后的RS。
第一實(shí)施例的示例 圖6是示出了根據(jù)本發(fā)明第一實(shí)施例的k匿名更新方法和裝置如何更新加密行的示意圖。因此,可以以更為直觀的方式來理解根據(jù)第一實(shí)施例的添加一個(gè)新數(shù)據(jù)項(xiàng)和刪除一個(gè)數(shù)據(jù)項(xiàng)的情況。
與最接近的現(xiàn)有技術(shù)相比,對于給定的安全參數(shù)k,在RS的大小(=n)被設(shè)置為n≥k時(shí),好奇但誠實(shí)的攻擊方從更新后的RS中識別出目標(biāo)行的概率最多為1/k。
[第二實(shí)施例] 在添加一個(gè)新數(shù)據(jù)項(xiàng)的情況下,在第一實(shí)施例中,將增加n-1個(gè)偽數(shù)據(jù)項(xiàng);在刪除一個(gè)加密數(shù)據(jù)項(xiàng)的情況下,在第一實(shí)施例中,將增加一個(gè)偽數(shù)據(jù)項(xiàng)。為了提高空間效率,應(yīng)該在保持相同的安全強(qiáng)度的前提下,引入較少的偽數(shù)據(jù)項(xiàng)。
在第二實(shí)施例中,為了滿足對于給定的安全參數(shù)k,好奇但誠實(shí)的攻擊方從更新后的RS中識別出目標(biāo)行的概率最多為1/k,對于添加而言,將RS的大小(=n)設(shè)置為
而對于刪除而言,將RS的大小設(shè)置為n≥k。這里,n和k是正整數(shù),e是數(shù)學(xué)常數(shù)(也稱為“歐拉常數(shù)”,e≈2.71828),
是上取整函數(shù),
表示大于或等于X的最小整數(shù)。
圖7和圖8是解釋根據(jù)本發(fā)明第二實(shí)施例的k匿名更新方法和裝置的示意圖。圖7示出了添加情況下的框圖,圖8示出了刪除情況下的框圖。
第二實(shí)施例中的AIM 在向目標(biāo)行添加一個(gè)新數(shù)據(jù)項(xiàng)時(shí),如果在目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則用新數(shù)據(jù)項(xiàng)替換該偽數(shù)據(jù)項(xiàng),并且向RS中的任意一行添加另一個(gè)偽數(shù)據(jù)項(xiàng)。另一方面,如果目標(biāo)行沒有偽數(shù)據(jù)項(xiàng),則簡單地將新數(shù)據(jù)項(xiàng)添加到目標(biāo)行,而不向其他n-1行添加額外的偽數(shù)據(jù)項(xiàng)。因此,在更新后的RS中,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,但是目標(biāo)行可能是增加了一項(xiàng)的一行(目標(biāo)行沒有偽數(shù)據(jù)項(xiàng)),也可能是其他n-1行中的一行(目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng))。也就是說,目標(biāo)行與更新后的RS內(nèi)的行長度改變沒有任何關(guān)系。
對于第二實(shí)施例中添加一個(gè)新數(shù)據(jù)項(xiàng)的情況,下面結(jié)合圖7來描述各個(gè)組件 (1)RS獲取單元、密鑰存儲單元、預(yù)處理單元、輸入數(shù)據(jù)項(xiàng)存儲單元、輸入RS存儲單元、第一級RS存儲單元、更新RS存儲單元、后處理單元以及RS上載單元與第一實(shí)施例中添加一個(gè)新數(shù)據(jù)項(xiàng)的情況下的操作相同,已經(jīng)在第一實(shí)施例中的AIM中進(jìn)行了描述,因此為了簡明起見,省略關(guān)于這些單元的詳細(xì)描述。
(2)數(shù)據(jù)項(xiàng)插入單元,以要添加的數(shù)據(jù)項(xiàng)和明文形式的RS作為輸入,如果目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則用輸入數(shù)據(jù)項(xiàng)替換目標(biāo)行中的一個(gè)偽數(shù)據(jù)項(xiàng),否則直接將輸入數(shù)據(jù)項(xiàng)添加到目標(biāo)行。數(shù)據(jù)項(xiàng)插入單元輸出通過置換或直接添加已經(jīng)將新數(shù)據(jù)項(xiàng)添加到目標(biāo)行的明文形式的更新后的RS。
(3)偽數(shù)據(jù)項(xiàng)插入控制單元,記錄在數(shù)據(jù)項(xiàng)插入單元中是否進(jìn)行了置換,并輸出關(guān)于該狀態(tài)的真或假,即,如果進(jìn)行了置換,則輸出“真”;否則,輸出“假”。
(4)偽數(shù)據(jù)項(xiàng)插入單元,以明文形式的更新后的RS作為輸入,如果進(jìn)行了置換(即偽數(shù)據(jù)項(xiàng)插入控制單元輸出“真”),則從RS中隨機(jī)地選擇一行,并將一個(gè)偽數(shù)據(jù)項(xiàng)添加到所選行;否則(即偽數(shù)據(jù)項(xiàng)插入控制單元輸出“假”),偽數(shù)據(jù)項(xiàng)插入單元對數(shù)據(jù)項(xiàng)插入單元輸出的明文形式的更新后的RS不進(jìn)行任何動作。偽數(shù)據(jù)項(xiàng)插入單元輸出添加了另一個(gè)偽數(shù)據(jù)項(xiàng)的明文形式的更新后的RS。
(5)第二級RS存儲單元,存儲偽數(shù)據(jù)項(xiàng)插入單元的輸出。
第二實(shí)施例中的DIM 在從目標(biāo)行刪除一個(gè)加密數(shù)據(jù)項(xiàng)時(shí),用一個(gè)偽數(shù)據(jù)項(xiàng)替換目標(biāo)行中的加密數(shù)據(jù)項(xiàng);從RS中隨機(jī)地選擇具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行,然后從所選行中刪除一個(gè)偽數(shù)據(jù)項(xiàng)。對于上述刪除步驟而言,在最差情況下,在所獲取的n行中完全沒有偽數(shù)據(jù)項(xiàng),但是,由于在上述替換步驟中,一個(gè)新的偽數(shù)據(jù)項(xiàng)被引入目標(biāo)行,因此該方法不會在上述選擇步驟中發(fā)生意外的錯誤。也就是說,在該過程中總能找到具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行。因此,在更新后的RS中,盡管所有n行中的加密數(shù)據(jù)都發(fā)生了改變,目標(biāo)行可能是減少了一項(xiàng)的一行(所選行是目標(biāo)行),也可能是其他n-1行中的一行(所選行不是目標(biāo)行)。即,目標(biāo)行與更新后的RS內(nèi)的行長度改變沒有任何關(guān)系。
對于第二實(shí)施例中刪除一個(gè)無用數(shù)據(jù)項(xiàng)的情況,下面結(jié)合圖8來描述各個(gè)組件 (1)RS獲取單元、密鑰存儲單元、預(yù)處理單元、輸入數(shù)據(jù)項(xiàng)存儲單元、輸入RS存儲單元、數(shù)據(jù)項(xiàng)置換單元、第一級RS存儲單元、更新RS存儲單元、后處理單元以及RS上載單元與第一實(shí)施例中刪除一個(gè)加密數(shù)據(jù)項(xiàng)的情況下的操作相同,已經(jīng)在第一實(shí)施例中的DIM中進(jìn)行了描述,因此為了簡明起見,省略關(guān)于這些單元的詳細(xì)描述。
(2)偽數(shù)據(jù)項(xiàng)刪除單元,以明文形式的更新后的RS作為輸入,從RS中隨機(jī)地選擇具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行,并從所選行中刪除一個(gè)偽數(shù)據(jù)項(xiàng)。偽數(shù)據(jù)項(xiàng)刪除單元輸出已經(jīng)用一個(gè)偽數(shù)據(jù)項(xiàng)替換了要刪除的數(shù)據(jù)項(xiàng)并且已經(jīng)從RS中隨機(jī)選擇的一行中刪除了另一個(gè)偽數(shù)據(jù)項(xiàng)(也可以是同一個(gè)偽數(shù)據(jù)項(xiàng))的明文形式的更新后的RS。
(3)第二級RS存儲單元,存儲偽數(shù)據(jù)項(xiàng)刪除單元的輸出。
第二實(shí)施例的示例 圖9是示出了根據(jù)本發(fā)明第二實(shí)施例的k匿名更新方法和裝置如何更新加密行的示意圖。因此,可以以更為直觀的方式來理解根據(jù)第二實(shí)施例的添加一個(gè)新數(shù)據(jù)項(xiàng)和刪除一個(gè)數(shù)據(jù)項(xiàng)的情況。
與第一實(shí)施例相比,第二實(shí)施例提高了空間效率。無論是添加一個(gè)新數(shù)據(jù)項(xiàng)還是刪除加密數(shù)據(jù)項(xiàng),所添加的偽數(shù)據(jù)項(xiàng)的數(shù)目都是零,即保持固定不變。此外,對于給定的安全參數(shù)k,對于添加而言,將RS的大小(=n)設(shè)置為
而對于刪除而言,將RS的大小設(shè)置為n≥k,好奇但誠實(shí)的攻擊方從更新后的RS中識別出目標(biāo)行的概率最多為1/k。這里,
表示大于或等于X的最小整數(shù)。
此外,在第二實(shí)施例的AIM或DIM中,引入初始化過程以確保首次執(zhí)行初始化后的每一行的長度不小于2,且所獲取的RS(n行)中的所有行都已初始化。
初始化過程 在每一行中,可以使用特殊項(xiàng)E(主密鑰,行密鑰)來標(biāo)識對該行是否已經(jīng)進(jìn)行了初始化過程。例如,通過引入專用符號“$”將E(主密鑰,行密鑰)擴(kuò)展為E(主密鑰,行密鑰||$)。項(xiàng)目E(主密鑰,行密鑰)表示該行是未初始化行,而項(xiàng)目E(主密鑰,行密鑰||$)表示該行是已初始化行。假定EIIT中總共有m行,則初始化過程可以描述如下 (1)對于給定的安全參數(shù)k,計(jì)算出
如果m≥n,則轉(zhuǎn)向步驟(2),否則退出初始化過程。
(2)針對所獲取的n行,逐一檢查每一行是否是已初始化行。如果是未初始化行,則添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將E(主密鑰,行密鑰)改變?yōu)镋(主密鑰,行密鑰||$);否則,保持該行不變。
(3)如果已經(jīng)根據(jù)步驟(2),對大小為n行的RS中的所有行都進(jìn)行了處理,則轉(zhuǎn)向第二實(shí)施例的AIM或DIM。
對于第一次執(zhí)行第二實(shí)施例的AIM或DIM,將執(zhí)行上述步驟(1)~(3)。但是,對于第二次執(zhí)行和任意后續(xù)執(zhí)行第二實(shí)施例的AIM或DIM,可以省略上述步驟(1)。
也就是說,在第二實(shí)施例的AIM或DIM中,首先獲取(加密的)n行。然后,確定是否所有(加密的)n行都是已初始化行。如果是,則開始第二實(shí)施例的AIM或DIM。否則,對于每個(gè)未初始化行,將至少一個(gè)偽數(shù)據(jù)項(xiàng)添加到(解密的)該行,并且(立即或稍后)將添加了偽數(shù)據(jù)項(xiàng)的該行標(biāo)記為已初始化行。因此,當(dāng)?shù)诙?shí)施例的AIM或DIM開始時(shí),所獲取的所有n行都是已初始化行。另一方面,當(dāng)所獲取的n行并不都是已初始化行時(shí),可以重新獲取其他n行(可以部分與先前獲取的n行不同),而不立即執(zhí)行初始化過程。為了避免持續(xù)重新獲取不停止,預(yù)先定義一個(gè)次數(shù)(例如,3次或5次),以便在重新獲取的其他n行連續(xù)不滿足所有n行都是已初始化行的條件達(dá)到預(yù)先定義的次數(shù)時(shí),執(zhí)行初始化過程。
因此,在上述初始化過程之后,每一行的長度不小于2,并且所獲取的RS(n行)中的所有行都已被初始化。對于第一次進(jìn)行AIM或DIM,所有n行(每一行具有至少一個(gè)數(shù)據(jù)項(xiàng))都沒有偽數(shù)據(jù)項(xiàng),因此針對每一行執(zhí)行初始化過程,從而n行都被初始化,并且首次執(zhí)行初始化后的每一行的長度將不小于2。對于第二實(shí)施例中的AIM或DIM的后續(xù)執(zhí)行而言,首先初始化未經(jīng)初始化的每一行,以便仍然滿足上述條件。
[第三實(shí)施例] 在第二實(shí)施例中,無論是添加一個(gè)新數(shù)據(jù)項(xiàng)還是刪除一個(gè)加密數(shù)據(jù)項(xiàng),偽數(shù)據(jù)項(xiàng)的數(shù)目都保持不變。如果滿足特定條件,可以進(jìn)一步提高空間效率。除了下面附加的調(diào)整過程之外,第三實(shí)施例的關(guān)鍵思想與第二實(shí)施例相同。
調(diào)整過程 假定s是當(dāng)前所有n行中偽數(shù)據(jù)項(xiàng)的公共數(shù)目,即每一行均包含至少s個(gè)偽數(shù)據(jù)項(xiàng)。如果s-1≥1且每一行的當(dāng)前長度至少為s+1,則從每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。
在調(diào)整過程之后,各行仍然滿足該行是目標(biāo)行的概率最多為1/k。
圖10和圖11是解釋根據(jù)本發(fā)明第三實(shí)施例的k匿名更新方法和裝置的示意圖。圖10示出了添加情況下的框圖,圖11示出了刪除情況下的框圖。
與圖7和圖8相比,在圖10和圖11中的每一幅中僅添加了兩個(gè)用于執(zhí)行調(diào)整過程的模塊,即調(diào)整單元和第三級RS存儲單元。因此,僅詳細(xì)解釋這兩個(gè)模塊,而其他模塊與第二實(shí)施例中的模塊相同,因此為了簡明起見,省略關(guān)于這些組件的詳細(xì)解釋。
(1)調(diào)整單元,以明文形式的更新后的RS作為輸入,執(zhí)行以下操作 假定s是當(dāng)前所有n行中偽數(shù)據(jù)項(xiàng)的公共數(shù)目, 即每一行均包含至少s個(gè)偽數(shù)據(jù)項(xiàng)。如果s-1≥1且每一行的當(dāng)前長度至少為s+1,則調(diào)整單元從每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。
調(diào)整單元輸出已進(jìn)行了調(diào)整的明文形式的更新后的RS。
(2)第三級存儲單元,存儲已進(jìn)行了調(diào)整的明文形式的更新后的RS。
第三實(shí)施例的示例 圖12是示出了根據(jù)本發(fā)明第三實(shí)施例的k匿名更新方法和裝置如何更新加密行的示意圖。因此,可以以更為直觀的方式來理解根據(jù)第三實(shí)施例的添加一個(gè)新數(shù)據(jù)項(xiàng)和刪除一數(shù)據(jù)項(xiàng)的情況中的調(diào)整過程。
與第二實(shí)施例相比,第三實(shí)施例進(jìn)一步提高了空間效率。無論是添加一個(gè)新數(shù)據(jù)項(xiàng)還是刪除加密數(shù)據(jù)項(xiàng),所添加的偽數(shù)據(jù)項(xiàng)的數(shù)目最多為零,而不再是保持不變。
盡管以上描述涉及多個(gè)單元,但是通過將一個(gè)單元劃分為多個(gè)單元或?qū)⒍鄠€(gè)單元組合為一個(gè)單元,只要其仍能執(zhí)行相應(yīng)的功能,也可以實(shí)現(xiàn)本發(fā)明。
以上描述僅給出了本發(fā)明的優(yōu)選實(shí)施例,而并不是要以任何方式限制本發(fā)明。因此,在本發(fā)明精神和原理內(nèi)進(jìn)行的任何修改、替換、改進(jìn)等應(yīng)該由本發(fā)明范圍所涵蓋。
權(quán)利要求
1.一種對加密倒排索引表進(jìn)行k匿名更新的方法,包括
從外部存儲設(shè)備中獲取n行加密數(shù)據(jù)項(xiàng);
將所述n行加密數(shù)據(jù)項(xiàng)解密為n行解密數(shù)據(jù)項(xiàng);
更新所述n行解密數(shù)據(jù)項(xiàng)中的一個(gè)目標(biāo)行,并對其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行執(zhí)行偽操作,以形成n行更新數(shù)據(jù)項(xiàng);
將n行更新數(shù)據(jù)項(xiàng)加密為n行更新加密數(shù)據(jù)項(xiàng);以及
將所述n行更新加密數(shù)據(jù)項(xiàng)上載到所述外部存儲設(shè)備,
其中,n由預(yù)定安全參數(shù)k確定為n≥k,其中n和k是正整數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述目標(biāo)行更新和偽操作執(zhí)行步驟包括
在所述n行解密數(shù)據(jù)項(xiàng)中,將一個(gè)新的未加密數(shù)據(jù)項(xiàng)添加到所述目標(biāo)行,并向其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
3.根據(jù)權(quán)利要求1所述的方法,其中所述目標(biāo)行更新和偽操作執(zhí)行步驟包括
在所述n行解密數(shù)據(jù)項(xiàng)中,用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
4.根據(jù)權(quán)利要求1所述的方法,在所述解密步驟之前,還包括
確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行;
如果所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行,則
執(zhí)行所述解密步驟,
其中
所述目標(biāo)行更新和偽操作執(zhí)行步驟包括
確定所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中是否存在至少一個(gè)偽數(shù)據(jù)項(xiàng);
如果所述目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則
用一個(gè)新的未加密數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)偽數(shù)據(jù)項(xiàng),并向從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng),
其中n被確定為
5.根據(jù)權(quán)利要求4所述的方法,還包括
如果所述目標(biāo)行中沒有任何偽數(shù)據(jù)項(xiàng),則
向所述目標(biāo)行添加所述一個(gè)新的未加密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
6.根據(jù)權(quán)利要求1所述的方法,在所述解密步驟之前,還包括
確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行;
如果所有所述n行加密數(shù)據(jù)項(xiàng)都已初始化行,則
執(zhí)行所述解密步驟,
其中
所述目標(biāo)行更新和偽操作執(zhí)行步驟包括
用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并在從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的、具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行中刪除一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
7.根據(jù)權(quán)利要求4~6之一所述的方法,還包括
如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則
執(zhí)行所述解密步驟,以及
對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
8.根據(jù)權(quán)利要求7所述的方法,其中通過識別位于一行解密數(shù)據(jù)項(xiàng)中預(yù)定位置處的專用項(xiàng)來確定該行解密數(shù)據(jù)項(xiàng)是否是已初始化行。
9.根據(jù)權(quán)利要求8所述的方法,其中用于標(biāo)識未初始化行的專用項(xiàng)是E(主密鑰,行密鑰),而用于標(biāo)識已初始化行的專用項(xiàng)是E(主密鑰,行密鑰||$),其中符號“$”是用于區(qū)分未初始化行和已初始化行的專用符號。
10.根據(jù)權(quán)利要求4~6之一所述的方法,還包括
如果所有所述n行加密數(shù)據(jù)項(xiàng)并不都是已初始化行,則
從所述外部存儲設(shè)備中重新獲取其他n行加密數(shù)據(jù)項(xiàng)。
11.根據(jù)權(quán)利要求10所述的方法,其中重新獲取的其他n行加密數(shù)據(jù)項(xiàng)與先前獲取的n行加密數(shù)據(jù)項(xiàng)部分不同。
12.根據(jù)權(quán)利要求10或11所述的方法,還包括
如果重新獲取的其他n行加密數(shù)據(jù)項(xiàng)連續(xù)不滿足所有n行加密數(shù)據(jù)項(xiàng)都是已初始化行的條件達(dá)預(yù)定次數(shù),則
將所述n行加密數(shù)據(jù)項(xiàng)加密為n行解密數(shù)據(jù)項(xiàng),以及
對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
13.根據(jù)權(quán)利要求12所述的方法,其中通過識別位于一行解密數(shù)據(jù)項(xiàng)中預(yù)定位置處的專用項(xiàng)來確定該行解密數(shù)據(jù)項(xiàng)是否是已初始化行。
14.根據(jù)權(quán)利要求13所述的方法,其中用于標(biāo)識未初始化行的專用項(xiàng)是E(主密鑰,行密鑰),而用于標(biāo)識已初始化行的專用項(xiàng)是E(主密鑰,行密鑰||$),其中符號“$”是用于區(qū)分未初始化行和已初始化行的專用符號。
15.根據(jù)權(quán)利要求4~14之一所述的方法,在所述加密步驟之前,還包括
確定滿足下述條件的最大整數(shù)s所述n行更新數(shù)據(jù)中的每一行具有至少s個(gè)偽數(shù)據(jù)項(xiàng);
確定是否滿足以下兩個(gè)條件1)和2)
1)s-1≥1,以及
2)所述n行更新數(shù)據(jù)項(xiàng)中每一行中的更新數(shù)據(jù)項(xiàng)的數(shù)目≥s+1;以及
如果滿足上述兩個(gè)條件1)和2),則從所述n行更新數(shù)據(jù)項(xiàng)中的每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。
16.一種對加密倒排索引表進(jìn)行k匿名更新的裝置,包括
獲取單元,用于從外部存儲設(shè)備中獲取n行加密數(shù)據(jù)項(xiàng);
解密單元,用于將所述n行加密數(shù)據(jù)項(xiàng)解密為n行解密數(shù)據(jù)項(xiàng);
更新單元,用于更新所述n行解密數(shù)據(jù)項(xiàng)中的一個(gè)目標(biāo)行,并對其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行執(zhí)行偽操作,以形成n行更新數(shù)據(jù)項(xiàng);
加密單元,用于將n行更新數(shù)據(jù)項(xiàng)加密為n行更新加密數(shù)據(jù)項(xiàng);以及
上載單元,用于將所述n行更新加密數(shù)據(jù)項(xiàng)上載到所述外部存儲設(shè)備,
其中,n由預(yù)定安全參數(shù)k確定為n≥k,其中n和k是正整數(shù)。
17.根據(jù)權(quán)利要求16所述的裝置,其中在所述n行解密數(shù)據(jù)項(xiàng)中,所述更新單元將一個(gè)新的未加密數(shù)據(jù)項(xiàng)添加到所述目標(biāo)行,并向其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
18.根據(jù)權(quán)利要求16所述的裝置,其中在所述n行解密數(shù)據(jù)項(xiàng)中,所述更新單元用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
19.根據(jù)權(quán)利要求16所述的裝置,還包括
初始化單元,用于確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行,其中如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則執(zhí)行初始化過程,否則,不執(zhí)行所述初始化過程,
其中
所述更新單元確定所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中是否存在至少一個(gè)偽數(shù)據(jù)項(xiàng),以及如果所述目標(biāo)行中存在至少一個(gè)偽數(shù)據(jù)項(xiàng),則
用一個(gè)新的未加密數(shù)據(jù)項(xiàng)替換所述目標(biāo)行中的一個(gè)偽數(shù)據(jù)項(xiàng),并向從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的一行添加一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng),
其中n被確定為
20.根據(jù)權(quán)利要求19所述的裝置,其中
如果所述目標(biāo)行中沒有任何偽數(shù)據(jù)項(xiàng),則所述更新單元
向所述目標(biāo)行添加所述一個(gè)新的未加密數(shù)據(jù)項(xiàng),并保持其他n-1行解密數(shù)據(jù)項(xiàng)不變,以形成所述n行更新數(shù)據(jù)項(xiàng)。
21.根據(jù)權(quán)利要求16所述的裝置,還包括
初始化單元,用于確定是否所有所述n行加密數(shù)據(jù)項(xiàng)都是已初始化行,其中如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則執(zhí)行初始化過程,否則,不執(zhí)行所述初始化過程,
其中
所述更新單元用一個(gè)偽數(shù)據(jù)項(xiàng)替換所述n行解密數(shù)據(jù)項(xiàng)中的所述目標(biāo)行中的一個(gè)解密數(shù)據(jù)項(xiàng),并在從所述n行解密數(shù)據(jù)項(xiàng)中隨機(jī)選出的、具有至少一個(gè)偽數(shù)據(jù)項(xiàng)的一行中刪除一個(gè)偽數(shù)據(jù)項(xiàng),以形成所述n行更新數(shù)據(jù)項(xiàng)。
22.根據(jù)權(quán)利要求19~21之一所述的裝置,其中
如果所有所述n行解密數(shù)據(jù)項(xiàng)并不都是已初始化行,則所述初始化單元
對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
23.根據(jù)權(quán)利要求22所述的裝置,其中所述初始化單元通過識別位于一行解密數(shù)據(jù)項(xiàng)中預(yù)定位置處的專用項(xiàng)來確定該行解密數(shù)據(jù)項(xiàng)是否是已初始化行。
24.根據(jù)權(quán)利要求23所述的裝置,其中用于標(biāo)識未初始化行的專用項(xiàng)是E(主密鑰,行密鑰),而用于標(biāo)識已初始化行的專用項(xiàng)是E(主密鑰,行密鑰||$),其中符號“$”是用于區(qū)分未初始化行和已初始化行的專用符號。
25.根據(jù)權(quán)利要求19~21之一所述的裝置,其中
如果所有所述n行加密數(shù)據(jù)項(xiàng)并不都是已初始化行,則所述獲取單元
從所述外部存儲設(shè)備中重新獲取其他n行加密數(shù)據(jù)項(xiàng)。
26.根據(jù)權(quán)利要求25所述的裝置,其中重新獲取的其他n行加密數(shù)據(jù)項(xiàng)與先前獲取的n行加密數(shù)據(jù)項(xiàng)部分不同。
27.根據(jù)權(quán)利要求25或26所述的裝置,其中
如果重新獲取的其他n行加密數(shù)據(jù)項(xiàng)連續(xù)不滿足所有n行加密數(shù)據(jù)項(xiàng)都是已初始化行的條件達(dá)預(yù)定次數(shù),則所述初始化單元
對于每一未初始化行,執(zhí)行下述初始化過程在對所述未初始化行解密得到的一行解密數(shù)據(jù)項(xiàng)中添加至少一個(gè)偽數(shù)據(jù)項(xiàng),并將所述未初始化行標(biāo)記為已初始化行。
28.根據(jù)權(quán)利要求27所述的裝置,其中所述初始化單元通過識別位于一行解密數(shù)據(jù)項(xiàng)中預(yù)定位置處的專用項(xiàng)來確定該行解密數(shù)據(jù)項(xiàng)是否是已初始化行。
29.根據(jù)權(quán)利要求28所述的裝置,其中用于標(biāo)識未初始化行的專用項(xiàng)是E(主密鑰,行密鑰),而用于標(biāo)識已初始化行的專用項(xiàng)是E(主密鑰,行密鑰||$),其中符號“$”是用于區(qū)分未初始化行和已初始化行的專用符號。
30.根據(jù)權(quán)利要求19~29之一所述的裝置,還包括
調(diào)整單元,用于確定滿足下述條件的最大整數(shù)s所述n行更新數(shù)據(jù)中的每一行具有至少s個(gè)偽數(shù)據(jù)項(xiàng),確定是否滿足以下兩個(gè)條件1)和2)
1)s-1≥1,以及
2)所述n行更新數(shù)據(jù)項(xiàng)中每一行中的更新數(shù)據(jù)項(xiàng)的數(shù)目≥s+1,以及
如果滿足上述兩個(gè)條件1)和2),則從所述n行更新數(shù)據(jù)項(xiàng)中的每一行中刪除s-1個(gè)偽數(shù)據(jù)項(xiàng)。
全文摘要
本發(fā)明提出了一種對加密倒排索引表進(jìn)行k匿名更新的方法和裝置。所述方法包括從外部存儲設(shè)備中獲取n行加密數(shù)據(jù)項(xiàng);將所述n行加密數(shù)據(jù)項(xiàng)解密為n行解密數(shù)據(jù)項(xiàng);更新所述n行解密數(shù)據(jù)項(xiàng)中的一個(gè)目標(biāo)行,并對其他n-1行解密數(shù)據(jù)項(xiàng)中的每一行執(zhí)行偽操作,以形成n行更新數(shù)據(jù)項(xiàng);將n行更新數(shù)據(jù)項(xiàng)加密為n行更新加密數(shù)據(jù)項(xiàng);以及將所述n行更新加密數(shù)據(jù)項(xiàng)上載到所述外部存儲設(shè)備,其中,n由預(yù)定安全參數(shù)k確定為n≥k,其中n和k是正整數(shù)。
文檔編號G06F17/30GK101788985SQ20091000973
公開日2010年7月28日 申請日期2009年1月23日 優(yōu)先權(quán)日2009年1月23日
發(fā)明者雷浩, 曾珂, 福島俊一, 田野, 王利明 申請人:日電(中國)有限公司