《安全的数据库搜索.pdf》由会员分享,可在线阅读,更多相关《安全的数据库搜索.pdf(11页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104106075A43申请公布日20141015CN104106075A21申请号201280067738922申请日201211231120314820111124GBG06F21/6220060171申请人商业合伙有限公司地址英国伦敦72发明人西蒙伊恩贝恩74专利代理机构北京集佳知识产权代理有限公司11227代理人王萍尹莹莹54发明名称安全的数据库搜索57摘要用于在数据库中安全地存储数据的方法和系统,包括接收待存储的数据;将数据分成多个元素;用加密函数对多个元素的每个元素进行加密;结合加密的元素以形成数据属性;在数据库中存储数据属性。用于搜索具有加密的数据属性的数据库的。
2、方法和系统,包括接收搜索项;用加密函数对搜索项进行加密;搜索数据库以寻找具有匹配于加密的搜索项的数据属性的记录。30优先权数据85PCT国际申请进入国家阶段日2014072286PCT国际申请的申请数据PCT/GB2012/0008582012112387PCT国际申请的公布数据WO2013/076447EN2013053051INTCL权利要求书2页说明书5页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书5页附图3页10申请公布号CN104106075ACN104106075A1/2页21一种在数据库中安全地存储数据的方法,包括以下步骤接收待存储的数据;将所述数。
3、据分成多个元素;用加密函数对所述多个元素的每个元素进行加密;结合所述加密的元素以形成数据属性;以及在数据库中存储所述数据属性。2如权利要求1所述的方法,还包括在数据库中存储所述数据属性之前从所述数据属性除去以下项的步骤所有数字字符;所有非数字字符;或者所有非字母数字字符。3如权利要求2所述的方法,还包括用以下替换所述除去的字符的步骤字母字符;和/或字母数字字符。4如上述权利要求的任一项所述的方法,还包括在所述数据库中存储所述记录之前将第二加密函数应用到所述记录的步骤。5一种搜索具有加密数据属性的数据库的方法,包括以下步骤接收搜索项;用加密函数对所述搜索项进行加密;以及搜索数据库寻找具有匹配于所。
4、述加密的搜索项的数据属性的记录。6如权利要求5所述的方法,其中,对所述搜索项进行加密还包括以下步骤将所述搜索项分成多个元素;对所述多个元素的每个元素进行加密;以及结合所有所述加密的元素以形成所述加密的搜索项。7如权利要求5或6所述的方法,还包括在搜索所述数据库之前从所述加密的搜索项除去以下项的步骤所有数字字符;所有非数字字符;或者所有非字母数字字符。8如权利要求7所述的方法,还包括用以下替换所述除去的字符的步骤字母字符;和/或字母数字字符。9如权利要求5至8的任一项所述的方法,还包括在搜索所述数据库之前将第二加密函数应用到所述搜索项的步骤。10如权利要求5至9的任一项所述的方法,其中,通过SQ。
5、L查询来执行所述搜索。11如权利要求5至10的任一项所述的方法,还包括检索具有匹配于所述加密的搜索项的数据属性的所述记录的步骤。12如权利要求11所述的方法,还包括对所述检索的记录进行解密的步骤。13一种数据库,其包括根据权利要求1至4的任一项所述的方法存储的数据库记录。权利要求书CN104106075A2/2页314一种计算机程序,其包括程序指令,当在计算机上执行所述程序指令时,所述程序指令使计算机执行如权利要求1至12的任一项所述的方法。15一种计算机可读介质,其携带如权利要求14所述的计算机程序。16一种计算机,其被编程为执行如权利要求1至12的任一项所述的方法。17一种系统,其被配置成。
6、执行如权利要求1至12的任一项所述的方法。18一种用于安全地存储数据的系统,包括数据库;以及逻辑,所述逻辑被配置成接收待存储的数据;将所述数据分成多个元素;用加密函数对所述多个元素的每个元素进行加密;以及结合所述加密的元素以形成数据属性;以及在数据库中存储所述数据属性。19一种用于搜索具有加密的数据属性的数据库的系统,包括数据库;以及逻辑,所述逻辑被配置成接收搜索项;用加密函数对所述搜索项进行加密;以及搜索所述数据库以寻找具有匹配于所述加密的搜索项的数据属性的记录。权利要求书CN104106075A1/5页4安全的数据库搜索技术领域0001本发明涉及保护数据库和在这种被保护的数据库中的搜索。背。
7、景技术0002数据库和其他数字记录存储可以由密码、防火墙和其他安全机制来保护。然而,一旦这样的安全措施被突破,那么数据可以被自由地访问。因此,加密可以用于保护数据库记录中的特定属性、字段或列。0003例如,在SQL插入程序以将记录添加到数据库期间,某些列可以被定义为加密的。在数据被添加之前,加密算法可以应用于去往这样的列的值。当这样的数据被检索时,在数据呈现给调用函数之前,相应的解密函数可以应用于加密属性或值。0004在这样的示例中,用户可以用诸如以下SQL语句将记录放入数据集0005INSERTINTODATASETCREDITCARDNUMBER,CARDTYPE,EXPIRYDATE,E。
8、MAILADDRESS,POSTALADDRESSVALUES1234432112344321,VISA,000000,SOMEONESOMEWHERECOM,1THESTREET,POSTALTOWN,SOMEWHERE插入INTO数据集信用卡编号,卡类型,有效期,邮箱地址,邮寄地址值1234432112344321,VISA,000000,SOMEONESOMEWHERECOM,1街道,通邮市镇,某地0006数据库可以被配置成对字段CREDITCARDNUMBER和EXPIRYDATE进行加密。当上面的语句由数据库管理系统处理时,值1234432112344321和000000在被存储之前。
9、将自动地被加密。0007由于不能使搜索结果即SELECT查询中的WHERE子句匹配加密的字段、列或属性,记录中的至少一些字段必须是纯文本的以方便检索。因此,经常是某一商业数据形式的至少一些数据即非主要关键数据必须以纯文本存储。0008这种妥协允许搜索和检索,但是会降低数据库的整体安全性。对数据库的未授权访问会导致访问一些纯文本信息。入侵者可以使用该未加密的信息来确定最有价值的加密记录,并且将任何实质性攻击集中在这种更高价值的记录上。换句话说,当对整个数据库进行解密可能是不切实际或不可能的时候,识别能在合理时限内解密的高价值记录的小子集相对来说没那么重要。0009如果数据库中所有的列被加密,则这。
10、样的集中攻击将更难以进行,但是这将阻碍数据的合法搜索和检索。0010因此,需要有克服这些问题的系统和方法。发明内容0011在此背景下,根据第一方面,提供一种在数据库中安全地存储数据的方法,包括以下步骤0012接收待存储的数据;0013将数据分成多个元素;说明书CN104106075A2/5页50014用加密函数对多个元素的每个元素进行加密;以及0015结合加密的元素以形成数据属性;以及0016在数据库中存储数据属性。这提供了一种安全地存储数据的方法,同时保留了搜索加密的列、数据属性或字段的能力。元素可以是数组元素或其他数据类型。可以在执行其他步骤之后进行存储步骤。每个元素可以包含一个或更多个字。
11、符或单元。0017可选择地,该方法还可以包括在数据库中存储数据属性之前从数据属性除去以下项的步骤0018所有数字字符;0019所有非数字字符;或者0020所有非字母数字字符。这提供了改进可搜索性和性能的标准化水平。标准化步骤诸如替换字符类型可以在数据被存储之前进行。0021可选择地,该方法还可以包括用以下替换除去的字符的步骤0022字母字符;和/或0023字母数字字符。这改进了字段中数据类型的分布且有助于性能。值或字符的除去和/或替换可以在数据被分开时或在数据被结合之后进行。例如,可以根据方案选择替换字符。0024可选择地,该方法还可以包括在数据库中存储记录之前将第二加密函数应用到记录的步骤。。
12、这通过降低发动基于频率或统计的加密攻击以及隐藏可能出现的任何模式诸如由替换步骤或程序引起的模式的能力来改进了安全性。加密函数或算法可以与应用于数组元素的加密函数或算法相同或不同。密钥也可以是不同的。可以在数据元素被结合之前但在字符的任何替换或其他标准化步骤之前或之后应用第二加密函数或算法。该第二加密函数因此可以以与第一加密函数类似的方式应用于单独的字符或元素。0025根据另一方面,提供了一种根据任一所述方法填充的数据库。0026根据第二方面,提供了一种搜索具有加密数据属性的数据库的方法,该方法包括以下步骤0027接收搜索项;0028用加密函数对搜索项进行加密;以及0029搜索数据库寻找具有匹配。
13、于加密搜索项的数据属性的记录。该方法允许数据库在加密字段、列或属性上被搜索。因此,数据库可以被搜索以寻找匹配或部分匹配例如,使用SQLLIKE函数而不降低安全性。例如,第一方面可以与第二方面结合作为可以合并入系统或分布式网络的另一结合的方法。0030可选择地,对搜索项进行加密还可以包括以下步骤0031将搜索项分成多个元素;0032对多个元素的每个元素进行加密;以及0033结合所有加密的元素以形成加密的搜索项。换句话说,相同或类似的步骤可应用于搜索项或值,如同在存储于数据库中之前应用于数据一样。0034可选择地,该方法还可以包括在搜索数据库之前从加密的搜索项除去以下项的步骤0035所有数字字符;。
14、说明书CN104106075A3/5页60036所有非数字字符;或者0037所有非字母数字字符。这是用于改进数据检索或存储性能的标准化程序。0038可选择地,该方法还可以包括用以下替换除去的字符的步骤0039字母字符;和/或0040字母数字字符。0041可选择地,该方法还可以包括在搜索数据库之前将第二加密函数应用到搜索项的步骤。该函数可以与初始函数相同或不同,并且具有不同的密钥。0042优选地,可以通过SQL查询来执行搜索。这可以是SELECT语句。可以使用其他数据库访问语言或接口。0043优选地,该方法还可以包括检索具有匹配于加密搜索项的数据属性的记录的步骤。0044优选地,该方法还可以包括。
15、对检索的记录进行解密的步骤。0045根据第三方面,提供一种被配置成执行上述一种方法或多种方法的系统。该系统可以例如是服务器、数据库服务器或其他计算机系统。0046该系统还可以包括被配置成安全地存储且搜索存储的数据的逻辑组合例如,处理器或服务器。0047该方法可以作为包括程序指令的应用或计算机程序被执行,当在计算机上执行程序指令时,其使计算机进行上述方法步骤。计算机可以包括台式机、笔记本电脑、服务器、嵌入式计算机、集成电路、嵌入在其他装置或设备中的芯片或其他处理器。0048计算机程序可以作为计算机可读介质或信号被存储。0049应当注意的是,上述任何特征可以与本发明的任何特定方面或实施方式一起使用。
16、。附图说明0050本发明可以以多种方式付诸于实践,现在将参照附图仅作为示例来描述实施方式,其中0051图1示出了仅作为示例给出的用于在数据库中存储数据的方法的流程图;0052图2示出了用于搜索图1的数据库的方法的流程图;以及0053图3示出了仅作为示例给出的用于实现图1和图2的方法的系统的示意图。0054应当注意的是,为简单起见,所示出的图不一定按比例绘制。具体实施方式0055从上面背景部分中描述的相同插入语句开始,即0056INSERTINTODATASETCREDITCARDNUMBER,CARDTYPE,EXPIRYDATE,EMAILADDRESS,POSTALADDRESSVALUE。
17、S1234432112344321,VISA,000000,SOMEONESOMEWHERECOM,1THESTREET,POSTALTOWN,SOMEWHERE0057可以对任何值或所有值进行加密。例如,可以以这种方式保护CREDITCARDNUMBER和EXPIRYDATE。0058这可以通过将每个值或数据属性分成单独的字符或其他元素并且随后将这说明书CN104106075A4/5页7些字符的每个字符放入数组的字段中来实现。然后可以使用行业标准加密算法,例如DES、AES、TWOSH和SERPENT来分别对该数组中的每个元素进行加密。0059一旦数组中的每个元素被加密,则所有的数组元素可以。
18、被重新结合以在INSERT语句中形成更新后的或新的值,从而在数据库中存储加密的数据。然而,在完成这一步之前,可以采取另一步骤以改进安全性和/或可搜索性。例如,可以通过除去任何数字字符来使加密数据标准化,且其可以被替换为字母字符和数字字符的混合,还可以优选地用与每个数组元素上使用的加密密钥不同的加密密钥来对所得到的数据属性或值进行进一步加密。这可以进一步掩藏任何潜在的模式且改进安全性。可以使用其他类型的标准化或加密。0060可以更新或替换和执行SQL语句以在数据库中存储数据。在该程序之后,不需要在DBMS层指明特定列被加密,因为这在生成INSERT或UPDATE语句时已经被执行了。0061在数据。
19、库中的搜索可以采取SQL语句的形式诸如SELECT语句。例如,这样的语句可以是0062SELECTFROMINFORMATIONWHERECREDITCARDNUMBERLIKE234ANDEMAILADDRESSSOMEONESOMEWHERECOM选择从信息其中,信用卡编号如234且邮箱地址SOMEONESOMEWHERECOM0063这个特定示例的选择语句试图在CREDITCARDNUMBER字段中找到针对值的匹配。根据先前描述的程序,因为该字段或属性已经被加密,所以使用该SELECT语句将找不到有效数据。可以对选择语句作以下改变以使得能够进行检索0064针对加密字段或属性搜索的值使与用。
20、于加密数据库中的原始数据的程序相似的程序应用于其自身。这可以是简单的加密函数或如上所述,将值分成单独的字符,并且将这些字符的每个字符放入数组元素中。然后,每个数组元素可以以在原始数据上使用的相同的加密函数加密。在原始数据被标准化的情况下,这可以再次通过除去任何数字字符或其他字符子集、然后例如通过用字母字符和数字字符的混合替换除去的任何数字字符或其他字符子集来被重复执行。数组元素可以被合并或结合以形成单个值或字符串。另一或第二加密函数可以优选地以不同的加密密钥应用于值。所得到的值或字符串随后可以被重新引入到数据库中执行的选择语句中。换句话说,相似程序被应用于首先用来加密数据的搜索项。因此,现在可。
21、以进行匹配。将值分成单独的数组元素在应用函数诸如加密函数之前便于基于单独字符的搜索或部分字符串搜索。0065图1示出了用于在数据库中存储数据的方法1000的流程图。分析数据1020以确定哪个特定数据成分将被添加到数据库1060中的加密的列。一些列或所有列可以被加密。针对需要加密的特定数据属性,步骤1025将数据分成元素的数组,其中,每个元素是单独的字符。在步骤1030中,根据第一加密算法或函数来加密每个数组元素。在步骤1035中,除去由该加密函数产生的任何数字字符。在步骤1040中,这些除去的字符被替换为可以是字母字符、数字字符或两者混合的替换字符。0066在步骤1045中,另一加密函数应用于。
22、数组元素,数组元素随后在步骤1050中结合在一起以形成单个字符串或值或由数据库期望的特定数据类型。在步骤1055中,特定SQL程序被制定成将数据添加到数据库1060或更新现有数据。该UPDATE或INSERT语句可以包括所有加密字段或一些加密字段和一些纯文本字段的任何混合。INSERT或UPDATESQL语句的执行导致在具有包含从方法1000得到的值的加密列的数据库1060中添加或更改数说明书CN104106075A5/5页8据。未加密的列可以使数据以纯文本添加。0067图2示出了用于搜索或查询填充有根据方法1000的数据的数据库1060的方法2000的流程图。例如,可以从各种源,诸如外部系统。
23、、内部系统、网络电话或网上查询来接收搜索项。在步骤2010中,通过该方法接收这些搜索项。针对与加密的列或数据属性相对应的搜索项,则可以进行后面的步骤。在步骤2030中,这样的搜索项被转换成数组。换句话说,搜索项中的每个值被分成独立的字符或单个位的整数,并且每个被放入数组元素。在步骤2040中,使用第一加密算法或函数来加密每个数组元素。在步骤2050中,除去从加密产生的任何数字字符。可替选地,可以除去其他字符集。在步骤2060中,任何除去的字符被替换为替换字符,诸如数字、字母或两者的混合。在步骤2065中,另一、第二加密算法或函数应用于数组元素,在步骤2070中,数组元素结合在一起以形成合成的字。
24、符串或值或其他数据类型。该字符串或值被制定在WHERE子句中作为SELECT语句的部分,SELECT语句可以包括目标在于数据库中特定数据属性或列的其他加密搜索项和/或纯文本搜索项。在步骤2080中,在数据库中执行制定的查询以搜寻匹配。在步骤2090中,任何结果以原始格式被返回到原始调用程序。因此,通过使用原先应用的函数或加密函数的反转,可以将返回的数据解密成纯文本。0068以这种方式,可以处理和执行搜索项,以从完全或部分加密的数据库返回结果,并且也可以在不首先对大量数据或整个列进行解密的情况下搜索加密的或受保护的列。针对数据库中任何或所有加密的字段或列,可以运行标准类型的SQL查询。因此,这样。
25、的查询不受限于例如未加密字段或主要关键词诸如客户ID。任何商业数据可以通过加密被充分保护而不损害搜索的便利性。可以作为搜索接口和加密数据库之间的附加的层或函数来并入方法2000。0069图3示出了用于实现参照图1和图2所描述的方法的系统300的示意图。具有合适操作系统诸如ORACLESUNSOLARIS、UNIX、WINDOWS或LINUX的服务器310运行数据库管理系统诸如ORACLERDBMS、MSSQL服务器或INGRES。可以直接地添加数据或从终端或客户端320通过网络330添加数据。这些客户端、终端或其他数据馈送端320还可以执行查询以返回存储在数据库1060中的数据。数据源和查询发。
26、起者还可以是独立的装置。外部系统也可以通过网络330或通过其它通信装置访问数据库1060和在数据库1060上运行查询。网络330可以例如是内部网络、以太网系统或英特网。0070正如技术人员将理解的,在不脱离由所附权利要求限定的本发明范围的情况下,可对上面实施方式的细节进行变化。0071例如,所描述的实施方式包括具体数据库功能诸如SQL语句和命令。然而,方法和系统可以除SQL或RDBMS服务器或计算机之外使用不同的数据存储设备、诸如基于云和文件的存储系统。0072可以在针对数据库存储或搜索方法应用第二或另一加密算法之前或之后,完成字符的标准化或替换。0073数组元素可以例如包含多于一个的字符或值诸如整个词。0074对上面实施方式的特征的许多组合、修改或变化对于技术人员而言是明显的,并且旨在于形成本发明的一部分。涉及一个实施方式或示例的具体描述的任何特征通过进行适当变化可以用于任何其他实施方式。说明书CN104106075A1/3页9图1说明书附图CN104106075A2/3页10图2说明书附图CN104106075A103/3页11图3说明书附图CN104106075A11。