提高專用加密數據的搜索能力的製作方法
2023-06-14 15:25:51 1

相關申請的交叉引用
本申請是2015年2月11日提交的美國臨時申請no.62/114,976的正式案並要求其權益,該申請出於所有目的全文以引用方式併入本文。
本申請一般涉及數據處理。具體地說,本申請涉及在允許搜索數據時保護加密數據,例如使用通配符。
背景技術:
對於任何實體,存儲加密數據或其他專用數據通常是潛在的安全風險。個人可標識信息通常對欺詐者有價值,使具有個人可標識信息的數據存儲成為黑客企圖的目標。這樣的專用數據可以在資料庫中加密,以保護免受黑客的訪問。然而,資料庫中的加密數據可能不容易被搜索。在許多實現中,使用散列函數將數據存儲在資料庫中,並且針對數據的任何查詢都必須是散列值的精確匹配。這通常需要用戶輸入要搜索的字符串的精確值。可以使用散列函數和找到的精確匹配來對這個精確值進行散列。這可能會與需要通過使用通配符或其他部分數據搜索來搜索個人可標識信息的業務需求相衝突。
加密數據的加密(例如地址線、電話號碼和傳真號碼)對於保護標識的那些的隱私很重要。一個問題是,一旦加密,這些欄位很難通過搜索訪問。許多使用加密數據的應用可以被寫入,使得它們需要在這些欄位上進行全文搜索。例如,客戶服務代表(csr)應用依賴於在協助客戶時能夠搜索客戶數據。作為示例,csr可以在搜索欄位中輸入電話號碼(例如,123-456-7890)並提交搜索查詢。如果正在搜索的數據未被加密,則應用只需要進行直接比較來標識相關的資料庫記錄。
然而,如果要搜索的數據以加密格式存儲,則其可能是不可搜索的。這種情況的典型解決方案是使用散列函數。例如,一個解決方案可能是使用單向密碼散列函數。通用散列函數是將任意大小的數字數據映射到固定大小的其他數字數據的函數。密碼散列函數允許輸入數據與存儲的散列值匹配的驗證,同時使得難以構造將散列到相同值的任何數據或難以找到散列到相同值的任何兩個唯一數據段。
系統可以對明文加密數據執行散列操作,並存儲這些散列。當用戶為特定的加密數據片段(例如電話號碼123-456-7890)提交搜索查詢時,對電話號碼執行相同的散列操作,將其與存儲的散列進行比較以確定散列是否匹配任何記錄。當使用精確的搜索項時,這種解決方案通常是可行的(例如,用戶在其中輸入他們正在搜索的完整準確的數據)。
遺憾的是,在更典型的情況下,用戶可能不會輸入他們正在搜索的整個數據,在這種情況下是123-456-7890,而是可以輸入123-456*或類似的,其中*表示通配符字符。在這種情況下的用戶將提交一個通配符搜索,其旨在產生一組相關的結果。但是,在需要精確匹配以等於散列值的系統中,這種使用通配符是不允許的。
本發明的實施方案單獨地或共同地解決了這些和其他問題。
技術實現要素:
為了解決上述問題,本公開的實施方案可以使用包括明文(例如,完全可搜索的文本)的一個或多個單獨的可搜索表。清晰數據的每個片段可以對應於源數據,其以加密形式單獨存儲(例如,在單獨的行或單獨的表中)。作為示例,源記錄的各個欄位可以作為明文存儲在單獨的位置中,使得明文欄位不能容易地相關以獲得源記錄中的所有專用信息。以這種方式,獲得一部分數據的黑客不能將獲得的數據連結到源數據中的個人記錄。例如,電話號碼記錄可以從明文地址記錄和/或明文姓名記錄以明文形式單獨存儲,使得數據不可用於惡意獲得它的未授權方。
在一些實施方案中,數據可以以一定的方式被分成不同的可搜索表(或等效地分成一個表的單獨的行),使得加密數據被存儲為明文,但是沒有到資料庫中的其他數據的可用連結。在一些實施方案中,唯一的加密外鍵可以與明文數據的每個片段一起存儲。外鍵可以用於引用回源表,以便標識與搜索字符串相關的一個或多個記錄。例如,搜索用戶數據(例如,使用通配符)可以檢索加密標識符,然後可以將加密標識符輸入到解密模塊(引擎)中以獲得用於訪問其中數據被加密的源表的外鍵,以及其中個人的完整數據記錄可以一起存儲,例如作為行中的欄位。然後,外鍵可以用於基於解密標識符來搜索源表以返回期望的加密數據,該數據可以被發送到解密模塊以提供期望的數據。
其他實施方案涉及與本文中描述的方法關聯的系統、設備和計算機可讀介質。
參照以下詳細描述和附圖,可以獲得對本發明的實施方案的本質和優點的更好理解。
附圖說明
將參考附圖描述根據本公開的各種實施方案,其中:
圖1描繪了根據本文提供的至少一些實施方案的樣本資料庫表方案;
圖2描繪了根據至少一些實施方案的能夠提供對資料庫平臺的後端支持的服務提供商計算機的說明性示例;
圖3描繪了根據本發明的至少一些實施方案的用於搜索資料庫以獲得數據的方法300的流程圖;
圖4描繪了示出根據本文提供的至少一些實施方案的設備和數據流的系統圖;
圖5描繪了根據至少一些實施方案的對包括加密數據的資料庫執行搜索的示例性過程;
圖6描繪了根據至少一些實施方案的用於更新包括加密數據的資料庫的過程;以及
圖7描繪了可以存在於根據本發明的一些實施方案的被配置成實現方法和/或過程的計算機設備和/或系統中的元件的方面。
術語
在討論本發明的具體實施方案之前,可以詳細描述一些術語。
「客戶端計算機」可以包括任何合適的計算裝置。客戶端計算機可以由消費者、與業務實體相關聯的用戶或任何其他個人來操作。客戶端計算機可以使用任何合適的有線或無線網絡(包括網際網路),以便與其他系統通信。例如,消費者客戶端計算機可以被消費者用來與商家網際網路店面進行交互,從而進行交易。與商家相關聯的用戶可以使用商家客戶端計算機與其他商家計算機系統和所描述的平臺進行交互。計算機和消費者行動裝置的示例包括能夠訪問網際網路的任何設備,諸如個人計算機、蜂窩或無線電話、個人數字助理(pda)、平板pc和手持式專用讀取器。
「資料庫」可以包括用於存儲和促進信息檢索的任何硬體、軟體、固件或上述的組合。此外,資料庫可以使用各種數據結構、排列和編譯中的任何一種來存儲和促進信息檢索。
「資料庫記錄」,也稱為行或元組,可以指資料庫中的單個隱式結構化數據項。源表中的每個資料庫記錄可以與特定的人或實體相關聯。搜索表中的每個資料庫記錄可以包括加密外鍵、主鍵和明文搜索欄位。
「個人可標識信息」可以指任何可用於區分或追蹤個人標識,單獨地或當與其他個人或標識信息相結合時其連結到特定個體或可連結到特定個體。例如,個人可標識信息可以包括地址、電話號碼、出生日期、社會保險號碼、出生日期和地點、母親的娘家姓氏、生物特徵記錄或任何其他合適的個人特定信息。存儲和使用個人可標識信息存在各種法律要求。個人可標識信息還可能包括連結到個人或可連結到個人的信息,諸如醫療、教育、財務和就業信息。
「處理器」可以包括移動裝置(或其他電子裝置)內的硬體,所述硬體執行具體化為計算機可讀介質(例如非瞬態計算機可讀介質)中的代碼的指令。示例性處理器可以是中央處理單元(cpu)。如本文所使用的,處理器可以包括單核處理器、多個單核處理器、多核處理器、多個多核處理器或者被配置成執行計算裝置的算術運算、邏輯運算和/或輸入/輸出操作的任何其他適當的硬體組合。
「伺服器計算機」可以包括可以向其他計算機提供通信並從其他計算機接收通信的任何適當的計算機。伺服器計算機可以包括計算機或計算機的集群。例如,伺服器計算機可以是大型主機、小型計算機集群或像一個單元一樣工作的一組伺服器。在一個實例中,伺服器計算機可以是耦連到網絡伺服器的資料庫伺服器。伺服器計算機可以耦連到資料庫並且可以包括用於服務於來自一個或多個客戶端計算機的請求的任何硬體、軟體、其他邏輯、或前述內容的組合。伺服器計算機可以包括一個或多個計算裝置,並且可以使用各種計算結構、排列和編譯中的任何一種來服務來自於一個或多個客戶端計算機的請求。在諸如計算機的組件之間的數據轉移和其他通信可以通過任何合適的有線或無線網絡(諸如網際網路或私用網絡)進行。
「服務計算機」或「服務提供商計算機」可以包括與提供資源或服務的實體相關聯的任何系統。在一些實施方案中,服務提供商計算機可以處理與提供資源或服務的實體相關聯的計算機應用的功能。服務提供商可以提供任何合適的服務。例如,服務提供商可以是商家、公用事業公司、支付處理網絡、錢包提供商、商家、網站運營商或銀行。為了本公開的目的,服務提供商計算機是指所公開平臺的提供商。
「更新」可以包括對現有資料庫記錄的添加、刪除、轉換或任何其他改變。更新也可以指創建新的資料庫記錄或條目。例如,更新可以是向資料庫記錄中的欄位添加或刪除數據,和/或更新可以是在資料庫表中添加或刪除整個資料庫記錄。更新也可以指對資料庫記錄中的文本欄位的更改。
「用戶」可以指個人或實體,其可以使用個人或實體被授權使用的憑證(例如商家id、用戶id和密碼)來訪問所描述的平臺。如本文所使用的,用戶還可以指未被授權訪問所述平臺的個人或實體,但是其可以訪問允許他們訪問所描述的平臺的授權憑證。用戶可以通過用戶界面或控制臺命令提交搜索查詢。
具體實施方式
根據至少一些實施方案,本公開涉及能夠提供個人可標識信息(或其他加密數據)的有效搜索能力的資料庫平臺。當在休息時將加密數據存儲在資料庫中是潛在的安全風險時,這個風險的解決方案就是加密數據。然而,加密數據不能夠容易地被搜索。典型的方法是應用加密數據的散列,這只能允許搜索與散列值精確匹配的條目。然而,業務可能會要求這種加密數據是完全可搜索的,例如使用通配符。實施方案可以以一定的方式將數據分成多個表,使得加密數據以清楚的方式存儲,但是沒有到資料庫內的其他數據的可用連結。
這裡描述的是可以管理加密和其他敏感數據以使其完全可搜索的平臺。例如,實施方案可以生成多個可搜索表,其包括源表中的加密數據列的明文版本。可搜索表中的明文值與加密外鍵相關聯,當解密時,其使得用戶可以從源表查詢數據。以這種方式,明文數據的每個片段被存儲,其中沒有到與記錄相關的任何其他數據的可用連結。以這種方式,可以使加密數據可搜索,而不需要使用要搜索的字符串的精確匹配。
描述了可搜索的加密資料庫方案,其可以根據本公開的一些實施方案來實現。另外,將描述示例性資料庫系統,其能夠根據至少一些實施方案來實現可搜索的加密資料庫方案。本公開還將涉及搜索以及更新所描述的資料庫系統。
i.具有加密數據的可搜索資料庫
資料庫表通常由一個或多個列和一行或多行構成。資料庫表的列通常表示可以搜索的欄位。資料庫表的行通常表示個人記錄。每個個人記錄可以具有在該行上的每個列中填寫的值。要對資料庫執行查詢,通常會指定列(例如,要搜索的欄位,諸如電話號碼),並提供搜索字符串,其通常包含通配符。具有與列內的搜索字符串匹配的值的行作為結果集返回。然而,為了保護敏感數據,資料庫表的一些列可能被加密,這意味著它們將包含不可破譯的數據。要搜索這些列,通常需要提供要搜索的字符的確切的字符串,即沒有通配符。然後,將該字符串加密並與列中的值進行比較。
在不提供要搜索的字符的確切的字符串的情況下,為了提供具有完全可搜索的加密數據的資料庫系統,本公開討論了可以在至少一些實施方案中實現的資料庫表方案。在該資料庫表方案中,源表可以包括多列數據,其中一些數據可能包含加密數據,以及其中一些數據可能包含明文數據。可以為源表的每個加密列生成一個或多個可搜索表(與源表分開)。生成的可搜索表可以包括明文列,其表示來自源表的相應加密列的解密數據。下面參考圖1更詳細地描述該資料庫表方案。
圖1描繪了根據本文提供的至少一些實施方案的樣本資料庫表方案100。資料庫可以包含一個或多個源表,其包含解密的唯一標識符(id)、一個或多個加密數據項、以及可能的額外明文或加密數據欄位。在圖1中,源表110被描繪成包括以明文形式存儲的唯一id主標識符(mid)欄位111、加密電子郵件地址欄位112、加密電話號碼欄位113和名字欄位114以及姓氏欄位115。加密電子郵件地址欄位112和加密電話號碼欄位113中的底層數據可以被認為是專用信息(例如,加密數據)。在一些實施方案中,其他欄位,諸如名字欄位114和/或姓氏欄位115也可以被加密。
圖1還描繪了兩個可搜索表120和130,每個可搜索表各自包含加密id(122和132),明文加密數據片段(121和131)以及表索引id(也稱為主鍵123和133)。搜索電子郵件表120被描繪為包含明文電子郵件地址列121,其中每個明文電子郵件地址位於搜索電子郵件表120的單獨行中。例如,搜索電子郵件表120可以包括來自源表110的電子郵件地址列的每個加密值的明文版本。每個電子郵件地址可以存儲成搜索電子郵件表120中的單獨行,其中每個行具有對應的主鍵和對應的加密唯一id。這將允許系統全部或部分地搜索電子郵件地址,以便檢索相關聯的加密標識符122(也稱為mid)。
類似地,搜索電話號碼錶130包含明文電話號碼131,其允許系統全部或部分地搜索電話號碼,以便檢索相關聯的加密標識符132。資料庫表方案可以具有存儲在資料庫中的每種類型的加密數據的單獨可搜索表(例如,源表110的每列加密數據的單獨可搜索表)。
如圖所示,可搜索表中的每個mid122和132可以與源表中的mid111相關。然而,可搜索表的mid可以被加密,使得mid不可容易地連結到相應的源數據。在一些實施方案中,mid122和/或mid132可以是mid111的加密版本。使用解密引擎,系統可以獲得檢索的mid的解密版本,然後使用mid的解密版本來搜索源表110以獲得加密的信息數據,例如欄位112和113。然後可以對加密的信息數據進行解密。
在至少一些實施方案中,資料庫系統100提供個人可標識信息的分離,其中一種類型的加密數據被存儲在可搜索表中,使得個人可標識信息不與其他加密數據直接相關聯。例如,電話號碼123-456-7890可以以表搜索電話號碼130的電話號碼列中的明文存儲,以及電話號碼明文數據可以是包括在該可搜索表中的明文加密數據的唯一列。類似地,加密數據的其他片段也可以作為單獨的明文列存儲在單獨的可搜索表中(例如,沒有任何其他列的加密數據),使得其對於欺詐者無價值,因為欺詐者不能將個人數據的一個片段連接到數據的其他片段。
可搜索表,例如搜索電子郵件表120,包含明文加密數據列,在這種情況下為電子郵件欄位。在所示的示例中,在該電子郵件地址的旁邊的可搜索表中的明文信息的唯一其他列可以是包括加密標識符的列。在加密的意義上,該標識符可能是不可讀取的(例如,加密外鍵)。在所描繪的示例中,加密標識符可以是mid122。在此表中查找特定電子郵件地址或電子郵件地址的一部分可以返回零個或多個加密mid的列表。所得的mid列表可以經受解密引擎以標識解密mid的列表。
在一些實施方案中,解密的mid列表可以在針對源表110的第二查詢中使用,以便檢索附加的相關加密數據。因此,一旦檢索到加密外鍵,其可以通過解密引擎進行發送,以便獲取明文形式的外鍵。一旦獲得了外鍵,它可以隨後用於在額外表(例如源表110)上執行查詢,該表包含與被查詢的搜索字符串相關的加密數據。在一些實施方案中,外鍵可以對應於mid111(例如,記錄id),其可用於標識源表中的記錄。然而,需要與查詢或其一部分匹配的明文,以便在可以檢索來自源表110的任何數據之前首先檢索加密外鍵。查詢可以返回相應的名字和姓氏,以及對應於最初搜索的電子郵件地址的加密數據的額外片段。該額外加密數據可以是加密格式或密文格式。
因此,本公開的實施方案可以允許系統在被加密的數據上執行全文搜索。這些類型的加密數據中的每一種可以以其自身的表內的明文存儲,例如圖1的搜索電子郵件表和搜索電話號碼錶。其他示例表包括但不限於郵寄或業務地址、社會保障號碼、出生日期和地點、母親娘家姓氏、生物特徵記錄、醫療、教育、財務和就業信息等。這些可搜索表中的每一個都包含加密外鍵id列和特定類型的明文數據列,其中明文數據的給定片段的加密外鍵id可用於標識源表中的記錄,源表包括明文數據。由於沒有連結到其他敏感數據,因此可以使用以這種方式存儲明文加密數據,以便不損害存儲在資料庫中的明文的額外加密數據。
ii.資料庫系統
為了提供上述可搜索的資料庫方案,本公開討論了能夠實現這種方案的至少一些實施方案的示例性資料庫系統(服務提供商計算機)。所描述的服務提供商計算機可以包括用於提供加密和解密的一個或多個資料庫和邏輯。該資料庫系統相對於下面的圖2更詳細地描述。
圖2描繪了根據至少一些實施方案的能夠提供對資料庫平臺的後端支持的服務提供商計算機的說明性示例。
服務提供商計算機可以是包括位於遠程的伺服器計算機的任何類型的計算設備。另外,應當注意,在一些實施方案中,服務計算機200可以由在託管計算環境中實現的多個虛擬機體現。託管計算環境可以包括一個或多個快速提供和發布的計算資源,其計算資源可以包括計算設備、網絡設備和/或存儲設備。託管計算環境也可以稱為雲計算環境。
在一個說明性配置中,服務計算機200可以包括至少一個存儲器202和一個或多個處理單元(或處理器)204。處理器204可以在硬體、計算機可執行指令、固件或其組合中適當地實現。處理器204的計算機可執行指令或固件實施方案可以包括以任何合適的程式語言編寫的用於執行所描述的各種功能的計算機可執行指令或機器可執行指令。
存儲器202可以存儲在處理器204上可加載和可執行的程序指令,以及存儲在執行這些程序期間生成的數據。根據服務計算機200的配置和類型,存儲器202可以是易失性的(諸如隨機存取存儲器(ram))和/或非易失性的(諸如只讀存儲器(rom)、閃速存儲器等)。服務計算機200還可以包括額外存儲器206,諸如可移動存儲器或不可移動存儲器,其包括但不限於磁存儲器、光碟和/或磁帶存儲器。盤驅動器及其相關聯的計算機可讀介質可以為計算設備提供計算機可讀指令、數據結構、程序模塊和其他數據的非易失性存儲。在一些實施方案中,存儲器202可以包括多種不同類型的存儲器,諸如靜態隨機存取存儲器(sram)、動態隨機存取存儲器(dram)或rom。更詳細地轉向存儲器202的內容,存儲器202可以包括作業系統208和用於實現本文所公開的特徵的一個或多個應用程式或服務,該應用程式或服務至少包括用於加密或解密標識符的模塊(加密/解密引擎210)。存儲器202還可以包括資料庫212,其存儲個人可標識信息以及其他數據。
可移動和不可移動的存儲器202和額外存儲器206是計算機可讀存儲介質的示例。例如,計算機可讀存儲介質可以包括以用於存儲諸如計算機可讀指令、數據結構、程序模塊或其他數據的信息的任何方法或技術實現的易失性或非易失性,可移動或不可移動介質。如本文所使用的,模塊或引擎可以指由計算系統(例如,處理器)執行的編程模塊,該計算系統存儲在用戶設備或服務計算機200上並由其執行。服務計算機200還可以包含通信連接214,其允許服務計算機200通過網絡與一個或多個存儲的資料庫212、另一個計算設備或伺服器、用戶終端和/或其他設備通信。服務計算機200還可以包括輸入/輸出(i/o)設備和/或埠216,諸如用於實現與鍵盤、滑鼠、筆、語音輸入設備、觸摸輸入設備、顯示器、揚聲器、印表機等的連接。
更詳細地轉向存儲器202的內容,存儲器202可以包括作業系統208。示出了包含至少一些加密數據的資料庫,並且還可以將資料庫併入到存儲器202或不同的存儲器。用於實現包括加密/解密引擎210在內的本文公開的特徵的一個或多個應用程式或服務也可存儲在存儲器202中。加密/解密引擎210可以包括用於加密和解密的單獨的子引擎,其可以共享公共通信接口和/或公共庫。資料庫212可以包括任何合適的持久數據存儲系統。在一些實施方案中,資料庫212可以存儲在資料庫中。存儲在資料庫212中的信息可以由加密/解密引擎210經由資料庫查詢或任何其他合適的數據檢索裝置進行訪問。
在一些實施方案中,加密/解密引擎210可以結合處理器204配置成加密和/或解密提供給它的數據。例如,加密/解密引擎210可以被配置成對提供給它的加密外鍵以及來自源表的加密數據進行解密。在一些實施方案中,加密/解密引擎210可以在其接收到提供要加密或解密的數據的請求命令(例如,對加密或解密函數的調用)時執行。在一些實施方案中,待解密的數據可以作為函數調用的參數被傳遞到加密/解密引擎210。加密/解密引擎210可以被提供有作為函數調用的參數的加密和/或解密密鑰。
在一些實施方案中,加密/解密引擎210可執行資料庫查找以標識密鑰。在一些實施方案中,加密/解密引擎210可以利用硬編碼的加密/解密密鑰和/或加密算法。加密/解密引擎210可利用任何合適的加密或解密算法對資料庫212內的數據進行編碼。在一些實施方案中,加密/解密引擎210可以包括硬體安全模塊(hsm),其能夠保護和管理用於強認證和密碼處理的數字密鑰。硬體安全模塊可以是被配置成保護和管理用於強認證的數字密鑰的物理計算設備。硬體安全模塊還可以被配置成提供密碼處理。
在一些實施方案中,資料庫212可以包括將與各個個人相關聯的信息。資料庫212可以包括源表和一個或多個可搜索表,每個表與個人可標識信息片段相關聯。在一些實施方案中,資料庫212可以包括至少一些密文數據和至少一些明文數據。在一些實施方案中,相同數據的密文版本和明文版本都可以存儲在資料庫212中。例如,可搜索表的主標識符可以是源表的明文主標識符的密文版本。在一些實施方案中,表的一個或多個列中的所有數據都可以被加密。在一些實施方案中,在一個表中加密的數據可以利用與在第二表中加密的數據不同的加密/解密密鑰。
iii.搜索具有加密數據的資料庫
為了利用上述方案,資料庫系統可以發起資料庫查詢。在一些實施方案中,用戶可以提供要搜索的欄位或列的指示和搜索字符串(例如,字母數字字符串,應為其當找到匹配數據)。資料庫系統可以被配置成標識適當的可搜索表(例如,基於所指示的欄位或列),標識與可搜索表內的匹配數據相關聯的外鍵,並且查詢源表以獲得與所標識的外鍵相關的信息。在本公開中,下面描述搜索具有加密數據的資料庫的方法、與資料庫搜索相關聯的數據流以及在包括加密數據的資料庫上執行搜索的示例性過程。
a.方法
圖3描繪了根據本發明的至少一些實施方案的用於搜索資料庫以獲得數據的方法300的流程圖。方法300可以由搜索系統執行,該搜索系統可由計算機資料庫系統和搜索機器執行。
在框310處,計算機資料庫系統接收對所請求的欄位值的查詢。所請求的欄位值可以包括要從其返回值的欄位或列的指示。例如,查詢可能包含短語「selectlast_name」,表示要為結果集中的任何記錄返回姓氏欄位中的值。查詢還可以包括搜索字符串。該搜索字符串可以包括通配符以僅指定與所需數據匹配的部分所需字符串。例如,如果搜索電話號碼,搜索字符串可以是123-456-*,其中*是通配符字符。
在一些實施方案中,查詢可以指定要搜索的一個或多個欄位或列。例如,查詢可以包括語言「wherephone_number='123-456*'」,其表示要為搜索字符串搜索源表的電話號碼欄位。在一些實施方案中,可以提供多個欄位和搜索字符串。例如,查詢可以包括語言「其中phone_number='123-456*'和city='houston'。在這個示例中,查詢可以返回一個結果集,其包括匹配這兩個條件的所有記錄。
在框320處,使用搜索字符串搜索計算機資料庫系統的第一表以標識一個或多個匹配值。可以基於查詢中指示的欄位來標識第一表。例如,查詢中的欄位可以指源表的加密列。第一表可以是具有對應於源表的加密列的數據的明文列的可搜索表。資料庫系統可以將搜索字符串與存儲在明文列中的值進行比較,以標識與所提供的搜索字符串相匹配的一個或多個值。例如,值123-456-7890和值123-456-1234都是搜索字符串123-456*的匹配。在此示例中,第一表的兩個記錄將返回為具有匹配值。
在框330處,第一表的搜索導致與獲得的搜索串的匹配值對應的一個或多個加密外鍵。一旦資料庫系統在框320處從第一表的明文列中標識出一個或多個匹配值,則資料庫系統將從包含這些匹配值的記錄的外鍵欄位中標識值。例如,如果第一表是圖1的搜索電話號碼錶130,對於與搜索字符串匹配的電話號碼相關聯的任何記錄,將為這些記錄返回對應的加密外鍵。
在框340處,將加密外鍵發送到解密引擎進行解密。解密引擎可以對加密外鍵進行一個或多個解密算法來解密外鍵。在一些實施方案中,一個或多個解密算法可以利用解密密鑰。在一些實施方案中,解密引擎使用的解密密鑰可以取決於從其中獲得加密外鍵的可搜索表。例如,每個可搜索表可以與不同的解密密鑰相關聯。通過解密引擎對外鍵的解密可以導致外鍵的明文版本。解密引擎可以對應於圖2的加密/解密引擎210。
在框350處,從加密/解密引擎接收回解密外鍵。在該框處,外鍵可以在響應消息中提供給資料庫系統。在一些實施方案中,解密外鍵可以通過函數返回。
在框360處,搜索資料庫的第二表,以搜索與框350中獲得的解密外鍵對應的一個或多個加密欄位值。例如,第二表可以是圖1的源表110,並且可以從資料庫檢索與解密外鍵對應的加密的電子郵件和加密的電話號碼。另外,如果在第二表中存在明文數據,其也可以獲得。例如,在源表110中,名字和姓氏以明文形式存儲,以及搜索也可以檢索這些欄位值。在一些實施方案中,可以在查詢中請求特定欄位值。例如,查詢可以指定欄位,其中從源表返回相對於搜索字符串的值。
在框370處,可以將在框360中檢索到的任何加密的欄位值發送到解密引擎以進行解密。在該框處,解密引擎可以將加密的欄位值進行一個或多個解密算法以獲得欄位值的解密版本。在一些實施方案中,源表的每個欄位可以與單獨的解密密鑰相關聯。
在框380處,從解密引擎接收解密的用戶數據。一旦被解密,它可以被發送回請求者,可能與檢索到的任何明文數據一起。
系統能夠將不同的加密數據片段的存儲分開,包括但不限於電話號碼、電子郵件地址和郵寄地址,因為它們都存儲在一起,具有資料庫訪問權限的某些人可能能夠輕鬆獲取個人的所有相關的加密數據。然而,如果每一個僅在單獨的表中和在相同表的加密部分中以明文形式出現,則在不訪問解密引擎的情況下將那些加密的數據項與相同的實體和相同的人相關聯將變得更加困難。即使資料庫被盜或未經許可被訪問,由於每個表未連接,數據是不可用的。
一旦系統具有加密數據特定片段的外鍵,它可以使用該外鍵以從其他資料庫表中獲取額外相關的加密數據。它可以執行額外查詢以將數據從資料庫中取出。發出查詢的用戶將永遠不會看到外鍵,因為不需要將外鍵返回給用戶,但是內部系統可以使用它以獲取額外加密數據。系統用戶將永遠不會實際檢索外部加密密鑰,相反地,系統將使用該密鑰進行後續步驟,但系統將永遠不需要將外部加密密鑰發送回系統用戶。
b.數據流
圖4描繪了示出根據本文提供的至少一些實施方案的設備和數據流的系統圖。服務計算機400具有軟體,其允許用戶輸入他們希望獲得的搜索數據。在一些實施方案中,服務計算機400可以是圖2的示例性服務計算機200。
當搜索字符串被輸入搜索界面時,使用搜索字符串來查詢資料庫430,例如根據圖3的方法300。查詢可以包括服務計算機400,其向資料庫430發送搜索字符串401以嘗試查找與搜索字符串401對應的數據。可以經由網絡接口從與服務計算機400通信的客戶端設備執行搜索界面。搜索界面可以是安裝在遠程定位的客戶端設備上並從其執行的瀏覽器應用(例如,web瀏覽器)。
在一些實施方案中,搜索界面可以是在客戶端設備上實現並從其執行的圖形用戶界面(gui)。gui可以與和資料庫系統通信的應用或程序相關聯。例如,可以經由在遠程客戶端設備上實現的gui來向用戶呈現多個可搜索欄位。用戶可以將搜索字符串輸入到所呈現的可搜索欄位中的任何一個中。在檢測到用戶已經將一個或多個搜索字符串輸入到可搜索欄位的一個或多個中時,gui可以以在其中它們被輸入的可搜索欄位的指示將輸入的輸入搜索字符串發送到資料庫系統。
在402處,資料庫430發送回與搜索字符串對應的一個或多個加密外鍵的結果集。如果加密外鍵包括在其中明文欄位的值與搜索字符串匹配的記錄或行的外鍵欄位中,則加密外鍵可以對應於(涉及)搜索字符串。換句話說,一旦明文值被標識為匹配搜索字符串,則位於可搜索表的同一行中的外鍵值作為該明文值被附加到要返回的結果集中。在一些實施方案中,明文值列內的多個明文值可以被標識為匹配搜索字符串。在這種情況下,可以將包含所標識的明文值的每行的每個加密外鍵附加到結果集中。
服務計算機400將外部加密密鑰從結果集發送到解密引擎420進行解密。解密引擎將知道如何使用外部加密密鑰、表名稱以及可能的密碼隨機數來解密外鍵。一旦解密,解密引擎420將向服務計算機400發送解密外鍵403。方法300可以使用加密/解密引擎420來解密在搜索中獲得和使用的加密數據。
然後,服務計算機400將包括解密外鍵403的另一搜索查詢發送到資料庫430。然後,資料庫430可以搜索與解密外鍵403對應的數據,並將加密的用戶數據404返回到服務計算機400。
然後,服務計算機400將加密的用戶數據404發送到解密引擎420以進行解密。一旦加密的用戶數據404被解密,解密的用戶數據405被發送到服務計算機400。然後,服務計算機400可以例如經由搜索界面來提供對查詢的響應。
c.示例性過程
為了利用所描述的公開,資料庫系統可以被配置成在所描述的資料庫方案上執行一個或多個過程。本文所描述的任何過程中的一些或全部(或變型和/或其組合)可以在配置有可執行指令的一個或多個計算機系統的控制下執行,並且其可以被實現為代碼(例如,可執行指令、一個或多個電腦程式或一個或多個應用)。根據至少一個實施方案,一個或多個過程可以至少由圖1所描繪的設備102來執行。代碼可以存儲在計算機可讀存儲介質上,例如以包括可由一個或多個處理器執行的多個指令的電腦程式的形式。計算機可讀存儲介質可以是非瞬態的。以下描述突出了用於標識和返回在資料庫系統接收到信息請求時可以由其發起的一組解密源數據的一個示例性過程。
圖5描繪了根據至少一些實施方案的對包括加密數據的資料庫執行搜索的示例性過程。過程500被示出為邏輯流程圖,其每個操作表示可以由硬體、計算機指令或其組合實現的一系列操作。在計算機指令的上下文中,操作表示存儲在一個或多個計算機可讀存儲介質上的計算機可執行指令,所述指令在由一個或多個處理器執行時,執行所述操作。一般來說,計算機可執行指令包括執行特定功能或實現特定數據類型的例行程序、程序、對象、組件、數據結構等。描述操作的順序不旨在被解讀為是限制,並且任何數目的被描述操作可以省略或以任何順序和/或並行地組合以執行該過程和本文所述的任何其他過程。
在502處,接收到查詢(請求信息)。查詢可以包括搜索字符串和列的指示。在一些實施方案中,源表的每一列可以與不同的可搜索表相關聯。每個不同的可搜索表可以具有列的解密版本,主標識符的加密版本和索引。
在504處,在確定其中與搜索字符串相關聯的列時,可以標識與搜索字符串相關聯的可搜索表。例如,如果指示的列是「phone_number」列,則可搜索表可以是「phone_number」表,其包括明文電話號碼數據列。在一些實施方案中,可以經由圖形用戶界面(gui)將查詢映射到特定的可搜索表。例如,可以經由在客戶端設備上實現的gui來向用戶呈現多個可搜索欄位。用戶可以將搜索字符串輸入到所呈現的可搜索欄位中的任何一個中。在該示例中,每個可搜索欄位可以與可搜索表相關聯。作為說明,用戶可以將搜索字符串輸入到標記為「firstname」的可搜索欄位中,該可搜索欄位可以與「first_name」可搜索表相關聯。在該說明性示例中,可以標識「first_name」可搜索表,並且可以針對該可搜索表內的明文列來查詢搜索字符串。
在506處,可以查詢可搜索表,以基於來自與每行中的搜索字符串匹配的列數據的解密版本的值來確定與搜索字符串相關的一組行。在一些實施方案中,查詢可以返回0-n結果集,其中n是可搜索表中的總行數。該結果集中的每個返回結果可以包括多個加密標識符。在一些實施方案中,結果集可以包括單個加密標識符。
在508處,過程500可以通過解密搜索結果集中的每個加密標識符來生成一組解密標識符。在一些實施方案中,搜索結果集中的每個加密標識符可以分別發送到解密引擎。解密引擎可以解密每個加密標識符,並將解密標識符附加到一組解密標識符。在一些實施方案中,整個搜索結果集可以被提供給解密引擎,解密引擎隨後可以從該組加密標識符中產生一組解密標識符。
在510處,在生成一組解密標識符時,可以查詢源表以標識與每個解密標識符對應的一組加密數據。在該步驟中,可以返回與每個解密標識符相關聯的一個或多個記錄的加密數據。例如,可以查詢源表以標識其中主標識符與該組解密標識符中的一個解密標識符匹配的記錄。對於這些記錄中的每一個,可以從源表中檢索加密源數據的一個或多個片段。在一些實施方案中,可以在所接收的查詢中指定加密源數據的一個或多個片段。例如,查詢可以指定「選擇first_name和last_name」,在這種情況下,名字和姓氏欄位中的加密值可以被附加到一組加密源數據。返回的加密源數據可以被解密以標識一個或多個個人可標識信息數據。
在512處,一旦已經標識出該組加密源數據,則加密數據可以被解密。在一些實施方案中,解密數據可以基於其他標準被過濾或以其他方式縮小。例如,解密數據可以由與所提供的搜索字符串相關的多個行組成。在該示例中,可以基於第二搜索字符串來確定最合適的行。作為說明,在基於電話號碼搜索資料庫的一組客戶記錄之後,可以基於名稱或地址來縮小該組客戶記錄。客戶記錄可以包括與特定用戶相關聯的一組數據(例如,與用戶相關聯的資料庫行中的每列的值)。
在514處,可以響應於所提交的查詢在514處提供該組解密源數據。在一些實施方案中,該組解密源數據可以被提供給提交查詢的用戶。在一些實施方案中,該組解密源數據可以被提供給資料庫系統,使得可以針對該組解密源數據中的信息採取進一步的動作。例如,該組解密源數據可以在如下面參考圖6所述的更新過程中使用。
作為說明,考慮在其中用戶嘗試基於電話號碼來檢索與特定用戶相關的信息的場景。用戶可以通過向資料庫查詢電話號碼來提交與個人有關的查詢。為此,可以標識與電話號碼相關聯的源表列。在一些實施方案中,用戶可以指定與個人可標識信息的片段相關聯的列。在一些實施方案中,個人可標識信息可以經由用戶界面輸入到與特定表列相關聯的欄位中。
在上述示例中,用戶可以將個人的電話號碼的至少一部分輸入到圖形用戶界面的電話號碼輸入欄位中。在提交查詢時,可以查詢與電話號碼列相關的可搜索表,以查找輸入的電話號碼或電話號碼的部分。在標識與輸入的電話號碼匹配的電話號碼搜索表的一行或多行時,可以返回一組加密標識符。加密標識符可以被解密以確定與電話號碼相關的一組行。可以將來自所標識的行的額外信息返回給用戶。例如,可以向用戶提供其中電話號碼是匹配的個人名稱列表。在一些實施方案中,可以相對於搜索字符串檢索特定列值或欄位值。例如,響應於對電話號碼搜索字符串的查詢,可以提供名稱列中的值。
iv.更新資料庫
所描述的資料庫方案包括具有加密和明文列的源表、以及多個可搜索的資料庫表,每個表與源表的加密列相關聯。在一些情況下,可能需要更新一個或多個資料庫表的一個或多個欄位值。例如,當系統接收到新信息時,可能需要更改或更新存儲在資料庫系統中的數據。在一些實施方案中,對單個表(源表)進行更新,並且將這些更改發布到其餘的資料庫表。
圖6描繪了根據至少一些實施方案的用於更新包括加密數據的資料庫的過程600。在一些情況下,可能需要更新或編輯根據本公開存儲的數據。
在框602處,用戶可以標識源表中與要更新的數據片段相關的一行或多行。根據至少一些實施方案,過程600可以通過首先查詢可搜索表來標識加密標識符以及之後查詢源表查找要更新的數據,經由相對於圖5描述的過程來標識要更新的一行或多行。
在框604處,在標識要更新的一行或多行時,可以通過將行內的其他信息與和個人相關的額外信息進行比較來確定要更新的行。在一些實施方案中,更新請求可以包括可用於確定哪個行將被更新的額外信息。例如,更新請求可以包括語句「其中phone_number='123-456*'和name='johnsmith'。在該示例中,可以基於搜索字符串'123-456*'來標識多個行,並且可以對多個行進行過濾以僅納入那些也與等於「johnsmith」的名稱值相關聯的行。
在框606處,一旦標識了其中數據要更新的適當行,可以使用適合該行和列的加密算法/加密密鑰來加密新數據。在一些實施方案中,可以將新數據提供給加密引擎以進行加密。加密引擎可以是圖2的示例性加密/解密引擎210。
在框608處,然後可以將源表中要替換的舊數據更新為新數據的加密版本。在一些實施方案中,對源表的更改可以發布到一個或多個可搜索表。例如,在檢測到源表的列中的數據的改變之後,可以更新與該列相關聯的可搜索表以納入此改變。
在框610處,一旦在源表中更新數據,可以將更改發布到可搜索表。例如,資料庫系統可以確定源表的哪些列已被更新。在該示例中,可以更新與這些列相關聯的可搜索表以納入新信息。在另一示例中,可以在周期性的基礎上再生一個或多個可搜索表。在該示例中,可以生成可搜索表的新版本以替換舊版本,其中新版本包含更新的信息。
作為說明,考慮其中用戶希望更新與記錄個人相關聯的電話號碼的場景。在這種情況下,如果用戶想將個人的電話號碼從123-456-7890更改為987-654-3210,其中個人的姓名為johnsmith,首先查詢搜索電話號碼錶以查找電話號碼123-456-7890,並且可以返回結果集。結果集可以包括連結到源表的一組加密外鍵。在從返回的該組加密密鑰對外鍵進行解密後,可以查詢源表。在上述示例中,可以通過查詢從可搜索表返回的未加密的外鍵在源表中標識與電話號碼123-456-7890相關聯的行。然後將行中的信息與名稱johnsmith進行比較,以標識要更新的正確行。一旦標識了正確的行,電話號碼987-654-3210可以被加密。然後,所標識的行的電話號碼欄位被更新為加密的新電話號碼。然後,可以將這個新電話號碼發布到一個或多個可搜索表。
v.示例性計算機系統
根據至少一些實施方案,能夠提供個人可標識信息(或其他加密數據)的有效搜索能力的資料庫平臺的系統、裝置、方法、過程和/或操作可以全部地或部分地以由一個或多個編程的計算機處理器(諸如中央處理單元(cpu)或微處理器)執行的一組指令形式。這樣的處理器可以併入由系統的其他組件操作或與其通信的裝置、伺服器、客戶端或其他計算設備中。作為一個示例,圖7描繪了可以存在於根據本發明的一些實施方案的被配置成實現方法和/或過程的計算機設備和/或系統700中的元件的方面。圖7中所示的子系統經由系統總線702互連。附加子系統包括印表機704、鍵盤706、固定盤708和監視器710,監視器耦合到顯示器適配器712。耦合到i/o控制器714的外圍設備和輸入/輸出(i/o)設備可以通過本領域已知的許多裝置中的任何一種(諸如串行埠716)連接到計算機系統。例如,串行埠716或外部接口718可用於將計算機設備700連接到圖7中未示出的其他設備和/或系統,其包括諸如網際網路的廣域網、滑鼠輸入設備和/或掃描儀。經由系統總線702的互連允許一個或多個處理器720與每個子系統進行通信,並控制可以存儲在系統存儲器722和/或固定盤708中的指令的執行以及子系統之間的信息交換。系統存儲器722和/或固定盤708可以包含有形計算機可讀介質。
計算機系統可以包括例如通過外部接口或內部接口連接在一起的多個相同的組件或子系統。在一些實施方案中,計算機系統、子系統或裝置可以通過網絡進行通信。在這種情況下,一臺計算機可以被認為是客戶端,另一臺計算機可以被認為是伺服器,其中每臺計算機可以是同一計算機系統的一部分。客戶端和伺服器可以各自包括多個系統、子系統或部件。
本發明的實施方案提供許多技術優點。例如,本發明的實施方案使得用戶能夠使用通配符或文本串的一部分有效地查詢包括加密數據的資料庫。此外,本發明能夠將個人可標識信息分離成單獨的不可連結表,使得即使一部分數據被欺詐者獲取,所獲得的信息對於欺詐者將是無用的,因為他或她將無法獲取額外信息。
應當理解,本發明的任何實施方案可以使用硬體(例如專用集成電路或現場可編程門陣列)和/或使用計算機軟體以控制邏輯的形式藉助通用可編程處理器以模塊化或集成方式實現。如本文中描述的,處理器包括同一集成晶片上的單核處理器、多核處理器或單個電路板上的或聯網的多個處理單元。基於本文中提供的公開和教導,本領域技術人員會知道並意識到使用硬體及硬體和軟體的組合實現本發明的實施方案的其他方式和/或方法。
本申請中描述的任何軟體組件或功能可以實現為使用任何適當計算機語言(比方說例如java、c、c++、c#、objective-c、swift)或腳本語言(諸如perl或python),使用例如傳統的或面向對象的技術由處理器執行的軟體代碼。軟體代碼可以作為一系列指令或命令存儲在用於存儲和/或傳輸的計算機可讀介質上,合適的介質包括隨機存取存儲器(ram)、只讀存儲器(rom)、諸如硬碟驅動器或軟盤的磁介質、或諸如光碟(cd)或dvd(數字通用盤)的光學介質、閃速存儲器等。計算機可讀介質可以是這些存儲或傳輸設備的任何組合。
還可以使用載波信號編碼和傳輸這些程序,載波信號適於經由符合各種協議(包括網際網路)的有線、光和/或無線網絡傳輸。因此,根據本發明的至少一些實施方案的計算機可讀介質可以使用用這些程序編碼的數據信號來創建。用程序代碼編碼的計算機可讀介質可以與可兼容設備一起打包或從其他設備單獨地提供(例如通過網際網路下載)。任何這種計算機可讀介質可以駐存在單個計算機產品(例如硬碟、cd或整個計算機系統)之上或之內,並且可以出現在系統或網絡內的不同計算機產品之上或之內。計算機系統可以包括監視器、印表機或用於向用戶提供本文中提到的任何結果的其他適當顯示器。
以上描述是示意性的不是限制性的。本領域技術人員在閱讀本公開後,將明白本發明的許多變形。因此,本發明的範圍應當不參照上文描述確定,而是應當參照所附權利要求連同其全部範圍或等同物確定。
在不偏離本發明的範圍下,任何實施方案的一個或多個特徵可以與任何其他實施方案的一個或多個特徵組合。
除非明確指示有相反的意思,「一個/種」、「該/所述」的敘述旨在表示「一個或多個」。
上文提到的所有專利、專利申請、公開和描述出於所有目的通過引用被併入本文中。不承認他們為現有技術。