本技術(shù)涉及數(shù)據(jù)安全,特別涉及一種基于片上壓縮和數(shù)據(jù)高效重構(gòu)的數(shù)據(jù)存儲(chǔ)方法。
背景技術(shù):
1、由于互聯(lián)網(wǎng)中大量移動(dòng)智能設(shè)備的互聯(lián)互通,產(chǎn)生了海量的數(shù)據(jù),當(dāng)大量個(gè)人數(shù)據(jù)需要外包給云計(jì)算時(shí),保護(hù)敏感和私有數(shù)據(jù)對(duì)許多應(yīng)用程序來說至關(guān)重要。在當(dāng)今智能化社會(huì)中,人們通過機(jī)器學(xué)習(xí)遠(yuǎn)程收集、存儲(chǔ)和處理大量的個(gè)人數(shù)據(jù)來進(jìn)行模型訓(xùn)練以便達(dá)到最終所需目標(biāo),但是一個(gè)重要的問題是這些數(shù)據(jù)可能被泄露或被惡意服務(wù)器濫用,因此,為了保護(hù)存儲(chǔ)中數(shù)據(jù)的安全性,必須重視數(shù)據(jù)內(nèi)容機(jī)密性的保護(hù)。
2、intel和amd等領(lǐng)先公司已采用高級(jí)加密標(biāo)準(zhǔn)計(jì)數(shù)器模式(advanced?encryptionstandard?counter?mode,?aes-ctr)作為其首選內(nèi)存加密方案。aes-ctr可以對(duì)加密密鑰流進(jìn)行預(yù)計(jì)算,便于并行處理,減少有效的加解密延遲,防止存儲(chǔ)中的敏感信息暴露、侵犯和損害隱私。然而一個(gè)關(guān)鍵的挑戰(zhàn)來自于將version?number(vn)存儲(chǔ)在內(nèi)存中并保持其完整性的必要性。沒有完整的vns,數(shù)據(jù)無法準(zhǔn)確解密。因此,為了保障完整性,aes-ctr就需要消息認(rèn)證碼,哈希函數(shù)等額外的機(jī)制來維護(hù),但這不僅增加了存儲(chǔ)需求,而且由于每次內(nèi)存訪問所涉及的復(fù)雜驗(yàn)證過程而導(dǎo)致相當(dāng)大的延遲。雖然aes-ctr解決了數(shù)據(jù)內(nèi)容的加密問題,但是僅僅使用加密是不足的,數(shù)據(jù)訪問模式仍然可能被泄露,攻擊者可以通過客戶對(duì)數(shù)據(jù)的查詢次數(shù)以及查詢路徑中,從中推斷出一些敏感信息。
3、現(xiàn)有技術(shù)中,通常采用不經(jīng)意隨機(jī)訪問機(jī)oram(oblivious?random?accessmachine),用來保護(hù)存儲(chǔ)中的數(shù)據(jù)以及訪問模式從而緩解這種安全問題。oram是保護(hù)存儲(chǔ)數(shù)據(jù)訪問模式的最有效的加密原語之一,通過混淆對(duì)內(nèi)存的訪問模式來工作,這樣每次訪問看起來都是隨機(jī)的,并且在計(jì)算上與其他訪問無法區(qū)分。然而oram的實(shí)用性受到其顯著的性能開銷的阻礙,即使是當(dāng)前最流行的樹形結(jié)構(gòu)之一的path?oram只需要一半的虛擬塊存儲(chǔ)容量,但與非oram內(nèi)存訪問相比,其性能也下降幾個(gè)數(shù)量級(jí)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)是鑒于上述問題而進(jìn)行的,其目的在于,提供一種基于片上壓縮和數(shù)據(jù)高效重構(gòu)的數(shù)據(jù)存儲(chǔ)方法,將原始數(shù)據(jù)分為多個(gè)互不相干的份額,如果外部攻擊者獲得其中一些份額將無法得知原始數(shù)據(jù),大大加強(qiáng)了數(shù)據(jù)內(nèi)容的機(jī)密性;在訪問的過程中只需要從內(nèi)存中獲取k個(gè)份額中的隨機(jī)t個(gè)份額來重構(gòu)多項(xiàng)式,并且加上d個(gè)份額的混淆給訪問過程帶來了不確定性和隨機(jī)性,提高了數(shù)據(jù)訪問模式的安全性減少了訪問模式保護(hù)過程的一系列開銷;通過對(duì)映射表中的每個(gè)數(shù)據(jù)所對(duì)應(yīng)的k個(gè)份額的地址進(jìn)行動(dòng)態(tài)壓縮來減少映射表的存儲(chǔ)開銷,增加片上空間的拓展,降低片上存儲(chǔ)開銷。
2、具體如下,本技術(shù)的第一方面提供了一種基于片上壓縮和數(shù)據(jù)高效重構(gòu)的數(shù)據(jù)存儲(chǔ)方法,包括以下步驟:
3、步驟一:當(dāng)外部數(shù)據(jù)需要寫入存儲(chǔ)時(shí),先將原始數(shù)據(jù)傳輸?shù)狡峡刂破鳎缓筮M(jìn)行數(shù)據(jù)分割,把原始數(shù)據(jù)劃分為~段;
4、步驟二:以分割后的數(shù)據(jù)段作為部分系數(shù)生成一個(gè)包含原始數(shù)據(jù)的n項(xiàng)多項(xiàng)式,并保存所述多項(xiàng)式的系數(shù),多項(xiàng)式表示如下:
5、;
6、其中:~為分割后的原始數(shù)據(jù);~為偽隨機(jī)數(shù)生成器和控制器中系數(shù)種子組合而成的系數(shù);
7、將多項(xiàng)式的系數(shù)保存起來的作用為用于后續(xù)的數(shù)據(jù)重構(gòu)和數(shù)據(jù)完整性驗(yàn)證。
8、步驟三:生成所述多項(xiàng)式后,通過偽隨機(jī)數(shù)生成器生成~共k個(gè)隨機(jī)值代入步驟二所述多項(xiàng)式中,得到~共k個(gè)多項(xiàng)式值,將兩者組合得到~共k個(gè)份額;
9、步驟四:把得到的k個(gè)份額存儲(chǔ)到內(nèi)存,映射表需要把k個(gè)份額與對(duì)應(yīng)的原始數(shù)據(jù)記錄下來,并對(duì)所述k個(gè)份額的地址進(jìn)行動(dòng)態(tài)壓縮操作;
10、映射表需要把k個(gè)份額與對(duì)應(yīng)的原始數(shù)據(jù)記錄下來,即每個(gè)數(shù)據(jù)至少對(duì)應(yīng)k個(gè)份額,這與傳統(tǒng)一對(duì)一的映射關(guān)系相比帶來的存儲(chǔ)開銷更加昂貴且限制片上空間拓展,對(duì)此映射表對(duì)記錄的份額位置進(jìn)行動(dòng)態(tài)壓縮操作來減少其占據(jù)的存儲(chǔ)空間。
11、步驟五:當(dāng)需要讀取或更新該數(shù)據(jù)時(shí),先從映射表中查看該數(shù)據(jù)所對(duì)應(yīng)的份額所在存儲(chǔ)中的位置,取k個(gè)份額中的t個(gè),并讀取無關(guān)的d個(gè)份額,取出的份額以{~}的形式存儲(chǔ)在stash中;
12、步驟六:以保存的系數(shù)~,以及從stash中獲取w個(gè)份額分別代入步驟二所述多項(xiàng)式中,通過barycentric插值理論的公式求解得到完整的前w項(xiàng)系數(shù),公式如下:
13、求解公式:
14、;
15、解得系數(shù)后重構(gòu)多項(xiàng)式:
16、;
17、其中:~為由求解公式得到的前w項(xiàng)系數(shù);
18、~為步驟二中保存的多項(xiàng)式系數(shù);
19、步驟七:多項(xiàng)式重構(gòu)后,對(duì)數(shù)據(jù)的完整性進(jìn)行驗(yàn)證,驗(yàn)證通過則將求得的前w項(xiàng)系數(shù)~重組為原始數(shù)據(jù),正常進(jìn)行讀寫或更新操作,否則返回?cái)?shù)據(jù)錯(cuò)誤。
20、進(jìn)一步地,所述片上控制器,主要是處理數(shù)據(jù)的區(qū)域,在計(jì)算機(jī)中該區(qū)域往往是受到保護(hù)的,正常情況下進(jìn)行任何操作都不會(huì)向外部泄露隱私信息,能夠安全處理數(shù)據(jù)。
21、進(jìn)一步地,所述動(dòng)態(tài)壓縮操作,具體包括:
22、步驟一:映射表會(huì)記錄原始數(shù)據(jù)對(duì)應(yīng)的k個(gè)份額在存儲(chǔ)中不同數(shù)據(jù)塊的不同偏移量,來自相同數(shù)據(jù)的k個(gè)份額必須存儲(chǔ)在k個(gè)不同數(shù)據(jù)塊中;
23、由于為了防止訪問模式等重要信息泄露,內(nèi)存中會(huì)設(shè)置數(shù)據(jù)塊來存儲(chǔ)份額,一個(gè)份額通常占據(jù)16b,因此一個(gè)數(shù)據(jù)塊設(shè)置存儲(chǔ)k個(gè)份額。并且一個(gè)原始數(shù)據(jù)對(duì)應(yīng)份額不能存儲(chǔ)在同一個(gè)數(shù)據(jù)塊中,即來自相同數(shù)據(jù)的k個(gè)份額必須存儲(chǔ)在k個(gè)不同數(shù)據(jù)塊中。
24、步驟二:根據(jù)偏移量對(duì)數(shù)據(jù)塊進(jìn)行編碼,以及數(shù)據(jù)塊內(nèi)部的份額所在位置偏移量也用二進(jìn)制進(jìn)行編碼并記錄,最終記錄的值用二進(jìn)制數(shù)對(duì)來表示;
25、步驟三:根據(jù)數(shù)對(duì)中‘0/1’二進(jìn)制的連續(xù)性來對(duì)該數(shù)對(duì)進(jìn)行動(dòng)態(tài)壓縮,用計(jì)數(shù)器記錄該數(shù)對(duì)中‘0’連續(xù)出現(xiàn)的重復(fù)數(shù)和‘1’連續(xù)出現(xiàn)的重復(fù)數(shù);
26、步驟四:設(shè)置壓縮閾值作為判斷是否可壓縮的標(biāo)準(zhǔn),如果計(jì)數(shù)器記錄的重復(fù)值或比壓縮閾值大則可以進(jìn)行壓縮,用或化為對(duì)應(yīng)的二進(jìn)制作為其壓縮值,否則不能進(jìn)行壓縮并保留原值。
27、進(jìn)一步地,所述動(dòng)態(tài)壓縮操作完成后,需要判斷壓縮值是否包含初始值,壓縮值包含初始值,則不需要在前面額外添加標(biāo)識(shí),而如果壓縮值不包含初始值,則需要將原先初始值的第一位進(jìn)行取反再添加到壓縮值的首位來進(jìn)行標(biāo)識(shí)此次壓縮,構(gòu)成最終的數(shù)值。
28、進(jìn)一步地,所述讀取無關(guān)的d個(gè)份額的作用為混淆訪問模式。
29、進(jìn)一步地,所述k、t、w的關(guān)系為k>t>w。
30、進(jìn)一步地,所述對(duì)數(shù)據(jù)的完整性進(jìn)行驗(yàn)證,具體包括:由于從存儲(chǔ)中取出的t個(gè)份額都是被同一個(gè)多項(xiàng)式所分解出去的,因此將剩下的(t-w)個(gè)份額代入已經(jīng)重構(gòu)的多項(xiàng)式中進(jìn)行驗(yàn)證,如果(t-w)個(gè)份額中每個(gè)經(jīng)過計(jì)算得到的新的都與原份額中的相同,那么則說明數(shù)據(jù)未被泄露和篡改,反之則說明被泄露或者篡改。
31、第二方面,本技術(shù)還提供了一種計(jì)算裝置,該計(jì)算裝置具有實(shí)現(xiàn)上述第一方面所描述的方法的功能,有益效果可以參見第一方面的描述,此處不再贅述。功能可以通過硬件實(shí)現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。硬件或軟件包括一個(gè)或多個(gè)與上述功能相對(duì)應(yīng)的模塊。在一個(gè)可能的設(shè)計(jì)中,裝置的結(jié)構(gòu)中包括獲取模塊、訓(xùn)練模塊,可選的,還可包括構(gòu)建模塊。這些模塊可以實(shí)現(xiàn)上述第一方面方法示例中訓(xùn)練節(jié)點(diǎn)的功能,具體參見方法示例中的詳細(xì)描述,此處不做贅述。
32、第三方面,本技術(shù)還提供了一種計(jì)算設(shè)備,該計(jì)算設(shè)備用于實(shí)現(xiàn)上述第一方面描述的方法的功能,有益效果可以參見第一方面的描述此處不再贅述。該計(jì)算設(shè)備的結(jié)構(gòu)中包括處理器和存儲(chǔ)器,存儲(chǔ)器用于存儲(chǔ)指令和/或數(shù)據(jù)。存儲(chǔ)器與處理器耦合,處理器執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的程序指令時(shí),可以實(shí)現(xiàn)上述第一方面示例中訓(xùn)練節(jié)點(diǎn)的功能。計(jì)算設(shè)備的結(jié)構(gòu)中還包括通信接口,用于與其他設(shè)備進(jìn)行通信。
33、第四方面,本技術(shù)還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述第一方面以及第一方面的各個(gè)可能的設(shè)計(jì)中的方法。
34、第五方面,本技術(shù)還提供一種包含指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述第一方面以及第一方面的各個(gè)可能的設(shè)計(jì)中的方法。
35、第六方面,本技術(shù)還提供一種計(jì)算芯片,芯片與存儲(chǔ)器相連,芯片用于讀取并執(zhí)行存儲(chǔ)器中存儲(chǔ)的軟件程序,執(zhí)行上述第一方面以及第一方面的各個(gè)可能的實(shí)現(xiàn)方式中的方法。