安全的數(shù)據(jù)庫(kù)搜索的制作方法
【專利摘要】用于在數(shù)據(jù)庫(kù)中安全地存儲(chǔ)數(shù)據(jù)的方法和系統(tǒng),包括:接收待存儲(chǔ)的數(shù)據(jù);將數(shù)據(jù)分成多個(gè)元素;用加密函數(shù)對(duì)多個(gè)元素的每個(gè)元素進(jìn)行加密;結(jié)合加密的元素以形成數(shù)據(jù)屬性;在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)屬性。用于搜索具有加密的數(shù)據(jù)屬性的數(shù)據(jù)庫(kù)的方法和系統(tǒng),包括:接收搜索項(xiàng);用加密函數(shù)對(duì)搜索項(xiàng)進(jìn)行加密;搜索數(shù)據(jù)庫(kù)以尋找具有匹配于加密的搜索項(xiàng)的數(shù)據(jù)屬性的記錄。
【專利說(shuō)明】安全的數(shù)據(jù)庫(kù)搜索
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及保護(hù)數(shù)據(jù)庫(kù)和在這種被保護(hù)的數(shù)據(jù)庫(kù)中的搜索。
【背景技術(shù)】
[0002] 數(shù)據(jù)庫(kù)和其他數(shù)字記錄存儲(chǔ)可以由密碼、防火墻和其他安全機(jī)制來(lái)保護(hù)。然而,一 旦這樣的安全措施被突破,那么數(shù)據(jù)可以被自由地訪問(wèn)。因此,加密可以用于保護(hù)數(shù)據(jù)庫(kù)記 錄中的特定屬性、字段或列。
[0003] 例如,在SQL插入程序以將記錄添加到數(shù)據(jù)庫(kù)期間,某些列可以被定義為加密的。 在數(shù)據(jù)被添加之前,加密算法可以應(yīng)用于去往這樣的列的值。當(dāng)這樣的數(shù)據(jù)被檢索時(shí),在數(shù) 據(jù)呈現(xiàn)給調(diào)用函數(shù)之前,相應(yīng)的解密函數(shù)可以應(yīng)用于加密屬性或值。
[0004] 在這樣的示例中,用戶可以用諸如以下SQL語(yǔ)句將記錄放入數(shù)據(jù)集:
[0005] INSERT INTO dataset(creditCardNumber, cardType, expiryDate, emailAddress ,postalAddress)VALUES( '1234 4321 1234 4321,, 'VISA, ,'00-00-00,, 'someoneO somewhere, com,,'IThe Street, Postal Town, Somewhere,)(插入 INTO 數(shù)據(jù)集(信用卡 編號(hào),卡類型,有效期,郵箱地址,郵寄地址)值('1234 4321 1234 4321','VISA','0 〇-〇〇-〇〇,,'someone@somewhere.com,,'1 街道,通郵市鎮(zhèn),某地,))
[0006] 數(shù)據(jù)庫(kù)可以被配置成對(duì)字段creditCardNumber和expiryDate進(jìn)行加密。當(dāng)上面 的語(yǔ)句由數(shù)據(jù)庫(kù)管理系統(tǒng)處理時(shí),值1234 4321 1234 4321和00-00-00在被存儲(chǔ)之前將自 動(dòng)地被加密。
[0007] 由于不能使搜索結(jié)果(即SELECT查詢中的WHERE子句)匹配加密的字段、列或?qū)?性,記錄中的至少一些字段必須是純文本的以方便檢索。因此,經(jīng)常是某一商業(yè)數(shù)據(jù)形式的 至少一些數(shù)據(jù)(即非主要關(guān)鍵數(shù)據(jù))必須以純文本存儲(chǔ)。
[0008] 這種妥協(xié)允許搜索和檢索,但是會(huì)降低數(shù)據(jù)庫(kù)的整體安全性。對(duì)數(shù)據(jù)庫(kù)的未授權(quán) 訪問(wèn)會(huì)導(dǎo)致訪問(wèn)一些純文本信息。入侵者可以使用該未加密的信息來(lái)確定最有價(jià)值的加密 記錄,并且將任何實(shí)質(zhì)性攻擊集中在這種更高價(jià)值的記錄上。換句話說(shuō),當(dāng)對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn) 行解密可能是不切實(shí)際或不可能的時(shí)候,識(shí)別能在合理時(shí)限內(nèi)解密的高價(jià)值記錄的小子集 相對(duì)來(lái)說(shuō)沒(méi)那么重要。
[0009] 如果數(shù)據(jù)庫(kù)中所有的列被加密,則這樣的集中攻擊將更難以進(jìn)行,但是這將阻礙 數(shù)據(jù)的合法搜索和檢索。
[0010] 因此,需要有克服這些問(wèn)題的系統(tǒng)和方法。
【發(fā)明內(nèi)容】
[0011] 在此背景下,根據(jù)第一方面,提供一種在數(shù)據(jù)庫(kù)中安全地存儲(chǔ)數(shù)據(jù)的方法,包括以 下步驟:
[0012] 接收待存儲(chǔ)的數(shù)據(jù);
[0013] 將數(shù)據(jù)分成多個(gè)元素;
[0014] 用加密函數(shù)對(duì)多個(gè)元素的每個(gè)元素進(jìn)行加密;以及
[0015] 結(jié)合加密的元素以形成數(shù)據(jù)屬性;以及
[0016] 在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)屬性。這提供了一種安全地存儲(chǔ)數(shù)據(jù)的方法,同時(shí)保留了搜 索加密的列、數(shù)據(jù)屬性或字段的能力。元素可以是數(shù)組元素或其他數(shù)據(jù)類型??梢栽趫?zhí)行 其他步驟之后進(jìn)行存儲(chǔ)步驟。每個(gè)元素可以包含一個(gè)或更多個(gè)字符或單元。
[0017] 可選擇地,該方法還可以包括在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)屬性之前從數(shù)據(jù)屬性除去以下 項(xiàng)的步驟:
[0018] 所有數(shù)字字符;
[0019] 所有非數(shù)字字符;或者
[0020] 所有非字母數(shù)字字符。這提供了改進(jìn)可搜索性和性能的標(biāo)準(zhǔn)化水平。標(biāo)準(zhǔn)化步驟 諸如替換字符類型可以在數(shù)據(jù)被存儲(chǔ)之前進(jìn)行。
[0021] 可選擇地,該方法還可以包括用以下替換除去的字符的步驟:
[0022] 字母字符;和/或
[0023] 字母數(shù)字字符。這改進(jìn)了字段中數(shù)據(jù)類型的分布且有助于性能。值或字符的除去 和/或替換可以在數(shù)據(jù)被分開(kāi)時(shí)或在數(shù)據(jù)被結(jié)合之后進(jìn)行。例如,可以根據(jù)方案選擇替換 字符。
[0024] 可選擇地,該方法還可以包括在數(shù)據(jù)庫(kù)中存儲(chǔ)記錄之前將第二加密函數(shù)應(yīng)用到記 錄的步驟。這通過(guò)降低發(fā)動(dòng)基于頻率或統(tǒng)計(jì)的加密攻擊以及隱藏可能出現(xiàn)的任何模式諸如 由替換步驟或程序引起的模式的能力來(lái)改進(jìn)了安全性。加密函數(shù)或算法可以與應(yīng)用于數(shù)組 元素的加密函數(shù)或算法相同或不同。密鑰也可以是不同的??梢栽跀?shù)據(jù)元素被結(jié)合之前但 在字符的任何替換或其他標(biāo)準(zhǔn)化步驟之前或之后應(yīng)用第二加密函數(shù)或算法。該第二加密函 數(shù)因此可以以與第一加密函數(shù)類似的方式應(yīng)用于單獨(dú)的字符或元素。
[0025] 根據(jù)另一方面,提供了一種根據(jù)任一所述方法填充的數(shù)據(jù)庫(kù)。
[0026] 根據(jù)第二方面,提供了一種搜索具有加密數(shù)據(jù)屬性的數(shù)據(jù)庫(kù)的方法,該方法包括 以下步驟:
[0027] 接收搜索項(xiàng);
[0028] 用加密函數(shù)對(duì)搜索項(xiàng)進(jìn)行加密;以及
[0029] 搜索數(shù)據(jù)庫(kù)尋找具有匹配于加密搜索項(xiàng)的數(shù)據(jù)屬性的記錄。該方法允許數(shù)據(jù)庫(kù)在 加密字段、列或?qū)傩陨媳凰阉?。因此,?shù)據(jù)庫(kù)可以被搜索以尋找匹配或部分匹配(例如,使 用SQL LIKE函數(shù))而不降低安全性。例如,第一方面可以與第二方面結(jié)合作為可以合并入 系統(tǒng)或分布式網(wǎng)絡(luò)的另一結(jié)合的方法。
[0030] 可選擇地,對(duì)搜索項(xiàng)進(jìn)行加密還可以包括以下步驟:
[0031] 將搜索項(xiàng)分成多個(gè)元素;
[0032] 對(duì)多個(gè)元素的每個(gè)元素進(jìn)行加密;以及
[0033] 結(jié)合所有加密的元素以形成加密的搜索項(xiàng)。換句話說(shuō),相同或類似的步驟可應(yīng)用 于搜索項(xiàng)或值,如同在存儲(chǔ)于數(shù)據(jù)庫(kù)中之前應(yīng)用于數(shù)據(jù)一樣。
[0034] 可選擇地,該方法還可以包括在搜索數(shù)據(jù)庫(kù)之前從加密的搜索項(xiàng)除去以下項(xiàng)的步 驟:
[0035] 所有數(shù)字字符;
[0036] 所有非數(shù)字字符;或者
[0037] 所有非字母數(shù)字字符。這是用于改進(jìn)數(shù)據(jù)檢索或存儲(chǔ)性能的標(biāo)準(zhǔn)化程序。
[0038] 可選擇地,該方法還可以包括用以下替換除去的字符的步驟:
[0039] 字母字符;和/或
[0040] 字母數(shù)字字符。
[0041] 可選擇地,該方法還可以包括在搜索數(shù)據(jù)庫(kù)之前將第二加密函數(shù)應(yīng)用到搜索項(xiàng)的 步驟。該函數(shù)可以與初始函數(shù)相同或不同,并且具有不同的密鑰。
[0042] 優(yōu)選地,可以通過(guò)SQL查詢來(lái)執(zhí)行搜索。這可以是SELECT語(yǔ)句??梢允褂闷渌麛?shù) 據(jù)庫(kù)訪問(wèn)語(yǔ)言或接口。
[0043] 優(yōu)選地,該方法還可以包括檢索具有匹配于加密搜索項(xiàng)的數(shù)據(jù)屬性的記錄的步 驟。
[0044] 優(yōu)選地,該方法還可以包括對(duì)檢索的記錄進(jìn)行解密的步驟。
[0045] 根據(jù)第三方面,提供一種被配置成執(zhí)行上述一種方法或多種方法的系統(tǒng)。該系統(tǒng) 可以例如是服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器或其他計(jì)算機(jī)系統(tǒng)。
[0046] 該系統(tǒng)還可以包括被配置成安全地存儲(chǔ)且搜索存儲(chǔ)的數(shù)據(jù)的邏輯組合(例如,處 理器或服務(wù)器)。
[0047] 該方法可以作為包括程序指令的應(yīng)用或計(jì)算機(jī)程序被執(zhí)行,當(dāng)在計(jì)算機(jī)上執(zhí)行程 序指令時(shí),其使計(jì)算機(jī)進(jìn)行上述方法步驟。計(jì)算機(jī)可以包括臺(tái)式機(jī)、筆記本電腦、服務(wù)器、嵌 入式計(jì)算機(jī)、集成電路、嵌入在其他裝置或設(shè)備中的芯片或其他處理器。
[0048] 計(jì)算機(jī)程序可以作為計(jì)算機(jī)可讀介質(zhì)或信號(hào)被存儲(chǔ)。
[0049] 應(yīng)當(dāng)注意的是,上述任何特征可以與本發(fā)明的任何特定方面或?qū)嵤┓绞揭黄鹗?用。
【專利附圖】
【附圖說(shuō)明】
[0050] 本發(fā)明可以以多種方式付諸于實(shí)踐,現(xiàn)在將參照附圖僅作為示例來(lái)描述實(shí)施方 式,其中:
[0051] 圖1示出了僅作為示例給出的用于在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)的方法的流程圖;
[0052] 圖2示出了用于搜索圖1的數(shù)據(jù)庫(kù)的方法的流程圖;以及
[0053] 圖3示出了僅作為示例給出的用于實(shí)現(xiàn)圖1和圖2的方法的系統(tǒng)的示意圖。
[0054] 應(yīng)當(dāng)注意的是,為簡(jiǎn)單起見(jiàn),所示出的圖不一定按比例繪制。
【具體實(shí)施方式】
[0055] 從上面背景部分中描述的相同插入語(yǔ)句開(kāi)始,即:
[0056] INSERT INTO dataset(creditCardNumber, cardType, expiryDate, emailAddress ,postalAddress)VALUES( '1234 4321 1234 4321,, 'VISA, ,'00-00-00,, 'someoneO somewhere. com, , 'IThe Street, Postal Town, Somewhere')
[0057] 可以對(duì)任何值或所有值進(jìn)行加密。例如,可以以這種方式保護(hù)creditCardNumber 和 expiryDate。
[0058] 這可以通過(guò)將每個(gè)值或數(shù)據(jù)屬性分成單獨(dú)的字符(或其他元素)并且隨后將這 些字符的每個(gè)字符放入數(shù)組的字段中來(lái)實(shí)現(xiàn)。然后可以使用行業(yè)標(biāo)準(zhǔn)加密算法,例如DES、 AES、Twofish和Serpent來(lái)分別對(duì)該數(shù)組中的每個(gè)元素進(jìn)行加密。
[0059] -旦數(shù)組中的每個(gè)元素被加密,則所有的數(shù)組元素可以被重新結(jié)合以在INSERT 語(yǔ)句中形成更新后的或新的值,從而在數(shù)據(jù)庫(kù)中存儲(chǔ)加密的數(shù)據(jù)。然而,在完成這一步之 前,可以采取另一步驟以改進(jìn)安全性和/或可搜索性。例如,可以通過(guò)除去任何數(shù)字字符來(lái) 使加密數(shù)據(jù)標(biāo)準(zhǔn)化,且其可以被替換為字母字符和數(shù)字字符的混合,還可以優(yōu)選地用與每 個(gè)數(shù)組元素上使用的加密密鑰不同的加密密鑰來(lái)對(duì)所得到的數(shù)據(jù)屬性或值進(jìn)行進(jìn)一步加 密。這可以進(jìn)一步掩藏任何潛在的模式且改進(jìn)安全性??梢允褂闷渌愋偷臉?biāo)準(zhǔn)化或加密。
[0060] 可以更新或替換和執(zhí)行SQL語(yǔ)句以在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)。在該程序之后,不需要 在DBMS層指明特定列被加密,因?yàn)檫@在生成INSERT (或UPDATE)語(yǔ)句時(shí)已經(jīng)被執(zhí)行了。
[0061] 在數(shù)據(jù)庫(kù)中的搜索可以采取SQL語(yǔ)句的形式諸如SELECT語(yǔ)句。例如,這樣的語(yǔ)句 可以是:
[0062] SELECT*FR0M information WHERE creditCardNumber LIKE ' % 234 %' and emailAddress = ' someoneOsomewhere. com'(選擇 * 從信息:其中,信用卡編號(hào)如 ' % 234%' 且郵箱地址='someone@somewhere.com,)
[0063] 這個(gè)特定示例的選擇語(yǔ)句試圖在creditCardNumber字段中找到針對(duì)值的匹配。 根據(jù)先前描述的程序,因?yàn)樵撟侄位驅(qū)傩砸呀?jīng)被加密,所以使用該SELECT語(yǔ)句將找不到有 效數(shù)據(jù)??梢詫?duì)選擇語(yǔ)句作以下改變以使得能夠進(jìn)行檢索:
[0064] 針對(duì)加密字段或?qū)傩运阉鞯闹凳古c用于加密數(shù)據(jù)庫(kù)中的原始數(shù)據(jù)的程序相似的 程序應(yīng)用于其自身。這可以是簡(jiǎn)單的加密函數(shù)或如上所述,將值分成單獨(dú)的字符,并且將這 些字符的每個(gè)字符放入數(shù)組元素中。然后,每個(gè)數(shù)組元素可以以在原始數(shù)據(jù)上使用的相同 的加密函數(shù)加密。在原始數(shù)據(jù)被標(biāo)準(zhǔn)化的情況下,這可以再次通過(guò)除去任何數(shù)字字符或其 他字符子集、然后例如通過(guò)用字母字符和數(shù)字字符的混合替換除去的任何數(shù)字字符或其他 字符子集來(lái)被重復(fù)執(zhí)行。數(shù)組元素可以被合并或結(jié)合以形成單個(gè)值或字符串。另一或第二 加密函數(shù)可以優(yōu)選地以不同的加密密鑰應(yīng)用于值。所得到的值或字符串隨后可以被重新引 入到數(shù)據(jù)庫(kù)中執(zhí)行的選擇語(yǔ)句中。換句話說(shuō),相似程序被應(yīng)用于首先用來(lái)加密數(shù)據(jù)的搜索 項(xiàng)。因此,現(xiàn)在可以進(jìn)行匹配。將值分成單獨(dú)的數(shù)組元素(在應(yīng)用函數(shù)諸如加密函數(shù)之前) 便于基于單獨(dú)字符的搜索或部分字符串搜索。
[0065] 圖1示出了用于在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)的方法1000的流程圖。分析數(shù)據(jù)1020以確 定哪個(gè)特定數(shù)據(jù)成分將被添加到數(shù)據(jù)庫(kù)1060中的加密的列。一些列或所有列可以被加密。 針對(duì)需要加密的特定數(shù)據(jù)屬性,步驟1025將數(shù)據(jù)分成元素的數(shù)組,其中,每個(gè)元素是單獨(dú) 的字符。在步驟1030中,根據(jù)第一加密算法或函數(shù)來(lái)加密每個(gè)數(shù)組元素。在步驟1035中, 除去由該加密函數(shù)產(chǎn)生的任何數(shù)字字符。在步驟1040中,這些除去的字符被替換為可以是 字母字符、數(shù)字字符或兩者混合的替換字符。
[0066] 在步驟1045中,另一加密函數(shù)應(yīng)用于數(shù)組元素,數(shù)組元素隨后在步驟1050中結(jié)合 在一起以形成單個(gè)字符串或值(或由數(shù)據(jù)庫(kù)期望的特定數(shù)據(jù)類型)。在步驟1055中,特定 SQL程序被制定成將數(shù)據(jù)添加到數(shù)據(jù)庫(kù)1060或更新現(xiàn)有數(shù)據(jù)。該UPDATE或INSERT語(yǔ)句可 以包括所有加密字段或一些加密字段和一些純文本字段的任何混合。INSERT或UPDATESQL 語(yǔ)句的執(zhí)行導(dǎo)致在具有包含從方法1000得到的值的加密列的數(shù)據(jù)庫(kù)1060中添加或更改數(shù) 據(jù)。未加密的列可以使數(shù)據(jù)以純文本添加。
[0067] 圖2示出了用于搜索或查詢填充有根據(jù)方法1000的數(shù)據(jù)的數(shù)據(jù)庫(kù)1060的方法 2000的流程圖。例如,可以從各種源,諸如外部系統(tǒng)、內(nèi)部系統(tǒng)、網(wǎng)絡(luò)電話或網(wǎng)上查詢來(lái)接收 搜索項(xiàng)。在步驟2010中,通過(guò)該方法接收這些搜索項(xiàng)。針對(duì)與加密的列或數(shù)據(jù)屬性相對(duì)應(yīng) 的搜索項(xiàng),則可以進(jìn)行后面的步驟。在步驟2030中,這樣的搜索項(xiàng)被轉(zhuǎn)換成數(shù)組。換句話 說(shuō),搜索項(xiàng)中的每個(gè)值被分成獨(dú)立的字符或單個(gè)位的整數(shù),并且每個(gè)被放入數(shù)組元素。在步 驟2040中,使用第一加密算法或函數(shù)來(lái)加密每個(gè)數(shù)組元素。在步驟2050中,除去從加密產(chǎn) 生的任何數(shù)字字符??商孢x地,可以除去其他字符集。在步驟2060中,任何除去的字符被 替換為替換字符,諸如數(shù)字、字母或兩者的混合。在步驟2065中,另一、第二加密算法或函 數(shù)應(yīng)用于數(shù)組元素,在步驟2070中,數(shù)組元素結(jié)合在一起以形成合成的字符串或值(或其 他數(shù)據(jù)類型)。該字符串或值被制定在WHERE子句中作為SELECT語(yǔ)句的部分,SELECT語(yǔ)句 可以包括目標(biāo)在于數(shù)據(jù)庫(kù)中特定數(shù)據(jù)屬性或列的其他加密搜索項(xiàng)和/或純文本搜索項(xiàng)。在 步驟2080中,在數(shù)據(jù)庫(kù)中執(zhí)行制定的查詢以搜尋匹配。在步驟2090中,任何結(jié)果以原始格 式被返回到原始調(diào)用程序。因此,通過(guò)使用原先應(yīng)用的函數(shù)或加密函數(shù)的反轉(zhuǎn),可以將返回 的數(shù)據(jù)解密成純文本。
[0068] 以這種方式,可以處理和執(zhí)行搜索項(xiàng),以從完全或部分加密的數(shù)據(jù)庫(kù)返回結(jié)果,并 且也可以在不首先對(duì)大量數(shù)據(jù)或整個(gè)列進(jìn)行解密的情況下搜索加密的或受保護(hù)的列。針對(duì) 數(shù)據(jù)庫(kù)中任何或所有加密的字段或列,可以運(yùn)行標(biāo)準(zhǔn)類型的SQL查詢。因此,這樣的查詢不 受限于例如未加密字段或主要關(guān)鍵詞諸如客戶ID。任何商業(yè)數(shù)據(jù)可以通過(guò)加密被充分保護(hù) 而不損害搜索的便利性。可以作為搜索接口和加密數(shù)據(jù)庫(kù)之間的附加的層或函數(shù)來(lái)并入方 法 2000。
[0069] 圖3示出了用于實(shí)現(xiàn)參照?qǐng)D1和圖2所描述的方法的系統(tǒng)300的示意圖。具有合 適操作系統(tǒng)諸如(Oracle) Sun Solaris、UNIX、Windows或Linux的服務(wù)器310運(yùn)行數(shù)據(jù)庫(kù) 管理系統(tǒng)諸如Oracle RDBMS、MS SQL服務(wù)器或Ingres。可以直接地添加數(shù)據(jù)或從終端或 客戶端320通過(guò)網(wǎng)絡(luò)330添加數(shù)據(jù)。這些客戶端、終端或其他數(shù)據(jù)饋送端320還可以執(zhí)行 查詢以返回存儲(chǔ)在數(shù)據(jù)庫(kù)1060中的數(shù)據(jù)。數(shù)據(jù)源和查詢發(fā)起者還可以是獨(dú)立的裝置。外 部系統(tǒng)也可以通過(guò)網(wǎng)絡(luò)330或通過(guò)其它通信裝置訪問(wèn)數(shù)據(jù)庫(kù)1060和在數(shù)據(jù)庫(kù)1060上運(yùn)行 查詢。網(wǎng)絡(luò)330可以例如是內(nèi)部網(wǎng)絡(luò)、以太網(wǎng)系統(tǒng)或英特網(wǎng)。
[0070] 正如技術(shù)人員將理解的,在不脫離由所附權(quán)利要求限定的本發(fā)明范圍的情況下, 可對(duì)上面實(shí)施方式的細(xì)節(jié)進(jìn)行變化。
[0071] 例如,所描述的實(shí)施方式包括具體數(shù)據(jù)庫(kù)功能諸如SQL語(yǔ)句和命令。然而,方法和 系統(tǒng)可以除SQL或RDBMS服務(wù)器或計(jì)算機(jī)之外使用不同的數(shù)據(jù)存儲(chǔ)設(shè)備、諸如基于云和文 件的存儲(chǔ)系統(tǒng)。
[0072] 可以在針對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)或搜索方法應(yīng)用第二(或另一)加密算法之前或之后,完 成字符的標(biāo)準(zhǔn)化或替換。
[0073] 數(shù)組元素可以例如包含多于一個(gè)的字符或值諸如整個(gè)詞。
[0074] 對(duì)上面實(shí)施方式的特征的許多組合、修改或變化對(duì)于技術(shù)人員而言是明顯的,并 且旨在于形成本發(fā)明的一部分。涉及一個(gè)實(shí)施方式或示例的具體描述的任何特征通過(guò)進(jìn)行 適當(dāng)變化可以用于任何其他實(shí)施方式。
【權(quán)利要求】
1. 一種在數(shù)據(jù)庫(kù)中安全地存儲(chǔ)數(shù)據(jù)的方法,包括以下步驟: 接收待存儲(chǔ)的數(shù)據(jù); 將所述數(shù)據(jù)分成多個(gè)元素; 用加密函數(shù)對(duì)所述多個(gè)元素的每個(gè)元素進(jìn)行加密; 結(jié)合所述加密的元素以形成數(shù)據(jù)屬性;以及 在數(shù)據(jù)庫(kù)中存儲(chǔ)所述數(shù)據(jù)屬性。
2. 如權(quán)利要求1所述的方法,還包括在數(shù)據(jù)庫(kù)中存儲(chǔ)所述數(shù)據(jù)屬性之前從所述數(shù)據(jù)屬 性除去以下項(xiàng)的步驟: 所有數(shù)字字符; 所有非數(shù)字字符;或者 所有非字母數(shù)字字符。
3. 如權(quán)利要求2所述的方法,還包括用以下替換所述除去的字符的步驟: 字母字符;和/或 字母數(shù)字字符。
4. 如上述權(quán)利要求的任一項(xiàng)所述的方法,還包括在所述數(shù)據(jù)庫(kù)中存儲(chǔ)所述記錄之前將 第二加密函數(shù)應(yīng)用到所述記錄的步驟。
5. -種搜索具有加密數(shù)據(jù)屬性的數(shù)據(jù)庫(kù)的方法,包括以下步驟: 接收搜索項(xiàng); 用加密函數(shù)對(duì)所述搜索項(xiàng)進(jìn)行加密;以及 搜索數(shù)據(jù)庫(kù)尋找具有匹配于所述加密的搜索項(xiàng)的數(shù)據(jù)屬性的記錄。
6. 如權(quán)利要求5所述的方法,其中,對(duì)所述搜索項(xiàng)進(jìn)行加密還包括以下步驟: 將所述搜索項(xiàng)分成多個(gè)元素; 對(duì)所述多個(gè)元素的每個(gè)元素進(jìn)行加密;以及 結(jié)合所有所述加密的元素以形成所述加密的搜索項(xiàng)。
7. 如權(quán)利要求5或6所述的方法,還包括在搜索所述數(shù)據(jù)庫(kù)之前從所述加密的搜索項(xiàng) 除去以下項(xiàng)的步驟: 所有數(shù)字字符; 所有非數(shù)字字符;或者 所有非字母數(shù)字字符。
8. 如權(quán)利要求7所述的方法,還包括用以下替換所述除去的字符的步驟: 字母字符;和/或 字母數(shù)字字符。
9. 如權(quán)利要求5至8的任一項(xiàng)所述的方法,還包括在搜索所述數(shù)據(jù)庫(kù)之前將第二加密 函數(shù)應(yīng)用到所述搜索項(xiàng)的步驟。
10. 如權(quán)利要求5至9的任一項(xiàng)所述的方法,其中,通過(guò)SQL查詢來(lái)執(zhí)行所述搜索。
11. 如權(quán)利要求5至10的任一項(xiàng)所述的方法,還包括檢索具有匹配于所述加密的搜索 項(xiàng)的數(shù)據(jù)屬性的所述記錄的步驟。
12. 如權(quán)利要求11所述的方法,還包括對(duì)所述檢索的記錄進(jìn)行解密的步驟。
13. -種數(shù)據(jù)庫(kù),其包括根據(jù)權(quán)利要求1至4的任一項(xiàng)所述的方法存儲(chǔ)的數(shù)據(jù)庫(kù)記錄。
14. 一種計(jì)算機(jī)程序,其包括程序指令,當(dāng)在計(jì)算機(jī)上執(zhí)行所述程序指令時(shí),所述程序 指令使計(jì)算機(jī)執(zhí)行如權(quán)利要求1至12的任一項(xiàng)所述的方法。
15. -種計(jì)算機(jī)可讀介質(zhì),其攜帶如權(quán)利要求14所述的計(jì)算機(jī)程序。
16. -種計(jì)算機(jī),其被編程為執(zhí)行如權(quán)利要求1至12的任一項(xiàng)所述的方法。
17. -種系統(tǒng),其被配置成執(zhí)行如權(quán)利要求1至12的任一項(xiàng)所述的方法。
18. -種用于安全地存儲(chǔ)數(shù)據(jù)的系統(tǒng),包括: 數(shù)據(jù)庫(kù);以及 邏輯,所述邏輯被配置成: 接收待存儲(chǔ)的數(shù)據(jù); 將所述數(shù)據(jù)分成多個(gè)元素; 用加密函數(shù)對(duì)所述多個(gè)元素的每個(gè)元素進(jìn)行加密;以及 結(jié)合所述加密的元素以形成數(shù)據(jù)屬性;以及 在數(shù)據(jù)庫(kù)中存儲(chǔ)所述數(shù)據(jù)屬性。
19. 一種用于搜索具有加密的數(shù)據(jù)屬性的數(shù)據(jù)庫(kù)的系統(tǒng),包括: 數(shù)據(jù)庫(kù);以及 邏輯,所述邏輯被配置成: 接收搜索項(xiàng); 用加密函數(shù)對(duì)所述搜索項(xiàng)進(jìn)行加密;以及 搜索所述數(shù)據(jù)庫(kù)以尋找具有匹配于所述加密的搜索項(xiàng)的數(shù)據(jù)屬性的記錄。
【文檔編號(hào)】G06F21/62GK104106075SQ201280067738
【公開(kāi)日】2014年10月15日 申請(qǐng)日期:2012年11月23日 優(yōu)先權(quán)日:2011年11月24日
【發(fā)明者】西蒙·伊恩·貝恩 申請(qǐng)人:商業(yè)合伙有限公司