CN115801446B - 基于可信硬件的加密数据库系统 - Google Patents
基于可信硬件的加密数据库系统 Download PDFInfo
- Publication number
- CN115801446B CN115801446B CN202211743343.8A CN202211743343A CN115801446B CN 115801446 B CN115801446 B CN 115801446B CN 202211743343 A CN202211743343 A CN 202211743343A CN 115801446 B CN115801446 B CN 115801446B
- Authority
- CN
- China
- Prior art keywords
- database
- storage engine
- request
- parser
- background application
- 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.)
- Active
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于可信硬件的加密数据库系统,包括客户端、内部服务器端和云服务器端,内部服务器端包括数据库语法解析器和为客户端提供的后台应用,云服务器端包括基于可信硬件的存储引擎,在数据库语法解析器与存储引擎建立安全信道之后,客户端请求查询的过程包括:客户端向后台应用发起查询请求,后台应用接收查询请求并生成相应的数据库语句,数据库解析器解析数据库语句并生成对应的数据访问请求,存储引擎接收数据访问请求并在可信执行环境中处理数据请求并将请求结果返回给数据库解析器,数据库解析器对请求结果进行处理、形成查询结果并返回给后台应用,后台应用完成请求返回,其中数据库解析器和存储引擎在安全信道内进行通信。
Description
技术领域
本发明属于可信计算和数据库安全技术领域,尤其涉及基于可信硬件的加密数据库系统。
背景技术
出于成本和便捷性的考虑,将工作负载转移到云上是现在的趋势,云数据库便是其中之一。使用云数据库,在节省成本与带来便利性的同时,却又带来了新的安全问题:云服务商本身不完全可信,可能会窃取用户的数据。云服务商很容易获取到数据库服务器的管理员权限(即root权限)。尽管有许多的对数据库安全的保护手段,但这些方法难以对抗拥有管理员权限的攻击者。因此,需要一些特殊的方法来在云数据库中保护用户的数据。
目前有两种技术可以被用来保护云数据库,一种是隐私计算技术(如同态加密、可搜索加密等),这种方案性能开销较大,且支持的计算方法有限;另一种是可信执行环境(Trusted Execution Environment ,TEE),如SGX、TrustZone等,这种方案性能开销小、并且可以支持数据库原有的全部计算方法。基于TEE开发应用需要考虑许多限制条件,包括可用内存限制、环境切换开销等。并且由于数据库系统的复杂性、很难将原有的数据库系统直接移植到TEE内。现有的解决方案或在性能上开销较大、或在功能上有所欠缺、或在安全上保护不足。
发明内容
针对现有技术存在的问题,本申请实施例的目的是提供基于可信硬件的加密数据库系统,在性能上开销较小、功能上可以兼容原数据库应用、在安全性上得到了更高的保障。
本申请实施例提供一种基于可信硬件的加密数据库系统,包括客户端、内部服务器端和云服务器端,所述内部服务器端包括数据库语法解析器和为所述客户端提供的后台应用,所述云服务器端包括基于可信硬件的存储引擎,在所述数据库语法解析器与所述存储引擎建立用于安全信道之后,客户端请求查询的过程包括:
客户端向所述后台应用发起查询请求,后台应用接收所述查询请求并生成相应的数据库语句,数据库解析器解析所述数据库语句并生成对应的数据访问请求,存储引擎接收所述数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库解析器,数据库解析器对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,后台应用完成请求返回,其中所述数据库解析器和所述存储引擎在所述安全信道内进行通信。
进一步地,所述数据库语法解析器于所述存储引擎建立连接的过程包括:
在数据库解析器向存储引擎发起远程证明认证后,存储引擎根据自身的数据生成摘要,并根据所述可信硬件的密钥对所述摘要生成签名,以向数据库解析器证明自己运行在可信执行环境内;
数据库解析器根据所述摘要和签名决定是否信任存储引擎,若信任,则通过基于非对称加密算法的密钥交换协议与存储引擎完成会话临时密钥的交换,利用所述会话临时密钥建立安全信道;
数据库解析器通过所述安全信道向存储引擎发送自己的登录信息;
存储引擎根据数据库解析器的登录信息,确认其访问权限,以拒绝所有越权请求。
进一步地,所述存储引擎中通过默克尔树和B+树结合的数据结构进行页面的索引,在该数据结构中,父节点中包括了其所有子节点的数据索引、对应页面的ID和哈希值。
进一步地,所述存储引擎运行在所述可信执行环境中并通过外部存储器存储数据,所述可信执行环境中设置有明文的第一缓冲池,所述存储引擎的内存中设置有密文的第二缓冲池,所述存储引擎访问页面的过程为:
(3.1)在所述第一缓冲池中进行查询;
(3.2)若在所述第一缓冲池中未查询到,则在所述第二缓冲池中进行查询,若查询到则将该页面调入所述第一缓冲池并解密,返回步骤(3.1);
(3.3)若在所述第二缓冲池中未查询到,则从磁盘将该页面调入所述第二缓冲池,返回上述步骤(3.2)。
进一步地,在(3.2)中,将页面调入所述第一缓冲池之前,若所述第一缓冲池已满,则选择一个替换页面,将其加密后存入第二缓冲池。
进一步地,使用最少最近算法选择替换页面。
进一步地,以访问路径相反的顺序释放页面。
进一步地,在页面从所述第一缓冲池中被替换出时,重新计算页面哈希值。
本申请实施例还提供一种用于实现基于可信硬件的加密数据库系统的方法,应用于内部服务器端中的数据库解析器,该方法包括:
与存储引擎建立一安全信道;
接收后台应用发送的数据库语句,其中所述数据库语句由所述后台应用接收客户端发送的查询请求后生成得到;
解析所述数据库语句并生成对应的数据访问请求,以使得存储引擎接收所述数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库解析器,其中与所述存储引擎在所述安全信道内进行通信;
对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,以使得后台应用完成请求返回。
本申请实施例还提供一种用于实现基于可信硬件的加密数据库系统的方法,应用于云服务器端中的存储引擎,包括:
与内部服务器端建立一安全信道;
接收数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库解析器,其中客户端向后台应用发起查询请求,所述后台应用接收所述查询请求并生成相应的数据库语句,数据库解析器解析所述数据库语句并生成对应的数据访问请求;数据库解析器对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,以使得后台应用完成请求返回。
本申请的实施例提供的技术方案可以包括以下有益效果:
由上述实施例可知,本申请通过在云服务器端设置可信硬件允许用户将数据存储在不可信的云服务器中,并保障数据不被泄露,包括云服务器的持有者云厂商,也无法窃取或篡改数据;通过将存储引擎和数据库解析器分离,减少了需要运行在可信硬件内的代码规模,更容易证明其安全性;沿用了现有的数据库解析器,使修改对使用数据库的应用程序“透明”,允许原应用程序保持现有的方式继续使用数据库;通过对存储引擎两层缓冲池的设计,可以减少可信硬件带来的额外运行时开销,提高了数据库性能;将B+树与默克尔树结合,不仅实现了对磁盘文件加密,同时还能保障数据库的完整性,抵抗回滚攻击;本发明具有效率高、安全性强两大特点。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的基于可信硬件的加密数据库系统的示意图。
图2是根据一示例性实施例示出的基于可信硬件的加密数据库系统的运行流程图。
图3是根据一示例性实施例示出的基于可信硬件的数据存储引擎的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是根据一示例性实施例示出的一种基于可信硬件的加密数据库系统的示意图,如图1所示,该系统可以包括客户端、内部服务器端和云服务器端,所述内部服务器端包括数据库语法解析器和为所述客户端提供的后台应用,所述云服务器端包括基于可信硬件的存储引擎,在所述数据库语法解析器于所述存储引擎建立用于安全信道之后,客户端请求查询的过程包括:客户端向所述后台应用发起查询请求,后台应用接收所述查询请求并生成相应的数据库语句,数据库解析器解析所述数据库语句并生成对应的数据访问请求,存储引擎接收所述数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库解析器,数据库解析器对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,后台应用完成请求返回,其中所述数据库解析器和所述存储引擎在所述安全信道内进行通信。
由上述实施例可知,本申请通过在云服务器端设置可信硬件允许用户将数据存储在不可信的云服务器中,并保障数据不被泄露,包括云服务器的持有者云厂商,也无法窃取或篡改数据;通过将存储引擎和数据库解析器分离,减少了需要运行在可信硬件内的代码规模,更容易证明其安全性;沿用了现有的数据库解析器,使修改对使用数据库的应用程序“透明”,允许原应用程序保持现有的方式继续使用数据库;本发明具有效率高、安全性强两大特点。
具体地,所述数据库语法解析器为适用于实际场景的任意数据库语言的语法解析器, 数据库解析与数据存储分离的设计方案,将性能需求低的数据库解析器保留在企业自持有的服务器内,将数据存储引擎分离到提供高性能、高可用,但不可信的云服务器上。该方案对应用程序“透明”,允许原使用数据库的应用程序(如web后端应用)保持原有的方式继续使用数据库。需要说明的是,上述生成请求、根据请求作出对应处理的过程为涉及的模块中的固有技术手段,为本领域公知常识,本申请中不作赘述。
具体地,数据库的连接与使用流程如图2所示。在初始阶段,位于企业内部服务器上的SQL解析器尚未与云服务器上的存储引擎建立连接。所述数据库语法解析器于所述存储引擎建立连接的过程包括:
(1.1)在数据库解析器向存储引擎发起远程认证后,存储引擎根据自身的数据生成摘要,并根据所述可信硬件的密钥对所述摘要生成签名,以向数据库解析器证明自己运行在可信执行环境内;
具体地,可信执行环境(Trusted Execution Environment ,TEE)可以保证其中的代码与数据的隔离性、机密性与完整性。本申请实施例中采用的Intel Software GuardExtension(SGX)是一种基于硬件实现的TEE。通过SGX,可以在不可信的主机上创建出一片隔离的TEE,即使拥有着管理员特权的攻击者,也无法侵入。外部进程与TEE的交互只能通过特殊设计的ECall与OCall调用,这些调用耗时较长。出于安全性设计,TEE可用的加密内存通常较小,但是,TEE可以直接访问主机上的非加密内存。TEE还提供了远程认证功能(Remote Attestation)。Remote Attestation允许客户检验一个远程主机上的TEE的运行状态,并在他们之间建立一条安全的双向通信信道。
具体地,在每一个可信硬件出厂前,都会被分配一对独一无二的公私钥对,并将私钥刻录到可信硬件内,同时硬件厂商将相应公钥保存在自身的认证服务器中。当存储引擎接收到数据库解析器发起的远程认证后,会对自身数据、代码生成哈希摘要,并使用刻录在硬件内的私钥对摘要进行签名,并将摘要与签名一同发送给数据库解析器。
哈希函数也称为散列函数,给定一个输入x,会返回一个值H(x)。哈希函数的主要特征是:输入x可以是任意长度的字符串,而输出结果H(x)的长度是固定的,且计算H(x)的过程是高效的,即对于长度为n的字符串x,计算出H(x)的时间复杂度应为O(n)。另外,哈希函数一般还会要求一下两个特点:
1.碰撞抵抗:对于输入x和y,出现H(x)= H(y)的概率极低;
2.单向性:对于给定的输出结果H(x),想要计算出x的概率极低。
目前常见的哈希算法有md4,md5,sha系列,具体使用的摘要算法由可信硬件指定,通常不可更改。
(1.2)数据库解析器根据所述摘要和签名决定是否信任存储引擎,若信任,则通过基于非对称加密算法的密钥交换协议与存储引擎完成会话临时密钥的交换,利用所述会话临时密钥建立安全信道;
非对称密码学也称为公钥密码学,其基本特征是,有一对不相等的密钥Kpublic和Kprivate,经过公钥Kpublic加密的数据,可以通过对应的私钥Kprivate解密,但是无法通过Kpublic解密。常见的非对称加密算法有RSA、ECDSA等,在可信硬件的远程认证阶段所使用的非对称加密算法同样由可信硬件指定。
密钥交换协议是指通信双方通过某种协议,交换得到一个只有通信双方知道的密钥,而任何中间人都无法得知该密钥。基于非对称密码学的密钥交换可以通过以下步骤完成:拿到公钥的一方先生成随机的会话密钥,然后利用公钥加密它;再把加密结果发给对方,对方用私钥解密;于是双方都得到了会话密钥。
具体地,在数据库解析器接收到存储引擎发送来的签名与摘要后,会向硬件厂商提供的认证服务器进行询问,认证服务器使用自身保存的公钥来验证签名与摘要的有效性,并将结果告知数据库解析器。认证服务器验证的是对摘要的签名,仅能保证摘要内容是在一个真实可信的可信硬件上生成的,但不会去检验摘要的实际内容。数据库解析器接收到验证结果后,需要根据摘要内容决定是否信任存储引擎,这包括了检验摘要内容是否是基于真正的存储引擎代码生成的。具体地,在将存储引擎部署到云服务器上之前,会先对它的全部代码产生一个摘要,并保存在数据库解析器处;数据库解析器在接收到存储引擎发来的摘要后,会将其与预先保存的摘要进行比对,判断是否一致。若数据库解析器选择信任,则随机生成一个临时密钥,用于此后一段时间的安全通信,并与存储引擎完成密钥交换。
在一实施例中,通过ECDSA(Elliptic Curve Digital Signature Algorithm)协议完成密钥交换,该协议是SGX默认使用的密钥协商协议,具有单位比特安全强度较高的特点。
(1.3)数据库解析器通过所述安全信道向存储引擎发送自己的登录信息;
具体地,同一个数据库存储引擎通常会同时服务于多个数据库解析器与应用程序,在每个数据库解析器接入存储引擎之前,都会由存储引擎的根账户为其分配一个访问账号及密钥,同时限制该账户的可见范围及读写权限。在数据库解析器与存储引擎建立安全信道之后,需要将自己的账号及密钥发送给存储引擎。
(1.4)存储引擎根据数据库解析器的登录信息,确认其访问权限,以拒绝所有越权请求。
具体地,存储引擎的结构与执行流程如图3所示。首先,来自于SQL解析器的请求是通过Remote Attestation建立的安全信道进行的,在通信方面不存在安全问题。存储引擎可以视为由多个B+树组成,每个B+树就是一个数据库。B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树的每个节点通常包含有多个键值对,以使其大小恰好为一个磁盘页面的大小,每个节点有许多个子节点,这减少了查找树中元素所需的I/O操作数。存储引擎运行在可信执行环境内,但最终需要将数据存储到磁盘上。为此,本方案设计了两层缓冲池(Buffer Pool)以及完整性保护机制。
完整性指用户、进程或者硬件组件具有能力,能够验证所发送或接收的数据的准确性,并且任何恶意的篡改都能够被检测到。SGX等TEE只能保证TEE内的数据可信,尽管我们对主存和磁盘上的页面进行了加密,但不能保证它们的完整性。回滚攻击(RollbackAttack)指的是攻击者让应用从一个陈旧的状态重新启动,以覆盖掉部分应用的修改。具体而言,攻击者可以在某个特定的时间点记录数据库主存与磁盘上全部页面的数据,在一段时间的运行之后,攻击者将所有页面替换成为之前记录下来的数据。这样,尽管没有任何的数据泄露(主存与磁盘上的页面都是加密的),但是攻击者可以成功覆盖掉从记录点到当前时刻数据库上的全部修改,并且不被数据库察觉,这就破坏了数据库应用的完整性。
具体地,所述存储引擎运行在所述可信执行环境中并通过外部存储器存储数据,缓冲池(Buffer Pool)用来将磁盘上的部分B+树页面暂存到内存,以加速访问。缓存空间的大小有限,无法缓存数据库的全部Page。本方案设计了两层Buffer,所述可信执行环境中设置有明文的第一缓冲池,所述存储引擎的内存中设置有密文的第二缓冲池,所述存储引擎访问页面的过程为:
(3.1)在所述第一缓冲池中进行查询;
(3.2)若在所述第一缓冲池中未查询到,则在所述第二缓冲池中进行查询,若查询到则将该页面调入所述第一缓冲池并解密,返回步骤(3.1);
具体地,将页面调入所述第一缓冲池之前,若所述第一缓冲池已满,则选择一个替换页面,将其加密后存入第二缓冲池。优选地,使用最少最近算法(Least Recently Used,LRU)选择替换页面。
(3.3)若在所述第二缓冲池中未查询到,则从磁盘将该页面调入所述第二缓冲池,返回上述步骤(3.2)。
具体地,若第二缓冲池已满,则选择一个替换页面,将其存入磁盘中,替换算法可以选择最不经常使用(Least Frequently Used,LFU)算法、最少最近算法(Least RecentlyUsed,LRU)算法或时钟替换算法(Clock)。
具体地,在(3.2)中由于SGX运行其内的应用访问可信环境外的内存,因此不需要OCall调用,仅在步骤(3.3)磁盘io的时候需要OCall调用。这种方案既保护了数据的安全,又扩增了SGX可以使用的内存空间,同时避免了不必要的OCall调用,以提高性能。
具体地,所述存储引擎中通过默克尔树和B+树结合的数据结构进行页面的索引,在该数据结构中,父节点中包括了其所有子节点的数据索引、对应页面的ID和哈希值。对于每一个页面,我们会计算它的密码学Hash值,代表了这个页面最新的状态,我们选择的Hash算法是sha256,该算法兼具了性能与安全性。Hash值会被作为页面的索引数据,与页面ID一起,保存在其父节点中。父节点在计算Hash值的时候,其输入将会包含所有子节点的Hash值,因此父节点的Hash值可以代表这一子树的最新状态。Hash值的计算依次向上传递,最终计算出根节点的Hash值。根节点的Hash值(root hash)代表了整个数据库的最新状态,将始终驻留在Enclave内。
通常默克尔树需要在每次有更新的时候重新计算整个路径的Hash值,本方案利用可信执行环境提供的受保护内存,降低了每次更新需要计算Hash值的次数。具体而言,本方案推迟了页面Hash计算的时刻,只有在页面从所述第一缓冲池中被替换出时,重新计算页面哈希值。由于攻击者无法篡改可信内存,因此还留存在第一缓冲池内的页面不用立刻重新计算页面Hash。
上述哈希更新的设计有一个潜在的问题,由于节点Hash值的计算被推迟了,因此父节点中保存的可能不是子节点最新的Hash值。必须保证在计算父节点的Hash值时,所有子节点的Hash值都已经更新并写入父节点。由于Hash值的计算只会在节点被移出第一缓冲池的时候触发,因此,只要保证子节点先于父节点被移出第一缓冲池,就可以确保父节点计算到最新的Hash值。所以,本申请中以访问路径相反的顺序释放页面(通常情况下是页面访问完成后立即释放,即以程序访问路径相同的顺序)。这样,子节点会先于父节点被释放,在LRU替换算法选择替换页面的时候,子节点一定会先于父节点被替换出第一缓冲池,从而保证子节点的Hash值先于父节点更新。
具体地,存储引擎详细执行流程如下:首先,存储引擎接收到一条数据查询请求;之后,存储引擎会根据该条数据的Key值,去B+树中查询对应的Value值,在该查询过程中,存储引擎会从B+树的根节点开始,在其中查询该Key可能存在于的子树,并由此进入下一层中间节点,重复寻找该Key可能存在于的子树。经过多轮查询后,会进入B+树的叶子节点,并在叶子节点中找到该Key所对应的Value值。在B+树中,一个节点通常会对应Buffer Pool中的一个页面,因此在从根节点到叶节点的访问过程中,会多次进行前述的Buffer Pool查询、换入换出与加解密操作。在得到Key值对应的Value以后,存储引擎会将该结果Value返回给数据库解析器。
现结合图2与图3举出一个完整的数据服务阶段运行流程。
第一步,首先由用户客户端发送一次请求,假定该用户使用的是某Web应用,想要得知某商品的具体信息。该客户会在网页上形成一次点击,并由浏览器想Web后端应用发送一个请求报文。
第二步,Web后端应用经过自身逻辑,生成一条对数据库的查询语句,这里假定该Web后端使用的是SQL数据库,因此会生成一条SQL查询语句,并发送给SQL解析器。
第三步,SQL解析器解析SQL语句,形成对存储引擎的一系列数据请求操作;之后,将这个请求操作转换为数据报文,并经过连接云服务器阶段得到的密钥加密,发送给位于云服务器TEE内的存储引擎。
第四步,在存储引擎内完成数据查询操作,具体地:
(一)首先通过连接云服务器阶段得到的密钥对数据请求报文解密,得到需要查询的数据的Key。
(二)根据该Key值,到B+树中进行查询。为了便于说明,这里假设B+树有2层,其中第一层只有一个节点,其Page Id为1,第二层有三个节点,Page Id分别为2、3、4。并且假设Buffer 1与Buffer 2都是空的。
(三)首先访问Page 1,经查询Buffer 1中没有Page 1,故而需要从Buffer 2中进行查询,而Buffer 2中也没有Page 1;所以,存储引擎首先通过一条Ecall调用,将Page 1从磁盘读取到Buffer 2中;之后,存储引擎再将该页面从Buffer 2拷贝到Buffer 1中,该过程不需要Ecall调用;在将页面调入Buffer 1后,首先将数据解密,并计算其Hash值;计算完成后,需要与保存在其父节点中的Page Hash进行比对,由于Page 1是root节点,其需要与root hash进行不对,root hash会单独保存在TEE内;最后,在Buffer 1中标记该页面正在被引用,避免其被逐出Buffer。
(四)在Page 1内进行查询,判定Key所存在于的子树,这里假定Key存在于Page Id为3的子树中。
(五)将Page 3调入Buffer 1,流程同步骤(三)所述。
(六)在Page 3中查询到Key对应的数据后,将对应Value值(或Key不存在)作为结果,生成返回报文。
(七)依次释放对Page 3、Page 1的引用,注意Page 3的释放先于Page 1,原因如前所述。
(八)将返回报文使用密钥加密,发送给数据库解析器。
需要注意的是,这里未涉及到前述的页面逐出以及Hash更新操作。
第五步,SQL解析器接收到存储引擎发送来的报文,首先用密钥解密出结果,之后将其转换为SQL结果返回给Web后端应用。
第六步,Web后端应用将结果处理后,将数据发送给前端浏览器,并在浏览器中形成可视化结果给用户。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
Claims (9)
1.一种基于可信硬件的加密数据库系统,其特征在于,包括客户端、内部服务器端和云服务器端,所述内部服务器端包括数据库语法解析器和为所述客户端提供的后台应用,所述云服务器端包括基于可信硬件的存储引擎,在所述数据库语法解析器与所述存储引擎建立用于安全信道之后,客户端请求查询的过程包括:
客户端向所述后台应用发起查询请求,后台应用接收所述查询请求并生成相应的数据库语句,数据库语法解析器解析所述数据库语句并生成对应的数据访问请求,存储引擎接收所述数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库语法解析器,数据库语法解析器对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,后台应用完成请求返回,其中所述数据库语法解析器和所述存储引擎在所述安全信道内进行通信;
其中,所述存储引擎运行在所述可信执行环境中并通过外部存储器存储数据,所述可信执行环境中设置有明文的第一缓冲池,所述存储引擎的内存中设置有密文的第二缓冲池,所述存储引擎访问页面的过程为:
(3.1)在所述第一缓冲池中进行查询;
(3.2)若在所述第一缓冲池中未查询到,则在所述第二缓冲池中进行查询,若查询到则将该页面调入所述第一缓冲池并解密,返回步骤(3.1);
(3.3)若在所述第二缓冲池中未查询到,则从磁盘将该页面调入所述第二缓冲池,返回上述步骤(3.2)。
2.根据权利要求1所述的系统,其特征在于,所述数据库语法解析器于所述存储引擎建立连接的过程包括:
在数据库语法解析器向存储引擎发起远程证明认证后,存储引擎根据自身的数据生成摘要,并根据所述可信硬件的密钥对所述摘要生成签名,以向数据库语法解析器证明自己运行在可信执行环境内;
数据库语法解析器根据所述摘要和签名决定是否信任存储引擎,若信任,则通过基于非对称加密算法的密钥交换协议与存储引擎完成会话临时密钥的交换,利用所述会话临时密钥建立安全信道;
数据库语法解析器通过所述安全信道向存储引擎发送自己的登录信息;
存储引擎根据数据库语法解析器的登录信息,确认其访问权限,以拒绝所有越权请求。
3.根据权利要求1所述的系统,其特征在于,所述存储引擎中通过默克尔树和B+树结合的数据结构进行页面的索引,在该数据结构中,父节点中包括了其所有子节点的数据索引、对应页面的ID和哈希值。
4.根据权利要求1所述的系统,其特征在于,在(3.2)中,将页面调入所述第一缓冲池之前,若所述第一缓冲池已满,则选择一个替换页面,将其加密后存入第二缓冲池。
5.根据权利要求1所述的系统,其特征在于,使用最少最近算法选择替换页面。
6.根据权利要求5所述的系统,其特征在于,以访问路径相反的顺序释放页面。
7.根据权利要求4所述的系统,其特征在于,在页面从所述第一缓冲池中被替换出时,重新计算页面哈希值。
8.一种用于实现如权利要求1-7中任一项所述的基于可信硬件的加密数据库系统的方法,其特征在于,应用于内部服务器端中的数据库语法解析器,该方法包括:
与存储引擎建立一安全信道;
接收后台应用发送的数据库语句,其中所述数据库语句由所述后台应用接收客户端发送的查询请求后生成得到;
解析所述数据库语句并生成对应的数据访问请求,以使得存储引擎接收所述数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库语法解析器,其中与所述存储引擎在所述安全信道内进行通信;
对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,以使得后台应用完成请求返回。
9.一种用于如权利要求1-7中任一项所述的实现基于可信硬件的加密数据库系统的方法,其特征在于,应用于云服务器端中的存储引擎,包括:
与内部服务器端建立一安全信道;
接收数据访问请求并在可信执行环境中处理数据请求,完成数据读取、写入、更新、删除并将请求结果返回给数据库语法解析器,其中客户端向后台应用发起查询请求,所述后台应用接收所述查询请求并生成相应的数据库语句,数据库语法解析器解析所述数据库语句并生成对应的数据访问请求;数据库语法解析器对所述请求结果进行处理并形成查询结果,将查询结果返回给后台应用,以使得后台应用完成请求返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211743343.8A CN115801446B (zh) | 2022-12-29 | 2022-12-29 | 基于可信硬件的加密数据库系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211743343.8A CN115801446B (zh) | 2022-12-29 | 2022-12-29 | 基于可信硬件的加密数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115801446A CN115801446A (zh) | 2023-03-14 |
CN115801446B true CN115801446B (zh) | 2023-05-23 |
Family
ID=85428457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211743343.8A Active CN115801446B (zh) | 2022-12-29 | 2022-12-29 | 基于可信硬件的加密数据库系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115801446B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117997656B (zh) * | 2024-04-03 | 2024-06-21 | 浙江大学 | 一种工控数据全生命周期安全管控系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809413A (zh) * | 2015-05-13 | 2015-07-29 | 上海瓶钵信息科技有限公司 | 基于TrustZone技术的移动平台可信用户界面框架 |
CN107370725A (zh) * | 2017-06-21 | 2017-11-21 | 西安电子科技大学 | 一种云环境下通用加密数据库的存取方法及系统 |
CN112948810A (zh) * | 2021-05-12 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 一种可信计算程序调用方法、装置、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3293656A1 (en) * | 2016-09-13 | 2018-03-14 | Gemalto Sa | Method for controlling access to a trusted application in a terminal |
CN107743133B (zh) * | 2017-11-30 | 2020-06-09 | 中国石油大学(北京) | 移动终端及其基于可信安全环境的访问控制方法和系统 |
CN108768978B (zh) * | 2018-05-16 | 2020-12-11 | 浙江大学 | 一种基于sgx的远端存储服务方法及系统 |
CN109361668B (zh) * | 2018-10-18 | 2021-06-11 | 国网浙江省电力有限公司 | 一种数据可信传输方法 |
CN109947666B (zh) * | 2019-02-27 | 2023-04-25 | 余炀 | 可信执行环境缓存隔离方法及装置、电子设备和存储介质 |
US11048816B2 (en) * | 2019-04-02 | 2021-06-29 | Sap Se | Secure database utilizing dictionary encoding |
CN113609492B (zh) * | 2021-08-05 | 2023-10-31 | 上海交通大学 | 面向tee加密数据库接口攻击的防御方法和系统 |
-
2022
- 2022-12-29 CN CN202211743343.8A patent/CN115801446B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809413A (zh) * | 2015-05-13 | 2015-07-29 | 上海瓶钵信息科技有限公司 | 基于TrustZone技术的移动平台可信用户界面框架 |
CN107370725A (zh) * | 2017-06-21 | 2017-11-21 | 西安电子科技大学 | 一种云环境下通用加密数据库的存取方法及系统 |
CN112948810A (zh) * | 2021-05-12 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 一种可信计算程序调用方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115801446A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018367363B2 (en) | Processing data queries in a logically sharded data store | |
US20210099287A1 (en) | Cryptographic key generation for logically sharded data stores | |
EP2731041B1 (en) | Computer system for storing and retrieval of encrypted data items, client computer, computer program product and computer-implemented method | |
Li et al. | A hybrid cloud approach for secure authorized deduplication | |
US7694134B2 (en) | System and method for encrypting data without regard to application | |
CN110489996B (zh) | 一种数据库数据安全管理方法及系统 | |
US7810133B2 (en) | Encrypting operating system | |
US9558366B2 (en) | Computer system for storing and retrieval of encrypted data items, client computer, computer program product and computer-implemented method | |
EP3665608A1 (en) | Method and system of preserving privacy for usage of lightweight blockchain clients | |
US20060236104A1 (en) | Method and apparatus for encrypting and decrypting data in a database table | |
US20080301451A1 (en) | Verifying authenticity of an attribute value signature | |
EP2076865A1 (en) | Encrypting and decrypting database records | |
CA3065767C (en) | Cryptographic key generation for logically sharded data stores | |
CN115801446B (zh) | 基于可信硬件的加密数据库系统 | |
US7895441B2 (en) | LDAP grouping for digital signature creation | |
US7984490B2 (en) | Method for issuing attribute certificate from an LDAP entry | |
WO2018034192A1 (ja) | 情報処理装置、情報処理方法、及び、記録媒体 | |
Funde et al. | HORAM: Hybrid oblivious random access memory scheme for secure path hiding in distributed environment | |
WO2023069444A1 (en) | Personal data protection | |
WO2024028856A1 (en) | A hardware secure enclave and blockchain based system and method for securing and monetising access to data. | |
CN116743488A (zh) | 数据安全交换方法、装置、设备、存储介质及程序产品 | |
KR20020034862A (ko) | 컴퓨터의 응용프로그램의 비밀값 제어방법 | |
JP2000305900A (ja) | ネットワークシステムにおけるユーザ認証方法およびシステム |
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 |