基于可配置密鑰的數(shù)據(jù)混排和加密的制作方法
【專利摘要】本發(fā)明的各實施方式總體上涉及一種基于可配置密鑰的數(shù)據(jù)混排和加密。具體地,一種數(shù)據(jù)混排和加密系統(tǒng)可以包括用于存儲密鑰的數(shù)據(jù)存儲裝置以及用于對輸入數(shù)據(jù)序列進行混排和編碼的編碼模塊。混排和編碼可以包括確定n維空間并且用輸入數(shù)據(jù)序列填充n維空間??梢詰?yīng)用準隨機函數(shù)以對n維空間進行采樣,并且可以使用采樣作為進入n維空間的索引以確定來自n維空間的輸出數(shù)據(jù)序列。
【專利說明】基于可配置密鑰的數(shù)據(jù)混排和加密
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的各實施方式總體上涉及信息安全領(lǐng)域。具體地,涉及一種基于可配置密鑰的數(shù)據(jù)混排和加密。
【背景技術(shù)】
[0002]尤其鑒于個人越來越愿意向其它方提供他們的保密信息并且比如在云計算系統(tǒng)上的共享數(shù)據(jù)存儲日益普及,數(shù)據(jù)安全正在變得重要。例如,個人允許在線零售商存儲他們的信用卡信息或者同意允許社交媒體站點將他們的信息用于營銷或者其它動機并不罕見。為了保護個人,對數(shù)據(jù)進行匿名化并且在安全數(shù)據(jù)存儲裝置中存儲數(shù)據(jù)并不罕見。
【發(fā)明內(nèi)容】
[0003]根據(jù)本發(fā)明的一個實施例,提供了一種數(shù)據(jù)混排和加密系統(tǒng),例如可以包括:數(shù)據(jù)存儲裝置,用于存儲密鑰;以及編碼模塊,由處理器執(zhí)行以對輸入數(shù)據(jù)序列進行混排和加密。其中混排和加密可以包括:基于密鑰確定η維空間,其中η > O ;用輸入數(shù)據(jù)序列填充η維空間;應(yīng)用準隨機函數(shù)以對η維空間進行采樣以確定采樣;并且使用采樣作為進入η維空間的索引以確定來自η維空間的輸出數(shù)據(jù)序列。
[0004]根據(jù)本發(fā)明的另一實施例,提供了一種對輸入數(shù)據(jù)序列進行編碼的方法,例如可以包括:接收輸入數(shù)據(jù)序列;并且對輸入數(shù)據(jù)序列進行混排和加密。其中混排和加密可以包括:確定η維空間,其中η > O ;用輸入數(shù)據(jù)序列填充η維空間;由處理器應(yīng)用準隨機函數(shù)以對η維空間進行采樣以確定采樣;并且使用采樣作為進入η維空間的索引以確定來自η維空間的輸出數(shù)據(jù)序列。
[0005]根據(jù)本發(fā)明的又一實施例,提供了一種包括機器可讀指令的非瞬態(tài)計算機可讀介質(zhì),該機器可讀指令可以由至少一個處理器可執(zhí)行以:確定η維空間,其中η>0 ;用輸入數(shù)據(jù)序列填充η維空間;應(yīng)用準隨機函數(shù)以對η維空間進行采樣以確定采樣;并且使用采樣作為進入η維空間的索引以確定來自η維空間的輸出數(shù)據(jù)序列。
【專利附圖】
【附圖說明】
[0006]在以下描述中參照在附圖中示出的示例詳細描述實施例。
[0007]圖1A至圖1B圖示數(shù)據(jù)混排和加密系統(tǒng)的示例。
[0008]圖1C圖示數(shù)據(jù)混排和加密系統(tǒng)的框圖的示例。
[0009]圖1D圖示數(shù)據(jù)混排和加密系統(tǒng)在數(shù)據(jù)存檔系統(tǒng)中的示例。
[0010]圖2圖示用于數(shù)據(jù)混排和加密的過程的示例。
[0011]圖3圖示用于數(shù)據(jù)混排和加密的過程的示例。
[0012]圖4圖示用于具有填充的數(shù)據(jù)混排和加密的過程的示例。
[0013]圖5圖示用于具有填充的數(shù)據(jù)解混排和解密的過程的示例。
[0014]圖6圖示用于數(shù)據(jù)混排和加密的方法的示例。
[0015]圖7圖示用于具有填充的數(shù)據(jù)解混排和解密的方法的示例。
[0016]圖8圖示可以用于方法和系統(tǒng)的計算機系統(tǒng)的示例。
[0017]圖9示出如下圖的示例,該圖圖示在可配置參數(shù)之間的逆關(guān)系。
【具體實施方式】
[0018]出于簡化和示例目的,通過主要參照實施例的示例來描述它們的原理。在以下描述中,闡述許多具體細節(jié)以便提供實施例的透徹理解。清楚的是可以實現(xiàn)實施例而不限于所有具體細節(jié)。同樣,可以在各種組合中一起使用實施例。
[0019]根據(jù)一個實施例,一種數(shù)據(jù)混排和加密系統(tǒng)將多維準隨機采樣用于基于密鑰的數(shù)據(jù)混排以生成加密和混排的輸出數(shù)據(jù)序列。在向數(shù)據(jù)混排和加密系統(tǒng)提供的輸入數(shù)據(jù)序列中的兩個近旁元素可以在作為數(shù)據(jù)序列從數(shù)據(jù)混排和加密系統(tǒng)輸出的生成的排列中遠離。數(shù)據(jù)混排和加密系統(tǒng)可以動態(tài)配置參數(shù)以基于用戶要求來提供匿名和安全程度。
[0020]數(shù)據(jù)混排和加密系統(tǒng)同時對輸入數(shù)據(jù)進行混排和加密。加密例如是以如果不能例如用所需函數(shù)和/或數(shù)據(jù)、比如密鑰對信息進行解密就不能理解它這樣的方式對信息進行編碼的過程。混排可以包括混排在輸入數(shù)據(jù)序列中的元素,因此它們按照不同順序。根據(jù)一個實施例,混排在輸入數(shù)據(jù)序列中的連續(xù)元素,因此它們在輸出數(shù)據(jù)序列中未在彼此近旁并且被加密,因為不能根據(jù)查看混排的輸出數(shù)據(jù)序列來確定輸入數(shù)據(jù)序列。這里描述的數(shù)據(jù)混排和加密一般稱為混排和加密過程,因為它實現(xiàn)輸入數(shù)據(jù)序列的混排和加密二者。然而,根據(jù)這里描述的一個或者多個實施例執(zhí)行的混排和加密過程是實現(xiàn)混排和加密二者的單個過程。相似地,解混排和解密是實現(xiàn)解混排和解密的單個過程。數(shù)據(jù)混排和加密也可以對整個輸入序列進行混排和加密或者將它拆分成可以個別混排和加密的組塊。
[0021 ] 混排和加密可以基于密鑰。密鑰大小可以獨立于輸入序列的長度。
[0022]數(shù)據(jù)混排和加密系統(tǒng)可以提供用于多種應(yīng)用的數(shù)據(jù)安全和匿名。例如,系統(tǒng)可以用于數(shù)據(jù)存儲、存檔或者其中期望數(shù)據(jù)私密和安全的任何應(yīng)用。
[0023]圖1A至圖1B示出可以用于數(shù)據(jù)混排和加密并且也用于解密和稱為解混排的逆混排的數(shù)據(jù)混排和加密系統(tǒng)100。例如,圖1A示出輸入數(shù)據(jù)序列110,數(shù)據(jù)混排和加密系統(tǒng)100可以對該輸入數(shù)據(jù)序列進行加密和混排以生成既加密又混排的輸出數(shù)據(jù)序列120??梢韵驍?shù)據(jù)混排和加密系統(tǒng)100提供可配置參數(shù)111以設(shè)置加密的序列120的匿名和安全級。圖1B示出數(shù)據(jù)混排和加密系統(tǒng)100可以對輸出數(shù)據(jù)序列進行解密和解混排以重建輸入數(shù)據(jù)序列110。密鑰113用于如以下進一步描述的加密和解密過程。密鑰113例如是用來對輸入數(shù)據(jù)序列110進行加密和混排并且也是為了對輸出數(shù)據(jù)序列120進行解密和解混排而需要的任何信息。
[0024]圖1C示出數(shù)據(jù)混排和加密系統(tǒng)100的框圖。例如,編碼模塊130可以根據(jù)以下描述的過程和方法執(zhí)行如以下進一步描述的混排/解混排和加密/解密。數(shù)據(jù)分組塊器131可以將輸入數(shù)據(jù)序列HO分割成用于加密和混排的組塊。編碼配置器132實施可配置參數(shù)111以設(shè)置用于加密和混排的匿名和安全級。數(shù)據(jù)存儲裝置133可以存儲用于編碼過程的信息、比如可配置參數(shù)111和密鑰113以及可能為了混排和加密以及解混排和解密而需要的任何其它信息。數(shù)據(jù)存儲裝置133可以包括非易失性存儲裝置并且可以被保護以防止對密鑰的未授權(quán)訪問。數(shù)據(jù)混排和加密系統(tǒng)100的部件可以包括硬件、軟件或者硬件與軟件的組合。
[0025]圖1D示出在數(shù)據(jù)存檔系統(tǒng)150中使用數(shù)據(jù)混排和加密系統(tǒng)100的一個實施例。例如,數(shù)據(jù)存檔系統(tǒng)150從可以執(zhí)行企業(yè)應(yīng)用的企業(yè)應(yīng)用服務(wù)器1-η接收數(shù)據(jù),這些企業(yè)應(yīng)用生成可能需要存檔的數(shù)據(jù)。數(shù)據(jù)存檔系統(tǒng)150將數(shù)據(jù)存檔在存檔服務(wù)器151上。數(shù)據(jù)存檔系統(tǒng)150可以包括存檔控制器155和存檔策略模塊156。存檔策略模塊156實施用于存檔的策略。策略可以指示需要對什么數(shù)據(jù)進行存檔和/或策略可以指示什么數(shù)據(jù)需要在它被存檔之前被數(shù)據(jù)混排和加密系統(tǒng)100加密和混排。如果將對數(shù)據(jù)進行混排和加密,則存檔系統(tǒng)155向數(shù)據(jù)混排和加密系統(tǒng)100發(fā)送數(shù)據(jù),然后在存檔服務(wù)器151中對混排和加密的數(shù)據(jù)進行存檔。存檔可以包括在存檔服務(wù)器中存儲數(shù)據(jù)或者數(shù)據(jù)的版本。存檔控制器155也可以負責恢復(fù)存檔的數(shù)據(jù)以及存檔。如果將對數(shù)據(jù)進行恢復(fù),則從存儲該數(shù)據(jù)的存檔服務(wù)器取回所述數(shù)據(jù),然后數(shù)據(jù)混排和加密系統(tǒng)100可以對它進行解密和解混排并且向數(shù)據(jù)被恢復(fù)到的企業(yè)應(yīng)用服務(wù)器發(fā)送。在一個實施例中,可以在企業(yè)應(yīng)用服務(wù)器1-η中的一個或者多個企業(yè)應(yīng)用服務(wù)器中提供數(shù)據(jù)混排和加密系統(tǒng)100,從而可以在向數(shù)據(jù)存檔系統(tǒng)150發(fā)送數(shù)據(jù)之前對該數(shù)據(jù)進行加密和混排。
[0026]圖2示出數(shù)據(jù)混排和加密系統(tǒng)100可以執(zhí)行的對輸入數(shù)據(jù)序列進行加密和混排的示例。圖2中所示輸入數(shù)據(jù)序列201是圖1的輸入數(shù)據(jù)序列110的示例。在圖2中的示例中,輸入數(shù)據(jù)序列201包括按照數(shù)值順序的元素1-8。例如,元素I是整數(shù)1,元素2是整數(shù)2,等等。在輸入數(shù)據(jù)序列中的元素可以包括其它類型的數(shù)據(jù)、比如字符串、浮點、二進制數(shù)據(jù)、數(shù)據(jù)庫記錄等。
[0027]在η維空間202中布置輸入數(shù)據(jù)序列,其中η > O。在η維空間中的每個維度可以具有相同長度或者不同長度。維度長度可以是2的冪(例如,2Χ)。在這一示例中,η是4乘2、例如4X2。2是行數(shù)并且4是列數(shù)。η的值例如是密鑰、比如圖1A至圖1B中所示密鑰113。η的值例如是維度長度、比如4X2。
[0028]將輸入數(shù)據(jù)序列布置成η維空間202,并且執(zhí)行對η維空間的準隨機采樣以確定準隨機采樣209。例如圖1D中所示編碼模塊130可以包括準隨機函數(shù),該準隨機函數(shù)可以根據(jù)在這一示例中為4X2的密鑰生成準隨機序列以生成采樣209。生成的采樣209體現(xiàn)編碼模塊130提供的混排。
[0029]準隨機函數(shù)的一個示例是生成van der Corput序列的van der Corput函數(shù)。在用基數(shù)b表示時通過反轉(zhuǎn)自然數(shù)的數(shù)位來生成基數(shù)b的van der Corput序列,其中b > =
2。van der Corput最初于1935年由荷蘭數(shù)學家J.G.van der Corput公布??梢允褂闷渌麥孰S機函數(shù)。例如,可以使用由J.H.Halton確定的準隨機函數(shù)。例如可以通過選擇基數(shù)、比如基數(shù)2來生成準隨機Halton序列。將在輸入數(shù)據(jù)序列中的每個元素轉(zhuǎn)換成基數(shù)2,并且反轉(zhuǎn)元素(例如將1.0反轉(zhuǎn)成0.1)并且轉(zhuǎn)換回到基數(shù)10。準隨機函數(shù)的其它示例是生成Sobol序列或者Niederreiter序列的函數(shù)。
[0030]現(xiàn)在進一步描述根據(jù)準隨機序列生成索引。例如,實施準隨機函數(shù)、比如以上描述的函數(shù)之一的準隨機生成器取得索引(i)和維數(shù)(d)并且輸出在準隨機序列中的第i個元素。這一元素是對于每個維度具有通常在O與I之間的值的d維值。假設(shè)向準隨機生成器的輸入是包含共計m個元素的η維空間。在饋送i = O到m-ι和d = η之時調(diào)用生成器m次以生成m個η維三元組。然后縮放輸出值(在O與I之間的值)以發(fā)現(xiàn)確切索引。例如,將在具有長度{4,32,16}的3維空間中的準隨機輸出{0.25,0.5,0.125}變換成索引{1,16,2}、即{0.25*4,0.5*32,0.125*16}。生成器在給定索引i和維度d、假設(shè)保持其它參數(shù)恒定時總是生成相同輸出值。其它參數(shù)由比如準隨機生成器類型、比如SoboUHalton或者Niederreiter和用于計算的基數(shù)、例如基數(shù)2、基數(shù)3等事項構(gòu)成。一些準隨機序列也可以取得更多參數(shù)用于生成序列。在一個示例中,以基數(shù)2使用Sobol或者Niederreiter序列。
[0031]用于對η維空間進行采樣的這些準隨機函數(shù)的性質(zhì)是根據(jù)密鑰生成采樣209。因此如果密鑰已知、在這一示例中為4X2,則每當使用相同準隨機函數(shù)和相同密鑰時可以生成相同采樣209。因此,密鑰和準隨機函數(shù)用來生成用于混排和加密過程的采樣209,并且相同密鑰和相同準隨機函數(shù)用來生成用于解混排和解密過程的相同采樣209。
[0032]除了密鑰113之外,使用的準隨機序列類型以及它的關(guān)聯(lián)參數(shù)可以存儲于數(shù)據(jù)存儲裝置133中并且用于解密。例如,多個準隨機序列存在,每個準隨機序列具有它自己的可配置參數(shù)集。例如,Sobol序列的生成依賴于方向編號和原始多項式。如果改變這些,貝Ij輸出序列變更。因此,可以存儲使用的準隨機序列類型以及它的關(guān)聯(lián)參數(shù)用于解密和解混排。
[0033]使用圖2中所示的生成的采樣209作為用于為來自η維空間202的輸出數(shù)據(jù)序列210確定元素的坐標(也稱為索引)集。例如,將坐標應(yīng)用于η維空間202以確定用于在輸出數(shù)據(jù)序列210中包括的值。例如,{1,1}是在2維空間202中的X和y坐標。在坐標{1,1}的值是I。在坐標{3,2}的值是7,并且這一過程根據(jù)采樣209中的每個采樣確定用于輸出數(shù)據(jù)序列210的其它值。輸出數(shù)據(jù)序列210可以沒有輸入數(shù)據(jù)序列210的在一起的兩個元素。對輸出數(shù)據(jù)序列210進行混排和加密。
[0034]圖3示出數(shù)據(jù)混排和加密系統(tǒng)100可執(zhí)行的解混排和解密過程的示例。向數(shù)據(jù)混排和加密系統(tǒng)100的一個輸入是在圖2中生成并且在圖3中再次示出的輸出數(shù)據(jù)序列210。另一輸入是在這一示例中為4X2的密鑰,這些是η維空間的維度長度。
[0035]為了解密和解混排,編碼模塊130實施的用于混排和加密的準隨機函數(shù)也應(yīng)用于密鑰以確定采樣209。在采樣209中的每個坐標用來在η維空間202中放置來自輸出數(shù)據(jù)序列210的對應(yīng)元素。例如,第一坐標是{1,I}。輸出數(shù)據(jù)序列210的第一元素是1,因此在η維空間210中的坐標{1,1}放置I。對于比如圖3中所示輸出數(shù)據(jù)序列210的每個元素重復(fù)這一過程以在對應(yīng)坐標用輸出數(shù)據(jù)序列210的元素填充η維空間202。然后對填充的η維空間202進行線性化以生成輸入數(shù)據(jù)序列201。為了對填充的η維空間202進行線性化,從圖2已知原先在η維空間202中放置元素的順序,并且反轉(zhuǎn)順序可以用來根據(jù)圖3中所示填充的η維空間202確定輸入數(shù)據(jù)序列201。
[0036]為了生成數(shù)目大得多的序列,可以在任意長度的維度中布置數(shù)據(jù)。然而在一個實施例中,維度長度應(yīng)當是2的冪以保證所有索引被準隨機序列采樣僅一次。
[0037]圖4示出填充示例,其中在具有維度長度3X3的η維空間301中布置輸入數(shù)據(jù)序列201。用例如標記為‘X’的填充值、比如默認值填充η維空間301的空坐標。將η維空間301轉(zhuǎn)換成具有如下維度長度的η維空間302,這些維度長度是2的冪,并且用如下填充值填充η維空間302的空坐標,該填充值在這一情況下是最低行和最后列。
[0038]然后,與關(guān)于圖2示出和描述的內(nèi)容相似,圖1D中所示編碼模塊130通過將準隨機函數(shù)應(yīng)用于密鑰來生成采樣309。生成的采樣309體現(xiàn)混排。使用生成的采樣309作為用于為來自η維空間302的輸出數(shù)據(jù)序列310確定元素的坐標集。因此,使用準隨機序列對具有如下維度長度的η維空間(例如,302)進行采樣,這些維度長度是剛好大于初始創(chuàng)建的η維空間(例如,301)的2的冪。例如η維空間302是4X4,其中4是從3起的2的下一更聞幕??梢允褂?的任何幕,它無需是2的下一更聞幕。例如,可以使用8X4空間。在輸出數(shù)據(jù)序列310中丟棄標記為‘X’的任何位置。例如,將采樣309的坐標逐行應(yīng)用于η維空間302以確定用于輸出數(shù)據(jù)序列310的值。然而,在輸出序列中未包括表示為‘X’的包含填充值的任何坐標。因此,在采樣309的第一行中,未包括在坐標{3,3}、{4,2}、{2,4}中的值。在第二行中,略去{4,4}。在第三行中,略去{3,4}和{4,1},并且在第四行中,略去{4,3}和{1,4}。
[0039]對于略去,3 X 3在輸入數(shù)據(jù)序列的范圍以外,例如3 X 3意味著有9個元素,但是輸入數(shù)據(jù)序列201僅有8個元素,因此略去3X3。4X2意味著它在3X3原有維度以外。因此,如果維度中的任何維度大于3或者它大于來自輸入數(shù)據(jù)序列201的元素數(shù)目,則略去它。
[0040]對于以上描述的填充,填充在末尾的單元。然而也可以在前部完成填充。例如取代在{3,3}單元中放入X,可以在{1,1}單元中放入X,并且可以用輸入數(shù)據(jù)填充元素中的其余元素。然而,關(guān)于已經(jīng)如何完成填充的信息也需要存儲于密鑰113中。在一般情況下,除了在更早點中指定的準隨機生成信息之外還有在密鑰113中存儲的用于η維空間的每個維度的三個屬性。首先是存儲數(shù)據(jù)的長度;第二是采樣的長度(例如,2的冪);并且第三是如何在該維度中完成填充。
[0041]另外,不同填充值圖案可以用來進一步保護數(shù)據(jù),并且圖案存儲于密鑰113中,因此可以對輸出數(shù)據(jù)序列解混排和解密。例如表1A至表1C示出填充值圖案的示例如下:
[0042]
表 IA (8x2) 表 IB (4x4) 表 IC (4><4) Χ1ΧΧ23Χ4 XXl2XXXX Χ5ΧΧ67Χ8 Χ3Χ4XXXX
[0043]
ΧΧ5 61 2 3 4
Χ7Χ85678
[0044]表1A至表1C示出輸入數(shù)據(jù)序列1-8和填充值為X。填充圖案可以如期望的一樣復(fù)雜。存儲圖案作為密鑰113的部分,因此可以根據(jù)密鑰113確定圖案以確定填充值的位置。
[0045]圖5示出根據(jù)圖4中所示填充示例的在輸出數(shù)據(jù)序列310中的解混排和解密過程的示例。輸出數(shù)據(jù)序列310現(xiàn)在是向編碼模塊130的輸入以確定采樣309。然后,在這一示例中為3X3的密鑰用來解密。3X3是原有η維空間301的維度。將在采樣309中的每個坐標應(yīng)用于在輸出數(shù)據(jù)序列310中的值中的每個值以便將輸出數(shù)據(jù)序列310的值映射到3X3維空間301。例如,{1,1}是在采樣309中的第一坐標。{1,1}是在3X3空間中的坐標,因此在3X3維空間301中的{1,1}填充在輸出數(shù)據(jù)序列310中的為I的第一個值。如果坐標未在3X3維空間301中、比如坐標{4,2}和{2,4},或者如果坐標對應(yīng)于在3X3維空間301中的填充值、比如{3X 3},則丟棄它們。因此,如圖5中所示,將在3X3維空間301中放置的來自輸出數(shù)據(jù)序列310的下一個值是5,并且在采樣309中的下一坐標是{3,3}。{3,3}對應(yīng)于如先前根據(jù)圖4中所示填充而確定的3X3維空間301的填充值,因此在該坐標放置默認值而不是5。因此,略去{3,3},然后略去{4,2}和{2,4},因為這些坐標未在3X3維空間301中。{2,2}對應(yīng)于在3X3維空間中的坐標,因此在這一坐標放置5。對于在輸出數(shù)據(jù)序列310中的剩余值并且對于在采樣309中的剩余坐標重復(fù)這一過程。然后,對填充的3X3維空間301進行線性化以確定輸入數(shù)據(jù)序列201。
[0046]取代一次對整個序列進行加密和混排,可以對輸入序列的組塊執(zhí)行加密和混排、然后級聯(lián)以形成輸出數(shù)據(jù)序列。
[0047]例如,假設(shè)輸入數(shù)據(jù)序列是1-64。數(shù)據(jù)分組塊器131可以將輸入數(shù)據(jù)序列拆分成8個組塊、例如組塊C0-C7。例如CO具有值1-8,Cl具有值9-16,等等。比如如在以上描述的混排和加密過程中描述的那樣對每個組塊分離地進行混排和加密以確定用于每個組塊的輸出數(shù)據(jù)序列。可以例如按照順序C0-C7級聯(lián)用于組塊的輸出數(shù)據(jù)序列以確定輸出數(shù)據(jù)序列。數(shù)據(jù)存儲裝置133可以存儲用于分組塊的信息、比如每個組塊的大小和組塊數(shù)目例如作為用于解混排和解密的密鑰113的部分。每個組塊的大小可以變化。可以基于可配置參數(shù)111、比如如以下描述的安全參數(shù)和匿名參數(shù)確定組塊數(shù)目和每個組塊的大小。
[0048]系統(tǒng)100可以執(zhí)行多級分組塊。例如,在2級分組塊中的第一分組塊級,首先對C0-C7進行混排和加密。輸出數(shù)據(jù)序列的示例可以是C3、C7、CO、C2、C6、C4、Cl、C5。然后,在第二分組塊級,可以對每個組塊進行混排和加密。為了解混排和解密,首先對輸出數(shù)據(jù)序列進行解混排和解密以根據(jù)序列C3、C7、C0、C2、C6、C4、C1、C5獲得序列C0-C7,然后對每個組塊進行解混排和解密。這里可以對用于多級分組塊的輸入數(shù)據(jù)多次執(zhí)行這里描述的組塊和混排。
[0049]可以基于可配置參數(shù)111、比如安全參數(shù)和匿名參數(shù)確定組塊數(shù)目和每個組塊的大小。假設(shè)輸入數(shù)據(jù)序列是η字節(jié)長。假設(shè)無約束,可以生成的用于輸出數(shù)據(jù)序列的排列總數(shù)是η !。排列是輸入數(shù)據(jù)的混排,因此可以生成的混排的序列數(shù)目是η !。在可以使用分組塊的特定混排方案之下假設(shè)在η !個排列之中的X個排列有可能被生成。排列數(shù)目X也可以由于約束而少于η !,這些約束比如是輸入數(shù)據(jù)序列的兩個值不能在相互近旁或者輸入值必須隔開某個距離。例如定義安全參數(shù)為d = Χ/η !。d的值可以是用戶輸入。
[0050]另一參數(shù)是匿名參數(shù)。假設(shè)輸入數(shù)據(jù)序列是η字節(jié)長。如果使用無任何拆分的準隨機混排則可能有的排列總數(shù)是2(rf,其中f = η。在使用分組塊和組合的特定混排方案之下假設(shè)在所有η !個排列之中的X個排列有可能被生成。例如定義匿名參數(shù)為(2(rf))/X。
[0051]安全參數(shù)是Χ/η !,并且匿名參數(shù)是/X,其中X是在準隨機混排和加密過程中可能的排列總數(shù)并且Z = η。安全參數(shù)的值在(2(rf))/n!與I之間。最低安全情況是在使用無任何分組塊的典型準隨機混排時。最高安全情況是在使用分組塊并且η !個混排有可能時。這一點的實際可能性依賴于使用的下層準隨機函數(shù)并且可能不可實現(xiàn)。
[0052] 匿名參數(shù)的值也在(2(Η))/η !與I之間。最低情況是在使用組塊時,其中所有η !個混排是可能的。最高情況是在使用無任何分組塊的典型準隨機函數(shù)時。有在安全與匿名之間的逆關(guān)系,因此可以選擇匿名和安全參數(shù)的值以在安全與匿名之間平衡。圖9示如下圖,該圖圖示在參數(shù)之間的逆關(guān)系,并且可以在圖上選擇點以在安全與匿名之間平衡并且確定組塊數(shù)目。
[0053]不同行業(yè)領(lǐng)域(例如金融、保健、媒體等)可以具有對于私密和/或保密的不同要求。默認參數(shù)可以被存儲和用于那些領(lǐng)域。在給定的領(lǐng)域內(nèi)的應(yīng)用也可以具有不同要求、因此也可以在確定參數(shù)時返回作用。另外,不同參數(shù)可以用于不同服務(wù)或者業(yè)務(wù)關(guān)系。例如,服務(wù)提供者可以對于鉬金客戶提供比黃金和白銀客戶更多的保密或者更多的匿名。
[0054]如圖1C中所示,數(shù)據(jù)混排和加密系統(tǒng)100可以包括編碼模塊130。編碼模塊130例如執(zhí)行編碼,該編碼包括如這里描述的混排和加密以及解混排和解密。圖6圖示根據(jù)一個實施例的用于包括混排和加密的編碼的方法600。圖7圖示根據(jù)一個實施例的用于包括解混排和解密的方法700。方法600和700可以例如由包括編碼模塊130的系統(tǒng)100執(zhí)行。方法可以由其它系統(tǒng)執(zhí)行。
[0055]在方法600的601,系統(tǒng)100接收輸入數(shù)據(jù)序列。輸入數(shù)據(jù)序列可以包括比如在輸入數(shù)據(jù)序列201中示出的值序列。輸入數(shù)據(jù)序列可以是代表值的字節(jié)序列。
[0056]在602,系統(tǒng)100確定是否將輸入數(shù)據(jù)序列拆分成組塊。例如,編碼配置器132可以從用戶或者另一系統(tǒng)接收一個或者多個可配置參數(shù)113??膳渲脜?shù)113可以包括比如以上描述的安全參數(shù)和/或匿名參數(shù)。安全參數(shù)可以是如以上描述的d = Χ/η !。匿名參數(shù)可以是以上描述的(2(rt))/X??梢栽?03根據(jù)可配置參數(shù)113確定組塊總數(shù)和每個組塊的大小用于將輸入數(shù)據(jù)序列拆分成組塊。
[0057]在604,確定η維空間。存儲η的值作為密鑰113的一部分。例如如果η是2X2,則在密鑰113中存儲2X2??梢噪S機或者基于其它參數(shù)確定η。每個維度的長度應(yīng)當是2的冪。如果不是,則確定新的維度空間,其中可以將長度改變成2的更高冪。例如,如果將3X3空間改變成如圖4和圖5中所示具有填充的4X4空間??梢栽跀?shù)據(jù)存儲裝置133中存儲密鑰以及可以對于每個組塊相同或者不同的組塊數(shù)目和每個組塊大小。也可以在604執(zhí)行比如以上描述的填充。可以填充在η維空間中的空單元。在比如圖4中描述的一個示例中,將η維空間轉(zhuǎn)換成具有如下維度長度的η維空間,這些維度長度是2的冪,并且向空單元添加填充值??梢栽诒热缫陨厦枋龅膱D案中添加填充值??梢詫τ讦蔷S空間的每個維度為密鑰113存儲三個屬性、比如存儲數(shù)據(jù)的長度、采樣的長度(例如,2的冪)和如何在該維度中完成填充。
[0058]在605,用例如如圖2和圖4中所示輸入數(shù)據(jù)序列的值填充η維空間。如果將輸入數(shù)據(jù)序列拆分成組塊,則將用于每個組塊的值填充到它們自己的η維空間中。
[0059]在606,將準隨機函數(shù)應(yīng)用于填充的η維空間以根據(jù)η維空間的準隨機采樣生成采樣。存儲指定準隨機采樣的所有參數(shù)作為密鑰113的部分。如果將輸入數(shù)據(jù)序列拆分成組塊,則將準隨機函數(shù)應(yīng)用于用于每個組塊的填充的η維空間。
[0060]在607,使用采樣作為進入η維空間的索引以確定輸出數(shù)據(jù)序列。例如,如圖2和圖4中所示,采樣是坐標,在η維空間中的坐標的值形成輸出數(shù)據(jù)序列。如果對輸入數(shù)據(jù)序列進行分組塊,則可以對于每個組塊確定輸出數(shù)據(jù)序列,并且可以級聯(lián)用于組塊的輸出數(shù)據(jù)序列以確定最終輸出數(shù)據(jù)序列。
[0061]輸出數(shù)據(jù)序列可以滿足來自輸入數(shù)據(jù)序列的兩個元素在輸出數(shù)據(jù)序列中未在彼此近旁這樣的約束。也可以在604執(zhí)行多級混排和加密。例如假設(shè)將執(zhí)行2級混排??梢栽诮M塊級對組塊進行混排和加密。例如,從8個組塊C0-C7開始。CO、CL...C7是輸入數(shù)據(jù)序列。通過以上描述的過程對組塊進行混排和加密以獲得輸出數(shù)據(jù)序列、比如C3、C7、CO、C2、C6、C4、C1、C5。然后,可以在每個組塊內(nèi)完成混排??梢詧?zhí)行任意數(shù)目級混排。
[0062]圖7圖示用于包括解混排和解密的編碼的方法700。在701,接收輸出數(shù)據(jù)序列以對它進行解混排和解密以生成輸入數(shù)據(jù)序列。也確定、比如從存儲裝置取回密鑰。如果輸入數(shù)據(jù)序列被分組塊,則也確定、比如從存儲裝置取回組塊數(shù)目和每個組塊的大小。
[0063]在702,對輸入數(shù)據(jù)序列是否如以上關(guān)于多級混排描述的那樣被拆分成組塊并且混排和加密進行確定。如果是,則對組塊進行解密和解混排,因此它們在703按照正確順序。例如,如以上描述的那樣,輸入數(shù)據(jù)序列可以包括組塊C0-C7,這些組塊通過混排和加密過程被混排成不同順序、比如C3、C7、CO、C2、C6、C4、Cl、C5。在703,基于在密鑰中的信息將組塊解混排和解密成它們的初始順序C0-C7。
[0064]在704,基于密鑰生成η維空間。例如,密鑰指示用于每個維度的長度、比如2X2或者3X3。如果輸入數(shù)據(jù)序列被分組塊,則為每個組塊生成η維空間。在705,使用來自密鑰的準隨機函數(shù)屬性根據(jù)準隨機函數(shù)對η維空間進行采樣以生成采樣、比如圖3和圖5中所示采樣209或者309。如果輸入數(shù)據(jù)序列被分組塊,則為每個組塊生成采樣。
[0065]在706,例如通過使用采樣作為索引將輸出數(shù)據(jù)序列變換成輸入數(shù)據(jù)序列以用來自比如圖3和圖5中所示輸出數(shù)據(jù)序列的值填充η維空間。如果輸入數(shù)據(jù)序列被分組塊,則來自每個組塊的值被填充到它們的對應(yīng)η維空間和它們的對應(yīng)采樣。在密鑰中的信息可以指示填充是否被完成用于加密和混排。如果填充被完成,則根據(jù)密鑰確定填充的值位置,因此向在比如圖5中描述的η維空間中的正確單元中填充來自輸出數(shù)據(jù)序列的值。
[0066]在707,對在填充的η維空間中的值進行線性化以生成輸入數(shù)據(jù)序列。如果將輸入數(shù)據(jù)序列拆分成組塊,則將用于每個組塊的輸出數(shù)據(jù)序列變換成輸入數(shù)據(jù)序列并且可以級聯(lián)以形成輸入數(shù)據(jù)序列。如果執(zhí)行多級分組塊以及混排和加密,則首先比如在702和703描述的那樣將輸出數(shù)據(jù)序列C3、C7、CO、C2、C6、C4、Cl、C5解混排和解密成C0-C7,然后可以比如在704-707描述的那樣對每個組塊C0-C7進行解混排和解密以確定輸入數(shù)據(jù)序列。以上未描述在702和703將組塊解混排和解碼成初始序列C0-C7的步驟,但是可以與在704-707描述的步驟相似。
[0067]圖8示出可以與這里描述的實施例和示例使用的計算機系統(tǒng)800。計算機系統(tǒng)800包括可以在服務(wù)器或者另一計算機系統(tǒng)中的部件。計算機系統(tǒng)800可以通過一個或者多個處理器或者其它硬件處理單元執(zhí)行這里描述的方法、功能和其它過程??梢蕴炀€這些方法、功能和其它過程為在計算機可讀介質(zhì)上存儲的機器可讀指令,該計算機可讀介質(zhì)可以是非瞬態(tài)、比如硬件存儲設(shè)備(例如,RAM (隨機存取存儲器)、R0M(只讀存儲器)、EPROM (可擦除可編程ROM)、EEPROM(電可擦除可編程ROM)、硬驅(qū)動和閃存)。
[0068]計算機系統(tǒng)800包括可以實施或者執(zhí)行機器可讀指令的至少一個處理器802,這些機器可讀指令執(zhí)行這里描述的方法、功能和其它過程中的一些或者所有方法、功能和其它過程。通過通信總線808傳達來自處理器802的命令和數(shù)據(jù)。計算機系統(tǒng)800也包括主存儲器806、比如隨機存取存儲器(RAM),其中用于處理器802的機器可讀指令和數(shù)據(jù)可以在運行時間期間駐留,并且包括次數(shù)據(jù)存儲裝置807,該次數(shù)據(jù)存儲裝置可以是非易失性并且存儲機器可讀指令和數(shù)據(jù)。例如用于數(shù)據(jù)混排和加密系統(tǒng)100的機器可讀指令可以在運行時間期間在存儲器806中駐留。存儲器806和次數(shù)據(jù)存儲裝置807是計算機可讀介質(zhì)的示例。
[0069]計算機系統(tǒng)800可以包括I/O設(shè)備810、比如鍵盤、鼠標、顯示器等。例如I/O設(shè)備810包括用于顯示挖掘(drill down)視圖和這里描述的其它信息的顯示器。計算機系統(tǒng)800可以包括用于連接到網(wǎng)絡(luò)的網(wǎng)絡(luò)接口 812。可以在計算機系統(tǒng)800中添加或者替換其它已知電子部件。也可以在分布式計算環(huán)境、比如云系統(tǒng)中實施數(shù)據(jù)混排和加密系統(tǒng)100。
[0070]盡管已經(jīng)參照示例描述實施例,但是可以進行對描述的實施例的各種修改而未脫離要求保護的實施例的范圍。
【權(quán)利要求】
1.一種數(shù)據(jù)混排和加密系統(tǒng),包括: 數(shù)據(jù)存儲裝置,用于存儲密鑰;以及 編碼模塊,由處理器執(zhí)行以對輸入數(shù)據(jù)序列進行混排和加密,其中所述混排和加密包括: 基于所述密鑰確定η維空間,其中η > O ; 用所述輸入數(shù)據(jù)序列填充所述η維空間; 應(yīng)用準隨機函數(shù)以對所述η維空間進行采樣以確定采樣;并且 使用所述采樣作為進入所述η維空間的索引以確定來自所述η維空間的輸出數(shù)據(jù)序列。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)混排和加密系統(tǒng),包括: 數(shù)據(jù)分組塊器,用于確定所述輸入數(shù)據(jù)序列的組塊;并且 所述編碼模塊用于 通過對所述組塊中的每個組塊進行混排和加密以確定用于每個組塊的輸出數(shù)據(jù)序列并且級聯(lián)用于所述組塊的所述輸出數(shù)據(jù)序列以確定所述輸出數(shù)據(jù)序列來對所述輸入數(shù)據(jù)序列進行混排和加密。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)混排和加密系統(tǒng),包括: 編碼配置器,用于基于安全參數(shù)和匿名參數(shù)中的至少一個參數(shù)確定所述組塊的數(shù)目和每個組塊的大小。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)混排和加密系統(tǒng),其中接收所述安全參數(shù)和所述匿名參數(shù)中的至少一個參數(shù)作為用戶輸入,并且基于級聯(lián)的所述輸出數(shù)據(jù)序列的可操作用于在滿足至少一個約束之時由所述編碼模塊生成的期望的排列的總數(shù)確定所述安全參數(shù)和所述匿名參數(shù)中的至少一個參數(shù)。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)混排和加密系統(tǒng),其中所述編碼模塊用于基于所述密鑰對所述輸出數(shù)據(jù)序列進行解混排和解密。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)混排和加密系統(tǒng),其中所述編碼模塊用于通過將所述準隨機函數(shù)應(yīng)用于所述密鑰以確定所述采樣、基于所述采樣用來自所述輸出數(shù)據(jù)序列的值填充所述η維空間并且對在所述η維空間中的所述值進行線性化以確定所述輸入數(shù)據(jù)序列來解混排和解密。
7.根據(jù)權(quán)利要求1所述的數(shù)據(jù)混排和加密系統(tǒng),其中為了用所述輸入數(shù)據(jù)序列填充所述η維空間,所述編碼模塊用于在所述η維空間中包括填充的值并且存儲描述所述填充的值在所述η維空間中的位置的信息作為所述密鑰的部分。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)混排和加密系統(tǒng),其中所述填充的值的所述位置是圖案。
9.根據(jù)權(quán)利要求7所述的數(shù)據(jù)混排和加密系統(tǒng),其中所述編碼模塊用于通過將所述準隨機函數(shù)應(yīng)用于所述密鑰以確定所述采樣、基于所述采樣用來自所述輸出數(shù)據(jù)序列的值填充所述η維空間并且對在所述η維空間中的所述值進行線性化以確定所述輸入數(shù)據(jù)序列來使用所述密鑰解混排和解密,其中為了填充用于所述解混排和所述解密的所述η維空間,所述編碼模塊用于基于在所述密鑰中的描述所述填充的值的所述位置的所述信息確定在來自所述混排和所述加密的所述η維空間中填充的所述值中的任何值是否為填充的值,并且如果所述值中的任何值是填充的值,則在所述解混排和所述解密期間執(zhí)行所述η維空間的所述填充時略去與所述填充的值對應(yīng)的所述采樣。
10.根據(jù)權(quán)利要求1所述的數(shù)據(jù)混排和加密系統(tǒng),其中所述密鑰包括標識由所述準隨機函數(shù)生成的準隨機序列的類型和用于所述準隨機序列的所述類型的關(guān)聯(lián)參數(shù)的信息,其中所述編碼模塊用于基于所述密鑰對所述輸出數(shù)據(jù)序列進行解混排和解密。
11.一種對輸入數(shù)據(jù)序列進行編碼的方法,包括: 接收輸入數(shù)據(jù)序列;并且 對所述輸入數(shù)據(jù)序列進行混排和加密,其中所述混排和加密包括: 確定η維空間,其中η > O ; 用所述輸入數(shù)據(jù)序列填充所述η維空間; 由處理器應(yīng)用準隨機函數(shù)以對所述η維空間進行采樣以確定采樣;并且 使用所述采樣作為進入所述η維空間的索引以確定來自所述η維空間的輸出數(shù)據(jù)序列。
12.根據(jù)權(quán)利要求11所述的方法,包括: 確定所述輸入數(shù)據(jù)序列的組塊;并且 所述輸入數(shù)據(jù)序列的所述混排和加密包括:對所述組塊中的每個組塊進行混排和加密以確定用于每個組塊的輸出數(shù)據(jù)序列;并且 級聯(lián)用于所述組塊的所述輸出數(shù)據(jù)序列以確定所述輸出數(shù)據(jù)序列。
13.根據(jù)權(quán)利要求12所述的方法,其中基于安全參數(shù)和匿名參數(shù)確定所述組塊的數(shù)目和每個組塊的大小。
14.根據(jù)權(quán)利要求13所述的方法,其中基于級聯(lián)的所述輸出數(shù)據(jù)序列的可操作用于在滿足至少一個約束之時通過所述編碼而生成的期望的排列的總數(shù)確定所述安全參數(shù)和所述匿名參數(shù)中的至少一個參數(shù)。
15.根據(jù)權(quán)利要求12所述的方法,包括: 在所述對所述組塊中的每個組塊進行混排和加密以確定用于每個組塊的所述輸出數(shù)據(jù)序列之前對所有所述組塊進行混排和加密以確定組塊的輸出集合。
16.根據(jù)權(quán)利要求11所述的方法,包括: 用填充的值填充所述η維空間,其中存儲描述用于所述填充的值在所述η維空間中的位置的信息作為將用于對所述輸出數(shù)據(jù)序列進行解混排和解密的密鑰的部分。
17.根據(jù)權(quán)利要求16所述的方法,其中所述填充包括增加所述η維空間,其中將所述維度的長度增加至2的更高冪。
18.根據(jù)權(quán)利要求11所述的方法,包括: 基于密鑰對對所述輸出數(shù)據(jù)序列進行解混排和解密,其中所述密鑰包括用于所述η維空間的η值,并且所述解混排和所述解密包括: 將所述準隨機函數(shù)應(yīng)用于所述輸出數(shù)據(jù)序列以確定所述采樣; 基于所述采樣用來自所述輸出數(shù)據(jù)序列的值填充所述η維空間;并且 對在所述η維空間中的所述值進行線性化以確定所述輸入數(shù)據(jù)序列。
19.根據(jù)權(quán)利要求18所述的方法,其中所述基于所述采樣用來自所述輸出數(shù)據(jù)序列的所述值填充所述η維空間包括:基于在所述密鑰中的描述任何填充的值在所述η維空間中的位置的信息確定在來自所述混排和所述加密的所述η維空間中填充的所述值中的任何值是否為填充的值;并且如果所述值中的任何值是填充的值,則在所述解混排和所述解密期間執(zhí)行所述η維空間的所述填充時略去與所述填充的值對應(yīng)的所述采樣。
20.一種包括機器可讀指令的非瞬態(tài)計算機可讀介質(zhì),所述機器可讀指令由至少一個處理器可執(zhí)行以: 確定η維空間,其中η > O ; 用輸入數(shù)據(jù)序列填充所述η維空間; 應(yīng)用準隨機函數(shù)以對所述η維空間進行采樣以確定采樣;并且 使用所述采樣作為進入所述η維空間的索引以確定來自所述η維空間的輸出數(shù)據(jù)序列。
【文檔編號】H04L9/20GK104052593SQ201410099030
【公開日】2014年9月17日 申請日期:2014年3月14日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】V·阿加沃爾, S·保羅, A·科姆, A·薩克斯納 申請人:埃森哲環(huán)球服務(wù)有限公司