国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      生成混淆數(shù)據(jù)的制作方法

      文檔序號:6349948閱讀:375來源:國知局
      專利名稱:生成混淆數(shù)據(jù)的制作方法
      技術(shù)領(lǐng)域
      本說明書涉及生成混淆(obfuscated)數(shù)據(jù)。
      背景技術(shù)
      在許多公司中,軟件開發(fā)人員在生產(chǎn)環(huán)境以外(例如,在處理實際客戶數(shù)據(jù)的環(huán)境中)工作,而且出于安全原因,他們不能訪問生產(chǎn)數(shù)據(jù)。然而,為了確保他們的應(yīng)用程序?qū)⒂蒙a(chǎn)數(shù)據(jù)正確運行,在展現(xiàn)生產(chǎn)數(shù)據(jù)的某些特征的開發(fā)和測試期間,他們可能需要實際的測試數(shù)據(jù)。為了提供這樣的實際測試數(shù)據(jù),可以混淆輸入生產(chǎn)數(shù)據(jù)集來確保沒有遺留敏感信息,而且可以存儲混淆數(shù)據(jù)從而作為測試數(shù)據(jù)使用。取決于項目和開發(fā)人員的需要、 組織的隱私政策、甚至是使用混淆數(shù)據(jù)的國家的法律,對于混淆數(shù)據(jù)的需求可能差異很大。 例如,數(shù)據(jù)混淆可能涉及含替換或改變個人信息,諸如姓名、地址、生日、社會保險號碼、以及信用卡和銀行賬戶號碼。

      發(fā)明內(nèi)容
      在一個方面中,一般而言,用于混淆數(shù)據(jù)的方法包括從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值;存儲密鑰值;對多個記錄中的每一個,用密鑰值在所述記錄的給定的字段中生成混淆值來替代原始值,使得該混淆值取決于密鑰值并且確定地與原始值相關(guān);以及在數(shù)據(jù)存儲系統(tǒng)中存儲包括記錄的混淆數(shù)據(jù)的集合,所述記錄包括混淆值。各方面可以包括一個或更多個下述特性。所述方法進一步包括存儲簡檔信息,所述簡檔信息包括至少一個字段的統(tǒng)計數(shù)據(jù)特征值。用所述密鑰值和為給定字段存儲的簡檔信息生成所述混淆值。所述混淆值以基于給定字段的所存儲的簡檔信息特征值中的統(tǒng)計數(shù)據(jù)來決定的頻率,出現(xiàn)在混淆數(shù)據(jù)集合的給定字段中。所述混淆值通過使用原始值和密鑰作為對生成索引值的函數(shù)的輸入、并使用所述索引值在預(yù)定的混淆值集中查找混淆值而生成所述混淆值。所述預(yù)定的混淆值集作為查找表而存儲,其中每個混淆值對應(yīng)于一個或更多個索引值。一范圍內(nèi)的多個索引值對應(yīng)于在預(yù)定的混淆值集中的相同的混淆值。所述范圍的大小基于給定字段的所存儲的簡檔信息特征值的統(tǒng)計數(shù)據(jù)。用所述密鑰值生成混淆值來替代所述記錄的給定字段中的原始值包括用確定函數(shù)結(jié)合原始值和密鑰來產(chǎn)生用于選擇混淆值的選擇值。
      用確定的映射,將所述選擇值映射到混淆值。選擇混淆值的值域包括來自數(shù)據(jù)源的記錄的給定字段中的多個原始值。一個或更多個原始值不包括在值域內(nèi)。在值域內(nèi)的一個或更多個值不包括在原始值內(nèi)。所述確定函數(shù)用密鑰通過加密方式阻止從混淆值中恢復(fù)原始值。所述確定函數(shù)為不同的密鑰值提供選擇值相對連續(xù)原始值的不同序列。針對密鑰的第一值對連續(xù)原始值的選擇值的第一序列,是不可從針對密鑰的第二值對連續(xù)原始值的選擇值的第二序列中預(yù)測的。用密鑰值生成混淆值來替代記錄的給定字段中的原始值包括確定選擇值是否對應(yīng)于有效混淆值,并且如果不是,則重復(fù)地用確定函數(shù)將選擇值和密鑰結(jié)合起來產(chǎn)生附加選擇值,直到附加選擇值對應(yīng)于有效混淆值。有效混淆值由預(yù)定位數(shù)組成。所述方法進一步包括將來自數(shù)據(jù)源的記錄劃分為多個記錄集,并且,用不同計算資源并行地在不同記錄集的記錄中用所生成的混淆值替代給定字段中的原始值。包括混淆數(shù)據(jù)集合中的混淆值的至少第一記錄包括至少一個沒有被混淆值替代的原始值。所述方法進一步包括對于原始值出現(xiàn)的多個記錄,基于原始值是否一致地被相同的混淆值替代,確定是否使用密鑰值用混淆值替代第一記錄中的原始值。在另一個方面中,一般而言,用于混淆數(shù)據(jù)的系統(tǒng)包括提供在一個或更多個字段中具有值的記錄的數(shù)據(jù)源;數(shù)據(jù)存儲系統(tǒng);以及一個或更多個連接到數(shù)據(jù)存儲系統(tǒng)的處理器。所述一個或更多個處理器提供執(zhí)行環(huán)境來讀取從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值;存儲密鑰值;對多個記錄中的每一個,用密鑰值生成混淆值來替代記錄的給定字段中的原始值,使得所述混淆值取決于密鑰值并且確定地與原始值相關(guān);以及在數(shù)據(jù)存儲系統(tǒng)中存儲包括記錄的混淆數(shù)據(jù)集合,所述記錄包括混淆值。在另一個方面中,一般而言,用于混淆數(shù)據(jù)的系統(tǒng)包括提供在一個或更多個字段中具有值的記錄的數(shù)據(jù)源;數(shù)據(jù)存儲系統(tǒng);以及從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值的裝置;對多個記錄中的每一個,用密鑰值生成混淆值來替代記錄的給定字段中的原始值,使得所述混淆值取決于密鑰值并且確定地與原始值相關(guān)的裝置;以及在數(shù)據(jù)存儲系統(tǒng)中存儲包括記錄的混淆數(shù)據(jù)集合的裝置,所述記錄包括混淆值。在另一個方面中,一般而言,計算機可讀介質(zhì)存儲用于混淆數(shù)據(jù)的計算機程序。所述計算機程序包括用于使得計算機執(zhí)行以下步驟的指令從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值;存儲密鑰值;對多個記錄中的每一個,用密鑰值生成混淆值來替代記錄的給定字段中的原始值,使得所述混淆值取決于密鑰值并且確定地與原始值相關(guān);以及在數(shù)據(jù)存儲系統(tǒng)中存儲包括記錄的混淆數(shù)據(jù)集合,所述記錄包括混淆值。各方面可以擁有一個或更多個下述優(yōu)勢。由于在混淆值和原始實際值之間有確定的關(guān)系,因此,在混淆處理期間,可以維持引用完整性(referential integrity),使得混淆數(shù)據(jù)滿足與生產(chǎn)數(shù)據(jù)相同的引用完整性限制條件。混淆處理也可以確保對混淆數(shù)據(jù)執(zhí)行的某些操作維持某些特征,諸如在“聯(lián)合” 操作中對于每個密鑰的值的數(shù)目。由于給定的混淆值和對應(yīng)的原始值之間的確定關(guān)系是存
      5儲的密鑰值的函數(shù),而且不取決于其它混淆值,因此,所述混淆可以并行地在數(shù)據(jù)集的不同部分中執(zhí)行,同時仍然維持這些部分之間的關(guān)系。所述混淆處理可以阻止未授權(quán)方對混淆數(shù)據(jù)進行反向工程,并防止從生產(chǎn)數(shù)據(jù)中檢索原始值。諸如記錄格式、可能值的范圍、統(tǒng)計特征和混淆數(shù)據(jù)的一般簡檔的特征可以與原始數(shù)據(jù)盡可能相近地匹配。例如,由于信用卡號碼使用校驗數(shù),因此混淆數(shù)據(jù)對于校驗數(shù)也可能有正確的計算值。如果原始數(shù)據(jù)有拼寫錯誤和不一致的地方,則混淆數(shù)據(jù)可以有相同或相似種類的不規(guī)則來測試錯誤處理。對于諸如姓名(例如,名字和姓氏)和地址的值,特定值在混淆數(shù)據(jù)中的頻率可以反映它們在生產(chǎn)數(shù)據(jù)中的頻率。本發(fā)明的一個或更多個實施例的細節(jié)在以下附圖和說明中詳細解釋。本發(fā)明的其它特性、目的和優(yōu)勢將通過說明書和附圖、以及權(quán)利要求而顯而易見。


      圖1為用于執(zhí)行基于圖形(graph)的計算的系統(tǒng)的框圖;圖2為示范性數(shù)據(jù)混淆過程的流程圖;圖3為數(shù)據(jù)混淆過程的確定映射的示意圖;圖4為數(shù)據(jù)混淆的示范性數(shù)據(jù)流圖;圖5為示范性查找表;圖6為偽隨機置換(permutation)示例的表。圖7為用于生成有效混淆值的過程實例的表。
      具體實施例方式參照圖1,用混淆數(shù)據(jù)來開發(fā)程序的系統(tǒng)100包括數(shù)據(jù)源102,其可以包括一個或更多個數(shù)據(jù)源,諸如存儲設(shè)備或者在線數(shù)據(jù)流的連接點,其中的每一個可以存儲多個存儲格式中的任一格式的數(shù)據(jù)(例如,數(shù)據(jù)庫表、電子表格文件、平面文本(flat text)文件、或者由大型機使用的本機(native)格式)。用于生成混淆數(shù)據(jù)的執(zhí)行環(huán)境104包括數(shù)據(jù)建檔模塊(data profiling module) 106和數(shù)據(jù)混淆模塊112。所述執(zhí)行環(huán)境104可以在適當(dāng)?shù)牟僮飨到y(tǒng)(諸如UNIX操作系統(tǒng))的控制下以一個或更多個通用計算機為主機。例如,所述執(zhí)行環(huán)境104可以包括多節(jié)點并行計算環(huán)境,其包括使用多個中央處理單元(CPU)的計算機系統(tǒng)的配置,所述配置為本地的(例如,諸如SMP計算機的多處理器系統(tǒng)),或本地分布式的(例如,耦合為集群或MPP的多個處理器),或遠程分布式的(例如,通過LAN或WAN 網(wǎng)絡(luò)耦合的多個處理器),或其任一組合。數(shù)據(jù)建檔模塊106從數(shù)據(jù)源102讀取數(shù)據(jù),并存儲數(shù)據(jù)源102中出現(xiàn)的描述數(shù)據(jù)值的各種特征的簡檔信息。提供數(shù)據(jù)源102的存儲設(shè)備可以是執(zhí)行環(huán)境104本地的,例如, 存儲在連接到運行執(zhí)行環(huán)境104的計算機的存儲介質(zhì)上;或者可以是執(zhí)行環(huán)境104遠程的, 例如,以遠程系統(tǒng)(例如,大型機110)為主機,通過本地或廣域數(shù)據(jù)網(wǎng)絡(luò)與運行執(zhí)行環(huán)境 104的計算機進行通信。數(shù)據(jù)混淆模塊112使用數(shù)據(jù)建檔模塊106產(chǎn)生的簡檔信息來生成存儲于執(zhí)行環(huán)境 104可訪問的數(shù)據(jù)存儲系統(tǒng)116中的混淆數(shù)據(jù)114的集合。數(shù)據(jù)存儲系統(tǒng)116也可以被開發(fā)環(huán)境118訪問,開發(fā)人員120能夠在開發(fā)環(huán)境118中用混淆數(shù)據(jù)114開發(fā)和測試程序。但是,通過保持開發(fā)人員120無法訪問數(shù)據(jù)源102中的原始生產(chǎn)數(shù)據(jù),可以保持所述原始生產(chǎn)數(shù)據(jù)的安全。在某些實現(xiàn)方式中,開發(fā)環(huán)境118是用于將應(yīng)用開發(fā)為數(shù)據(jù)流圖的系統(tǒng),所述數(shù)據(jù)流圖包括在頂點之間通過定向鏈接(表示工作元素的流)連接的頂點(組件或數(shù)據(jù)集)。例如,在題為“Managing Parameters for Graph-Based Applications,,的美國公開號2007/0011668(通過引用合并至此)中,更詳細地描述了這樣的環(huán)境。數(shù)據(jù)建檔模塊106可以根據(jù)包括不同數(shù)據(jù)庫系統(tǒng)格式的多種類型的系統(tǒng)中建檔數(shù)據(jù)。數(shù)據(jù)可以組織為有各自字段(也稱為“屬性”或“列”)的值(包括可能的空值)的記錄。簡檔信息可以組織為提供對于不同的字段的獨立的簡檔(稱為“字段簡檔”),其描述在這些字段內(nèi)出現(xiàn)的值。當(dāng)?shù)谝淮螐臄?shù)據(jù)源讀取數(shù)據(jù)時,數(shù)據(jù)建檔模塊106通常以關(guān)于該數(shù)據(jù)源中的記錄的某些初始格式信息開始。(注意在某些環(huán)境中,最初甚至可能不知道數(shù)據(jù)源的記錄結(jié)構(gòu),而是可能在分析數(shù)據(jù)源之后才得以確定。)關(guān)于記錄的初始信息可以包括表示唯一值的比特數(shù)、在記錄內(nèi)的字段的順序、以及用比特表示的值的種類(例如,字符串、有符號/無符號的整數(shù))。當(dāng)數(shù)據(jù)建檔模塊106從數(shù)據(jù)源中讀取記錄時,它計算反映給定字段中的值的統(tǒng)計數(shù)據(jù)和其它描述性信息(例如,特定值的頻率)。數(shù)據(jù)建檔模塊 106接著以字段簡檔的形式存儲這些統(tǒng)計數(shù)據(jù)和描述性信息,以用于由數(shù)據(jù)混淆模塊112 訪問。簡檔信息也可以包括與在數(shù)據(jù)源102中的記錄的多個字段相關(guān)聯(lián)的信息,諸如記錄的總數(shù)量以及有效或者無效記錄的總數(shù)量。例如,在題為“Data !Profiling”的美國公開號 2005/0114369(通過引用合并至此)中描述了用于對數(shù)據(jù)源的字段進行建檔的處理的一種說明。圖2示出示范性數(shù)據(jù)混淆過程200的流程圖。步驟200包括從數(shù)據(jù)源讀取QlO) 在多個記錄的一個或更多個字段中出現(xiàn)的值??蛇x地,存儲包括至少一個字段的統(tǒng)計數(shù)據(jù)特征值的簡檔信息(例如,由對應(yīng)于簡檔信息中的統(tǒng)計數(shù)據(jù)的索引值范圍確定的混淆數(shù)據(jù)的表格,如下面更詳細地描述的)。過程200包括存儲(220)密鑰值,其由加密技術(shù)用于提供安全性以確保所述混淆不會輕易反轉(zhuǎn)。對多個記錄中的每一個,過程200用密鑰值生成 (230)混淆值來替代記錄的給定字段中的原始值,使得所述混淆值取決于密鑰值并且確定地與原始值相關(guān)。如果使用存儲的簡檔信息,則混淆值以基于存儲的簡檔信息確定的頻率出現(xiàn)在混淆數(shù)據(jù)集合中。過程200包括在數(shù)據(jù)存儲系統(tǒng)中存儲(MO)包括記錄的混淆數(shù)據(jù)集合,所述記錄包括混淆值。在某些實現(xiàn)方式中,每當(dāng)新數(shù)據(jù)源可用或者現(xiàn)有源接收到新記錄時,重復(fù)數(shù)據(jù)混淆過程200。所述過程可以被用戶調(diào)用,或者以重復(fù)的間隔或響應(yīng)于某些事件而自動調(diào)用。在某些混淆方法中,混淆實際生產(chǎn)數(shù)據(jù)的能力可能足夠;然而在另一些方法中,擁有反轉(zhuǎn)混淆過程以及將混淆值匹配回到實際值的能力也可能是有用的。在某些方法中,例如在上述過程200中,能夠例如使用存儲的密鑰和加密技術(shù)而確?;煜^程不能被反轉(zhuǎn)而獲得實際值是有用的,如下面更詳細地描述的。在某些情況下,隨著時間的推移進行混淆值的一致分配可能是有用的。例如,包括對應(yīng)于與特定客戶有關(guān)的每個不同交易的記錄的交易數(shù)據(jù)可能需要匹配預(yù)先混淆的客戶 ID,使得有給定的實際客戶ID的所有交易被分配相同的混淆客戶ID。作為另一個例子,來自同一戶人家的數(shù)據(jù)庫中的客戶可能共享同一個地址??赡芷谕_保這些客戶的混淆數(shù)據(jù)記錄有相同的混淆地址。如果人們需要閱讀和理解混淆數(shù)據(jù),則可能期望用選自預(yù)定的可識別值集中的值替代實際值,而不是簡單地用任意生成的值替代這些值。有多種方式來確保給定值和對應(yīng)混淆值之間的一致分配。在一種方法中,第一次遇到給定值,從預(yù)定集中隨機選擇混淆值并將其映射到這個給定值。接著,例如在映射數(shù)據(jù)結(jié)構(gòu)中相互關(guān)聯(lián)地存儲兩個值。對預(yù)先存儲在映射數(shù)據(jù)結(jié)構(gòu)中的給定值的全部后續(xù)的出現(xiàn),從數(shù)據(jù)結(jié)構(gòu)中檢索到相同的對應(yīng)混淆值。在另一種方法中,諸如在上述過程200中,密鑰用來提供隨機出現(xiàn)的確定的映射, 而不需要將預(yù)先映射的實際和混淆值存儲到映射數(shù)據(jù)結(jié)構(gòu)中。因此,在某些情況下這個基于密鑰的方法可以節(jié)省存儲空間。例如,密鑰和強加密的散列函數(shù)可以用于從預(yù)定集(例如,查找表)中檢索混淆值?;蛘?,密鑰和偽隨機置換算法可以用于計算混淆值。在兩種情況下,如下面更詳細地描述的,密鑰的使用確保了給定實際值總是對應(yīng)于相同的混淆值,同時使對應(yīng)關(guān)系隨機出現(xiàn)。圖3示出在來自輸入數(shù)據(jù)集的原始值區(qū)域310與替代這些原始值的混淆值區(qū)域 320之間的確定映射300的例子。密鑰k存儲在密鑰存儲330中并且一致地用于將所有原始值映射到給定混淆段中的各個混淆值,在所述給定混淆段中維持引用完整性。在不需要維持前段引用完整性的不同混淆段中,可以使用不同的密鑰。來自區(qū)域310的原始值V1和密鑰k用組合函數(shù)340組合起來,以從選擇區(qū)域350 中產(chǎn)生選擇值X??梢允褂萌魏谓M合值V1和密鑰k的確定技術(shù),諸如用值V1和密鑰k作為輸入的數(shù)學(xué)函數(shù)或者表達式。組合函數(shù)340是確定的,使得相同的V1和k值總是產(chǎn)生相同的χ值。接著用映射函數(shù)360 (例如,使用查找表的確定映射)將選擇值χ從區(qū)域320映射到混淆值v2。映射函數(shù)360也是確定的,使得給定的χ值總是產(chǎn)生相同的混淆值v2。混淆值區(qū)域320可能包括某些與原始值區(qū)域310相同的值,但是也可能不完全重疊,使得區(qū)域310 中的某些值并不包括作為區(qū)域320中的可能的混淆值,而且區(qū)域320中的某些值并不包括在區(qū)域310中。例如,可能期望使許多原始值成為可能的混淆值(例如地址字段中的城市或國家、或者姓名字段中的常見姓名),但是可以過濾排除某些特定敏感信息作為可能的混淆值(例如,信用卡號碼、社會保險號碼、或電話號碼)。在某些情況下,可能期望具有有效的混淆社會保險號碼(例如,支持對于混淆數(shù)據(jù)的有效性測試),而在某些情況下,可能期望無效的混淆社會保險號碼(例如,確保混淆數(shù)據(jù)不會泄露任何人的個人信息)。組合函數(shù)340和映射函數(shù)360的其中之一或二者都可以包括加密技術(shù),從而使得難以將混淆過程反轉(zhuǎn)并且從對應(yīng)的混淆數(shù)據(jù)V2中恢復(fù)原始數(shù)據(jù)Vl。對下述加密散列函數(shù)和密鑰偽隨機置換技術(shù),組合函數(shù)340包含加密技術(shù)來產(chǎn)生接著用作進入表格選擇混淆值 V2的索引的選擇值X。但是,在另一些實現(xiàn)方式中,組合函數(shù)340可以是產(chǎn)生選擇值χ的非加密技術(shù)(例如,簡單的拼接),其接著被用作加密函數(shù)(諸如提供混淆值V2的散列函數(shù)) 的輸入,或者用于查找混淆值V2的索引。其它確定映射可以從給定原始值V1直接產(chǎn)生混淆值v2,無需計算中間選擇值X。在某些實現(xiàn)方式中,混淆特定值的方法可以取決于這個值的特征。例如,出現(xiàn)在輸入數(shù)據(jù)集的給定字段中的要被混淆的數(shù)據(jù)值可能被歸類為擁有值的“有限”或“無限”區(qū)域, 而且被歸類為擁有值的“均勻”或“非均勻”分布。對基于密鑰的混淆,這些特征可以用于確定是從查找表中檢索混淆值還是用偽隨機置換計算混淆值。即使未使用密鑰,這些特征也可以用于確定混淆數(shù)據(jù)中特定值的頻率是否反映它們在實際生產(chǎn)數(shù)據(jù)中的頻率。對于“有限區(qū)域數(shù)據(jù)”,可發(fā)生在給定字段中的可能值的數(shù)目限制為在預(yù)定的有效值集中的值的有限數(shù)目(例如,數(shù)字或固定長度的字符串)。在有限區(qū)域數(shù)據(jù)的混淆期間, 有效性檢查可以用于確定混淆值是否在預(yù)定的有效值集中?!盁o限區(qū)域數(shù)據(jù)”無需擁有預(yù)定的可能值集(例如,任意長度的值)。具有有限區(qū)域數(shù)據(jù)的字段的例子包括社會保險號碼 (SSN)、信用卡號碼(CCN)、客戶ID(Custid)、美國電話號碼以及美國郵政編碼。具有無限區(qū)域數(shù)據(jù)的字段的例子包括名字、姓氏和街道地址。對于“均勻分布數(shù)據(jù)”,假設(shè)不同數(shù)據(jù)值可能近似相等,而且通常預(yù)期對于數(shù)據(jù)庫中表示的每個人是唯一的。對于“非均勻分布數(shù)據(jù)”,不同值可能會以不同頻率出現(xiàn)在數(shù)據(jù)集中,而且可能在數(shù)據(jù)庫中表示的不同人的記錄中重復(fù)。在非均勻分布數(shù)據(jù)的混淆期間,可以用“頻率查找”函數(shù)確?;煜龜?shù)據(jù)中特定值的頻率匹配其在實際生產(chǎn)數(shù)據(jù)中的頻率,如下面更詳細地描述的。對上面列出的字段,社會保險號碼、信用卡號碼、客戶ID和美國電話號碼是有均勻分布數(shù)據(jù)的字段的例子,預(yù)期其對于給定客戶是唯一的;而名字、姓氏和美國郵政編碼是有非均勻分布數(shù)據(jù)的字段的例子,其可能對不同客戶重復(fù)。對于無限區(qū)域數(shù)據(jù),或者對于某些非均勻分布數(shù)據(jù),有效性檢查也許不可能或者無法有效地執(zhí)行。在這些情況下,如果無法計算合理的(plausible)值,則可以使用查找表。例如,可以存儲合理的姓名和地址的查找表來混淆這些字段。對于非均勻分布數(shù)據(jù),可以用頻率查找函數(shù)確?;煜凳菍嶋H分布的,或者對于均勻分布但無限區(qū)域數(shù)據(jù),混淆處理可以確保從查找表中均勻地選擇值?;诿荑€的混淆使用加密技術(shù)來構(gòu)建函數(shù),其結(jié)果隨機出現(xiàn)但實際上是可重復(fù)并可預(yù)測的。為混淆實際數(shù)據(jù)的給定集而選擇密鑰。如果混淆數(shù)據(jù)曾受損,則沒有密鑰就無法從混淆數(shù)據(jù)中恢復(fù)實際值,因此密鑰應(yīng)該保密并以安全的方式存儲??梢源鎯υ诨煜幚淼亩鄠€執(zhí)行中使用的給定的密鑰,來確保對于給定實際值在多個執(zhí)行中的任何出現(xiàn),生成相同的混淆值?;诿荑€的混淆處理可以并行執(zhí)行于多個數(shù)據(jù)集或者單一數(shù)據(jù)集的多個部分上,這是因為,基于密鑰的混淆不一定需要維持以前使用的從實際到混淆值的映射數(shù)據(jù)結(jié)構(gòu)。例如,數(shù)據(jù)集中的記錄可以被分段(例如,基于諸如客戶ID的給定字段)成為多個記錄集,而且混淆值的產(chǎn)生和替換可以用不同計算資源(例如,不同的處理器或者不同的計算機)對不同記錄集并行執(zhí)行。為給定字段執(zhí)行基于密鑰的混淆的特定技術(shù)取決于這個字段的數(shù)據(jù)值的特性 對于有限區(qū)域和均勻分布的數(shù)據(jù),用密鑰和偽隨機置換算法計算值。存儲相同的密鑰在多個執(zhí)行中使用。可以用一個或更多個有效性函數(shù)確?;煜档挠行??!τ跓o限區(qū)域數(shù)據(jù)或非均勻分布數(shù)據(jù),用密鑰和加密散列函數(shù)從查找表中檢索值。存儲相同的密鑰和查找表在多個執(zhí)行中使用。通過確保查找表中的值是有效的,可以確保混淆值的有效性。關(guān)于圖4,一個示范性的數(shù)據(jù)流圖400對作為輸入提供的客戶(Customers)數(shù)據(jù)集 402執(zhí)行混淆處理。讀取數(shù)據(jù)集402中的記錄并將其提供給圖中的組件作為記錄的流。通過使用數(shù)據(jù)流圖來執(zhí)行混淆,系統(tǒng)100能夠?qū)?shù)據(jù)混淆處理與多種附加的數(shù)據(jù)流處理的任一結(jié)合起來,而且能夠使用并行處理技術(shù)來執(zhí)行圖中的任何組件。圖400包括一系列“重新格式化(Reformat) ”組件,各自通過用混淆值替代記錄的給定字段中的實際值,對在它的輸
      9入端口接收到的給定記錄進行重新格式化,并且在它的輸出端口輸出重新格式化的記錄。 對要被混淆的客戶數(shù)據(jù)集402中的多個字段中的每一個(例如,記錄中的所有字段,或者記錄中的字段的選定子集),有一個重新格式化組件。在這個例子中,有六個字段要被混淆 姓氏(Last Name)、名字(First Name)、地址(Address)、SSN、CCN 以及 Custid。組件 404 處理姓氏字段的混淆,組件406處理名字字段的混淆,組件408處理地址字段的混淆,組件 410處理SSN字段的混淆,組件412處理CCN字段的混淆,以及組件414處理Custid字段的混淆。從組件414輸出的混淆記錄的流作為圖400的輸出而存儲在混淆客戶數(shù)據(jù)集416 中。圖400也與存儲表征輸入數(shù)據(jù)集402的某些屬性的信息的數(shù)據(jù)集418相關(guān)聯(lián),如下面更詳細地描述的。所有重新格式化組件能夠使用共同的密鑰值,其作為圖400的參數(shù)而存儲?;煜龜?shù)據(jù)集416的安全性取決于保持密鑰參數(shù)安全。密鑰可以充分長(例如,12或60 位數(shù),或者更長)來增強安全性。在組件中處理來自數(shù)據(jù)集402的第一個記錄之前或者與此同時,組件確定是否使用非密鑰技術(shù)、密鑰表查找技術(shù)、或者密鑰偽隨機置換技術(shù)為這個組件處理的字段確定混淆值。如果字段有不需要在與給定客戶關(guān)聯(lián)的不同記錄之間一致地分配的值(例如,交易金額),而且不是特別敏感的,則可以用不依靠存儲的密鑰值的技術(shù)來混淆記錄的這個字段中的值。例如,組件可以用隨機值生成函數(shù)。如果字段有應(yīng)該在與給定客戶關(guān)聯(lián)的不同記錄之間一致地分配的值,和/或應(yīng)該與特定的分布、區(qū)域或者有效性測試相匹配,那么存儲的密鑰可以用于執(zhí)行密鑰表查找技術(shù)或者密鑰偽隨機置換技術(shù)之一。如果字段有無限區(qū)域或者非均勻分布的值,則組件使用基于加密散列法的密鑰表查找技術(shù)。加密散列函數(shù)用存儲的密鑰值來計算索引值,并且這個索引值用于從可能的混淆值表格中查找值。由于加密散列產(chǎn)生隨機出現(xiàn)的值,因此索引(以及由此得出的混淆值) 似乎是隨機選擇的。但是,如果知道密鑰值,則索引實際上是可預(yù)測并可重復(fù)的。如果字段值有非均勻分布,則組件對來自數(shù)據(jù)集418之一的該字段使用利用頻率簡檔信息的“頻率查找”操作。例如,對諸如名字、姓氏、地址以及美國郵政編碼(U. S. Zip code)的字段,對于這些字段中的每一個,數(shù)據(jù)集418包括“頻率(Frequency)”數(shù)據(jù)集和“最高頻率(Frequency Max) ”數(shù)據(jù)集。最高頻率數(shù)據(jù)集包括在實際數(shù)據(jù)的給定字段中出現(xiàn)的所有值的總計數(shù),并允許頻率查找操作為給定字段查找總計數(shù)。因此,各個最高頻率數(shù)據(jù)集包括信號總計數(shù)值。各個頻率數(shù)據(jù)集包括由不重疊范圍編入索引的查找表,并允許頻率查找操作使用“間隔查找” 函數(shù)為給定索引值查找給定字段值。由于選擇了不同的索引值,因此基于它們在實際數(shù)據(jù)中的出現(xiàn)頻率,以適當(dāng)?shù)念l率選擇字段值。例如,圖5示出對于名字字段的頻率數(shù)據(jù)集的查找表的例子。為0-2范圍中的索引值選擇名字“諾頓(Norton)”,為3-10范圍中的索引值選擇名字“李(Lee) ”,以及為索引值11選擇名字“巴特勒(Butler)”。范圍的大小與對應(yīng)值根據(jù)簡檔信息的統(tǒng)計數(shù)據(jù)出現(xiàn)在實際數(shù)據(jù)中的頻率成比例。因此,如果索引值以相等概率出現(xiàn),則各個名字的值會以在實際數(shù)據(jù)中出現(xiàn)的相同的頻率出現(xiàn)。如果字段有有限區(qū)域和均勻分布的值,則組件使用基于偽隨機數(shù)生成的密鑰偽隨機置換技術(shù)(例如,Luby-RackofT偽隨機置換生成單元)。在某些實現(xiàn)方式中,對于任何給定密鑰和范圍1,……,N(例如,對于諸如社會保險號碼或者信用卡號碼的原始值,對應(yīng)于有限區(qū)域的數(shù)的范圍)中的輸入值,置換生成單元函數(shù)f(k,η)用于以隨機出現(xiàn)的方式產(chǎn)生與實際值有關(guān)的混淆值。例如,不同η值產(chǎn)生不同f(k,n)的值,其中f(k,n)是1與N之間的整數(shù)。η與f(k,n)之間的關(guān)系是確定的,但是隨機出現(xiàn)(例如,η的連續(xù)值產(chǎn)生隨機分布式出現(xiàn)的f(k,n)的值)。k值是為不同k值提供不同的η對f(k,n)序列的密鑰值。對于密鑰k的給定值,為η的連續(xù)值確定得到的f(k,n)值的序列;但是,針對k的一個值對于η 的連續(xù)值的f(k,n)值的序列,不能僅從針對k的另一個值對于η的連續(xù)值的f(k,η)值的序列中預(yù)測到。圖6所示的表格示出對于1和20之間的η的有序值以及單一的密鑰值k,置換生成單元可以在1和20之間“打亂(shuffle) ”f(k,η)的可能值的例子。在這個例子中,f(k, η)的一個打亂值映射到η的每個輸入值。由于輸入值和每行的密鑰的組合是唯一的,因此沒有兩個打亂值是相同的。由于混淆值根據(jù)打亂值f(k,n)來選擇,因此也沒有兩個混淆值是相同的。為簡單起見,圖6中給定的例子示出20個打亂值,但是可以生成更大的序列。如下例子描述了在圖4的數(shù)據(jù)流圖中的每個重新格式化組件的實現(xiàn)方式?;煜帐献侄沃档慕M件404可以用keyecLpick函數(shù)將看似隨機的索引創(chuàng)建到姓氏的間隔查找表中。即使他們的實際姓氏相同,為了確保不同客戶得到不同的混淆姓氏, Custid字段可以在計算傳遞給keyecLpick的密鑰值中使用。結(jié)合使用間隔查找進行此操作,可以維持姓氏的分布統(tǒng)計數(shù)據(jù)。在這個例子中,在實際數(shù)據(jù)中有相同姓氏的家庭成員可能在混淆數(shù)據(jù)中被分配不同的姓氏?;煜肿侄沃档慕M件406可以以與組件404相似的方式實現(xiàn)。如果在實際數(shù)據(jù)中出現(xiàn)識別客戶為男性或女性的字段,則keyecLpick函數(shù)能夠區(qū)分男性和女性名字。或者,所述函數(shù)例如可以通過使用附加查找表做“良好推測”。混淆地址字段值的組件408用keyecLpick函數(shù)將看似隨機的索引創(chuàng)建到兩個間隔查找表中一個包含郵政編碼、城市和國家;另一個包含門牌號碼和街道名稱。如果知道密鑰,則索引可以是可預(yù)測的。為了更難得到敏感信息,組件可以獨立地選擇郵政編碼和街道名稱,而且可以構(gòu)造不存在的地址,諸如賓夕法尼亞大道1600號,列克星敦, MA02421 (1600Pennsylvania Avenue,Lexington,MA 02421)?;蛘撸瑢τ谝炞C地址的應(yīng)用軟件,組件可以配置為同時選擇街道名稱和郵政編碼。為了確保門牌號碼對給定的街道并非不切實際地高,組件可以對可能的選擇值加以限制?;煜齋SN字段值的組件410用偽隨機置換技術(shù)選擇偽隨機9位數(shù),直到找到對應(yīng)于有效SSN的一個。組件410也能夠用圖7所示的技術(shù)確保每個混淆值是唯一的。為簡單起見,我們假設(shè)圖7中的偶數(shù)表示有效SSN,而9位數(shù)的奇數(shù)不是有效SSN。如上所述,偽隨機置換技術(shù)可以用置換生成單元函數(shù)對給定字段“打亂”可能的值。圖7中的表格的開始兩列示出這個打亂,說明SSN可能如何被打亂。第三列說明按需要的次數(shù)調(diào)用證實SSN的函數(shù)的結(jié)果,以確保輸出有效的SSN。表格中的箭頭顯示步驟的順序a.對于每個輸入SSN(在列1中表示),encode_ssn函數(shù)在列2的同一行中分配打亂值。b.如果列2中選擇的數(shù)值為偶數(shù)(有效),則它可作為混淆值被寫入驗證的輸出變量中(在列3中表示)。如果列2中選擇的數(shù)值為奇數(shù)(無效),則函數(shù)回到列1,在其中找到選擇的數(shù)目,并且檢查列2的這一行中的值是否有效。c.重復(fù)這一步驟直到找到有效數(shù)值。由于列2中的每個數(shù)值僅可以被列1中的一個數(shù)值達到(即,從列1到列2的映射是一對一的),因此列3中每個驗證過的混淆值是唯一的。例如,對于包含2和4的輸入字段,組件410將分別遍歷在圖7的表的頂部顯示的順序來找到有效的輸出值。第一序列使用圖7的表格中的箭頭示出?;煜鼵CN字段值的組件412基于CCN為16位數(shù)而且以4開頭的有效性標(biāo)準(zhǔn),盡管可以采用任何其它位數(shù)或位數(shù)的順序。第一個6位數(shù)可能足以確定發(fā)行者(issuer)。最后一位數(shù)是控制數(shù)值(例如,用Luhn算法計算)來檢查在它前邊的數(shù)位的錯誤。組件412用偽隨機置換技術(shù)來選擇偽隨機15位數(shù),直到找到有效的一個,并接著計算控制數(shù)位。組件 414提供有效性檢查函數(shù)以通過檢查長度和控制數(shù)位來證實數(shù)值是有效的CCN?;煜鼵ustid字段值的組件414基于Custid是在1000000000和9999999999之間的10位數(shù)的假設(shè)。與SSN和CCN —樣,這個組件可以定義用偽隨機置換技術(shù)來選擇偽隨機數(shù)值的編碼函數(shù)?;煜c用于SSN和CCN的方法不同可以在于,有效性檢查可能不是必須的?;煜龜?shù)據(jù)之后,數(shù)據(jù)混淆模塊112能夠測試混淆的效果。在某些實現(xiàn)方式中,模塊 112通過用可能為多個字段值組成的復(fù)合密鑰(例如,名字字段的值與姓氏字段的值相結(jié)合)的密鑰執(zhí)行聯(lián)合操作,證實在混淆字段中不存在實際數(shù)據(jù)。通過將混淆記錄的字段中的值與實際記錄中的對應(yīng)字段的值相比較,模塊112可以證實對于任何給定名字和姓氏, 混淆數(shù)據(jù)包含與真實數(shù)據(jù)不同的值。上述混淆技術(shù)可以用用于在計算機上執(zhí)行的軟件來實施。例如,軟件在各自包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失和非易失性存儲器和/或存儲元件)、 至少一個輸入設(shè)備或端口、以及至少一個輸出設(shè)備或端口的一個或更多個編程或可編程的計算機系統(tǒng)(可能為多種架構(gòu),諸如分布式、客戶端/服務(wù)器或者網(wǎng)格式)上執(zhí)行的一個或更多個計算機程序中形成過程。所述軟件可以構(gòu)成例如提供關(guān)于計算圖表的設(shè)計和構(gòu)造的其它業(yè)務(wù)的較大的程序中的一個或更多個模塊。圖的節(jié)點和元件可以作為存儲于計算機可讀介質(zhì)的數(shù)據(jù)結(jié)構(gòu)或者其它存儲于數(shù)據(jù)存儲庫中的符合數(shù)據(jù)模型的組織數(shù)據(jù)而實施。所述軟件可以提供于諸如CD-ROM的存儲介質(zhì)上,可以被一般或特殊用途的可編程計算機讀取,或者通過網(wǎng)絡(luò)通信介質(zhì)傳送(在傳播的信號中編碼)到執(zhí)行它的計算機。 全部功能可以在特殊用途的計算機上執(zhí)行,或者使用諸如協(xié)處理器的特殊用途的硬件來執(zhí)行。所述軟件可以以分布式方式執(zhí)行,其中由軟件指定的不同計算部分用不同的計算機執(zhí)行。每個這樣的計算機程序最好存儲在或者下載到存儲介質(zhì)或設(shè)備(例如,固態(tài)存儲器或介質(zhì),或者磁性或光學(xué)介質(zhì)),所述存儲介質(zhì)或設(shè)備可由一般或特殊用途可編程計算機讀取,用于當(dāng)存儲介質(zhì)或設(shè)備被計算機系統(tǒng)讀取時配置和操作計算機來執(zhí)行這里描述的步驟。所述發(fā)明系統(tǒng)也可以被考慮作為配置有計算機程序的計算機可讀存儲介質(zhì)而實施,其中存儲介質(zhì)配置為導(dǎo)致計算機系統(tǒng)以特殊并預(yù)定的方式操作從而執(zhí)行這里描述的功能。已經(jīng)描述了本發(fā)明的許多實施例。然而,將理解在不脫離本發(fā)明的精神和范圍內(nèi)可以進行各種修改。例如,上述某些步驟可能與次序無關(guān),因此可以不同于所述次序的次序而執(zhí)行。應(yīng)理解到上述描述意圖說明而并非限制本發(fā)明的范圍,所述范圍由附加權(quán)利要求范圍界定。例如,上述許多功能步驟可以以不同次序執(zhí)行,而沒有實質(zhì)影響總體處理。其它
      12實施例在權(quán)利要求的范圍之內(nèi)。
      權(quán)利要求
      1.一種用于混淆數(shù)據(jù)的方法,所述方法包括從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值;存儲密鑰值;對多個記錄中的每一個,用所述密鑰值生成混淆值來替代所述記錄的給定字段中的原始值,使得所述混淆值取決于所述密鑰值并且確定地與所述原始值相關(guān);以及在數(shù)據(jù)存儲系統(tǒng)中存儲包括包含混淆值的記錄的混淆數(shù)據(jù)集合。
      2.如權(quán)利要求1所述的方法,進一步包括存儲簡檔信息,所述簡檔信息包括至少一個所述字段的統(tǒng)計數(shù)據(jù)特征值。
      3.如權(quán)利要求2所述的方法,其中,對所述給定字段,用所述密鑰值和所存儲的簡檔信息生成所述混淆值。
      4.如權(quán)利要求3所述的方法,其中,所述混淆值以基于所述給定字段的所存儲的簡檔信息特征值中的統(tǒng)計數(shù)據(jù)而確定的頻率,出現(xiàn)在所述混淆數(shù)據(jù)集合的給定字段中。
      5.如權(quán)利要求4所述的方法,其中,通過用所述原始值和所述密鑰作為生成索引值的函數(shù)的輸入、并用所述索引值在預(yù)定的混淆值集中查找所述混淆值,生成所述混淆值。
      6.如權(quán)利要求5所述的方法,其中,所述預(yù)定的混淆值集作為查找表而存儲,在所述查找表中,每個混淆值對應(yīng)于一個或更多個索引值。
      7.如權(quán)利要求5所述的方法,其中,一范圍內(nèi)的多個索引值對應(yīng)于在所述預(yù)定的混淆值集中的相同的混淆值。
      8.如權(quán)利要求7所述的方法,其中,所述范圍的大小基于給定字段的所存儲的簡檔信息特征值中的所述統(tǒng)計數(shù)據(jù)。
      9.如權(quán)利要求1所述的方法,其中,用所述密鑰值生成混淆值來替代所述記錄的給定字段中的原始值包括用確定函數(shù)組合所述原始值和所述密鑰來產(chǎn)生用于選擇所述混淆值的選擇值。
      10.如權(quán)利要求9所述的方法,其中,用確定映射將所述選擇值映射到所述混淆值。
      11.如權(quán)利要求9所述的方法,其中,從中選擇所述混淆值的值域包括來自所述數(shù)據(jù)源的記錄的給定字段中的多個所述原始值。
      12.如權(quán)利要求11所述的方法,其中,一個或更多個所述原始值不包括在所述值域中。
      13.如權(quán)利要求12所述的方法,其中,所述值域中的一個或更多個值不包括在所述原始值中。
      14.如權(quán)利要求9所述的方法,其中,所述確定函數(shù)用所述密鑰以加密方式阻止從所述混淆值中恢復(fù)所述原始值。
      15.如權(quán)利要求9所述的方法,其中,所述確定函數(shù)針對所述密鑰的不同值提供選擇值對連續(xù)原始值的不同順序。
      16.如權(quán)利要求15所述的方法,其中,針對所述密鑰的第一值對連續(xù)原始值的選擇值的第一序列不能從針對所述密鑰的第二值對連續(xù)原始值的選擇值的第二序列中預(yù)測到。
      17.如權(quán)利要求9所述的方法,其中,用所述密鑰值生成所述混淆值來替代所述記錄的給定字段中的原始值包括確定所述選擇值是否與有效的混淆值對應(yīng),而且如果不是,則重復(fù)地用所述確定函數(shù)組合所述選擇值和所述密鑰來產(chǎn)生附加選擇值,直到所述附加選擇值與有效的混淆值對應(yīng)。
      18.如權(quán)利要求17所述的方法,其中,有效的混淆值由預(yù)定的位數(shù)組成。
      19.如權(quán)利要求1所述的方法,進一步包括將來自所述數(shù)據(jù)源的所述記錄劃分為多個記錄集,并且,用不同計算資源并行地在不同記錄集的記錄中用所生成的所述混淆值替代所述給定字段中的原始值。
      20.如權(quán)利要求1所述的方法,其中,包括所述混淆數(shù)據(jù)集合中的混淆值的至少第一記錄包括至少一個沒有被混淆值替代的原始值。
      21.如權(quán)利要求1所述的方法,進一步包括對所述原始值出現(xiàn)的多個記錄,基于所述原始值是否一致地被相同的混淆值替代,確定是否使用所述密鑰值以混淆值替代在所述第一記錄中的原始值。
      22.一種用于混淆數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括提供在一個或更多個字段中具有值的記錄的數(shù)據(jù)源; 數(shù)據(jù)存儲系統(tǒng);以及一個或更多個連接到所述數(shù)據(jù)存儲系統(tǒng)的處理器,提供執(zhí)行環(huán)境來 從所述數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值; 存儲密鑰值;對多個記錄中的每一個,用密鑰值生成混淆值來替代所述記錄的給定字段中的原始值,使得所述混淆值取決于所述密鑰值并且確定地與所述原始值相關(guān);以及在所述數(shù)據(jù)存儲系統(tǒng)中存儲包括包含混淆值的記錄的混淆數(shù)據(jù)集合。
      23.一種用于混淆數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括提供在一個或更多個字段中具有值的記錄的數(shù)據(jù)源; 數(shù)據(jù)存儲系統(tǒng);以及從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值的裝置; 對多個記錄中的每一個,用密鑰值生成混淆值來替代所述記錄的給定字段中的原始值,使得所述混淆值取決于所述密鑰值并且確定地與所述原始值相關(guān)的裝置;以及在所述數(shù)據(jù)存儲系統(tǒng)中存儲包括包含混淆值的記錄的混淆數(shù)據(jù)集合的裝置。
      24.一種存儲用于混淆數(shù)據(jù)的計算機程序的計算機可讀介質(zhì),所述計算機程序包括用于使得計算機執(zhí)行以下步驟的指令從數(shù)據(jù)源讀取在多個記錄的一個或更多個字段中出現(xiàn)的值; 存儲密鑰值;對多個記錄中的每一個,用所述密鑰值生成混淆值來替代所述記錄的給定字段中的原始值,使得所述混淆值取決于所述密鑰值并且確定地與所述原始值相關(guān);以及在數(shù)據(jù)存儲系統(tǒng)中存儲包括包含混淆值的記錄的混淆數(shù)據(jù)集合。
      全文摘要
      混淆數(shù)據(jù)的方法包括讀取(210)發(fā)生在數(shù)據(jù)源中的多個記錄的一個或更多個字段中的值;存儲(220)密鑰值;對多個記錄中的每一個,用所述密鑰值生成(230)混淆值來替代所述記錄的給定字段中的原始值,這樣,所述混淆值取決于所述密鑰值并且確定地與所述原始值相關(guān);以及存儲(240)包括記錄的所述混淆數(shù)據(jù)集合,所述記錄包括數(shù)據(jù)存儲系統(tǒng)中的混淆值。
      文檔編號G06F13/00GK102460404SQ201080032309
      公開日2012年5月16日 申請日期2010年6月1日 優(yōu)先權(quán)日2009年6月1日
      發(fā)明者P.尼爾加德 申請人:起元技術(shù)有限責(zé)任公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1