相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)是2015年2月11日提交的美國(guó)臨時(shí)申請(qǐng)no.62/114,976的正式案并要求其權(quán)益,該申請(qǐng)出于所有目的全文以引用方式并入本文。
本申請(qǐng)一般涉及數(shù)據(jù)處理。具體地說(shuō),本申請(qǐng)涉及在允許搜索數(shù)據(jù)時(shí)保護(hù)加密數(shù)據(jù),例如使用通配符。
背景技術(shù):
對(duì)于任何實(shí)體,存儲(chǔ)加密數(shù)據(jù)或其他專用數(shù)據(jù)通常是潛在的安全風(fēng)險(xiǎn)。個(gè)人可標(biāo)識(shí)信息通常對(duì)欺詐者有價(jià)值,使具有個(gè)人可標(biāo)識(shí)信息的數(shù)據(jù)存儲(chǔ)成為黑客企圖的目標(biāo)。這樣的專用數(shù)據(jù)可以在數(shù)據(jù)庫(kù)中加密,以保護(hù)免受黑客的訪問(wèn)。然而,數(shù)據(jù)庫(kù)中的加密數(shù)據(jù)可能不容易被搜索。在許多實(shí)現(xiàn)中,使用散列函數(shù)將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,并且針對(duì)數(shù)據(jù)的任何查詢都必須是散列值的精確匹配。這通常需要用戶輸入要搜索的字符串的精確值??梢允褂蒙⒘泻瘮?shù)和找到的精確匹配來(lái)對(duì)這個(gè)精確值進(jìn)行散列。這可能會(huì)與需要通過(guò)使用通配符或其他部分?jǐn)?shù)據(jù)搜索來(lái)搜索個(gè)人可標(biāo)識(shí)信息的業(yè)務(wù)需求相沖突。
加密數(shù)據(jù)的加密(例如地址線、電話號(hào)碼和傳真號(hào)碼)對(duì)于保護(hù)標(biāo)識(shí)的那些的隱私很重要。一個(gè)問(wèn)題是,一旦加密,這些字段很難通過(guò)搜索訪問(wèn)。許多使用加密數(shù)據(jù)的應(yīng)用可以被寫(xiě)入,使得它們需要在這些字段上進(jìn)行全文搜索。例如,客戶服務(wù)代表(csr)應(yīng)用依賴于在協(xié)助客戶時(shí)能夠搜索客戶數(shù)據(jù)。作為示例,csr可以在搜索字段中輸入電話號(hào)碼(例如,123-456-7890)并提交搜索查詢。如果正在搜索的數(shù)據(jù)未被加密,則應(yīng)用只需要進(jìn)行直接比較來(lái)標(biāo)識(shí)相關(guān)的數(shù)據(jù)庫(kù)記錄。
然而,如果要搜索的數(shù)據(jù)以加密格式存儲(chǔ),則其可能是不可搜索的。這種情況的典型解決方案是使用散列函數(shù)。例如,一個(gè)解決方案可能是使用單向密碼散列函數(shù)。通用散列函數(shù)是將任意大小的數(shù)字?jǐn)?shù)據(jù)映射到固定大小的其他數(shù)字?jǐn)?shù)據(jù)的函數(shù)。密碼散列函數(shù)允許輸入數(shù)據(jù)與存儲(chǔ)的散列值匹配的驗(yàn)證,同時(shí)使得難以構(gòu)造將散列到相同值的任何數(shù)據(jù)或難以找到散列到相同值的任何兩個(gè)唯一數(shù)據(jù)段。
系統(tǒng)可以對(duì)明文加密數(shù)據(jù)執(zhí)行散列操作,并存儲(chǔ)這些散列。當(dāng)用戶為特定的加密數(shù)據(jù)片段(例如電話號(hào)碼123-456-7890)提交搜索查詢時(shí),對(duì)電話號(hào)碼執(zhí)行相同的散列操作,將其與存儲(chǔ)的散列進(jìn)行比較以確定散列是否匹配任何記錄。當(dāng)使用精確的搜索項(xiàng)時(shí),這種解決方案通常是可行的(例如,用戶在其中輸入他們正在搜索的完整準(zhǔn)確的數(shù)據(jù))。
遺憾的是,在更典型的情況下,用戶可能不會(huì)輸入他們正在搜索的整個(gè)數(shù)據(jù),在這種情況下是123-456-7890,而是可以輸入123-456*或類似的,其中*表示通配符字符。在這種情況下的用戶將提交一個(gè)通配符搜索,其旨在產(chǎn)生一組相關(guān)的結(jié)果。但是,在需要精確匹配以等于散列值的系統(tǒng)中,這種使用通配符是不允許的。
本發(fā)明的實(shí)施方案單獨(dú)地或共同地解決了這些和其他問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問(wèn)題,本公開(kāi)的實(shí)施方案可以使用包括明文(例如,完全可搜索的文本)的一個(gè)或多個(gè)單獨(dú)的可搜索表。清晰數(shù)據(jù)的每個(gè)片段可以對(duì)應(yīng)于源數(shù)據(jù),其以加密形式單獨(dú)存儲(chǔ)(例如,在單獨(dú)的行或單獨(dú)的表中)。作為示例,源記錄的各個(gè)字段可以作為明文存儲(chǔ)在單獨(dú)的位置中,使得明文字段不能容易地相關(guān)以獲得源記錄中的所有專用信息。以這種方式,獲得一部分?jǐn)?shù)據(jù)的黑客不能將獲得的數(shù)據(jù)鏈接到源數(shù)據(jù)中的個(gè)人記錄。例如,電話號(hào)碼記錄可以從明文地址記錄和/或明文姓名記錄以明文形式單獨(dú)存儲(chǔ),使得數(shù)據(jù)不可用于惡意獲得它的未授權(quán)方。
在一些實(shí)施方案中,數(shù)據(jù)可以以一定的方式被分成不同的可搜索表(或等效地分成一個(gè)表的單獨(dú)的行),使得加密數(shù)據(jù)被存儲(chǔ)為明文,但是沒(méi)有到數(shù)據(jù)庫(kù)中的其他數(shù)據(jù)的可用鏈接。在一些實(shí)施方案中,唯一的加密外鍵可以與明文數(shù)據(jù)的每個(gè)片段一起存儲(chǔ)。外鍵可以用于引用回源表,以便標(biāo)識(shí)與搜索字符串相關(guān)的一個(gè)或多個(gè)記錄。例如,搜索用戶數(shù)據(jù)(例如,使用通配符)可以檢索加密標(biāo)識(shí)符,然后可以將加密標(biāo)識(shí)符輸入到解密模塊(引擎)中以獲得用于訪問(wèn)其中數(shù)據(jù)被加密的源表的外鍵,以及其中個(gè)人的完整數(shù)據(jù)記錄可以一起存儲(chǔ),例如作為行中的字段。然后,外鍵可以用于基于解密標(biāo)識(shí)符來(lái)搜索源表以返回期望的加密數(shù)據(jù),該數(shù)據(jù)可以被發(fā)送到解密模塊以提供期望的數(shù)據(jù)。
其他實(shí)施方案涉及與本文中描述的方法關(guān)聯(lián)的系統(tǒng)、設(shè)備和計(jì)算機(jī)可讀介質(zhì)。
參照以下詳細(xì)描述和附圖,可以獲得對(duì)本發(fā)明的實(shí)施方案的本質(zhì)和優(yōu)點(diǎn)的更好理解。
附圖說(shuō)明
將參考附圖描述根據(jù)本公開(kāi)的各種實(shí)施方案,其中:
圖1描繪了根據(jù)本文提供的至少一些實(shí)施方案的樣本數(shù)據(jù)庫(kù)表方案;
圖2描繪了根據(jù)至少一些實(shí)施方案的能夠提供對(duì)數(shù)據(jù)庫(kù)平臺(tái)的后端支持的服務(wù)提供商計(jì)算機(jī)的說(shuō)明性示例;
圖3描繪了根據(jù)本發(fā)明的至少一些實(shí)施方案的用于搜索數(shù)據(jù)庫(kù)以獲得數(shù)據(jù)的方法300的流程圖;
圖4描繪了示出根據(jù)本文提供的至少一些實(shí)施方案的設(shè)備和數(shù)據(jù)流的系統(tǒng)圖;
圖5描繪了根據(jù)至少一些實(shí)施方案的對(duì)包括加密數(shù)據(jù)的數(shù)據(jù)庫(kù)執(zhí)行搜索的示例性過(guò)程;
圖6描繪了根據(jù)至少一些實(shí)施方案的用于更新包括加密數(shù)據(jù)的數(shù)據(jù)庫(kù)的過(guò)程;以及
圖7描繪了可以存在于根據(jù)本發(fā)明的一些實(shí)施方案的被配置成實(shí)現(xiàn)方法和/或過(guò)程的計(jì)算機(jī)設(shè)備和/或系統(tǒng)中的元件的方面。
術(shù)語(yǔ)
在討論本發(fā)明的具體實(shí)施方案之前,可以詳細(xì)描述一些術(shù)語(yǔ)。
“客戶端計(jì)算機(jī)”可以包括任何合適的計(jì)算裝置??蛻舳擞?jì)算機(jī)可以由消費(fèi)者、與業(yè)務(wù)實(shí)體相關(guān)聯(lián)的用戶或任何其他個(gè)人來(lái)操作。客戶端計(jì)算機(jī)可以使用任何合適的有線或無(wú)線網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)),以便與其他系統(tǒng)通信。例如,消費(fèi)者客戶端計(jì)算機(jī)可以被消費(fèi)者用來(lái)與商家互聯(lián)網(wǎng)店面進(jìn)行交互,從而進(jìn)行交易。與商家相關(guān)聯(lián)的用戶可以使用商家客戶端計(jì)算機(jī)與其他商家計(jì)算機(jī)系統(tǒng)和所描述的平臺(tái)進(jìn)行交互。計(jì)算機(jī)和消費(fèi)者移動(dòng)設(shè)備的示例包括能夠訪問(wèn)互聯(lián)網(wǎng)的任何設(shè)備,諸如個(gè)人計(jì)算機(jī)、蜂窩或無(wú)線電話、個(gè)人數(shù)字助理(pda)、平板pc和手持式專用讀取器。
“數(shù)據(jù)庫(kù)”可以包括用于存儲(chǔ)和促進(jìn)信息檢索的任何硬件、軟件、固件或上述的組合。此外,數(shù)據(jù)庫(kù)可以使用各種數(shù)據(jù)結(jié)構(gòu)、排列和編譯中的任何一種來(lái)存儲(chǔ)和促進(jìn)信息檢索。
“數(shù)據(jù)庫(kù)記錄”,也稱為行或元組,可以指數(shù)據(jù)庫(kù)中的單個(gè)隱式結(jié)構(gòu)化數(shù)據(jù)項(xiàng)。源表中的每個(gè)數(shù)據(jù)庫(kù)記錄可以與特定的人或?qū)嶓w相關(guān)聯(lián)。搜索表中的每個(gè)數(shù)據(jù)庫(kù)記錄可以包括加密外鍵、主鍵和明文搜索字段。
“個(gè)人可標(biāo)識(shí)信息”可以指任何可用于區(qū)分或追蹤個(gè)人標(biāo)識(shí),單獨(dú)地或當(dāng)與其他個(gè)人或標(biāo)識(shí)信息相結(jié)合時(shí)其鏈接到特定個(gè)體或可鏈接到特定個(gè)體。例如,個(gè)人可標(biāo)識(shí)信息可以包括地址、電話號(hào)碼、出生日期、社會(huì)保險(xiǎn)號(hào)碼、出生日期和地點(diǎn)、母親的娘家姓氏、生物特征記錄或任何其他合適的個(gè)人特定信息。存儲(chǔ)和使用個(gè)人可標(biāo)識(shí)信息存在各種法律要求。個(gè)人可標(biāo)識(shí)信息還可能包括鏈接到個(gè)人或可鏈接到個(gè)人的信息,諸如醫(yī)療、教育、財(cái)務(wù)和就業(yè)信息。
“處理器”可以包括移動(dòng)裝置(或其他電子裝置)內(nèi)的硬件,所述硬件執(zhí)行具體化為計(jì)算機(jī)可讀介質(zhì)(例如非瞬態(tài)計(jì)算機(jī)可讀介質(zhì))中的代碼的指令。示例性處理器可以是中央處理單元(cpu)。如本文所使用的,處理器可以包括單核處理器、多個(gè)單核處理器、多核處理器、多個(gè)多核處理器或者被配置成執(zhí)行計(jì)算裝置的算術(shù)運(yùn)算、邏輯運(yùn)算和/或輸入/輸出操作的任何其他適當(dāng)?shù)挠布M合。
“服務(wù)器計(jì)算機(jī)”可以包括可以向其他計(jì)算機(jī)提供通信并從其他計(jì)算機(jī)接收通信的任何適當(dāng)?shù)挠?jì)算機(jī)。服務(wù)器計(jì)算機(jī)可以包括計(jì)算機(jī)或計(jì)算機(jī)的集群。例如,服務(wù)器計(jì)算機(jī)可以是大型主機(jī)、小型計(jì)算機(jī)集群或像一個(gè)單元一樣工作的一組服務(wù)器。在一個(gè)實(shí)例中,服務(wù)器計(jì)算機(jī)可以是耦連到網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)庫(kù)服務(wù)器。服務(wù)器計(jì)算機(jī)可以耦連到數(shù)據(jù)庫(kù)并且可以包括用于服務(wù)于來(lái)自一個(gè)或多個(gè)客戶端計(jì)算機(jī)的請(qǐng)求的任何硬件、軟件、其他邏輯、或前述內(nèi)容的組合。服務(wù)器計(jì)算機(jī)可以包括一個(gè)或多個(gè)計(jì)算裝置,并且可以使用各種計(jì)算結(jié)構(gòu)、排列和編譯中的任何一種來(lái)服務(wù)來(lái)自于一個(gè)或多個(gè)客戶端計(jì)算機(jī)的請(qǐng)求。在諸如計(jì)算機(jī)的組件之間的數(shù)據(jù)轉(zhuǎn)移和其他通信可以通過(guò)任何合適的有線或無(wú)線網(wǎng)絡(luò)(諸如互聯(lián)網(wǎng)或私用網(wǎng)絡(luò))進(jìn)行。
“服務(wù)計(jì)算機(jī)”或“服務(wù)提供商計(jì)算機(jī)”可以包括與提供資源或服務(wù)的實(shí)體相關(guān)聯(lián)的任何系統(tǒng)。在一些實(shí)施方案中,服務(wù)提供商計(jì)算機(jī)可以處理與提供資源或服務(wù)的實(shí)體相關(guān)聯(lián)的計(jì)算機(jī)應(yīng)用的功能。服務(wù)提供商可以提供任何合適的服務(wù)。例如,服務(wù)提供商可以是商家、公用事業(yè)公司、支付處理網(wǎng)絡(luò)、錢包提供商、商家、網(wǎng)站運(yùn)營(yíng)商或銀行。為了本公開(kāi)的目的,服務(wù)提供商計(jì)算機(jī)是指所公開(kāi)平臺(tái)的提供商。
“更新”可以包括對(duì)現(xiàn)有數(shù)據(jù)庫(kù)記錄的添加、刪除、轉(zhuǎn)換或任何其他改變。更新也可以指創(chuàng)建新的數(shù)據(jù)庫(kù)記錄或條目。例如,更新可以是向數(shù)據(jù)庫(kù)記錄中的字段添加或刪除數(shù)據(jù),和/或更新可以是在數(shù)據(jù)庫(kù)表中添加或刪除整個(gè)數(shù)據(jù)庫(kù)記錄。更新也可以指對(duì)數(shù)據(jù)庫(kù)記錄中的文本字段的更改。
“用戶”可以指?jìng)€(gè)人或?qū)嶓w,其可以使用個(gè)人或?qū)嶓w被授權(quán)使用的憑證(例如商家id、用戶id和密碼)來(lái)訪問(wèn)所描述的平臺(tái)。如本文所使用的,用戶還可以指未被授權(quán)訪問(wèn)所述平臺(tái)的個(gè)人或?qū)嶓w,但是其可以訪問(wèn)允許他們?cè)L問(wèn)所描述的平臺(tái)的授權(quán)憑證。用戶可以通過(guò)用戶界面或控制臺(tái)命令提交搜索查詢。
具體實(shí)施方式
根據(jù)至少一些實(shí)施方案,本公開(kāi)涉及能夠提供個(gè)人可標(biāo)識(shí)信息(或其他加密數(shù)據(jù))的有效搜索能力的數(shù)據(jù)庫(kù)平臺(tái)。當(dāng)在休息時(shí)將加密數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中是潛在的安全風(fēng)險(xiǎn)時(shí),這個(gè)風(fēng)險(xiǎn)的解決方案就是加密數(shù)據(jù)。然而,加密數(shù)據(jù)不能夠容易地被搜索。典型的方法是應(yīng)用加密數(shù)據(jù)的散列,這只能允許搜索與散列值精確匹配的條目。然而,業(yè)務(wù)可能會(huì)要求這種加密數(shù)據(jù)是完全可搜索的,例如使用通配符。實(shí)施方案可以以一定的方式將數(shù)據(jù)分成多個(gè)表,使得加密數(shù)據(jù)以清楚的方式存儲(chǔ),但是沒(méi)有到數(shù)據(jù)庫(kù)內(nèi)的其他數(shù)據(jù)的可用鏈接。
這里描述的是可以管理加密和其他敏感數(shù)據(jù)以使其完全可搜索的平臺(tái)。例如,實(shí)施方案可以生成多個(gè)可搜索表,其包括源表中的加密數(shù)據(jù)列的明文版本??伤阉鞅碇械拿魑闹蹬c加密外鍵相關(guān)聯(lián),當(dāng)解密時(shí),其使得用戶可以從源表查詢數(shù)據(jù)。以這種方式,明文數(shù)據(jù)的每個(gè)片段被存儲(chǔ),其中沒(méi)有到與記錄相關(guān)的任何其他數(shù)據(jù)的可用鏈接。以這種方式,可以使加密數(shù)據(jù)可搜索,而不需要使用要搜索的字符串的精確匹配。
描述了可搜索的加密數(shù)據(jù)庫(kù)方案,其可以根據(jù)本公開(kāi)的一些實(shí)施方案來(lái)實(shí)現(xiàn)。另外,將描述示例性數(shù)據(jù)庫(kù)系統(tǒng),其能夠根據(jù)至少一些實(shí)施方案來(lái)實(shí)現(xiàn)可搜索的加密數(shù)據(jù)庫(kù)方案。本公開(kāi)還將涉及搜索以及更新所描述的數(shù)據(jù)庫(kù)系統(tǒng)。
i.具有加密數(shù)據(jù)的可搜索數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)表通常由一個(gè)或多個(gè)列和一行或多行構(gòu)成。數(shù)據(jù)庫(kù)表的列通常表示可以搜索的字段。數(shù)據(jù)庫(kù)表的行通常表示個(gè)人記錄。每個(gè)個(gè)人記錄可以具有在該行上的每個(gè)列中填寫(xiě)的值。要對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢,通常會(huì)指定列(例如,要搜索的字段,諸如電話號(hào)碼),并提供搜索字符串,其通常包含通配符。具有與列內(nèi)的搜索字符串匹配的值的行作為結(jié)果集返回。然而,為了保護(hù)敏感數(shù)據(jù),數(shù)據(jù)庫(kù)表的一些列可能被加密,這意味著它們將包含不可破譯的數(shù)據(jù)。要搜索這些列,通常需要提供要搜索的字符的確切的字符串,即沒(méi)有通配符。然后,將該字符串加密并與列中的值進(jìn)行比較。
在不提供要搜索的字符的確切的字符串的情況下,為了提供具有完全可搜索的加密數(shù)據(jù)的數(shù)據(jù)庫(kù)系統(tǒng),本公開(kāi)討論了可以在至少一些實(shí)施方案中實(shí)現(xiàn)的數(shù)據(jù)庫(kù)表方案。在該數(shù)據(jù)庫(kù)表方案中,源表可以包括多列數(shù)據(jù),其中一些數(shù)據(jù)可能包含加密數(shù)據(jù),以及其中一些數(shù)據(jù)可能包含明文數(shù)據(jù)??梢詾樵幢淼拿總€(gè)加密列生成一個(gè)或多個(gè)可搜索表(與源表分開(kāi))。生成的可搜索表可以包括明文列,其表示來(lái)自源表的相應(yīng)加密列的解密數(shù)據(jù)。下面參考圖1更詳細(xì)地描述該數(shù)據(jù)庫(kù)表方案。
圖1描繪了根據(jù)本文提供的至少一些實(shí)施方案的樣本數(shù)據(jù)庫(kù)表方案100。數(shù)據(jù)庫(kù)可以包含一個(gè)或多個(gè)源表,其包含解密的唯一標(biāo)識(shí)符(id)、一個(gè)或多個(gè)加密數(shù)據(jù)項(xiàng)、以及可能的額外明文或加密數(shù)據(jù)字段。在圖1中,源表110被描繪成包括以明文形式存儲(chǔ)的唯一id主標(biāo)識(shí)符(mid)字段111、加密電子郵件地址字段112、加密電話號(hào)碼字段113和名字字段114以及姓氏字段115。加密電子郵件地址字段112和加密電話號(hào)碼字段113中的底層數(shù)據(jù)可以被認(rèn)為是專用信息(例如,加密數(shù)據(jù))。在一些實(shí)施方案中,其他字段,諸如名字字段114和/或姓氏字段115也可以被加密。
圖1還描繪了兩個(gè)可搜索表120和130,每個(gè)可搜索表各自包含加密id(122和132),明文加密數(shù)據(jù)片段(121和131)以及表索引id(也稱為主鍵123和133)。搜索電子郵件表120被描繪為包含明文電子郵件地址列121,其中每個(gè)明文電子郵件地址位于搜索電子郵件表120的單獨(dú)行中。例如,搜索電子郵件表120可以包括來(lái)自源表110的電子郵件地址列的每個(gè)加密值的明文版本。每個(gè)電子郵件地址可以存儲(chǔ)成搜索電子郵件表120中的單獨(dú)行,其中每個(gè)行具有對(duì)應(yīng)的主鍵和對(duì)應(yīng)的加密唯一id。這將允許系統(tǒng)全部或部分地搜索電子郵件地址,以便檢索相關(guān)聯(lián)的加密標(biāo)識(shí)符122(也稱為mid)。
類似地,搜索電話號(hào)碼表130包含明文電話號(hào)碼131,其允許系統(tǒng)全部或部分地搜索電話號(hào)碼,以便檢索相關(guān)聯(lián)的加密標(biāo)識(shí)符132。數(shù)據(jù)庫(kù)表方案可以具有存儲(chǔ)在數(shù)據(jù)庫(kù)中的每種類型的加密數(shù)據(jù)的單獨(dú)可搜索表(例如,源表110的每列加密數(shù)據(jù)的單獨(dú)可搜索表)。
如圖所示,可搜索表中的每個(gè)mid122和132可以與源表中的mid111相關(guān)。然而,可搜索表的mid可以被加密,使得mid不可容易地鏈接到相應(yīng)的源數(shù)據(jù)。在一些實(shí)施方案中,mid122和/或mid132可以是mid111的加密版本。使用解密引擎,系統(tǒng)可以獲得檢索的mid的解密版本,然后使用mid的解密版本來(lái)搜索源表110以獲得加密的信息數(shù)據(jù),例如字段112和113。然后可以對(duì)加密的信息數(shù)據(jù)進(jìn)行解密。
在至少一些實(shí)施方案中,數(shù)據(jù)庫(kù)系統(tǒng)100提供個(gè)人可標(biāo)識(shí)信息的分離,其中一種類型的加密數(shù)據(jù)被存儲(chǔ)在可搜索表中,使得個(gè)人可標(biāo)識(shí)信息不與其他加密數(shù)據(jù)直接相關(guān)聯(lián)。例如,電話號(hào)碼123-456-7890可以以表搜索電話號(hào)碼130的電話號(hào)碼列中的明文存儲(chǔ),以及電話號(hào)碼明文數(shù)據(jù)可以是包括在該可搜索表中的明文加密數(shù)據(jù)的唯一列。類似地,加密數(shù)據(jù)的其他片段也可以作為單獨(dú)的明文列存儲(chǔ)在單獨(dú)的可搜索表中(例如,沒(méi)有任何其他列的加密數(shù)據(jù)),使得其對(duì)于欺詐者無(wú)價(jià)值,因?yàn)槠墼p者不能將個(gè)人數(shù)據(jù)的一個(gè)片段連接到數(shù)據(jù)的其他片段。
可搜索表,例如搜索電子郵件表120,包含明文加密數(shù)據(jù)列,在這種情況下為電子郵件字段。在所示的示例中,在該電子郵件地址的旁邊的可搜索表中的明文信息的唯一其他列可以是包括加密標(biāo)識(shí)符的列。在加密的意義上,該標(biāo)識(shí)符可能是不可讀取的(例如,加密外鍵)。在所描繪的示例中,加密標(biāo)識(shí)符可以是mid122。在此表中查找特定電子郵件地址或電子郵件地址的一部分可以返回零個(gè)或多個(gè)加密mid的列表。所得的mid列表可以經(jīng)受解密引擎以標(biāo)識(shí)解密mid的列表。
在一些實(shí)施方案中,解密的mid列表可以在針對(duì)源表110的第二查詢中使用,以便檢索附加的相關(guān)加密數(shù)據(jù)。因此,一旦檢索到加密外鍵,其可以通過(guò)解密引擎進(jìn)行發(fā)送,以便獲取明文形式的外鍵。一旦獲得了外鍵,它可以隨后用于在額外表(例如源表110)上執(zhí)行查詢,該表包含與被查詢的搜索字符串相關(guān)的加密數(shù)據(jù)。在一些實(shí)施方案中,外鍵可以對(duì)應(yīng)于mid111(例如,記錄id),其可用于標(biāo)識(shí)源表中的記錄。然而,需要與查詢或其一部分匹配的明文,以便在可以檢索來(lái)自源表110的任何數(shù)據(jù)之前首先檢索加密外鍵。查詢可以返回相應(yīng)的名字和姓氏,以及對(duì)應(yīng)于最初搜索的電子郵件地址的加密數(shù)據(jù)的額外片段。該額外加密數(shù)據(jù)可以是加密格式或密文格式。
因此,本公開(kāi)的實(shí)施方案可以允許系統(tǒng)在被加密的數(shù)據(jù)上執(zhí)行全文搜索。這些類型的加密數(shù)據(jù)中的每一種可以以其自身的表內(nèi)的明文存儲(chǔ),例如圖1的搜索電子郵件表和搜索電話號(hào)碼表。其他示例表包括但不限于郵寄或業(yè)務(wù)地址、社會(huì)保障號(hào)碼、出生日期和地點(diǎn)、母親娘家姓氏、生物特征記錄、醫(yī)療、教育、財(cái)務(wù)和就業(yè)信息等。這些可搜索表中的每一個(gè)都包含加密外鍵id列和特定類型的明文數(shù)據(jù)列,其中明文數(shù)據(jù)的給定片段的加密外鍵id可用于標(biāo)識(shí)源表中的記錄,源表包括明文數(shù)據(jù)。由于沒(méi)有鏈接到其他敏感數(shù)據(jù),因此可以使用以這種方式存儲(chǔ)明文加密數(shù)據(jù),以便不損害存儲(chǔ)在數(shù)據(jù)庫(kù)中的明文的額外加密數(shù)據(jù)。
ii.數(shù)據(jù)庫(kù)系統(tǒng)
為了提供上述可搜索的數(shù)據(jù)庫(kù)方案,本公開(kāi)討論了能夠?qū)崿F(xiàn)這種方案的至少一些實(shí)施方案的示例性數(shù)據(jù)庫(kù)系統(tǒng)(服務(wù)提供商計(jì)算機(jī))。所描述的服務(wù)提供商計(jì)算機(jī)可以包括用于提供加密和解密的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)和邏輯。該數(shù)據(jù)庫(kù)系統(tǒng)相對(duì)于下面的圖2更詳細(xì)地描述。
圖2描繪了根據(jù)至少一些實(shí)施方案的能夠提供對(duì)數(shù)據(jù)庫(kù)平臺(tái)的后端支持的服務(wù)提供商計(jì)算機(jī)的說(shuō)明性示例。
服務(wù)提供商計(jì)算機(jī)可以是包括位于遠(yuǎn)程的服務(wù)器計(jì)算機(jī)的任何類型的計(jì)算設(shè)備。另外,應(yīng)當(dāng)注意,在一些實(shí)施方案中,服務(wù)計(jì)算機(jī)200可以由在托管計(jì)算環(huán)境中實(shí)現(xiàn)的多個(gè)虛擬機(jī)體現(xiàn)。托管計(jì)算環(huán)境可以包括一個(gè)或多個(gè)快速提供和發(fā)布的計(jì)算資源,其計(jì)算資源可以包括計(jì)算設(shè)備、網(wǎng)絡(luò)設(shè)備和/或存儲(chǔ)設(shè)備。托管計(jì)算環(huán)境也可以稱為云計(jì)算環(huán)境。
在一個(gè)說(shuō)明性配置中,服務(wù)計(jì)算機(jī)200可以包括至少一個(gè)存儲(chǔ)器202和一個(gè)或多個(gè)處理單元(或處理器)204。處理器204可以在硬件、計(jì)算機(jī)可執(zhí)行指令、固件或其組合中適當(dāng)?shù)貙?shí)現(xiàn)。處理器204的計(jì)算機(jī)可執(zhí)行指令或固件實(shí)施方案可以包括以任何合適的編程語(yǔ)言編寫(xiě)的用于執(zhí)行所描述的各種功能的計(jì)算機(jī)可執(zhí)行指令或機(jī)器可執(zhí)行指令。
存儲(chǔ)器202可以存儲(chǔ)在處理器204上可加載和可執(zhí)行的程序指令,以及存儲(chǔ)在執(zhí)行這些程序期間生成的數(shù)據(jù)。根據(jù)服務(wù)計(jì)算機(jī)200的配置和類型,存儲(chǔ)器202可以是易失性的(諸如隨機(jī)存取存儲(chǔ)器(ram))和/或非易失性的(諸如只讀存儲(chǔ)器(rom)、閃速存儲(chǔ)器等)。服務(wù)計(jì)算機(jī)200還可以包括額外存儲(chǔ)器206,諸如可移動(dòng)存儲(chǔ)器或不可移動(dòng)存儲(chǔ)器,其包括但不限于磁存儲(chǔ)器、光盤和/或磁帶存儲(chǔ)器。盤驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)可以為計(jì)算設(shè)備提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性存儲(chǔ)。在一些實(shí)施方案中,存儲(chǔ)器202可以包括多種不同類型的存儲(chǔ)器,諸如靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)或rom。更詳細(xì)地轉(zhuǎn)向存儲(chǔ)器202的內(nèi)容,存儲(chǔ)器202可以包括操作系統(tǒng)208和用于實(shí)現(xiàn)本文所公開(kāi)的特征的一個(gè)或多個(gè)應(yīng)用程序或服務(wù),該應(yīng)用程序或服務(wù)至少包括用于加密或解密標(biāo)識(shí)符的模塊(加密/解密引擎210)。存儲(chǔ)器202還可以包括數(shù)據(jù)庫(kù)212,其存儲(chǔ)個(gè)人可標(biāo)識(shí)信息以及其他數(shù)據(jù)。
可移動(dòng)和不可移動(dòng)的存儲(chǔ)器202和額外存儲(chǔ)器206是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例。例如,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性或非易失性,可移動(dòng)或不可移動(dòng)介質(zhì)。如本文所使用的,模塊或引擎可以指由計(jì)算系統(tǒng)(例如,處理器)執(zhí)行的編程模塊,該計(jì)算系統(tǒng)存儲(chǔ)在用戶設(shè)備或服務(wù)計(jì)算機(jī)200上并由其執(zhí)行。服務(wù)計(jì)算機(jī)200還可以包含通信連接214,其允許服務(wù)計(jì)算機(jī)200通過(guò)網(wǎng)絡(luò)與一個(gè)或多個(gè)存儲(chǔ)的數(shù)據(jù)庫(kù)212、另一個(gè)計(jì)算設(shè)備或服務(wù)器、用戶終端和/或其他設(shè)備通信。服務(wù)計(jì)算機(jī)200還可以包括輸入/輸出(i/o)設(shè)備和/或端口216,諸如用于實(shí)現(xiàn)與鍵盤、鼠標(biāo)、筆、語(yǔ)音輸入設(shè)備、觸摸輸入設(shè)備、顯示器、揚(yáng)聲器、打印機(jī)等的連接。
更詳細(xì)地轉(zhuǎn)向存儲(chǔ)器202的內(nèi)容,存儲(chǔ)器202可以包括操作系統(tǒng)208。示出了包含至少一些加密數(shù)據(jù)的數(shù)據(jù)庫(kù),并且還可以將數(shù)據(jù)庫(kù)并入到存儲(chǔ)器202或不同的存儲(chǔ)器。用于實(shí)現(xiàn)包括加密/解密引擎210在內(nèi)的本文公開(kāi)的特征的一個(gè)或多個(gè)應(yīng)用程序或服務(wù)也可存儲(chǔ)在存儲(chǔ)器202中。加密/解密引擎210可以包括用于加密和解密的單獨(dú)的子引擎,其可以共享公共通信接口和/或公共庫(kù)。數(shù)據(jù)庫(kù)212可以包括任何合適的持久數(shù)據(jù)存儲(chǔ)系統(tǒng)。在一些實(shí)施方案中,數(shù)據(jù)庫(kù)212可以存儲(chǔ)在數(shù)據(jù)庫(kù)中。存儲(chǔ)在數(shù)據(jù)庫(kù)212中的信息可以由加密/解密引擎210經(jīng)由數(shù)據(jù)庫(kù)查詢或任何其他合適的數(shù)據(jù)檢索裝置進(jìn)行訪問(wèn)。
在一些實(shí)施方案中,加密/解密引擎210可以結(jié)合處理器204配置成加密和/或解密提供給它的數(shù)據(jù)。例如,加密/解密引擎210可以被配置成對(duì)提供給它的加密外鍵以及來(lái)自源表的加密數(shù)據(jù)進(jìn)行解密。在一些實(shí)施方案中,加密/解密引擎210可以在其接收到提供要加密或解密的數(shù)據(jù)的請(qǐng)求命令(例如,對(duì)加密或解密函數(shù)的調(diào)用)時(shí)執(zhí)行。在一些實(shí)施方案中,待解密的數(shù)據(jù)可以作為函數(shù)調(diào)用的參數(shù)被傳遞到加密/解密引擎210。加密/解密引擎210可以被提供有作為函數(shù)調(diào)用的參數(shù)的加密和/或解密密鑰。
在一些實(shí)施方案中,加密/解密引擎210可執(zhí)行數(shù)據(jù)庫(kù)查找以標(biāo)識(shí)密鑰。在一些實(shí)施方案中,加密/解密引擎210可以利用硬編碼的加密/解密密鑰和/或加密算法。加密/解密引擎210可利用任何合適的加密或解密算法對(duì)數(shù)據(jù)庫(kù)212內(nèi)的數(shù)據(jù)進(jìn)行編碼。在一些實(shí)施方案中,加密/解密引擎210可以包括硬件安全模塊(hsm),其能夠保護(hù)和管理用于強(qiáng)認(rèn)證和密碼處理的數(shù)字密鑰。硬件安全模塊可以是被配置成保護(hù)和管理用于強(qiáng)認(rèn)證的數(shù)字密鑰的物理計(jì)算設(shè)備。硬件安全模塊還可以被配置成提供密碼處理。
在一些實(shí)施方案中,數(shù)據(jù)庫(kù)212可以包括將與各個(gè)個(gè)人相關(guān)聯(lián)的信息。數(shù)據(jù)庫(kù)212可以包括源表和一個(gè)或多個(gè)可搜索表,每個(gè)表與個(gè)人可標(biāo)識(shí)信息片段相關(guān)聯(lián)。在一些實(shí)施方案中,數(shù)據(jù)庫(kù)212可以包括至少一些密文數(shù)據(jù)和至少一些明文數(shù)據(jù)。在一些實(shí)施方案中,相同數(shù)據(jù)的密文版本和明文版本都可以存儲(chǔ)在數(shù)據(jù)庫(kù)212中。例如,可搜索表的主標(biāo)識(shí)符可以是源表的明文主標(biāo)識(shí)符的密文版本。在一些實(shí)施方案中,表的一個(gè)或多個(gè)列中的所有數(shù)據(jù)都可以被加密。在一些實(shí)施方案中,在一個(gè)表中加密的數(shù)據(jù)可以利用與在第二表中加密的數(shù)據(jù)不同的加密/解密密鑰。
iii.搜索具有加密數(shù)據(jù)的數(shù)據(jù)庫(kù)
為了利用上述方案,數(shù)據(jù)庫(kù)系統(tǒng)可以發(fā)起數(shù)據(jù)庫(kù)查詢。在一些實(shí)施方案中,用戶可以提供要搜索的字段或列的指示和搜索字符串(例如,字母數(shù)字字符串,應(yīng)為其當(dāng)找到匹配數(shù)據(jù))。數(shù)據(jù)庫(kù)系統(tǒng)可以被配置成標(biāo)識(shí)適當(dāng)?shù)目伤阉鞅?例如,基于所指示的字段或列),標(biāo)識(shí)與可搜索表內(nèi)的匹配數(shù)據(jù)相關(guān)聯(lián)的外鍵,并且查詢?cè)幢硪垣@得與所標(biāo)識(shí)的外鍵相關(guān)的信息。在本公開(kāi)中,下面描述搜索具有加密數(shù)據(jù)的數(shù)據(jù)庫(kù)的方法、與數(shù)據(jù)庫(kù)搜索相關(guān)聯(lián)的數(shù)據(jù)流以及在包括加密數(shù)據(jù)的數(shù)據(jù)庫(kù)上執(zhí)行搜索的示例性過(guò)程。
a.方法
圖3描繪了根據(jù)本發(fā)明的至少一些實(shí)施方案的用于搜索數(shù)據(jù)庫(kù)以獲得數(shù)據(jù)的方法300的流程圖。方法300可以由搜索系統(tǒng)執(zhí)行,該搜索系統(tǒng)可由計(jì)算機(jī)數(shù)據(jù)庫(kù)系統(tǒng)和搜索機(jī)器執(zhí)行。
在框310處,計(jì)算機(jī)數(shù)據(jù)庫(kù)系統(tǒng)接收對(duì)所請(qǐng)求的字段值的查詢。所請(qǐng)求的字段值可以包括要從其返回值的字段或列的指示。例如,查詢可能包含短語(yǔ)“selectlast_name”,表示要為結(jié)果集中的任何記錄返回姓氏字段中的值。查詢還可以包括搜索字符串。該搜索字符串可以包括通配符以僅指定與所需數(shù)據(jù)匹配的部分所需字符串。例如,如果搜索電話號(hào)碼,搜索字符串可以是123-456-*,其中*是通配符字符。
在一些實(shí)施方案中,查詢可以指定要搜索的一個(gè)或多個(gè)字段或列。例如,查詢可以包括語(yǔ)言“wherephone_number='123-456*'”,其表示要為搜索字符串搜索源表的電話號(hào)碼字段。在一些實(shí)施方案中,可以提供多個(gè)字段和搜索字符串。例如,查詢可以包括語(yǔ)言“其中phone_number='123-456*'和city='houston'。在這個(gè)示例中,查詢可以返回一個(gè)結(jié)果集,其包括匹配這兩個(gè)條件的所有記錄。
在框320處,使用搜索字符串搜索計(jì)算機(jī)數(shù)據(jù)庫(kù)系統(tǒng)的第一表以標(biāo)識(shí)一個(gè)或多個(gè)匹配值??梢曰诓樵冎兄甘镜淖侄蝸?lái)標(biāo)識(shí)第一表。例如,查詢中的字段可以指源表的加密列。第一表可以是具有對(duì)應(yīng)于源表的加密列的數(shù)據(jù)的明文列的可搜索表。數(shù)據(jù)庫(kù)系統(tǒng)可以將搜索字符串與存儲(chǔ)在明文列中的值進(jìn)行比較,以標(biāo)識(shí)與所提供的搜索字符串相匹配的一個(gè)或多個(gè)值。例如,值123-456-7890和值123-456-1234都是搜索字符串123-456*的匹配。在此示例中,第一表的兩個(gè)記錄將返回為具有匹配值。
在框330處,第一表的搜索導(dǎo)致與獲得的搜索串的匹配值對(duì)應(yīng)的一個(gè)或多個(gè)加密外鍵。一旦數(shù)據(jù)庫(kù)系統(tǒng)在框320處從第一表的明文列中標(biāo)識(shí)出一個(gè)或多個(gè)匹配值,則數(shù)據(jù)庫(kù)系統(tǒng)將從包含這些匹配值的記錄的外鍵字段中標(biāo)識(shí)值。例如,如果第一表是圖1的搜索電話號(hào)碼表130,對(duì)于與搜索字符串匹配的電話號(hào)碼相關(guān)聯(lián)的任何記錄,將為這些記錄返回對(duì)應(yīng)的加密外鍵。
在框340處,將加密外鍵發(fā)送到解密引擎進(jìn)行解密。解密引擎可以對(duì)加密外鍵進(jìn)行一個(gè)或多個(gè)解密算法來(lái)解密外鍵。在一些實(shí)施方案中,一個(gè)或多個(gè)解密算法可以利用解密密鑰。在一些實(shí)施方案中,解密引擎使用的解密密鑰可以取決于從其中獲得加密外鍵的可搜索表。例如,每個(gè)可搜索表可以與不同的解密密鑰相關(guān)聯(lián)。通過(guò)解密引擎對(duì)外鍵的解密可以導(dǎo)致外鍵的明文版本。解密引擎可以對(duì)應(yīng)于圖2的加密/解密引擎210。
在框350處,從加密/解密引擎接收回解密外鍵。在該框處,外鍵可以在響應(yīng)消息中提供給數(shù)據(jù)庫(kù)系統(tǒng)。在一些實(shí)施方案中,解密外鍵可以通過(guò)函數(shù)返回。
在框360處,搜索數(shù)據(jù)庫(kù)的第二表,以搜索與框350中獲得的解密外鍵對(duì)應(yīng)的一個(gè)或多個(gè)加密字段值。例如,第二表可以是圖1的源表110,并且可以從數(shù)據(jù)庫(kù)檢索與解密外鍵對(duì)應(yīng)的加密的電子郵件和加密的電話號(hào)碼。另外,如果在第二表中存在明文數(shù)據(jù),其也可以獲得。例如,在源表110中,名字和姓氏以明文形式存儲(chǔ),以及搜索也可以檢索這些字段值。在一些實(shí)施方案中,可以在查詢中請(qǐng)求特定字段值。例如,查詢可以指定字段,其中從源表返回相對(duì)于搜索字符串的值。
在框370處,可以將在框360中檢索到的任何加密的字段值發(fā)送到解密引擎以進(jìn)行解密。在該框處,解密引擎可以將加密的字段值進(jìn)行一個(gè)或多個(gè)解密算法以獲得字段值的解密版本。在一些實(shí)施方案中,源表的每個(gè)字段可以與單獨(dú)的解密密鑰相關(guān)聯(lián)。
在框380處,從解密引擎接收解密的用戶數(shù)據(jù)。一旦被解密,它可以被發(fā)送回請(qǐng)求者,可能與檢索到的任何明文數(shù)據(jù)一起。
系統(tǒng)能夠?qū)⒉煌募用軘?shù)據(jù)片段的存儲(chǔ)分開(kāi),包括但不限于電話號(hào)碼、電子郵件地址和郵寄地址,因?yàn)樗鼈兌即鎯?chǔ)在一起,具有數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限的某些人可能能夠輕松獲取個(gè)人的所有相關(guān)的加密數(shù)據(jù)。然而,如果每一個(gè)僅在單獨(dú)的表中和在相同表的加密部分中以明文形式出現(xiàn),則在不訪問(wèn)解密引擎的情況下將那些加密的數(shù)據(jù)項(xiàng)與相同的實(shí)體和相同的人相關(guān)聯(lián)將變得更加困難。即使數(shù)據(jù)庫(kù)被盜或未經(jīng)許可被訪問(wèn),由于每個(gè)表未連接,數(shù)據(jù)是不可用的。
一旦系統(tǒng)具有加密數(shù)據(jù)特定片段的外鍵,它可以使用該外鍵以從其他數(shù)據(jù)庫(kù)表中獲取額外相關(guān)的加密數(shù)據(jù)。它可以執(zhí)行額外查詢以將數(shù)據(jù)從數(shù)據(jù)庫(kù)中取出。發(fā)出查詢的用戶將永遠(yuǎn)不會(huì)看到外鍵,因?yàn)椴恍枰獙⑼怄I返回給用戶,但是內(nèi)部系統(tǒng)可以使用它以獲取額外加密數(shù)據(jù)。系統(tǒng)用戶將永遠(yuǎn)不會(huì)實(shí)際檢索外部加密密鑰,相反地,系統(tǒng)將使用該密鑰進(jìn)行后續(xù)步驟,但系統(tǒng)將永遠(yuǎn)不需要將外部加密密鑰發(fā)送回系統(tǒng)用戶。
b.數(shù)據(jù)流
圖4描繪了示出根據(jù)本文提供的至少一些實(shí)施方案的設(shè)備和數(shù)據(jù)流的系統(tǒng)圖。服務(wù)計(jì)算機(jī)400具有軟件,其允許用戶輸入他們希望獲得的搜索數(shù)據(jù)。在一些實(shí)施方案中,服務(wù)計(jì)算機(jī)400可以是圖2的示例性服務(wù)計(jì)算機(jī)200。
當(dāng)搜索字符串被輸入搜索界面時(shí),使用搜索字符串來(lái)查詢數(shù)據(jù)庫(kù)430,例如根據(jù)圖3的方法300。查詢可以包括服務(wù)計(jì)算機(jī)400,其向數(shù)據(jù)庫(kù)430發(fā)送搜索字符串401以嘗試查找與搜索字符串401對(duì)應(yīng)的數(shù)據(jù)??梢越?jīng)由網(wǎng)絡(luò)接口從與服務(wù)計(jì)算機(jī)400通信的客戶端設(shè)備執(zhí)行搜索界面。搜索界面可以是安裝在遠(yuǎn)程定位的客戶端設(shè)備上并從其執(zhí)行的瀏覽器應(yīng)用(例如,web瀏覽器)。
在一些實(shí)施方案中,搜索界面可以是在客戶端設(shè)備上實(shí)現(xiàn)并從其執(zhí)行的圖形用戶界面(gui)。gui可以與和數(shù)據(jù)庫(kù)系統(tǒng)通信的應(yīng)用或程序相關(guān)聯(lián)。例如,可以經(jīng)由在遠(yuǎn)程客戶端設(shè)備上實(shí)現(xiàn)的gui來(lái)向用戶呈現(xiàn)多個(gè)可搜索字段。用戶可以將搜索字符串輸入到所呈現(xiàn)的可搜索字段中的任何一個(gè)中。在檢測(cè)到用戶已經(jīng)將一個(gè)或多個(gè)搜索字符串輸入到可搜索字段的一個(gè)或多個(gè)中時(shí),gui可以以在其中它們被輸入的可搜索字段的指示將輸入的輸入搜索字符串發(fā)送到數(shù)據(jù)庫(kù)系統(tǒng)。
在402處,數(shù)據(jù)庫(kù)430發(fā)送回與搜索字符串對(duì)應(yīng)的一個(gè)或多個(gè)加密外鍵的結(jié)果集。如果加密外鍵包括在其中明文字段的值與搜索字符串匹配的記錄或行的外鍵字段中,則加密外鍵可以對(duì)應(yīng)于(涉及)搜索字符串。換句話說(shuō),一旦明文值被標(biāo)識(shí)為匹配搜索字符串,則位于可搜索表的同一行中的外鍵值作為該明文值被附加到要返回的結(jié)果集中。在一些實(shí)施方案中,明文值列內(nèi)的多個(gè)明文值可以被標(biāo)識(shí)為匹配搜索字符串。在這種情況下,可以將包含所標(biāo)識(shí)的明文值的每行的每個(gè)加密外鍵附加到結(jié)果集中。
服務(wù)計(jì)算機(jī)400將外部加密密鑰從結(jié)果集發(fā)送到解密引擎420進(jìn)行解密。解密引擎將知道如何使用外部加密密鑰、表名稱以及可能的密碼隨機(jī)數(shù)來(lái)解密外鍵。一旦解密,解密引擎420將向服務(wù)計(jì)算機(jī)400發(fā)送解密外鍵403。方法300可以使用加密/解密引擎420來(lái)解密在搜索中獲得和使用的加密數(shù)據(jù)。
然后,服務(wù)計(jì)算機(jī)400將包括解密外鍵403的另一搜索查詢發(fā)送到數(shù)據(jù)庫(kù)430。然后,數(shù)據(jù)庫(kù)430可以搜索與解密外鍵403對(duì)應(yīng)的數(shù)據(jù),并將加密的用戶數(shù)據(jù)404返回到服務(wù)計(jì)算機(jī)400。
然后,服務(wù)計(jì)算機(jī)400將加密的用戶數(shù)據(jù)404發(fā)送到解密引擎420以進(jìn)行解密。一旦加密的用戶數(shù)據(jù)404被解密,解密的用戶數(shù)據(jù)405被發(fā)送到服務(wù)計(jì)算機(jī)400。然后,服務(wù)計(jì)算機(jī)400可以例如經(jīng)由搜索界面來(lái)提供對(duì)查詢的響應(yīng)。
c.示例性過(guò)程
為了利用所描述的公開(kāi),數(shù)據(jù)庫(kù)系統(tǒng)可以被配置成在所描述的數(shù)據(jù)庫(kù)方案上執(zhí)行一個(gè)或多個(gè)過(guò)程。本文所描述的任何過(guò)程中的一些或全部(或變型和/或其組合)可以在配置有可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)的控制下執(zhí)行,并且其可以被實(shí)現(xiàn)為代碼(例如,可執(zhí)行指令、一個(gè)或多個(gè)計(jì)算機(jī)程序或一個(gè)或多個(gè)應(yīng)用)。根據(jù)至少一個(gè)實(shí)施方案,一個(gè)或多個(gè)過(guò)程可以至少由圖1所描繪的設(shè)備102來(lái)執(zhí)行。代碼可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,例如以包括可由一個(gè)或多個(gè)處理器執(zhí)行的多個(gè)指令的計(jì)算機(jī)程序的形式。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是非瞬態(tài)的。以下描述突出了用于標(biāo)識(shí)和返回在數(shù)據(jù)庫(kù)系統(tǒng)接收到信息請(qǐng)求時(shí)可以由其發(fā)起的一組解密源數(shù)據(jù)的一個(gè)示例性過(guò)程。
圖5描繪了根據(jù)至少一些實(shí)施方案的對(duì)包括加密數(shù)據(jù)的數(shù)據(jù)庫(kù)執(zhí)行搜索的示例性過(guò)程。過(guò)程500被示出為邏輯流程圖,其每個(gè)操作表示可以由硬件、計(jì)算機(jī)指令或其組合實(shí)現(xiàn)的一系列操作。在計(jì)算機(jī)指令的上下文中,操作表示存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,所述指令在由一個(gè)或多個(gè)處理器執(zhí)行時(shí),執(zhí)行所述操作。一般來(lái)說(shuō),計(jì)算機(jī)可執(zhí)行指令包括執(zhí)行特定功能或?qū)崿F(xiàn)特定數(shù)據(jù)類型的例行程序、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。描述操作的順序不旨在被解讀為是限制,并且任何數(shù)目的被描述操作可以省略或以任何順序和/或并行地組合以執(zhí)行該過(guò)程和本文所述的任何其他過(guò)程。
在502處,接收到查詢(請(qǐng)求信息)。查詢可以包括搜索字符串和列的指示。在一些實(shí)施方案中,源表的每一列可以與不同的可搜索表相關(guān)聯(lián)。每個(gè)不同的可搜索表可以具有列的解密版本,主標(biāo)識(shí)符的加密版本和索引。
在504處,在確定其中與搜索字符串相關(guān)聯(lián)的列時(shí),可以標(biāo)識(shí)與搜索字符串相關(guān)聯(lián)的可搜索表。例如,如果指示的列是“phone_number”列,則可搜索表可以是“phone_number”表,其包括明文電話號(hào)碼數(shù)據(jù)列。在一些實(shí)施方案中,可以經(jīng)由圖形用戶界面(gui)將查詢映射到特定的可搜索表。例如,可以經(jīng)由在客戶端設(shè)備上實(shí)現(xiàn)的gui來(lái)向用戶呈現(xiàn)多個(gè)可搜索字段。用戶可以將搜索字符串輸入到所呈現(xiàn)的可搜索字段中的任何一個(gè)中。在該示例中,每個(gè)可搜索字段可以與可搜索表相關(guān)聯(lián)。作為說(shuō)明,用戶可以將搜索字符串輸入到標(biāo)記為“firstname”的可搜索字段中,該可搜索字段可以與“first_name”可搜索表相關(guān)聯(lián)。在該說(shuō)明性示例中,可以標(biāo)識(shí)“first_name”可搜索表,并且可以針對(duì)該可搜索表內(nèi)的明文列來(lái)查詢搜索字符串。
在506處,可以查詢可搜索表,以基于來(lái)自與每行中的搜索字符串匹配的列數(shù)據(jù)的解密版本的值來(lái)確定與搜索字符串相關(guān)的一組行。在一些實(shí)施方案中,查詢可以返回0-n結(jié)果集,其中n是可搜索表中的總行數(shù)。該結(jié)果集中的每個(gè)返回結(jié)果可以包括多個(gè)加密標(biāo)識(shí)符。在一些實(shí)施方案中,結(jié)果集可以包括單個(gè)加密標(biāo)識(shí)符。
在508處,過(guò)程500可以通過(guò)解密搜索結(jié)果集中的每個(gè)加密標(biāo)識(shí)符來(lái)生成一組解密標(biāo)識(shí)符。在一些實(shí)施方案中,搜索結(jié)果集中的每個(gè)加密標(biāo)識(shí)符可以分別發(fā)送到解密引擎。解密引擎可以解密每個(gè)加密標(biāo)識(shí)符,并將解密標(biāo)識(shí)符附加到一組解密標(biāo)識(shí)符。在一些實(shí)施方案中,整個(gè)搜索結(jié)果集可以被提供給解密引擎,解密引擎隨后可以從該組加密標(biāo)識(shí)符中產(chǎn)生一組解密標(biāo)識(shí)符。
在510處,在生成一組解密標(biāo)識(shí)符時(shí),可以查詢?cè)幢硪詷?biāo)識(shí)與每個(gè)解密標(biāo)識(shí)符對(duì)應(yīng)的一組加密數(shù)據(jù)。在該步驟中,可以返回與每個(gè)解密標(biāo)識(shí)符相關(guān)聯(lián)的一個(gè)或多個(gè)記錄的加密數(shù)據(jù)。例如,可以查詢?cè)幢硪詷?biāo)識(shí)其中主標(biāo)識(shí)符與該組解密標(biāo)識(shí)符中的一個(gè)解密標(biāo)識(shí)符匹配的記錄。對(duì)于這些記錄中的每一個(gè),可以從源表中檢索加密源數(shù)據(jù)的一個(gè)或多個(gè)片段。在一些實(shí)施方案中,可以在所接收的查詢中指定加密源數(shù)據(jù)的一個(gè)或多個(gè)片段。例如,查詢可以指定“選擇first_name和last_name”,在這種情況下,名字和姓氏字段中的加密值可以被附加到一組加密源數(shù)據(jù)。返回的加密源數(shù)據(jù)可以被解密以標(biāo)識(shí)一個(gè)或多個(gè)個(gè)人可標(biāo)識(shí)信息數(shù)據(jù)。
在512處,一旦已經(jīng)標(biāo)識(shí)出該組加密源數(shù)據(jù),則加密數(shù)據(jù)可以被解密。在一些實(shí)施方案中,解密數(shù)據(jù)可以基于其他標(biāo)準(zhǔn)被過(guò)濾或以其他方式縮小。例如,解密數(shù)據(jù)可以由與所提供的搜索字符串相關(guān)的多個(gè)行組成。在該示例中,可以基于第二搜索字符串來(lái)確定最合適的行。作為說(shuō)明,在基于電話號(hào)碼搜索數(shù)據(jù)庫(kù)的一組客戶記錄之后,可以基于名稱或地址來(lái)縮小該組客戶記錄。客戶記錄可以包括與特定用戶相關(guān)聯(lián)的一組數(shù)據(jù)(例如,與用戶相關(guān)聯(lián)的數(shù)據(jù)庫(kù)行中的每列的值)。
在514處,可以響應(yīng)于所提交的查詢?cè)?14處提供該組解密源數(shù)據(jù)。在一些實(shí)施方案中,該組解密源數(shù)據(jù)可以被提供給提交查詢的用戶。在一些實(shí)施方案中,該組解密源數(shù)據(jù)可以被提供給數(shù)據(jù)庫(kù)系統(tǒng),使得可以針對(duì)該組解密源數(shù)據(jù)中的信息采取進(jìn)一步的動(dòng)作。例如,該組解密源數(shù)據(jù)可以在如下面參考圖6所述的更新過(guò)程中使用。
作為說(shuō)明,考慮在其中用戶嘗試基于電話號(hào)碼來(lái)檢索與特定用戶相關(guān)的信息的場(chǎng)景。用戶可以通過(guò)向數(shù)據(jù)庫(kù)查詢電話號(hào)碼來(lái)提交與個(gè)人有關(guān)的查詢。為此,可以標(biāo)識(shí)與電話號(hào)碼相關(guān)聯(lián)的源表列。在一些實(shí)施方案中,用戶可以指定與個(gè)人可標(biāo)識(shí)信息的片段相關(guān)聯(lián)的列。在一些實(shí)施方案中,個(gè)人可標(biāo)識(shí)信息可以經(jīng)由用戶界面輸入到與特定表列相關(guān)聯(lián)的字段中。
在上述示例中,用戶可以將個(gè)人的電話號(hào)碼的至少一部分輸入到圖形用戶界面的電話號(hào)碼輸入字段中。在提交查詢時(shí),可以查詢與電話號(hào)碼列相關(guān)的可搜索表,以查找輸入的電話號(hào)碼或電話號(hào)碼的部分。在標(biāo)識(shí)與輸入的電話號(hào)碼匹配的電話號(hào)碼搜索表的一行或多行時(shí),可以返回一組加密標(biāo)識(shí)符。加密標(biāo)識(shí)符可以被解密以確定與電話號(hào)碼相關(guān)的一組行??梢詫?lái)自所標(biāo)識(shí)的行的額外信息返回給用戶。例如,可以向用戶提供其中電話號(hào)碼是匹配的個(gè)人名稱列表。在一些實(shí)施方案中,可以相對(duì)于搜索字符串檢索特定列值或字段值。例如,響應(yīng)于對(duì)電話號(hào)碼搜索字符串的查詢,可以提供名稱列中的值。
iv.更新數(shù)據(jù)庫(kù)
所描述的數(shù)據(jù)庫(kù)方案包括具有加密和明文列的源表、以及多個(gè)可搜索的數(shù)據(jù)庫(kù)表,每個(gè)表與源表的加密列相關(guān)聯(lián)。在一些情況下,可能需要更新一個(gè)或多個(gè)數(shù)據(jù)庫(kù)表的一個(gè)或多個(gè)字段值。例如,當(dāng)系統(tǒng)接收到新信息時(shí),可能需要更改或更新存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)。在一些實(shí)施方案中,對(duì)單個(gè)表(源表)進(jìn)行更新,并且將這些更改發(fā)布到其余的數(shù)據(jù)庫(kù)表。
圖6描繪了根據(jù)至少一些實(shí)施方案的用于更新包括加密數(shù)據(jù)的數(shù)據(jù)庫(kù)的過(guò)程600。在一些情況下,可能需要更新或編輯根據(jù)本公開(kāi)存儲(chǔ)的數(shù)據(jù)。
在框602處,用戶可以標(biāo)識(shí)源表中與要更新的數(shù)據(jù)片段相關(guān)的一行或多行。根據(jù)至少一些實(shí)施方案,過(guò)程600可以通過(guò)首先查詢可搜索表來(lái)標(biāo)識(shí)加密標(biāo)識(shí)符以及之后查詢?cè)幢聿檎乙碌臄?shù)據(jù),經(jīng)由相對(duì)于圖5描述的過(guò)程來(lái)標(biāo)識(shí)要更新的一行或多行。
在框604處,在標(biāo)識(shí)要更新的一行或多行時(shí),可以通過(guò)將行內(nèi)的其他信息與和個(gè)人相關(guān)的額外信息進(jìn)行比較來(lái)確定要更新的行。在一些實(shí)施方案中,更新請(qǐng)求可以包括可用于確定哪個(gè)行將被更新的額外信息。例如,更新請(qǐng)求可以包括語(yǔ)句“其中phone_number='123-456*'和name='johnsmith'。在該示例中,可以基于搜索字符串'123-456*'來(lái)標(biāo)識(shí)多個(gè)行,并且可以對(duì)多個(gè)行進(jìn)行過(guò)濾以僅納入那些也與等于“johnsmith”的名稱值相關(guān)聯(lián)的行。
在框606處,一旦標(biāo)識(shí)了其中數(shù)據(jù)要更新的適當(dāng)行,可以使用適合該行和列的加密算法/加密密鑰來(lái)加密新數(shù)據(jù)。在一些實(shí)施方案中,可以將新數(shù)據(jù)提供給加密引擎以進(jìn)行加密。加密引擎可以是圖2的示例性加密/解密引擎210。
在框608處,然后可以將源表中要替換的舊數(shù)據(jù)更新為新數(shù)據(jù)的加密版本。在一些實(shí)施方案中,對(duì)源表的更改可以發(fā)布到一個(gè)或多個(gè)可搜索表。例如,在檢測(cè)到源表的列中的數(shù)據(jù)的改變之后,可以更新與該列相關(guān)聯(lián)的可搜索表以納入此改變。
在框610處,一旦在源表中更新數(shù)據(jù),可以將更改發(fā)布到可搜索表。例如,數(shù)據(jù)庫(kù)系統(tǒng)可以確定源表的哪些列已被更新。在該示例中,可以更新與這些列相關(guān)聯(lián)的可搜索表以納入新信息。在另一示例中,可以在周期性的基礎(chǔ)上再生一個(gè)或多個(gè)可搜索表。在該示例中,可以生成可搜索表的新版本以替換舊版本,其中新版本包含更新的信息。
作為說(shuō)明,考慮其中用戶希望更新與記錄個(gè)人相關(guān)聯(lián)的電話號(hào)碼的場(chǎng)景。在這種情況下,如果用戶想將個(gè)人的電話號(hào)碼從123-456-7890更改為987-654-3210,其中個(gè)人的姓名為johnsmith,首先查詢搜索電話號(hào)碼表以查找電話號(hào)碼123-456-7890,并且可以返回結(jié)果集。結(jié)果集可以包括鏈接到源表的一組加密外鍵。在從返回的該組加密密鑰對(duì)外鍵進(jìn)行解密后,可以查詢?cè)幢怼T谏鲜鍪纠?,可以通過(guò)查詢從可搜索表返回的未加密的外鍵在源表中標(biāo)識(shí)與電話號(hào)碼123-456-7890相關(guān)聯(lián)的行。然后將行中的信息與名稱johnsmith進(jìn)行比較,以標(biāo)識(shí)要更新的正確行。一旦標(biāo)識(shí)了正確的行,電話號(hào)碼987-654-3210可以被加密。然后,所標(biāo)識(shí)的行的電話號(hào)碼字段被更新為加密的新電話號(hào)碼。然后,可以將這個(gè)新電話號(hào)碼發(fā)布到一個(gè)或多個(gè)可搜索表。
v.示例性計(jì)算機(jī)系統(tǒng)
根據(jù)至少一些實(shí)施方案,能夠提供個(gè)人可標(biāo)識(shí)信息(或其他加密數(shù)據(jù))的有效搜索能力的數(shù)據(jù)庫(kù)平臺(tái)的系統(tǒng)、裝置、方法、過(guò)程和/或操作可以全部地或部分地以由一個(gè)或多個(gè)編程的計(jì)算機(jī)處理器(諸如中央處理單元(cpu)或微處理器)執(zhí)行的一組指令形式。這樣的處理器可以并入由系統(tǒng)的其他組件操作或與其通信的裝置、服務(wù)器、客戶端或其他計(jì)算設(shè)備中。作為一個(gè)示例,圖7描繪了可以存在于根據(jù)本發(fā)明的一些實(shí)施方案的被配置成實(shí)現(xiàn)方法和/或過(guò)程的計(jì)算機(jī)設(shè)備和/或系統(tǒng)700中的元件的方面。圖7中所示的子系統(tǒng)經(jīng)由系統(tǒng)總線702互連。附加子系統(tǒng)包括打印機(jī)704、鍵盤706、固定盤708和監(jiān)視器710,監(jiān)視器耦合到顯示器適配器712。耦合到i/o控制器714的外圍設(shè)備和輸入/輸出(i/o)設(shè)備可以通過(guò)本領(lǐng)域已知的許多裝置中的任何一種(諸如串行端口716)連接到計(jì)算機(jī)系統(tǒng)。例如,串行端口716或外部接口718可用于將計(jì)算機(jī)設(shè)備700連接到圖7中未示出的其他設(shè)備和/或系統(tǒng),其包括諸如互聯(lián)網(wǎng)的廣域網(wǎng)、鼠標(biāo)輸入設(shè)備和/或掃描儀。經(jīng)由系統(tǒng)總線702的互連允許一個(gè)或多個(gè)處理器720與每個(gè)子系統(tǒng)進(jìn)行通信,并控制可以存儲(chǔ)在系統(tǒng)存儲(chǔ)器722和/或固定盤708中的指令的執(zhí)行以及子系統(tǒng)之間的信息交換。系統(tǒng)存儲(chǔ)器722和/或固定盤708可以包含有形計(jì)算機(jī)可讀介質(zhì)。
計(jì)算機(jī)系統(tǒng)可以包括例如通過(guò)外部接口或內(nèi)部接口連接在一起的多個(gè)相同的組件或子系統(tǒng)。在一些實(shí)施方案中,計(jì)算機(jī)系統(tǒng)、子系統(tǒng)或裝置可以通過(guò)網(wǎng)絡(luò)進(jìn)行通信。在這種情況下,一臺(tái)計(jì)算機(jī)可以被認(rèn)為是客戶端,另一臺(tái)計(jì)算機(jī)可以被認(rèn)為是服務(wù)器,其中每臺(tái)計(jì)算機(jī)可以是同一計(jì)算機(jī)系統(tǒng)的一部分??蛻舳撕头?wù)器可以各自包括多個(gè)系統(tǒng)、子系統(tǒng)或部件。
本發(fā)明的實(shí)施方案提供許多技術(shù)優(yōu)點(diǎn)。例如,本發(fā)明的實(shí)施方案使得用戶能夠使用通配符或文本串的一部分有效地查詢包括加密數(shù)據(jù)的數(shù)據(jù)庫(kù)。此外,本發(fā)明能夠?qū)€(gè)人可標(biāo)識(shí)信息分離成單獨(dú)的不可鏈接表,使得即使一部分?jǐn)?shù)據(jù)被欺詐者獲取,所獲得的信息對(duì)于欺詐者將是無(wú)用的,因?yàn)樗蛩龑o(wú)法獲取額外信息。
應(yīng)當(dāng)理解,本發(fā)明的任何實(shí)施方案可以使用硬件(例如專用集成電路或現(xiàn)場(chǎng)可編程門陣列)和/或使用計(jì)算機(jī)軟件以控制邏輯的形式借助通用可編程處理器以模塊化或集成方式實(shí)現(xiàn)。如本文中描述的,處理器包括同一集成芯片上的單核處理器、多核處理器或單個(gè)電路板上的或聯(lián)網(wǎng)的多個(gè)處理單元。基于本文中提供的公開(kāi)和教導(dǎo),本領(lǐng)域技術(shù)人員會(huì)知道并意識(shí)到使用硬件及硬件和軟件的組合實(shí)現(xiàn)本發(fā)明的實(shí)施方案的其他方式和/或方法。
本申請(qǐng)中描述的任何軟件組件或功能可以實(shí)現(xiàn)為使用任何適當(dāng)計(jì)算機(jī)語(yǔ)言(比方說(shuō)例如java、c、c++、c#、objective-c、swift)或腳本語(yǔ)言(諸如perl或python),使用例如傳統(tǒng)的或面向?qū)ο蟮募夹g(shù)由處理器執(zhí)行的軟件代碼。軟件代碼可以作為一系列指令或命令存儲(chǔ)在用于存儲(chǔ)和/或傳輸?shù)挠?jì)算機(jī)可讀介質(zhì)上,合適的介質(zhì)包括隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、諸如硬盤驅(qū)動(dòng)器或軟盤的磁介質(zhì)、或諸如光盤(cd)或dvd(數(shù)字通用盤)的光學(xué)介質(zhì)、閃速存儲(chǔ)器等。計(jì)算機(jī)可讀介質(zhì)可以是這些存儲(chǔ)或傳輸設(shè)備的任何組合。
還可以使用載波信號(hào)編碼和傳輸這些程序,載波信號(hào)適于經(jīng)由符合各種協(xié)議(包括互聯(lián)網(wǎng))的有線、光和/或無(wú)線網(wǎng)絡(luò)傳輸。因此,根據(jù)本發(fā)明的至少一些實(shí)施方案的計(jì)算機(jī)可讀介質(zhì)可以使用用這些程序編碼的數(shù)據(jù)信號(hào)來(lái)創(chuàng)建。用程序代碼編碼的計(jì)算機(jī)可讀介質(zhì)可以與可兼容設(shè)備一起打包或從其他設(shè)備單獨(dú)地提供(例如通過(guò)互聯(lián)網(wǎng)下載)。任何這種計(jì)算機(jī)可讀介質(zhì)可以駐存在單個(gè)計(jì)算機(jī)產(chǎn)品(例如硬盤、cd或整個(gè)計(jì)算機(jī)系統(tǒng))之上或之內(nèi),并且可以出現(xiàn)在系統(tǒng)或網(wǎng)絡(luò)內(nèi)的不同計(jì)算機(jī)產(chǎn)品之上或之內(nèi)。計(jì)算機(jī)系統(tǒng)可以包括監(jiān)視器、打印機(jī)或用于向用戶提供本文中提到的任何結(jié)果的其他適當(dāng)顯示器。
以上描述是示意性的不是限制性的。本領(lǐng)域技術(shù)人員在閱讀本公開(kāi)后,將明白本發(fā)明的許多變形。因此,本發(fā)明的范圍應(yīng)當(dāng)不參照上文描述確定,而是應(yīng)當(dāng)參照所附權(quán)利要求連同其全部范圍或等同物確定。
在不偏離本發(fā)明的范圍下,任何實(shí)施方案的一個(gè)或多個(gè)特征可以與任何其他實(shí)施方案的一個(gè)或多個(gè)特征組合。
除非明確指示有相反的意思,“一個(gè)/種”、“該/所述”的敘述旨在表示“一個(gè)或多個(gè)”。
上文提到的所有專利、專利申請(qǐng)、公開(kāi)和描述出于所有目的通過(guò)引用被并入本文中。不承認(rèn)他們?yōu)楝F(xiàn)有技術(shù)。