CN115576987A - 加密数据查询方法、装置、存储介质、处理器及终端设备 - Google Patents
加密数据查询方法、装置、存储介质、处理器及终端设备 Download PDFInfo
- Publication number
- CN115576987A CN115576987A CN202211122090.2A CN202211122090A CN115576987A CN 115576987 A CN115576987 A CN 115576987A CN 202211122090 A CN202211122090 A CN 202211122090A CN 115576987 A CN115576987 A CN 115576987A
- Authority
- CN
- China
- Prior art keywords
- preset
- ciphertext
- query
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了一种加密数据查询方法、装置、存储介质、处理器及终端设备,属于加密数据处理领域,加密数据查询方法包括:获取待查询密文以及第一目标节点中存储的第一预设密文;在可信执行环境中对待查询密文以及第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,得到第一查询结果;输出第一查询结果。通过本发明,解决了相关技术中在对采用多节点形式的数据结构存储的加密数据进行查询时的查询效率较低的技术问题。
Description
技术领域
本发明涉及加密数据处理领域,尤其涉及一种加密数据查询方法、装置、存储介质、处理器及终端设备。
背景技术
B-Tree(多路搜索树)是一种常见的数据结构,这个数据结构一般用于数据库的索引,综合效率较高。B+Tree是B-Tree的变种,与B-Tree相比硬盘读写次数更少,查询效率更稳定,且更便于范围查询,在数据库索引领域有广泛应用。
采用B-Tree、B+Tree或其他类似的数据结构对数据进行存储时,会生成若干节点,通过这些节点实现内容的存储,通过节点内数据的键值之间的排列关系以及节点间数据的键值之间的排列关系,可以方便数据的查找操作。采用类似B-Tree或B+Tree等多节点形式的数据结构对加密数据进行存储的情况下,当需要对加密数据进行操作时,需要先进行密文的查询操作。相关技术中,针对这种多节点形式的数据结构存储的加密数据进行查询时,针对每个节点内的每个数据,均需要切换至可信执行环境进行数据比较操作,因此需要频繁地调用可信执行环境。例如在对B-Tree或B+Tree的一个节点内的数据进行查询时,需要将该节点中的各个密文依次输入可信执行环境中进行解密,并与待查询密文比较,这带来了较大的可信执行环境调用开销,导致查询效率较低。
因此,相关技术中在对采用多节点形式的数据结构存储的加密数据进行查询时的查询效率较低。针对上述的问题,目前尚未提出有效的解决方案。
在背景技术部分中公开的以上信息只是用来加强对本文所描述技术的背景技术的理解。因此,背景技术中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在已知的现有技术。
发明内容
本发明实施例提供了一种加密数据查询方法、装置、存储介质、处理器及终端设备,以至少解决相关技术中在对采用多节点形式的数据结构存储的加密数据进行查询时的查询效率较低的技术问题。
根据本发明实施例的第一个方面,提供了一种加密数据查询方法,用于对采用预设数据结构存储的密文进行查询,预设数据结构采用键值对的形式存储密文,预设数据结构包括多个节点,属于同一个节点的多个键值按照大小顺序依次排列,至少两个节点的键值之间存在预设的大小关系,加密数据查询方法包括:获取待查询密文以及第一目标节点中存储的第一预设密文,第一目标节点为预设数据结构的任意一个节点;在可信执行环境中对待查询密文以及第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,得到第一查询结果;输出第一查询结果,第一查询结果至少包括结果标识信息和位置标识信息,结果标识信息表征是否在多个第一预设键值中查询到目标键值,位置标识信息用于指示目标键值所属的位置。
进一步地,在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,包括:确定多个第一预设键值中是否存在目标键值,得到结果标识信息;在多个第一预设键值中存在目标键值的情况下,根据目标键值与多个第一预设键值的大小关系,确定位置标识信息;在多个第一预设键值中不存在目标键值的情况下,根据第一大小关系以及第二大小关系,确定位置标识信息,第一大小关系为目标键值与多个第一预设键值的大小关系,第二大小关系为至少一个第一预设键值与其它的节点的至少一个键值之间的大小关系。
进一步地,在结果标识信息表征未在多个第一预设键值中查询到目标键值的情况下,加密数据查询方法还包括:根据位置标识信息,确定第二目标节点;获取第二目标节点中存储的第二预设密文;在可信执行环境中对第二预设密文进行解密处理,得到按大小顺序依次排列的多个第二预设键值;从多个第二预设键值中查询目标键值。
进一步地,在可信执行环境中对待查询密文或第一预设密文进行解密处理,包括:确定解密缓存中是否存储有待查询密文或第一预设密文对应的解密结果;在解密缓存中存储有解密结果的情况下,从解密缓存中获取解密结果。
进一步地,在可信执行环境中对待查询密文或第一预设密文进行解密处理,还包括:在解密缓存中未存储解密结果的情况下,采用预设解密逻辑对待查询密文或第一预设密文进行解密,得到解密结果;将解密结果存储至解密缓存。
进一步地,采用预设查询逻辑,从多个第一预设键值中查询目标键值,包括:获取目标查询函数的标识符;根据标识符,确定目标查询函数对应的指针;采用指针,调用目标查询函数,以从多个第一预设键值中查询目标键值。
进一步地,在可信执行环境可以访问主机内存的情况下,获取第一目标节点中存储的第一预设密文,包括:获取第一预设密文对应的内存地址;在可信执行环境无法访问主机内存的情况下,获取第一目标节点中存储的第一预设密文,包括:将第一预设密文拷贝至可信执行环境。
根据本发明实施例的第二个方面,还提供了一种加密数据查询装置,用于对采用预设数据结构存储的密文进行查询,预设数据结构采用键值对的形式存储密文,预设数据结构包括多个节点,属于同一个节点的多个键值按照大小顺序依次排列,至少两个节点的键值之间存在预设的大小关系,加密数据查询装置包括:第一获取单元,用于获取待查询密文以及第一目标节点中存储的第一预设密文,第一目标节点为预设数据结构的任意一个节点;第一解密单元,用于在可信执行环境中对待查询密文以及第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;第一查询单元,用于在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,得到第一查询结果;输出单元,用于输出第一查询结果,第一查询结果至少包括结果标识信息和位置标识信息,结果标识信息表征是否在多个第一预设键值中查询到目标键值,位置标识信息用于指示目标键值所属的位置。
进一步地,第一查询单元包括:第一查询模块,用于确定多个第一预设键值中是否存在目标键值,得到结果标识信息;第二查询模块,用于在多个第一预设键值中存在目标键值的情况下,根据目标键值与多个第一预设键值的大小关系,确定位置标识信息;第二查询模块还用于在多个第一预设键值中不存在目标键值的情况下,根据第一大小关系以及第二大小关系,确定位置标识信息,第一大小关系为目标键值与多个第一预设键值的大小关系,第二大小关系为至少一个第一预设键值与其它的节点的至少一个键值之间的大小关系;加密数据查询装置还包括:确定单元,用于在结果标识信息表征未在多个第一预设键值中查询到目标键值的情况下,根据位置标识信息,确定第二目标节点;第二获取单元,用于获取第二目标节点中存储的第二预设密文;第二解密单元,用于在可信执行环境中对第二预设密文进行解密处理,得到按大小顺序依次排列的多个第二预设键值;第二查询单元,用于从多个第二预设键值中查询目标键值;第一解密单元包括:第一确定模块,用于确定解密缓存中是否存储有待查询密文或第一预设密文对应的解密结果;第一获取模块,用于在解密缓存中存储有解密结果的情况下,从解密缓存中获取解密结果;第一解密单元还包括:解密模块,用于在解密缓存中未存储解密结果的情况下,采用预设解密逻辑对待查询密文或第一预设密文进行解密,得到解密结果;存储模块,用于将解密结果存储至解密缓存;第一查询单元包括:第二获取模块,用于获取目标查询函数的标识符;第二确定模块,用于根据标识符,确定目标查询函数对应的指针;第三查询模块,用于采用指针,调用目标查询函数,以从多个第一预设键值中查询目标键值;第一获取单元包括:第三获取模块,用于在可信执行环境可以访问主机内存的情况下,获取第一预设密文对应的内存地址;拷贝模块,用于在可信执行环境无法访问主机内存的情况下,将第一预设密文拷贝至可信执行环境。
根据本发明实施例的第三个方面,还提供了一种非易失性存储介质,其中,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行上述的加密数据查询方法。
根据本发明实施例的第四个方面,还提供了一种处理器,其中,处理器用于运行程序,其中,程序运行时执行上述的加密数据查询方法。
根据本发明实施例的第五个方面,还提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,其中,处理器执行上述的加密数据查询方法。
本发明实施例的加密数据查询方法,在获取到待查询密文以及第一目标节点中存储的第一预设密文后,会在可信执行环境中对两者进行解密处理。由于第一目标节点中存储的第一预设密文是按照预设数据结构采用键值对的形式存储,因此在可信执行环境中对待查询密文以及第一预设密文进行解密后,可以对应地获取到待查询的目标键值以及多个第一预设键值。目标键值即待查询密文所对应的明文的key值,待查询密文对应的明文数据为该key值所对应的value值,多个第一预设键值即第一目标节点中存储的多个第一预设密文所对应的若干明文的key值,相应的,多个第一预设密文对应的明文数据为多个value值,多个第一预设键值是按照大小顺序依次排列的(例如由小到大)。这样,根据预设查询逻辑对目标键值与多个第一预设键值进行比较,即可确定第一目标节点中是否存储有与待查询密文相同的内容,即得到结果标识信息;并可根据目标键值与多个第一预设键值之间的大小关系、节点的键值之间的预设大小关系,确定待查询密文在第一目标节点中的位置或其所在的其它节点的位置,即得到位置标识信息,方便后续实现与待查询密文相关的插入、删除、更新等操作。位置标识信息即可以是用来指示待查询密文在第一目标节点中的位置的信息,也可以是用来指示待查询密文所在的其它节点的信息。采用这种方式的加密数据查询方法,在对第一目标节点进行查询的过程中,会在可信执行环境中对待查询密文及第一预设密文进行解密,得到目标键值以及多个第一预设键值,并在可信执行环境中从多个第一预设键值中查询目标键值。因此,整个查询过程只需要调用一次可信执行环境,即可实现对第一目标节点内的数据查询,并返回查询结果。与相关技术中针对一个节点内的每个数据进行查询比较时均调用一次可信执行环境进行解密查询的方式相比,有效地减小了可信执行环境的调用次数,有利于节省可信执行环境切换过程所带来的开销,能够有效地提高类似B-Tree或B+Tree等采用多节点形式的数据结构存储的加密数据的查询效率,解决了相关技术中在对采用多节点形式的数据结构存储的加密数据进行查询时的查询效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的一种加密数据查询方法的流程示意图;
图2为本发明实施例提供的一种加密数据查询装置的示意图;
图3为本发明实施例提供的一种加密数据查询方法在实施时的部分示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于限定特定顺序。
图1是根据本发明实施例的加密数据查询方法,如图1所示,该方法用于对采用预设数据结构存储的密文进行查询,预设数据结构采用键值对的形式存储密文,预设数据结构包括多个节点,属于同一个节点的多个键值按照大小顺序依次排列,至少两个节点的键值之间存在预设的大小关系,本发明实施例的加密数据查询方法包括如下步骤:
步骤S102,获取待查询密文以及第一目标节点中存储的第一预设密文,第一目标节点为预设数据结构的任意一个节点;
步骤S104,在可信执行环境中对待查询密文以及第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;
步骤S106,在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,得到第一查询结果;
步骤S108,输出第一查询结果,第一查询结果至少包括结果标识信息和位置标识信息,结果标识信息表征是否在多个第一预设键值中查询到目标键值,位置标识信息用于指示目标键值所属的位置。
本发明实施例的加密数据查询方法,在获取到待查询密文以及第一目标节点中存储的第一预设密文(即第一目标节点内存储的密文数据)后,会在可信执行环境(即TrustedExecution Environment,简称TEE)中对两者进行解密处理。由于第一目标节点中存储的第一预设密文是按照预设数据结构采用键值对的形式存储,因此在可信执行环境中对待查询密文以及第一预设密文进行解密后,可以对应地获取到待查询的目标键值以及多个第一预设键值。目标键值为待查询密文中的数据对应的键值,即待查询密文所对应的明文的key值,待查询密文对应的明文数据为该key值所对应的value值;多个第一预设键值为第一目标节点中存储的多个数据对应的多个键值,即第一目标节点中存储的多个密文数据所对应的若干明文的key值,相应的,多个密文数据对应的明文数据为多个value值,多个第一预设键值是按照大小顺序依次排列的(例如由小到大)。这样,根据预设查询逻辑对目标键值与多个第一预设键值进行比较,即可确定第一目标节点中是否存储有与待查询密文相同的内容,即得到结果标识信息;并可根据目标键值与多个第一预设键值之间的大小关系、节点之间键值的预设的大小关系,确定待查询密文在第一目标节点中的位置或其所在的其它节点的位置,即得到位置标识信息,方便后续实现与待查询密文相关的插入、删除、更新等操作。位置标识信息即可以是用来指示待查询密文在第一目标节点中的位置的信息,也可以是用来指示待查询密文所在的其它节点的信息。采用这种方式的加密数据查询方法,在对第一目标节点进行查询的过程中,会在可信执行环境中对待查询密文及第一预设密文进行解密,得到目标键值以及多个第一预设键值,并在可信执行环境中从多个第一预设键值中查询目标键值。因此,整个查询过程只需要调用一次可信执行环境,即可实现对第一目标节点内的数据查询,并返回查询结果。与相关技术中针对一个节点内的每个数据进行查询比较时均调用一次可信执行环境进行解密查询的方式相比,有效地减小了可信执行环境的调用次数,有利于节省可信执行环境切换过程所带来的开销,能够有效地提高类似B-Tree或B+Tree等采用多节点形式的数据结构存储的加密数据的查询效率,解决了相关技术中在对采用多节点形式的数据结构存储的加密数据进行查询时的查询效率较低的技术问题。
上述的可信执行环境是一种具有运算和储存功能的、能提供安全性和完整性保护的独立处理环境。其基本思想是:在硬件中为敏感数据单独分配一块隔离的内存,所有敏感数据的计算均在这块内存中进行,并且除了经过授权的接口外,硬件中的其他部分不能访问这块隔离的内存中的信息,以此来实现敏感数据的隐私计算,保证数据的安全性。上述的至少两个节点的键值之间存在预设的大小关系,即预设数据结构的多个节点的键值之间存在确定的大小关系。上述的预设数据结构可以包括B-Tree或B+Tree等数据结构,但不限于这些数据结构,上述给出的预设数据结构的定义为:预设数据结构采用键值对的形式存储密文,预设数据结构包括多个节点,属于同一个节点的多个键值按照大小顺序依次排列,至少两个节点的键值之间存在预设的大小关系,只要满足这些条件的数据结构均可以认为是预设数据结构。
而且,采用上述方式的加密数据查询方法在避免可信执行环境频繁调用所导致的查询效率低下的基础上,仅将单个节点内的查询操作放到了可信执行环境中,而不是将所有的数据查询逻辑一起放入其中,无需在可信执行环境内执行加锁以及读写磁盘的系统调用,同时也具有足够小的可信计算基(即Trusted computing base,简称TCB,是指为实现计算机系统安全保护的所有安全保护机制的集合,机制可以硬件、固件和软件的形式出现),而TCB代表了一个安全的执行环境,其大小直接影响到TEE的安全性,越小的TCB需要信任和验证的部分越少,从而有利于减小对TEE的安全性影响。上述的节点即存储数据的对象,例如磁盘的一块区域,其可以是存储的加密数据,也可以仅存储加密数据对应的地址信息。
在本实施例中,在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,包括:确定多个第一预设键值中是否存在目标键值,得到结果标识信息;在多个第一预设键值中存在目标键值的情况下,根据目标键值与多个第一预设键值的大小关系,确定位置标识信息;在多个第一预设键值中不存在目标键值的情况下,根据第一大小关系以及第二大小关系,确定位置标识信息,第一大小关系为目标键值与多个第一预设键值的大小关系,第二大小关系为至少一个第一预设键值与其它的节点的至少一个键值之间的大小关系。
例如,在一个具体实施例中,待查询密文采用B-Tree或B+Tree的数据结构进行存储,这种数据结构在进行数据存储时,会生成大量的节点,这些节点由上至下包括根节点、中间节点以及叶子节点。相关技术中在对采用这种数据结构存储的密文进行查询时,针对每个节点进行查询时,需要将待查询密文与该节点内的各个数据对应的密文依次传入可信执行环境进行解密和比较,因此针对每个节点的查询均需要调用多次可信执行环境,这种将待查询密文和该节点中的各个密文频繁地输入可信执行环境中进行解密和比较的方式,带来了较大的可信执行环境调用开销,导致查询效率较低。而本发明的实施例在针对每个节点进行查询的过程中(以第一目标节点为例),通过将待查询密文和第一目标节点中存储的第一预设密文输入可信执行环境,在其中目标键值和多个第一预设键值,多个第一预设键值对应第一目标节点存储的若干密文数据,且多个第一预设键值是按照大小顺序依次排列的,通过在可信执行环境中对目标键值与多个第一预设键值进行比较,可以得到第一查询结果并对其进行输出,第一查询结果包括结果标识信息和位置标识信息,通过结果标识信息来表征是否在多个第一预设键值中查询到目标键值,通过位置标识信息来指示目标键值所属的位置,实现对待查询密文的查询操作。采用这种方式进行密文查询时,针对每个节点,只需要调用一次可信执行环境,有效地减小了可信执行环境调用开销,提高了查询效率。
采用预设查询逻辑从多个第一预设键值中查询目标键值的过程中,可以确定出多个第一预设键值中是否存在目标键值,从而确定结果标识信息。由于多个第一预设键值是按大小顺序依次排列的原因,通过比较目标键值与多个第一预设键值的大小关系,可以确定位置标识信息。例如,返回的第一查询结果,可以包括一个偏移量(位置标识信息)以及是否找到数据的标识(结果标识信息)。这个偏移量表示节点内最接近待查询密文的数据位置(找到数据的话,这个偏移量就是密文的位置,否则可以是比待查询密文小且预期最接近的数据位置),比如第一目标节点内包含数据2、4、6、8,数据的位置依次对应为0、1、2、3,待查询数据是5,根据二分查找会返回数据4的位置(也就是1)以及数据没命中标识;如果待查询数据是6的话,那就会直接返回数据6的位置(也就是2)以及数据命中的标识。
由于对第一目标节点进行查找后,不一定可以找到待查询密文。在本实施例中,在结果标识信息表征未在多个第一预设键值中查询到目标键值的情况下,加密数据查询方法还包括:根据位置标识信息,确定第二目标节点;获取第二目标节点中存储的第二预设密文;在可信执行环境中对第二预设密文进行解密处理,得到按大小顺序依次排列的多个第二预设键值;从多个第二预设键值中查询目标键值。
也就是说,在本实施例中,结果标识信息可以用来指示目标键值所属节点的位置,在采用上述方法对第一目标节点进行查询后,如果发现多个第一预设键值中没有目标键值,即第一目标节点中没有存储待查询密文。可根据目标键值与各个第一预设键值之间的大小关系来确定待查询密文所属的子节点(第二目标节点),在定位到第二目标节点之后,再次调用可信执行环境对第二目标节点执行查询即可进一步实现细粒度的查询操作。当然,这个过程可以逐层细化重复执行下去,直到在某一个节点中找到待查询密文,或者查询到叶子节点后仍没有查询到待查询密文,则可结束查询逻辑,从而方便地实现加密数据的查询。
以下,结合一个具体的实施例来对上述的加密数据查询方法进行说明:
例如,在采用预设数据结构对加密数据进行存储时,至少生成了A、B、C、D、E五个节点,A节点内存储的数据的键值为15和35,B节点内存储的数据的键值为6和10,C节点内存储的数据的键值为24和30,D节点内存储的数据的键值为42和53,E节点内存储的数据的键值为26和28。可以看出,不同的节点内的数据对应的键值具有确定的大小关系,例如,B节点内存储的数据的键值均小于A节点内键值的最小值15,C节点内存储的数据的键值均位于A节点内存储的数据的键值的最大值35和最小值15之间,D节点内存储的数据的键值均大于A节点内键值的最大值35,这即属于上述的“至少两个节点的键值之间存在预设的大小关系”当然,这里所说的大小关系并不仅限于上述举例的情况,可以明确的是,节点之间键值的大小关系是用来根据查询结果将查询目标定位到另一个节点的,即根据目标键值与多个第一预设键值之间的大小关系,可以确定出目标键值所在的键值范围,进而确定出其所在的节点,只要满足这一条件,即可视为“至少两个节点的键值之间存在预设的大小关系”。在本实施例中,如果要查询键值为28的数据,从A节点开始查询,此时,28为目标键值,A节点为第一目标节点,A节点内数据的键值15和35为第一预设键值,通过从第一预设键值15和35中查询目标键值28,可以得到第一查询结果,由于A节点内没有28这个键值,因此第一查询结果的结果标识信息表征没有在多个第一预设键值中查询到目标键值,并且由于A节点、B节点、C节点、D节点、E节点的键值之间存在上述预设的大小关系,因此可以将目标键值28定位到键值范围位于15和35之间的节点,故查询得到的位置标识信息指示目标键值28属于C节点。这样,在进行进一步查找的过程中,即可将查询目标定位到C节点,缩小查找范围。在进行进一步查找的过程中,会根据位置标识信息确定C节点为第二目标节点,C节点中存储的数据对应的键值24和30为第二预设键值,通过将24和30与28进行查询对比,可以得到针对C节点的查询结果。由于C节点内没有28这个键值,且28位于24和30之间,因此,针对C节点的查询结果可以将下一个目标节点定位到键值在24至30这个范围内的节点,即E节点,再针对E节点进行查询,即可在E节点中命中目标键值28。
在本实施例中,在可信执行环境中对待查询密文或第一预设密文进行解密处理,包括:确定解密缓存中是否存储有待查询密文或第一预设密文对应的解密结果;在解密缓存中存储有解密结果的情况下,从解密缓存中获取解密结果。
在对待查询密文或者第一预设密文进行解密的过程中,会先在解密缓存中查询是否有对应的解密结果,如果有解密结果则会直接从解密缓存中进行获取,而不需要进行解密。这种通过匹配解密缓存中的解密结果从而直接获取明文的方式,针对一些已经缓存有解密结果的密文无需再次进行解密操作,因此能够减小解密操作的频率,从而有利于提高整体的加密数据查询效率。在本实施例中,确定解密缓存中是否存储有待查询密文或第一预设密文对应的解密结果的方式可以根据实际情况灵活选择,例如可以包括如下步骤:根据待查询密文或某一个第一预设密文,通过哈希函数计算确定key值;根据key值从解密缓存中存储的数据所对应的哈希表中进行查询,如果命中,则说明已经缓存有相应的解密结果,如果没有命中,则说明没有缓存相应的解密结果。
在解密缓存中未存储解密结果的情况下,采用预设解密逻辑对待查询密文或第一预设密文进行解密,得到解密结果;将解密结果存储至解密缓存。
也就是说,在解密缓存中没有存储解密结果的情况下,需要采用预设解密逻辑对待查询密文或者第一预设密文进行解密。然后再进行后续的目标键值查询等操作。在对待查询密文或者第一预设密文进行解密之后,还会将解密结果存储至解密缓存中,这样,下次再需要对待查询密文或者第一预设密文进行解密的时候,只需从解密缓存中直接读取解密结果即可,而不需要再执行解密操作,有利于节省解密时间,从而提高加密数据查询的整体效率。如果解密缓存中没有匹配到对应的解密结果,则在实际实施时可采用多种形式的解密手段来对相应的密文进行解密。例如,在一种实施方式中,采用预设解密逻辑对待查询密文或第一预设密文进行解密,包括:采用预设解密函数,对待查询密文或第一预设密文进行解密。
在具体实施时,采用预设查询逻辑,从多个第一预设键值中查询目标键值,包括:获取目标查询函数的标识符;根据标识符,确定目标查询函数对应的指针;采用指针,调用目标查询函数,以从多个第一预设键值中查询目标键值。
其中,预设查询逻辑可以是多种形式的查询逻辑,例如二分法查询、范围查询等等,可根据查询需要选择合适的查询方式。通过输入相应的目标查询函数的标识符,即可确定该函数对应的指针,进而调用该函数。
在可信执行环境可以访问主机内存的情况下,获取第一目标节点中存储的第一预设密文,包括:获取第一预设密文对应的内存地址;在可信执行环境无法访问主机内存的情况下,获取第一目标节点中存储的第一预设密文,包括:将第一预设密文拷贝至可信执行环境。
例如,当TEE是例如Intel SGX这种可以在TEE内直接访问主机内存的环境时,只需要传入节点的内存地址即可顺利获取到第一目标节点中存储的第一预设密文,从而有利于减少数据的拷贝操作提高加密数据查询效率。而对于其他一些无法直接访问主机内存的TEE环境,可通过将节点的第一预设密文拷贝进TEE的方式来实现。
以下以B-Tree或B+Tree数据结构存储的加密数据查询过程为例,结合一个具体的实施例对本发明的加密数据查询方法进行说明:
构建B-Tree及其变种B+Tree索引是一种常见的方式,能大幅减少查询过程比较操作的数量,从而提升数据查询性能。密文数据也可以通过利用B-Tree来减少密文比较操作数量,从而加速查询。在此基础上,基于可信执行环境(TEE)的密文数据处理可以保证用户对隐私保护的需求,但基于TEE的密文数据处理效率会受到TEE调用和密文数据加解密开销的影响,具体地,B-Tree的查询/更新会涉及到大量的比较操作(如查询数据在节点中的位置),这些密文数据比较操作需要在TEE内进行解密和比较,会带来大量的TEE调用开销以及数据解密开销,使得密文数据上的B-Tree操作的效率很低。
本实施例通过将节点内的查询相关操作放到TEE内,使得每次访问一个节点只需要进行一次TEE调用。并且在TEE内维护一个解密缓存模块用于缓存频繁访问的密文数据解密结果,从而减少查询和更新过程中的数据解密开销。如图3所示,图中B-Tree示出了两层节点,根节点中包括100和200,在接收到密文(待查询密文)后,TEE会先获取最上层的根节点内的第一预设密文和待查询密文,对两者进行解密后得到目标键值(例如220)和两个第一预设键值100、200,解密结果会存储至解密缓存模块,然后节点操作模块(模块包含了一系列对节点内数据进行查询处理的函数,并且每个函数有对应的函数标识符,通过标识符可以对应到需要调用的查询函数,即目标查询函数)会根据查询函数进行一系列比较操作,例如二分查找函数通过比较操作得到第一查询结果并输出,由于根节点没有220,因此第一查询结果中的结果标识信息是否,由于220比200大,依次根据键值大小情况,位置标识信息会指示待查询密文位于下层最右侧的子节点中。后续TEE会获取该子节点(第二目标节点)中的第二预设密文,并对其进行解密,待查询密文则无需再次解密,可通过解密缓存模块直接获取待查询密文的解密结果,节点操作模块再次根据预设查询逻辑在第二预设密文对应的多个键值中查找220,最终在该节点中命中目标。
在B-Tree或B+Tree索引在查询或更新数据时,根据待处理数据与B-Tree内数据的顺序关系,从根节点出发逐层往下查询子节点,直到找到一个包含待处理数据的叶子节点,从而完成相关的查询或更新操作。当处理到一个节点(例如第一目标节点)时,将对应的节点处理函数(目标查询函数)的标识符传入TEE内,并且将节点(第一目标节点中存储的多个第一预设密文)载入进TEE内:当TEE是Intel SGX这种可以在TEE内直接访问主机内存的环境时,只需要传入第一目标节点的内存地址;对于无法直接访问主机内存的TEE环境,需要将第一目标节点的多个第一预设密文拷贝进TEE。
在TEE内根据节点处理函数的标识符找到对应的函数指针,然后执行相应的逻辑。在函数执行过程中需要将数据进行解密,然后对明文进行相关比较操作。
当处理到一个密文数据(一个第一预设密文)时,会先尝试通过查询解密缓存来获得结果:当缓存命中时直接获取对应的解密后的明文结果(解密结果);当缓存不命中时,会调用相应的密文解密函数得到明文,并将其更新到缓存中。
节点处理函数执行完成后,相应的结果(第一查询结果)会从TEE内传递出去,该第一查询结果会包括表征多个第一预设密文中是否包括待查询密文的结果标识信息以及用于指示待查询密文对应的目标键值所属的位置的位置标识信息,从而用于B-Tree的后续处理。
在本实施例中,通过将节点上的查询函数逻辑放入TEE内,使得TEE调用的次数等于访问的节点的个数。具体来说,假设每个节点包含B个数据,树高为h,则本方案的TEE调用开销为O(h),而如果不采用这种在可信执行环境中对待查询密文及第一预设密文进行解密,并一次性对得到目标键值以及多个第一预设键值进行查询比较的方式,则每次比较操作都需要一次TEE调用,因此其开销为O(h*logB),其中logB是在节点内进行二分查找的次数。因此,本实施例的方案能有效减少查询逻辑中TEE上下文切换导致的开销,而且只将节点内的查询逻辑放入TEE内,无需在TEE内执行加锁以及读写磁盘的系统调用,具有足够小的TCB。此外,由于节点内的查询逻辑在TEE内,因此能有效防止数据的访问特征泄漏。另外,通过在TEE内维护解密缓存,本实施例能有效降低密文解密开销。
本实施例通过将B-Tree节点内的查询相关操作移植进TEE内,只需调用依次TEE即可完成对一个节点的数据查询,并且在TEE内维护一个解密缓存模块用于缓存频繁访问的密文数据解密结果。本实施例能达到以下技术效果:每次访问一个节点只需要进行一次TEE上下文切换,有效降低TEE调用开销。B-Tree节点内查询相关操作简单,具有较小的TCB且功能独立,对TEE安全性影响较小。对特定数据管理系统依赖小,容易适配于不同数据管理系统的B-Tree索引结构。利用数据访问局部性,能有效降低查询过程中的数据解密开销。
其次,如图2所示,本发明的实施例还提供了一种加密数据查询装置,用于对采用预设数据结构存储的密文进行查询,预设数据结构采用键值对的形式存储密文,预设数据结构包括多个节点,属于同一个节点的多个键值按照大小顺序依次排列,至少两个节点的键值之间存在预设的大小关系,加密数据查询装置包括:第一获取单元,用于获取待查询密文以及第一目标节点中存储的第一预设密文,第一目标节点为预设数据结构的任意一个节点;第一解密单元,用于在可信执行环境中对待查询密文以及第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;第一查询单元,用于在可信执行环境中,采用预设查询逻辑,从多个第一预设键值中查询目标键值,得到第一查询结果;输出单元,用于输出第一查询结果,第一查询结果至少包括结果标识信息和位置标识信息,结果标识信息表征是否在多个第一预设键值中查询到目标键值,位置标识信息用于指示目标键值所属的位置。
本发明实施例的加密数据查询装置,第一获取单元在获取到待查询密文以及第一目标节点中存储的第一预设密文后,第一解密单元会在可信执行环境中对两者进行解密处理,进而获取到待查询的目标键值以及多个第一预设键值。目标键值即待查询密文所对应的明文的key值,多个第一预设键值即第一目标节点中存储的第一预设密文所对应的若干明文的key值,多个第一预设键值是按照大小顺序依次排列的(例如由小到大)。这样,第一查询单元根据预设查询逻辑对目标键值与多个第一预设键值进行比较,即可确定第一目标节点中是否存储有与待查询密文相同的内容,即结果标识信息;并可根据目标键值与多个第一预设键值之间的大小关系、节点的键值之间的预设大小关系,确定待查询密文在第一目标节点中的位置或其所在的其它节点的位置,即得到位置标识信息,方便后续对针对第一目标节点进行与待查询密文相关的插入、删除、更新等操作。也就是说,位置标识信息即可以是用来指示待查询密文在第一目标节点中的位置的信息,也可以是用来指示待查询密文所在的子节点的信息。采用这种设置方式的加密数据查询装置,在对第一目标节点进行查询的过程中,会在可信执行环境中对待查询密文及第一预设密文进行解密,得到目标键值以及多个第一预设键值,并在可信执行环境中从多个第一预设键值中查询目标键值。因此,整个查询过程只需要调用一次可信执行环境,即可实现对第一目标节点内的数据查询,并返回查询结果。与相关技术中针对一个节点内的每个数据进行查询比较时均调用一次可信执行环境进行解密查询的方式相比,本实施例的加密数据查询装置有效地减小了可信执行环境的调用次数,有利于节省可信执行环境切换过程所带来的开销,能够有效地提高类似B-Tree或B+Tree等采用多节点形式的数据结构存储的加密数据的查询效率,解决了相关技术中在对采用多节点形式的数据结构存储的加密数据进行查询时的查询效率较低的技术问题。
而且,采用上述设置的加密数据查询装置在避免可信执行环境频繁调用所导致的查询效率低下的基础上,仅仅是将单个节点内的查询操作放到了可信执行环境中,而不是将所有的数据查询逻辑一起放入其中,无需在可信执行环境内执行加锁以及读写磁盘的系统调用,同时也具有足够小的可信计算基(即Trusted computing base,简称TCB,是指为实现计算机系统安全保护的所有安全保护机制的集合,机制可以硬件、固件和软件的形式出现),而TCB代表了一个安全的执行环境,其大小直接影响到TEE的安全性,越小的TCB需要信任和验证的部分越少,从而有利于减小对TEE的安全性影响。上述的节点即存储数据的对象,例如磁盘的一块区域,其可以是存储的加密数据,也可以仅存储加密数据对应的地址信息。
在本实施例中,第一查询单元包括:第一查询模块,用于确定多个第一预设键值中是否存在目标键值,得到结果标识信息;第二查询模块,用于在多个第一预设键值中存在目标键值的情况下,根据目标键值与多个第一预设键值的大小关系,确定位置标识信息;第二查询模块还用于在多个第一预设键值中不存在目标键值的情况下,根据第一大小关系以及第二大小关系,确定位置标识信息,第一大小关系为目标键值与多个第一预设键值的大小关系,第二大小关系为至少一个第一预设键值与其它的节点的至少一个键值之间的大小关系。采用预设查询逻辑从多个第一预设键值中查询目标键值的过程中,可以确定出多个第一预设键值中是否存在目标键值,从而确定结果标识信息。由于多个第一预设键值是按大小顺序排列的原因,在多个第一预设键值中不存在目标键值的情况下,通过比较目标键值与多个第一预设键值的大小关系,可以确定位置标识信息;在多个第一预设键值中不存在目标键值的情况下,由于第一目标节点内多个第一预设键值是按照大小顺序依次排列的,且不同的节点的键值之间存在预设的大小关系,因此根据第一大小关系以及第二大小关系,确定位置标识信息,第一大小关系为目标键值与多个第一预设键值的大小关系,第二大小关系为至少一个第一预设键值与其它的节点的至少一个键值之间的大小关系。例如,返回的第一查询结果,可以包括一个偏移量(位置标识信息)以及是否找到数据的标识(结果标识信息)。这个偏移量表示节点内最接近待查询密文的数据位置(找到数据的话,这个偏移量就是密文的位置,否则可以是比待查询密文小且预期最接近的数据位置),比如第一目标节点内包含数据2、4、6、8,数据的位置依次对应为0、1、2、3,待查询数据是5,根据二分查找会返回数据4的位置(也就是1)以及数据没命中标识;如果待查询数据是6的话,那就会直接返回数据6的位置(也就是2)以及数据命中的标识。
由于对第一目标节点进行查找后,不一定可以找到待查询密文,待查询密文可能在其它节点中(例如第一目标节点的下层的子节点)。在本实施例中,加密数据查询装置还包括:确定单元,用于在结果标识信息表征未在多个第一预设键值中查询到目标键值,根据位置标识信息,确定第二目标节点,第二目标节点为第一目标节点的一个子节点;第二获取单元,用于获取第二目标节点中存储的第二预设密文;第二解密单元,用于在可信执行环境中对第二预设密文进行解密处理,得到按大小顺序依次排列的多个第二预设键值;第二查询单元,用于从多个第二预设键值中查询目标键值。也就是说,在本实施例中,结果标识信息可以用来指示目标键值所属节点的位置,在采用上述装置对第一目标节点进行查询后,如果发现多个第一预设键值中没有目标键值,即第一目标节点中没有存储待查询密文。可根据目标键值与各个第一预设键值之间的大小关系以及各节点的键值之间的大小关系来确定待查询密文所属的节点(第二目标节点),在定位到该节点之后,再次调用可信执行环境对第二目标节点执行查询即可进一步实现细粒度的查询操作。当然,这个过程可以逐层细化重复执行下去,直到在某一个节点中找到待查询密文,或者查询到叶子节点(最底层的节点)后仍没有查询到待查询密文,则可结束查询逻辑,从而方便地实现加密数据的查询。
第一解密单元包括:第一确定模块,用于确定解密缓存中是否存储有待查询密文或第一预设密文对应的解密结果;第一获取模块,用于在解密缓存中存储有解密结果的情况下,从解密缓存中获取解密结果。在本实施例中,在对待查询密文或者第一预设密文进行解密的过程中,会先在解密缓存中查询是否有对应的解密结果,如果有解密结果则会直接从解密缓存中进行获取,而不需要进行解密。这种通过匹配解密缓存中的解密结果从而直接获取明文的方式,针对一些已经缓存有解密结果的密文无需再次进行解密操作,因此能够减小解密操作的频率,从而有利于提高整体的加密数据查询效率。在本实施例中,确定解密缓存中是否存储有待查询密文或第一预设密文对应的解密结果,包括:根据待查询密文或第一预设密文确定key值;根据key值从解密缓存中存储的数据所对应的哈希表中进行查询。
第一解密单元还包括:解密模块,用于在解密缓存中未存储解密结果的情况下,采用预设解密逻辑对待查询密文或第一预设密文进行解密,得到解密结果;存储模块,用于将解密结果存储至解密缓存。也就是说,在解密缓存中没有存储解密结果的情况下,需要采用预设解密逻辑对待查询密文或者第一预设密文进行解密。然后再进行后续的目标键值查询等操作。在对待查询密文或者第一预设密文进行解密之后,还会将解密结果存储至解密缓存中,这样,下次再需要对待查询密文或者第一预设密文进行解密的时候,只需从解密缓存中直接读取解密结果即可,而不需要再执行解密操作,有利于节省解密时间,从而提高加密数据查询的整体效率。
在具体实施时,如果解密缓存中没有匹配到对应的解密结果,则在实际实施时可采用多种形式的解密手段来对相应的密文进行解密。例如,在一种实施方式中,采用预设解密逻辑对待查询密文或第一预设密文进行解密,包括:采用预设解密函数,对待查询密文或第一预设密文进行解密。
在具体实施时,第一查询单元包括:第二获取模块,用于获取目标查询函数的标识符;第二确定模块,用于根据标识符,确定目标查询函数对应的指针;第三查询模块,用于采用指针,调用目标查询函数,以从多个第一预设键值中查询目标键值。其中,预设查询逻辑可以是多种形式的查询逻辑,例如二分法查询、范围查询等等,可根据查询需要选择合适的查询方式。通过输入相应的目标查询函数的标识符,即可确定该函数对应的指针,进而调用该函数。
第一获取单元包括:第三获取模块,用于在可信执行环境可以访问主机内存的情况下,获取第一预设密文对应的内存地址;拷贝模块,用于在可信执行环境无法访问主机内存的情况下,将第一预设密文拷贝至可信执行环境。例如,当TEE是Intel SGX这种可以在TEE内直接访问主机内存的环境时,只需要传入节点的内存地址即可顺利获取到第一目标节点中存储的第一预设密文,从而有利于减少数据的拷贝操作提高加密数据查询效率。而对于其他无法直接访问主机内存的TEE环境,可通过将节点的第一预设密文拷贝进TEE的方式来实现。
另外,本发明实施例还提供了一种非易失性存储介质,其中,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行上述的加密数据查询方法。
再次,本发明实施例还提供了一种处理器,其中,处理器用于运行程序,其中,程序运行时执行上述的加密数据查询方法。
最后,本发明的实施例还提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,其中,处理器执行上述的加密数据查询方法。可以理解的是终端设备可以是本地设备也可以是云端设备,从而可以用于用户对本地加密数据的查询,也可以用于对云端存储的数据的查询。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。而且,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种加密数据查询方法,用于对采用预设数据结构存储的密文进行查询,所述预设数据结构采用键值对的形式存储所述密文,所述预设数据结构包括多个节点,属于同一个所述节点的多个键值按照大小顺序依次排列,至少两个所述节点的所述键值之间存在预设的大小关系,所述加密数据查询方法包括:
获取待查询密文以及第一目标节点中存储的第一预设密文,所述第一目标节点为所述预设数据结构的任意一个所述节点;
在可信执行环境中对所述待查询密文以及所述第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;
在所述可信执行环境中,采用预设查询逻辑,从所述多个第一预设键值中查询所述目标键值,得到第一查询结果;
输出所述第一查询结果,所述第一查询结果至少包括结果标识信息和位置标识信息,所述结果标识信息表征是否在所述多个第一预设键值中查询到所述目标键值,所述位置标识信息用于指示所述目标键值所属的位置。
2.根据权利要求1所述的加密数据查询方法,其中,所述在所述可信执行环境中,采用预设查询逻辑,从所述多个第一预设键值中查询所述目标键值,包括:
确定所述多个第一预设键值中是否存在所述目标键值,得到所述结果标识信息;
在所述多个第一预设键值中存在所述目标键值的情况下,根据所述目标键值与多个所述第一预设键值的大小关系,确定所述位置标识信息;
在所述多个第一预设键值中不存在所述目标键值的情况下,根据第一大小关系以及第二大小关系,确定所述位置标识信息,所述第一大小关系为所述目标键值与多个所述第一预设键值的大小关系,所述第二大小关系为至少一个所述第一预设键值与其它的所述节点的至少一个所述键值之间的大小关系。
3.根据权利要求1所述的加密数据查询方法,其中,在所述结果标识信息表征未在所述多个第一预设键值中查询到所述目标键值的情况下,所述加密数据查询方法还包括:
根据所述位置标识信息,确定第二目标节点;
获取所述第二目标节点中存储的第二预设密文;
在所述可信执行环境中对所述第二预设密文进行解密处理,得到按大小顺序依次排列的多个第二预设键值;
从多个所述第二预设键值中查询所述目标键值。
4.根据权利要求1所述的加密数据查询方法,其中,所述在可信执行环境中对所述待查询密文或所述第一预设密文进行解密处理,包括:
确定解密缓存中是否存储有所述待查询密文或所述第一预设密文对应的解密结果;
在所述解密缓存中存储有所述解密结果的情况下,从所述解密缓存中获取所述解密结果。
5.根据权利要求4所述的加密数据查询方法,其中,所述在可信执行环境中对所述待查询密文或所述第一预设密文进行解密处理,还包括:
在所述解密缓存中未存储所述解密结果的情况下,采用预设解密逻辑对所述待查询密文或所述第一预设密文进行解密,得到解密结果;
将所述解密结果存储至所述解密缓存。
6.根据权利要求1至5中任一项所述的加密数据查询方法,其中,所述采用预设查询逻辑,从所述多个第一预设键值中查询所述目标键值,包括:
获取目标查询函数的标识符;
根据所述标识符,确定所述目标查询函数对应的指针;
采用所述指针,调用所述目标查询函数,以从所述多个第一预设键值中查询所述目标键值。
7.根据权利要求1至5中任一项所述的加密数据查询方法,其中,
在所述可信执行环境可以访问主机内存的情况下,获取所述第一目标节点中存储的所述第一预设密文,包括:获取所述第一预设密文对应的内存地址;
在所述可信执行环境无法访问所述主机内存的情况下,获取所述第一目标节点中存储的所述第一预设密文,包括:将所述第一预设密文拷贝至所述可信执行环境。
8.一种加密数据查询装置,用于对采用预设数据结构存储的密文进行查询,所述预设数据结构采用键值对的形式存储所述密文,所述预设数据结构包括多个节点,属于同一个所述节点的多个键值按照大小顺序依次排列,至少两个所述节点的所述键值之间存在预设的大小关系,所述加密数据查询装置包括:
第一获取单元,用于获取待查询密文以及第一目标节点中存储的第一预设密文,所述第一目标节点为所述预设数据结构的任意一个所述节点;
第一解密单元,用于在可信执行环境中对所述待查询密文以及所述第一预设密文进行解密处理,得到待查询的目标键值以及按照大小顺序依次排列的多个第一预设键值;
第一查询单元,用于在所述可信执行环境中,采用预设查询逻辑,从所述多个第一预设键值中查询所述目标键值,得到第一查询结果;
输出单元,用于输出所述第一查询结果,所述第一查询结果至少包括结果标识信息和位置标识信息,所述结果标识信息表征是否在所述多个第一预设键值中查询到所述目标键值,所述位置标识信息用于指示所述目标键值所属的位置。
9.根据权利要求8所述的加密数据查询装置,其中,
第一查询单元包括:第一查询模块,用于确定所述多个第一预设键值中是否存在所述目标键值,得到所述结果标识信息;第二查询模块,用于在所述多个第一预设键值中存在所述目标键值的情况下,根据所述目标键值与多个所述第一预设键值的大小关系,确定所述位置标识信息;第二查询模块还用于在所述多个第一预设键值中不存在所述目标键值的情况下,根据第一大小关系以及第二大小关系,确定所述位置标识信息,所述第一大小关系为所述目标键值与多个所述第一预设键值的大小关系,所述第二大小关系为至少一个所述第一预设键值与其它的所述节点的至少一个所述键值之间的大小关系;
所述加密数据查询装置还包括:确定单元,用于在所述结果标识信息表征未在所述多个第一预设键值中查询到所述目标键值的情况下,根据所述位置标识信息,确定第二目标节点;第二获取单元,用于获取所述第二目标节点中存储的第二预设密文;第二解密单元,用于在所述可信执行环境中对所述第二预设密文进行解密处理,得到按大小顺序依次排列的多个第二预设键值;第二查询单元,用于从多个所述第二预设键值中查询所述目标键值;
所述第一解密单元包括:第一确定模块,用于确定解密缓存中是否存储有所述待查询密文或所述第一预设密文对应的解密结果;第一获取模块,用于在所述解密缓存中存储有所述解密结果的情况下,从所述解密缓存中获取所述解密结果;
所述第一解密单元还包括:解密模块,用于在所述解密缓存中未存储所述解密结果的情况下,采用预设解密逻辑对所述待查询密文或所述第一预设密文进行解密,得到解密结果;存储模块,用于将所述解密结果存储至所述解密缓存;
所述第一查询单元包括:第二获取模块,用于获取目标查询函数的标识符;第二确定模块,用于根据所述标识符,确定所述目标查询函数对应的指针;第三查询模块,用于采用所述指针,调用所述目标查询函数,以从所述多个第一预设键值中查询所述目标键值;
所述第一获取单元包括:第三获取模块,用于在所述可信执行环境可以访问主机内存的情况下,获取所述第一预设密文对应的内存地址;拷贝模块,用于在所述可信执行环境无法访问所述主机内存的情况下,将所述第一预设密文拷贝至所述可信执行环境。
10.一种非易失性存储介质,其中,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至7中任意一项所述的加密数据查询方法。
11.一种处理器,其中,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的加密数据查询方法。
12.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现权利要求1至7中任意一项所述的加密数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211122090.2A CN115576987A (zh) | 2022-09-15 | 2022-09-15 | 加密数据查询方法、装置、存储介质、处理器及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211122090.2A CN115576987A (zh) | 2022-09-15 | 2022-09-15 | 加密数据查询方法、装置、存储介质、处理器及终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115576987A true CN115576987A (zh) | 2023-01-06 |
Family
ID=84581227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211122090.2A Pending CN115576987A (zh) | 2022-09-15 | 2022-09-15 | 加密数据查询方法、装置、存储介质、处理器及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576987A (zh) |
-
2022
- 2022-09-15 CN CN202211122090.2A patent/CN115576987A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106934030B (zh) | 一种面向数据库加密的密文索引方法和库内加密系统 | |
Wang et al. | Searchable encryption over feature-rich data | |
KR101403745B1 (ko) | 데이터베이스 시스템에서 비-결정적으로 암호화된 데이터에대한 검색을 수행하는 방법 및 이를 위한 원격 데이터베이스를 제공하는 방법, 및 기계-판독가능 매체 | |
EP3631651B1 (en) | Method for efficient primary key based queries using atomic rdma reads on cache friendly in-memory hash index | |
JP2008517354A (ja) | データベーステーブル探索用の暗号化されたデータベースインデックスを構築する方法を導入されたコンピュータ | |
US10810314B1 (en) | Database connector using attribute-based encryption | |
CN112583809B (zh) | 非浸入式多种加密算法的数据加密解密的方法 | |
WO2022156588A1 (zh) | 一种数据管理的方法、设备及系统 | |
US20230274007A1 (en) | Response-Hiding Searchable Encryption | |
CN110704853A (zh) | 一种基于脱敏策略的敏感数据脱敏方法及系统 | |
CN114254344B (zh) | 一种基于区块链的共享数据库的隐私数据范围查询方法 | |
CN113157821B (zh) | 一种适用于关系数据库的可查询加密方法 | |
Hiemenz et al. | Dynamic searchable symmetric encryption for storing geospatial data in the cloud | |
CN114218582A (zh) | 一种数据库的数据加密方法及终端 | |
WO2022099893A1 (zh) | 数据查询方法、装置、系统以及数据集处理方法 | |
CN112231752A (zh) | 一种无交互频率隐藏的密文插入查询删除方法 | |
EP2775420A1 (en) | Semantic search over encrypted data | |
CN115576987A (zh) | 加密数据查询方法、装置、存储介质、处理器及终端设备 | |
CN113722366B (zh) | 一种基于不经意密文倒排索引的安全数据检索方法 | |
US11645399B1 (en) | Searching encrypted data | |
CN114661793A (zh) | 模糊查询方法、装置、电子设备及存储介质 | |
CN112148739A (zh) | 独立于加密数据库的密文索引方法及系统 | |
US11669506B2 (en) | Searchable encryption | |
CN116701493B (zh) | 支持模糊查询的数据库操作方法及用户端 | |
WO2024130721A1 (en) | Data storage server and client devices for securely storing and retrieving data |
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 |