CN107209787A - 提高专用加密数据的搜索能力 - Google Patents

提高专用加密数据的搜索能力 Download PDF

Info

Publication number
CN107209787A
CN107209787A CN201680009675.XA CN201680009675A CN107209787A CN 107209787 A CN107209787 A CN 107209787A CN 201680009675 A CN201680009675 A CN 201680009675A CN 107209787 A CN107209787 A CN 107209787A
Authority
CN
China
Prior art keywords
search
data
encryption
row
decryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680009675.XA
Other languages
English (en)
Other versions
CN107209787B (zh
Inventor
A·康韦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Visa International Service Association
Original Assignee
Visa International Service Association
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Visa International Service Association filed Critical Visa International Service Association
Priority to CN202210054171.7A priority Critical patent/CN114398427A/zh
Publication of CN107209787A publication Critical patent/CN107209787A/zh
Application granted granted Critical
Publication of CN107209787B publication Critical patent/CN107209787B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2468Fuzzy queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

提供技术以允许在数据库内完全搜索加密数据。在一些实施方案中,可搜索数据可以以一定的方式分成数据库中的不同的可搜索表,使得加密数据被存储为明文,但是没有到源数据库中的其他数据的可用链接。在一些实施方案中,对特定用户数据执行查询可以导致加密标识符的检索,所述加密标识符然后可以经由加密模块来解密。基于解密标识符的第二搜索可以从源表产生一组相关的搜索结果。

Description

提高专用加密数据的搜索能力
相关申请的交叉引用
本申请是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的每列加密数据的单独可搜索表)。
如图所示,可搜索表中的每个MID 122和132可以与源表中的MID 111相关。然而,可搜索表的MID可以被加密,使得MID不可容易地链接到相应的源数据。在一些实施方案中,MID 122和/或MID 132可以是MID 111的加密版本。使用解密引擎,系统可以获得检索的MID的解密版本,然后使用MID的解密版本来搜索源表110以获得加密的信息数据,例如字段112和113。然后可以对加密的信息数据进行解密。
在至少一些实施方案中,数据库系统100提供个人可标识信息的分离,其中一种类型的加密数据被存储在可搜索表中,使得个人可标识信息不与其他加密数据直接相关联。例如,电话号码123-456-7890可以以表搜索电话号码130的电话号码列中的明文存储,以及电话号码明文数据可以是包括在该可搜索表中的明文加密数据的唯一列。类似地,加密数据的其他片段也可以作为单独的明文列存储在单独的可搜索表中(例如,没有任何其他列的加密数据),使得其对于欺诈者无价值,因为欺诈者不能将个人数据的一个片段连接到数据的其他片段。
可搜索表,例如搜索电子邮件表120,包含明文加密数据列,在这种情况下为电子邮件字段。在所示的示例中,在该电子邮件地址的旁边的可搜索表中的明文信息的唯一其他列可以是包括加密标识符的列。在加密的意义上,该标识符可能是不可读取的(例如,加密外键)。在所描绘的示例中,加密标识符可以是MID 122。在此表中查找特定电子邮件地址或电子邮件地址的一部分可以返回零个或多个加密MID的列表。所得的MID列表可以经受解密引擎以标识解密MID的列表。
在一些实施方案中,解密的MID列表可以在针对源表110的第二查询中使用,以便检索附加的相关加密数据。因此,一旦检索到加密外键,其可以通过解密引擎进行发送,以便获取明文形式的外键。一旦获得了外键,它可以随后用于在额外表(例如源表110)上执行查询,该表包含与被查询的搜索字符串相关的加密数据。在一些实施方案中,外键可以对应于MID 111(例如,记录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处,计算机数据库系统接收对所请求的字段值的查询。所请求的字段值可以包括要从其返回值的字段或列的指示。例如,查询可能包含短语“select last_name”,表示要为结果集中的任何记录返回姓氏字段中的值。查询还可以包括搜索字符串。该搜索字符串可以包括通配符以仅指定与所需数据匹配的部分所需字符串。例如,如果搜索电话号码,搜索字符串可以是123-456-*,其中*是通配符字符。
在一些实施方案中,查询可以指定要搜索的一个或多个字段或列。例如,查询可以包括语言“where phone_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来向用户呈现多个可搜索字段。用户可以将搜索字符串输入到所呈现的可搜索字段中的任何一个中。在该示例中,每个可搜索字段可以与可搜索表相关联。作为说明,用户可以将搜索字符串输入到标记为“First Name”的可搜索字段中,该可搜索字段可以与“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='John Smith'。在该示例中,可以基于搜索字符串'123-456*'来标识多个行,并且可以对多个行进行过滤以仅纳入那些也与等于“John Smith”的名称值相关联的行。
在框606处,一旦标识了其中数据要更新的适当行,可以使用适合该行和列的加密算法/加密密钥来加密新数据。在一些实施方案中,可以将新数据提供给加密引擎以进行加密。加密引擎可以是图2的示例性加密/解密引擎210。
在框608处,然后可以将源表中要替换的旧数据更新为新数据的加密版本。在一些实施方案中,对源表的更改可以发布到一个或多个可搜索表。例如,在检测到源表的列中的数据的改变之后,可以更新与该列相关联的可搜索表以纳入此改变。
在框610处,一旦在源表中更新数据,可以将更改发布到可搜索表。例如,数据库系统可以确定源表的哪些列已被更新。在该示例中,可以更新与这些列相关联的可搜索表以纳入新信息。在另一示例中,可以在周期性的基础上再生一个或多个可搜索表。在该示例中,可以生成可搜索表的新版本以替换旧版本,其中新版本包含更新的信息。
作为说明,考虑其中用户希望更新与记录个人相关联的电话号码的场景。在这种情况下,如果用户想将个人的电话号码从123-456-7890更改为987-654-3210,其中个人的姓名为John Smith,首先查询搜索电话号码表以查找电话号码123-456-7890,并且可以返回结果集。结果集可以包括链接到源表的一组加密外键。在从返回的该组加密密钥对外键进行解密后,可以查询源表。在上述示例中,可以通过查询从可搜索表返回的未加密的外键在源表中标识与电话号码123-456-7890相关联的行。然后将行中的信息与名称John Smith进行比较,以标识要更新的正确行。一旦标识了正确的行,电话号码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或整个计算机系统)之上或之内,并且可以出现在系统或网络内的不同计算机产品之上或之内。计算机系统可以包括监视器、打印机或用于向用户提供本文中提到的任何结果的其他适当显示器。
以上描述是示意性的不是限制性的。本领域技术人员在阅读本公开后,将明白本发明的许多变形。因此,本发明的范围应当不参照上文描述确定,而是应当参照所附权利要求连同其全部范围或等同物确定。
在不偏离本发明的范围下,任何实施方案的一个或多个特征可以与任何其他实施方案的一个或多个特征组合。
除非明确指示有相反的意思,“一个/种”、“该/所述”的叙述旨在表示“一个或多个”。
上文提到的所有专利、专利申请、公开和描述出于所有目的通过引用被并入本文中。不承认他们为现有技术。

Claims (20)

1.一种用于搜索数据库以获得数据的方法,其包括:
通过计算机数据库系统接收搜索字符串;
使用所述搜索字符串搜索所述计算机数据库系统的第一表以标识匹配字符串,其中所述第一表包括每个字段的加密外键;
获得与使用所述搜索字符串标识的所述匹配字符串对应的至少一个加密外键;
将所述至少一个加密外键发送到在所述计算机数据库系统的一个或多个处理器上执行的解密引擎;
从所述解密引擎接收与所述至少一个加密外键对应的至少一个解密外键;
使用所述至少一个解密外键来搜索所述计算机数据库系统的第二表以获得加密数据;
将所述加密数据发送到所述解密引擎以对所述加密数据进行解密;以及
从所述解密引擎接收由所述加密数据的解密产生的解密数据。
2.根据权利要求1所述的方法,其中所述解密引擎是硬件安全模块(HSM)。
3.根据权利要求1所述的方法,其中经由对所述加密数据的请求接收所述搜索字符串,并且所述搜索字符串包括通配符。
4.根据权利要求1所述的方法,其还包括:
使用所述外键搜索所述计算机数据库系统的所述第二表以获得明文数据;
将所述获得的明文数据附加到所述解密数据;以及
将所述附加的解密数据返回到从其中接收所述搜索字符串的请求者设备。
5.根据权利要求1所述的方法,其还包括:
接收用新数据更新所述解密数据的请求;
将所述新数据发送到加密引擎;
从所述加密引擎接收加密的新数据;以及
用所述加密的新数据替换所述加密数据。
6.根据权利要求1所述的方法,其还包括:
使用至少一个第二搜索字符串搜索所述计算机数据库系统的至少一个第二表以标识至少一个第二匹配字符串,其中所述第二表包括每个字段的第二加密外键;
获得与使用所述第二搜索字符串标识的所述第二匹配字符串对应的至少一个第二加密外键;
将所述至少一个第二加密外键发送到所述解密引擎;以及
从所述解密引擎接收与所述至少一个第二加密外键对应的至少一个第二解密外键,其中搜索所述计算机数据库系统的第二表包括标识加密数据,所述至少一个解密外键针对所述加密数据与所述至少一个第二解密外键匹配。
7.根据权利要求1所述的方法,其中所述计算机数据库系统的所述第一表包括第一加密外键列和第二明文数据列,其中使用所述搜索字符串搜索所述计算机数据库系统的所述第一表以标识所述匹配字符串包括针对与所述搜索字符串匹配的一个或多个值搜索所述明文数据列,并且其中所述至少一个加密外键包括针对与所述搜索字符串匹配的所述一个或多个值中的每一个的加密外键。
8.一种系统,其包括:
一个或多个处理器;以及
存储器,其包括指令,所述指令当由所述一个或多个处理器执行时使所述一个或多个处理器:
接收查询,所述查询包括源表的至少一个搜索列的指示和搜索字符串;
基于所述至少一个搜索列标识至少一个可搜索表;
在与所述搜索字符串相关联的所述至少一个可搜索表中标识一组加密标识符,所述一组加密标识符中的每一个与所述可搜索表中匹配所述搜索字符串的值相关联;
从所述一组加密标识符生成一组解密标识符;
至少部分地基于所述一组解密标识符来标识所述源表中的一组加密源数据;以及
通过对所述一组加密源数据中的每个所述加密源数据进行解密来生成一组解密源数据;以及
返回所述一组解密源数据。
9.根据权利要求8所述的系统,其中基于所述查询中指示的所述至少一个搜索列来从多个可搜索表标识所述至少一个可搜索表,并且其中所述多个可搜索表的每个可搜索表与不同的搜索列相关联。
10.根据权利要求8所述的系统,其中使用与所述至少一个可搜索表相关联的解密密钥对所述一组加密标识符进行解密
11.根据权利要求8所述的系统,其中所述查询被包括在包括新数据的更新请求中,并且其中所述指令还使所述一个或多个处理器:
更新所述一组解密源数据以包括所述新数据;
对所述一组更新源数据进行加密;以及
在所述源表中用所述一组更新的加密源数据替换所述一组加密源数据。
12.根据权利要求11所述的系统,其中所述指令还使所述一个或多个处理器更新所述一个或多个可搜索表以反映所述一组更新的加密源数据。
13.根据权利要求8所述的系统,其中所述查询包括所述源表的至少一个请求列的指示,并且其中所述一组加密源数据包括来自所述至少一个请求列的一个或多个值。
14.一种检索数据的方法,其包括:
接收与数据库列相关的搜索字符串,所述数据库列具有加密数据;
基于所述数据库列标识与所述搜索字符串相关的至少一个可搜索表,所述至少一个可搜索表包括与所述加密数据对应的明文数据列;
在所述至少一个可搜索表中标识与所述搜索字符串相关的至少一行;
从所述标识的至少一行中确定至少一个标识符;
在源表中标识与所述至少一个标识符相关的至少一行;以及
从所述源表中的所述至少一行检索字段值。
15.根据权利要求14所述的方法,其中所述搜索字符串被包括在更新请求中,所述更新请求包括要从所述至少一行写入所述字段值的新数据,并且所述方法还包括:
对所述新数据进行加密;
在所述源表中将所述字段值更新到所述加密的新数据;以及
将所述更新字段值发布到所述至少一个可搜索表。
16.根据权利要求14所述的方法,其中对所述加密数据进行解密以确定与所述搜索字符串相关的信息。
17.根据权利要求14所述的方法,其中所述源表包括明文标识符列和多个加密数据列。
18.根据权利要求17所述的方法,其中所述至少一个可搜索表包括加密标识符列和明文数据列,所述加密标识符列与所述明文标识符列对应。
19.根据权利要求18所述的方法,其中与所述搜索字符串相关的所述至少一行是包含所述明文数据列中的所述搜索字符串的行。
20.根据权利要求14所述的方法,其中基于与所述搜索字符串相关的列来标识与所述搜索字符串相关的所述至少一个可搜索表。
CN201680009675.XA 2015-02-11 2016-02-11 提高专用加密数据的搜索能力 Active CN107209787B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210054171.7A CN114398427A (zh) 2015-02-11 2016-02-11 提高专用加密数据的搜索能力

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562114976P 2015-02-11 2015-02-11
US62/114,976 2015-02-11
PCT/US2016/017551 WO2016130807A1 (en) 2015-02-11 2016-02-11 Increasing search ability of private, encrypted data

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210054171.7A Division CN114398427A (zh) 2015-02-11 2016-02-11 提高专用加密数据的搜索能力

Publications (2)

Publication Number Publication Date
CN107209787A true CN107209787A (zh) 2017-09-26
CN107209787B CN107209787B (zh) 2022-02-08

Family

ID=56566037

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680009675.XA Active CN107209787B (zh) 2015-02-11 2016-02-11 提高专用加密数据的搜索能力
CN202210054171.7A Pending CN114398427A (zh) 2015-02-11 2016-02-11 提高专用加密数据的搜索能力

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210054171.7A Pending CN114398427A (zh) 2015-02-11 2016-02-11 提高专用加密数据的搜索能力

Country Status (6)

Country Link
US (2) US10114955B2 (zh)
EP (1) EP3256967B1 (zh)
CN (2) CN107209787B (zh)
AU (1) AU2016219264A1 (zh)
SG (1) SG11201705704TA (zh)
WO (1) WO2016130807A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108737443A (zh) * 2018-06-14 2018-11-02 北京大学 一种基于密码算法的隐匿邮件地址方法
WO2024121629A1 (en) * 2022-12-09 2024-06-13 Lee Yuen Ping Systems and methods for programmable corporate policies and management intervention

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180210911A1 (en) * 2017-01-23 2018-07-26 Oliver Wendel Gamble Method and System for Interactive Notation, Text Data Storage and Management on a Mobile Device.
CN107209787B (zh) 2015-02-11 2022-02-08 维萨国际服务协会 提高专用加密数据的搜索能力
US10296757B2 (en) * 2016-07-29 2019-05-21 Sap Se Appended key ID for key identification during data encryption
GB2555569B (en) * 2016-10-03 2019-06-12 Haddad Elias Enhanced computer objects security
JP6737117B2 (ja) * 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
US11005650B2 (en) * 2016-10-19 2021-05-11 Stripe, Inc. Systems and methods for data management and the use of salts and keys in data encryption/decryption
US10515077B2 (en) * 2017-06-14 2019-12-24 Microsoft Technology Licensing, Llc Execution optimization of database statements involving encrypted data
US10956519B2 (en) 2017-06-29 2021-03-23 Cisco Technology, Inc. Fine-grained encrypted access to encrypted information
US10540356B2 (en) * 2017-10-25 2020-01-21 International Business Machines Corporation Transparent analytical query accelerator over encrypted data
US10698883B2 (en) 2017-10-25 2020-06-30 International Business Machines Corporation Data coherency between trusted DBMS and untrusted DBMS
US10528556B1 (en) 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
US10528557B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
WO2019183483A2 (en) * 2018-03-23 2019-09-26 Equifax Inc. Facilitating queries of encrypted sensitive data via encrypted variant data objects
US10942906B2 (en) * 2018-05-31 2021-03-09 Salesforce.Com, Inc. Detect duplicates with exact and fuzzy matching on encrypted match indexes
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
US11256675B2 (en) 2019-02-22 2022-02-22 Visa International Service Association Method and system for creating rapid searchable altered data in a database
US11379616B2 (en) * 2019-03-25 2022-07-05 Identiq Protocol Ltd. System and method for providing anonymous validation of a query among a plurality of nodes in a network
US11537724B2 (en) * 2019-03-26 2022-12-27 International Business Machines Corporation Generating data migration plan for in-place encryption of data
US11275849B2 (en) * 2019-08-02 2022-03-15 Visa International Service Association Crytography data management
CN111475543A (zh) * 2020-03-27 2020-07-31 深圳壹账通智能科技有限公司 一种模糊搜索方法、装置、计算机设备及存储介质
US11755767B2 (en) * 2020-09-02 2023-09-12 Auction.Com, Llc Systems and methods of multi-key encryption for multi-tenant database
US11809577B2 (en) 2020-09-07 2023-11-07 The Toronto-Dominion Bank Application of trained artificial intelligence processes to encrypted data within a distributed computing environment
US11687666B2 (en) 2021-01-12 2023-06-27 Visa International Service Association System, method, and computer program product for conducting private set intersection (PSI) techniques with multiple parties using a data repository
US20220321325A1 (en) * 2021-04-02 2022-10-06 EpositBox, LLC Electronic deposit box for data protection and storage
US11893128B2 (en) 2021-06-14 2024-02-06 International Business Machines Corporation Data query against an encrypted database
US11934402B2 (en) 2021-08-06 2024-03-19 Bank Of America Corporation System and method for generating optimized data queries to improve hardware efficiency and utilization
CN114579602B (zh) * 2022-03-10 2024-07-26 杭州乒乓智能技术有限公司 基于加密数据的数据检索方法、装置、存储介质和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009036810A1 (en) * 2007-09-21 2009-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Systems and methods for partial matching searches of encrypted retained data
US20120226916A1 (en) * 2011-03-02 2012-09-06 Appature, Inc. Protected health care data marketing system and method
CN103117850A (zh) * 2011-11-16 2013-05-22 中国科学院华南植物园 一种基于随机序列数据库的密码系统
CN103927357A (zh) * 2014-04-15 2014-07-16 上海新炬网络技术有限公司 一种用于数据库的数据加密及检索方法

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9402935D0 (en) * 1994-02-16 1994-04-06 British Telecomm A method for controlling access to a database
US6119120A (en) * 1996-06-28 2000-09-12 Microsoft Corporation Computer implemented methods for constructing a compressed data structure from a data string and for using the data structure to find data patterns in the data string
US6938022B1 (en) * 1999-06-12 2005-08-30 Tara C. Singhal Method and apparatus for facilitating an anonymous information system and anonymous service transactions
US9607041B2 (en) * 1999-07-15 2017-03-28 Gula Consulting Limited Liability Company System and method for efficiently accessing internet resources
US7484092B2 (en) 2001-03-12 2009-01-27 Arcot Systems, Inc. Techniques for searching encrypted files
US7519835B2 (en) * 2004-05-20 2009-04-14 Safenet, Inc. Encrypted table indexes and searching encrypted tables
US7743069B2 (en) 2004-09-03 2010-06-22 Sybase, Inc. Database system providing SQL extensions for automated encryption and decryption of column data
US8560456B2 (en) * 2005-12-02 2013-10-15 Credigy Technologies, Inc. System and method for an anonymous exchange of private data
US8135948B2 (en) * 2006-01-27 2012-03-13 Imperva, Inc. Method and system for transparently encrypting sensitive information
US8577933B2 (en) * 2006-08-02 2013-11-05 Crossix Solutions Inc. Double blinded privacy-safe distributed data mining protocol
US8661263B2 (en) * 2006-09-29 2014-02-25 Protegrity Corporation Meta-complete data storage
US9355273B2 (en) * 2006-12-18 2016-05-31 Bank Of America, N.A., As Collateral Agent System and method for the protection and de-identification of health care data
US8639948B2 (en) 2006-12-28 2014-01-28 Teradata Us, Inc. Encrypted data management in database management systems
US8813460B2 (en) 2007-09-21 2014-08-26 Andalay Solar, Inc. Mounting system for solar panels
KR100903601B1 (ko) * 2007-10-24 2009-06-18 한국전자통신연구원 암호화된 수치 데이터 검색 시스템 및 그 방법
US8413261B2 (en) * 2008-05-30 2013-04-02 Red Hat, Inc. Sharing private data publicly and anonymously
US8140502B2 (en) * 2008-06-27 2012-03-20 Microsoft Corporation Preserving individual information privacy by providing anonymized customer data
US8200509B2 (en) * 2008-09-10 2012-06-12 Expanse Networks, Inc. Masked data record access
US8819451B2 (en) * 2009-05-28 2014-08-26 Microsoft Corporation Techniques for representing keywords in an encrypted search index to prevent histogram-based attacks
EP2348450B1 (en) * 2009-12-18 2013-11-06 CompuGroup Medical AG Database system, computer system, and computer-readable storage medium for decrypting a data record
US8380750B2 (en) * 2011-02-17 2013-02-19 International Business Machines Corporation Searching and displaying data objects residing in data management systems
WO2012127572A1 (ja) * 2011-03-18 2012-09-27 富士通株式会社 秘匿データ処理方法、プログラム及び装置
US9202078B2 (en) * 2011-05-27 2015-12-01 International Business Machines Corporation Data perturbation and anonymization using one way hash
US8930691B2 (en) * 2011-08-16 2015-01-06 Microsoft Corporation Dynamic symmetric searchable encryption
US8549653B2 (en) * 2011-09-14 2013-10-01 Morgan Stanley Secure wildcard searchable database
KR101371608B1 (ko) * 2011-10-10 2014-03-14 주식회사 알티베이스 Dbms 및 데이터베이스에서 암호화 방법
US20130117126A1 (en) * 2011-11-07 2013-05-09 Apriva, Llc System and method for secure management of customer data in a loyalty program
GB201120314D0 (en) * 2011-11-24 2012-01-04 Business Partners Ltd Secure database searching
US9043250B2 (en) * 2012-01-10 2015-05-26 Telcordia Technologies, Inc. Privacy-preserving aggregated data mining
US20130238646A1 (en) * 2012-03-06 2013-09-12 Evrichart, Inc. Partial-Match Searches of Encrypted Data Sets
US9338008B1 (en) * 2012-04-02 2016-05-10 Cloudera, Inc. System and method for secure release of secret information over a network
EP2856696B1 (en) 2012-05-24 2018-02-07 NEC Corporation Method for storing data in a relational database and relational database server
CN104704493B (zh) * 2012-08-15 2019-06-07 维萨国际服务协会 可搜索的经加密的数据
EP2731040B1 (en) * 2012-11-08 2017-04-19 CompuGroup Medical SE Computer system for storing and retrieval of encrypted data items, client computer, computer program product and computer-implemented method
US9760697B1 (en) * 2013-06-27 2017-09-12 Interacvault Inc. Secure interactive electronic vault with dynamic access controls
US9047480B2 (en) * 2013-08-01 2015-06-02 Bitglass, Inc. Secure application access system
US9852306B2 (en) * 2013-08-05 2017-12-26 International Business Machines Corporation Conjunctive search in encrypted data
US9646166B2 (en) * 2013-08-05 2017-05-09 International Business Machines Corporation Masking query data access pattern in encrypted data
US9280678B2 (en) * 2013-12-02 2016-03-08 Fortinet, Inc. Secure cloud storage distribution and aggregation
US9501661B2 (en) * 2014-06-10 2016-11-22 Salesforce.Com, Inc. Systems and methods for implementing an encrypted search index
US8978153B1 (en) * 2014-08-01 2015-03-10 Datalogix, Inc. Apparatus and method for data matching and anonymization
WO2016043700A1 (en) * 2014-09-15 2016-03-24 Demandware, Inc. Secure storage and access to sensitive data
CN107209787B (zh) 2015-02-11 2022-02-08 维萨国际服务协会 提高专用加密数据的搜索能力

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009036810A1 (en) * 2007-09-21 2009-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Systems and methods for partial matching searches of encrypted retained data
US20120226916A1 (en) * 2011-03-02 2012-09-06 Appature, Inc. Protected health care data marketing system and method
CN103117850A (zh) * 2011-11-16 2013-05-22 中国科学院华南植物园 一种基于随机序列数据库的密码系统
CN103927357A (zh) * 2014-04-15 2014-07-16 上海新炬网络技术有限公司 一种用于数据库的数据加密及检索方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱广华 主编: "《Access 2010数据库应用技术》", 30 July 2014 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108737443A (zh) * 2018-06-14 2018-11-02 北京大学 一种基于密码算法的隐匿邮件地址方法
CN108737443B (zh) * 2018-06-14 2020-06-02 北京大学 一种基于密码算法的隐匿邮件地址方法
WO2024121629A1 (en) * 2022-12-09 2024-06-13 Lee Yuen Ping Systems and methods for programmable corporate policies and management intervention

Also Published As

Publication number Publication date
CN107209787B (zh) 2022-02-08
WO2016130807A1 (en) 2016-08-18
US20160232362A1 (en) 2016-08-11
US20200134199A1 (en) 2020-04-30
US10114955B2 (en) 2018-10-30
EP3256967A1 (en) 2017-12-20
EP3256967B1 (en) 2023-09-27
AU2016219264A1 (en) 2017-07-27
SG11201705704TA (en) 2017-09-28
US10860725B2 (en) 2020-12-08
CN114398427A (zh) 2022-04-26
EP3256967A4 (en) 2018-07-11

Similar Documents

Publication Publication Date Title
CN107209787A (zh) 提高专用加密数据的搜索能力
AU2019239311B2 (en) Facilitating queries of encrypted sensitive data via encrypted variant data objects
CN104680076B (zh) 用于使受保护健康信息匿名化和聚集的系统
US11983298B2 (en) Computer system and method of operating same for handling anonymous data
US20170277773A1 (en) Systems and methods for secure storage of user information in a user profile
US20150026462A1 (en) Method and system for access-controlled decryption in big data stores
US20170277775A1 (en) Systems and methods for secure storage of user information in a user profile
JP2019521537A (ja) ユーザプロファイル内にユーザ情報を安全に格納するシステムおよび方法
CN101002417A (zh) 不标识敏感信息及相关记录的系统及方法
US20240005039A1 (en) Facilitating entity resolution, keying, and search match without transmitting personally identifiable information in the clear
US20230306131A1 (en) Systems and methods for tracking propagation of sensitive data
CN114579998A (zh) 一种区块链辅助的医疗大数据搜索机制与隐私保护方法
JP7408277B2 (ja) データ管理システム
US11886414B2 (en) One-way hashing methodology for database records
JP2006189925A (ja) 個人情報管理システム、個人情報管理プログラムおよび個人情報保護方法
Gabel et al. Privacy patterns for pseudonymity
WO2018232021A2 (en) Systems and methods for secure storage of user information in a user profile
JP2020086903A (ja) データ管理システムおよびデータ管理方法
US20230161907A1 (en) Method and system for unifying de-identified data from mulitple sources
CN118551122A (zh) 一种数据隐匿查询方法、装置、电子设备和存储介质
Padmavathi et al. Secure Crime Investigation Data with AWS Service
CN116484409A (zh) 一种基于知识图谱的联盟链区块链管理系统
WO2022238948A1 (en) Method and system for transforming personally identifiable information
Christen et al. Privacy Aspects of Data Matching
Petersen et al. Privacy Preserving Record Linkage (PPRL) Strategy and Recommendations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant