CN112699132B - 安全模块解密的方法以及装置 - Google Patents
安全模块解密的方法以及装置 Download PDFInfo
- Publication number
- CN112699132B CN112699132B CN202110299518.XA CN202110299518A CN112699132B CN 112699132 B CN112699132 B CN 112699132B CN 202110299518 A CN202110299518 A CN 202110299518A CN 112699132 B CN112699132 B CN 112699132B
- Authority
- CN
- China
- Prior art keywords
- user
- security module
- client
- connection
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000004044 response Effects 0.000 claims description 31
- 238000013475 authorization Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 101150042248 Mgmt gene Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
Abstract
本说明书实施例提供安全模块解密的方法以及装置,其中,所述安全模块解密的方法应用于服务器,所述服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,所述方法包括:安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识;安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;安全模块使用所述用户根密钥解密数据密钥密文。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种安全模块解密的方法。本说明书一个或者多个实施例同时涉及一种安全块解密的装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
加密数据库旨在消除数据库在运行中任何时刻的数据泄露隐患,保证数据在传输、使用和存储全程以密文形式存在,同时仍然具备完整的数据库查询能力。完全杜绝云平台以及运维人员接触到明文数据的可能,保证客户对其云上数据的完全所有权。
但是,目前加密数据库系统的安全模块在提供可信计算能力时,每次都需要用户通过客户端SDK参与提供根密钥来解密数据密钥密文,不仅用户操作麻烦,还会导致加密数据库系统、甚至客户端的一些服务都无法正常工作。
发明内容
有鉴于此,本说明书实施例提供了一种安全模块解密的方法。本说明书一个或者多个实施例同时涉及一种安全模块解密的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种安全模块解密的方法,应用于服务器,所述服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,所述方法包括:安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识;安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;安全模块使用所述用户根密钥解密数据密钥密文。
可选地,所述方法还包括:响应于与用户使用的客户端首次建立连接,将所述用户提交的根密钥密文传递到安全模块;安全模块对所述根密钥密文解密,得到根密钥,并在缓存内建立所述客户端的用户唯一标识到所述用户根密钥的索引。
可选地,所述安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,包括:后台服务在指定操作类别下获取用户唯一标识的密文;所述后台服务将所述用户唯一标识的密文作为安全模块的接口的入参,调用安全模块的接口;安全模块响应于所述接口被调用,获取所述用户唯一标识的密文,并对所述用户唯一标识的密文进行解密,得到所述用户唯一标识。
可选地,所述安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,包括:响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系;安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识。
可选地,所述响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系,包括:响应于与客户端建立连接,在确定连接的客户端已获得用户对根密钥授权的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。
可选地,所述响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系,包括:响应于与客户端建立连接,在确定连接的客户端是经由客户端连接池化或者经由中间件建立连接的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。
可选地,所述方法还包括:根据分配给所述连接的安全模块和服务会话上下文,将安全模块唯一标识和服务会话上下文唯一标识关联到所述对应关系中。
可选地,所述安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识,包括:安全模块的接口根据传入的连接唯一标识,从所述对应关系中确定被分配的安全模块以及对应的服务会话上下文;被分配的安全模块使用对应的服务会话上下文,根据所述服务会话上下文唯一标识从所述对应关系中获取对应的用户唯一标识。
根据本说明书实施例的第二方面,提供了一种安全模块解密的装置,配置于服务器,所述服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,所述装置包括:用户标识获取模块,被配置为在安全模块内响应于被调用,根据传入的参数获取用户的用户唯一标识;检索模块,被配置为在安全模块内利用所述用户唯一标识从缓存检索得到用户根密钥;解密模块,被配置为在安全模块内使用所述用户根密钥解密数据密钥密文。
根据本说明书实施例的第三方面,提供了一种数据库系统,包括:安全模块以及数据库服务端,其中,所述安全模块内预先缓存了用户唯一标识到用户根密钥的索引。所述数据库服务端,用于通过所述安全模块的服务接口调用所述安全模块进行可信计算。所述安全模块,用于响应于被调用,根据传入的参数获取用户的用户唯一标识,利用所述用户唯一标识从缓存检索得到用户根密钥,使用所述用户根密钥解密数据密钥密文。
根据本说明书实施例的第四方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,所述安全模块内预先缓存了用户唯一标识到用户根密钥的索引;安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;安全模块使用所述用户根密钥解密数据密钥密文。
根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现本说明书任意实施例所述安全模块解密的方法的步骤。
本说明书一个实施例实现了安全模块解密的方法,由于该方法在服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,安全模块利用所述用户唯一标识从缓存检索得到用户根密钥,使用所述用户根密钥解密,因此,该方法只需要用户全局一次将用户根密钥传递到安全模块内,即可使安全模块在后续的服务中通过用户唯一标识检索到对应的用户根密钥来解密数据密钥密文,有效减少了用户操作,而且避免了加密数据库系统、客户端等一些服务无法提供根密钥的限制,保证了服务的可用性。
附图说明
图1是本说明书一个实施例提供的一种安全模块解密的方法的流程图;
图2是本说明书一个实施例提供的一种加密数据库系统的框图;
图3是本说明书一个实施例提供的一种安全模块解密的方法的处理过程流程图;
图4是本说明书一个实施例提供的一种安全模块解密的装置的结构示意图;
图5是本说明书另一个实施例提供的一种安全模块解密的装置的结构示意图;
图6是本说明书一个实施例提供的一种数据库系统的框图;
图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
TEE:Trusted Execution Environment,可信执行环境。该可信执行环境通常通过提供与外界隔离的安全执行环境,保护其内代码和数据不会被泄露或恶意篡改。
Enclave:安全模块,可以是由TEE提供的可信执行环境,基于TEE的安全特性保证其上内容不会被外部获取。Enclave可以是任意TEE平台提供的enclave实现,例如SGXenclave、FPGA enclave、或者TrustZone enclave。
根密钥,用于解密数据密钥密文。
数据密钥,用于解密用户的敏感数据密文。
enclaveID:安全模块唯一标识,TEE enclave实例ID,创建enclave实例时唯一分配。
contextID:服务会话上下文唯一标识,同一个TEE enclave实例下,服务会话的上下文ID,在同一个enclave内唯一分配。
sessionID:服务会话唯一标识,数据库服务端内核创建的TEE会话ID。enclaveID和contextID能够全局唯一确定一个会话,即sessionID是全局唯一的。
OwnerID:用户唯一标识,是用户身份ID,不同用户的OwnerID是全局唯一的。
在本说明书中,提供了一种安全模块解密的方法,本说明书同时涉及一种安全模块解密的装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种安全模块解密的方法的流程图。所述方法应用于服务器,所述服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引。所述方法包括步骤102至步骤106。
步骤102:安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识。
步骤104:安全模块利用所述用户唯一标识从缓存检索得到用户根密钥。
步骤106:安全模块使用所述用户根密钥解密数据密钥密文。
由于该方法在服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,安全模块利用所述用户唯一标识从缓存检索得到用户根密钥,使用所述用户根密钥解密,因此,该方法只需要用户全局一次将用户根密钥传递到安全模块内,即可使安全模块在后续的服务中通过用户唯一标识检索到对应的用户根密钥来解密数据密钥密文,有效减少了用户操作,而且避免了对加密数据库系统、客户端等一些服务提供根密钥的限制,保证了服务的可用性。
为了使本说明书实施例提供的方法更加易于理解,下面,以加密数据库系统为例,对所述服务器上部署安全模块的一种可能的实施方式进行示例性说明。例如,如图2所示的加密数据库系统的框图所示,加密数据库系统的部署如下:
服务器上可以设置用于接入客户端“Client”访问的数据库访问接口“SQL QueryAPI”。“SQL Query API”可以与数据库服务端的内核“DB Kernel”通信。客户端可以经由与数据库服务端的标准数据库连接“Standard DB connection”发出访问请求。
客户端可以通过如图2所示的“RA”安全机制发送根密钥给安全模块。需要说明的是,客户端通过“RA”安全机制发送根密钥给安全模块的传输路径实际上可以是经由数据库服务端转发给安全模块的,但是,由于数据库服务端并不能得到客户端通过“RA”安全机制传输的根密钥明文,因此,图2中直接以虚线绘制来表示逻辑上的传输路径。客户端对用户数据的访问请求、对密钥库“Key Store”的访问请求可以以SQL的方式发送,SQL携带的数据中可以具有类型信息,以便“SQL Query API”根据SQL携带的类型信息区分访问的是用户数据还是密钥库中的表。例如,类型信息可以是如图2中所示的“key mgmt”或者“user SQL”。如果携带的是“key mgmt”,表示该请求是针对密钥库“Key Store”中表的访问,如果携带的是“user SQL”,表示该请求是针对用户数据的访问。数据库服务端可以根据实际功能需求情况定义并实现各自的非可信访问接口即图2所示的“Untrusted APIs”。针对用户数据的可信计算,可以通过“Untrusted APIs”来调用如图2所示的统一服务接口“Uniformed TEEECall”,由安全模块中的一个或多个对敏感数据进行可信计算。图2中,用户可信区域以实线绘制,用户不可信区域以虚线绘制。
根据本说明书实施例提供的方法,安全模块如图2中的“TEE enclave”内可以预先缓存了用户唯一标识“Owner ID”如“4326”到用户根密钥的索引。安全模块响应于被调用,根据传入的参数获取“Owner ID”的值“4326”检索到对应的用户根密钥,使用所述用户根密钥解密数据密钥密文。
可以理解的是,加密数据库为了确保运行中不存在数据泄露隐患,数据在传输、使用和存储全程以密文形式存在,同时仍然具备完整的数据库查询能力。完全杜绝云平台以及运维人员接触到明文数据的可能,保证客户对其云上数据的完全所有权,确保:授权用户可以通过现有协议正常读写云端数据库内的数据;未授权用户无法获得被保护用户的明文数据;云端数据库在提供数据服务的过程中,全程无法获得用户的明文数据。在如图2所示的全加密数据库系统设计下,用户建立一个SQL连接后,在使用加密数据库前,可以先通过客户端SDK、经由SQL连接将用户根密钥动态的、安全发送到服务端TEE enclave内,后续TEEenclave可以利用传入的参数获取用户唯一标识,从而检索到对应的用户根密钥,持续提供可信计算能力。
本说明书一个或多个实施例中,为了便于及时建立用户唯一标识到用户根密钥的索引,所述方法还包括:服务器响应于与用户使用的客户端首次建立连接,将所述用户提交的根密钥密文传递到安全模块。安全模块对所述根密钥密文解密,得到根密钥,并在缓存内建立所述客户端的用户唯一标识到所述用户根密钥的索引。具体地,例如,每个用户首次连接数据库实例时,可以通过全加密数据库客户端SDK将用户根密钥传递到TEE enclave,TEEenclave将用户根密钥与用户唯一标识对应地插入到TEE enclave内的缓存索引中。之后,该用户的SQL连接,都可以直接访问加密数据库,可以不再经由客户端SDK。可以理解的是,用户唯一标识到用户根密钥的索引也可以按照用户的需要,在一次或多次连接之后一次性构建,本说明书实施例对此并不进行限制。
需要说明的是,本说明书实施例提供的方法的应用场景并不进行限制。根据不同应用场景的特点,安全模块获取用户的唯一标识的具体实施方式可以有所不同。下面,结合两种可能的应用场景进行示意性说明。
例如,根据本说明书实施例提供的方法,可以用于解决数据库服务端的某些后台服务无法正常工作的问题。具体地,数据库服务端的后台服务可以在指定操作类别下获取用户唯一标识的密文,后台服务将所述用户唯一标识的密文作为安全模块的接口的入参,调用安全模块的接口,安全模块响应于所述接口被调用,获取所述用户唯一标识的密文,并对所述用户唯一标识的密文进行解密,得到所述用户唯一标识。可以理解的是,安全模块具有解密所述用户唯一标识的密文对应的密钥。其中,所述指定操作类别可以根据实施场景需要进行设置,例如,PG下的后台服务auto vacuum机制的操作。根据该实施例,能够使数据库服务端的后台服务正常进行工作。
再例如,根据本说明书实施例提供的方法,可以用于解决访问服务端的连接受限的问题。可以理解的是,服务端会为新连接创建TEE session(服务会话),并分配对应的sessionID(连接唯一标识)。而对于一个连接来说,其服务会话中具有用户唯一标识信息,因此,在创建服务会话之后,能够构建出连接唯一标识与用户唯一标识的对应关系。因此,安全模块可以根据连接唯一标识获取对应的用户唯一标识,再通过用户唯一标识检索到对应的用户根密钥,从而解决连接受限的问题。例如,可以在安全模块的接口如图2所示的Uniformed TEE ECall中,扩展一个连接唯一标识字段信息,使连接唯一标识作为入参传入安全模块。具体地,例如,所述安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,可以包括:响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系;安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识。在该实施例中,将用户根密钥资源化、建立用户唯一标识到用户根密钥的索引,通过在可信计算调用时,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识,从而继续可信计算过程。因此,本说明书实施例提供的方法将原来有状态的可信计算转变为无状态的,只需要全局一次性地将用户根密钥传递到安全模块即可,后续例如SQL连接可以无状态的进行可信计算,解决了连接受限的问题。
例如,所述响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系,可以包括:响应于与客户端建立连接,在确定连接的客户端已获得用户对根密钥授权的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。例如,在客户端生态工具提供服务的情况下,为其提供可信计算的TEE enclave所在SQL连接会话并不是通过全加密数据库客户端SDK建立的,因此,为其提供计算的TEE enclave无法从客户端获取用户根密钥。应用本实施例提供的方法之后,为其提供计算的TEE enclave可以根据用户授权,利用对应关系检索用户根密钥,从而客户端生态工具(例如iDB、DTS)、DBA等可以正常提供服务。例如,根据该实施例,iDB工具能够处理涉及加密字段计算的查询;DBA的运维能力也得以扩展,在此不再赘述。
又例如,所述响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系,可以包括:响应于与客户端建立连接,在确定连接的客户端是经由客户端连接池化或者经由中间件建立连接的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。具体地,例如,由于DataSource或者TDDL通常是自动管理SQL连接(例如动态新建/删除SQL连接),根据该实施例,在客户端连接池化(例如DataSource)或者经由中间件(例如TDDL)进行访问之前,只需要全局传递一次用户根密钥即可,无需为每一个SQL连接动态重复初始化。
需要说明的是,针对同一个enclave实例,上层是数据库的会话。enclave面向的是数据库系统,数据库系统上面可能会有多个用户发起的连接,所以从enclave实例和用户连接来说,是一对多的关系。为了让enclave能够区分当前服务的是哪一连接,所以引入服务会话(context)唯一标识即contextID,从而enclave能够知道当前服务的是哪个用户的session。基于此,本说明书一个或多个实施例中,所述方法还可以包括:根据分配给所述连接的安全模块和服务会话上下文,将安全模块唯一标识和服务会话上下文唯一标识关联到所述对应关系中。根据该实施例,使得用户的连接、被分配的安全模块、服务会话上下文以及对应的用户唯一标识整个映射链路得以打通,便于安全模块基于该对应关系获取相应信息。而且,对于上层数据库服务端来说,其提供连接唯一标识即可使安全模块的接口根据上述对应关系获知连接被分配到的enclave实例、服务会话上下文以及用户唯一标识,有效减轻了数据库服务端的逻辑复杂度,提高服务效率。
例如,所述安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识,可以包括:安全模块的接口根据传入的连接唯一标识,从所述对应关系中确定被分配的安全模块以及对应的服务会话上下文;被分配的安全模块使用对应的服务会话上下文,根据所述服务会话上下文唯一标识从所述对应关系中获取对应的用户唯一标识。例如,TEE session服务会话创建过程中,可以自动新建一个enclave context,并分配一个enclave内唯一的contextID。创建新enclave context时,可以将contextID关联到连接唯一标识与用户唯一标识的对应关系中,因此,每个contextID关联了用户相关信息,从而安全模块可以通过contextID以及OwnerID索引到用户根密钥。
需要说明的是,本说明书实施例所述服务会话上下文可以是由服务端在服务会话创建之后,唯一分配绑定给服务会话的,也可以由安全模块的接口在被调用时根据策略动态分配,本说明书实施例提供的方法对此并不进行限制。
为了使本说明书实施例提供的方法更加易于理解,下述结合附图3,以本说明书提供的安全模块解密的方法在加密数据库系统的应用为例,对所述安全模块解密的方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种安全模块解密的方法的处理过程流程图,具体步骤包括步骤302至步骤316。
步骤302:数据库服务端与客户端建立连接。
步骤304:数据库服务端为所述连接创建TEE session,分配session ID。
步骤306:数据库服务端为session分配enclave,创建对应的context以及contextID。
步骤308:数据库服务端建立session ID、用户唯一标识、enclave、以及contextID之间的对应关系。
步骤310:数据库服务端接收客户端经由所述连接发送的SQL请求。
例如,用户发出SQL查询,数据库服务端的内核可以解析SQL并生成查询计划,可信计算部分调用Untrusted API。
步骤312:数据库服务端根据所述SQL请求,将session ID作为入参,调用安全模块的接口进行可信计算。
例如,在Untrusted API内,可以根据当前连接的服务会话中的信息,将可信计算请求、以及sessionID信息一起作为ECall参数发起调用。
步骤314:安全模块的接口根据传入的session ID,以及上述对应关系,将可信计算请求分配给对应的安全模块以及对应的context。
步骤316:安全模块使用对应的context,从所述对应关系中获取对应的用户唯一标识,在缓存中查找到对应的用户根密钥,使用用户根密钥执行可信计算。
例如,在TEE enclave内,完成安全检查后,可以根据sessionID和/或contextID信息检索到OwnerID,再通过OwnerID在根密钥缓存索引中找到对应根密钥,未找到返回对应错误信息。
可见,在加密数据库系统中应用本实施例提供的方法,SQL连接会话内的TEEenclave变为无状态要求,也即不再必须要求经由全加密数据库客户端SDK获取用户根密钥,从而解除了数据库服务端部分功能的限制,例如PG下的后台服务auto vacuum机制,解除了客户端生态工具(例如iDB、DTS)部分功能的限制;对用户应用友好,在客户端连接池化(例如DataSource)或者经由中间件(例如TDDL)进行访问时,无须为每一个SQL连接动态重复初始化。
与上述方法实施例相对应,本说明书还提供了安全模块解密的装置实施例,图4示出了本说明书一个实施例提供的一种安全模块解密的装置的结构示意图。如图4所示,该装置包括:用户标识获取模块402、检索模块404及解密模块406。
该用户标识获取模块402,可以被配置为在安全模块内响应于被调用,根据传入的参数获取用户的用户唯一标识。
该检索模块404,可以被配置为在安全模块内利用所述用户唯一标识从缓存检索得到用户根密钥。
该解密模块406,可以被配置为在安全模块内使用所述用户根密钥解密数据密钥密文。
由于该装置在服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,安全模块利用所述用户唯一标识从缓存检索得到用户根密钥,使用所述用户根密钥解密,因此,该方法只需要用户全局一次将用户根密钥传递到安全模块内,即可使安全模块在后续的服务中通过用户唯一标识检索到对应的用户根密钥来解密数据密钥密文,有效减少了用户操作,而且避免了对加密数据库系统、客户端等一些服务提供根密钥的限制,保证了服务的可用性。
图5示出了本说明书另一个实施例提供的一种安全模块解密的装置的结构示意图。如图5所示,本说明书一个或多个实施例中,为了便于及时建立用户唯一标识到用户根密钥的索引,所述装置还可以包括:根密钥获取模块408及索引建立模块410。
该根密钥获取模块408,可以被配置为响应于与用户使用的客户端首次建立连接,将所述用户提交的根密钥密文传递到安全模块。
该索引建立模块410,可以被配置为在安全模块内对所述根密钥密文解密,得到根密钥,并在缓存内建立所述客户端的用户唯一标识到所述用户根密钥的索引。
需要说明的是,本说明书实施例提供的装置的应用场景并不进行限制。根据不同应用场景的特点,安全模块获取用户的唯一标识的具体实施方式可以有所不同。下面,结合两种可能的应用场景进行示意性说明。
例如,根据本说明书实施例提供的装置,可以用于解决数据库服务端的某些后台服务无法正常工作的问题。具体地,所述用户标识获取模块402可以包括:后台服务获取子模块4022、后台服务调用子模块4024及第一标识获取子模块4026。
该后台服务获取子模块4022,可以被配置为在后台服务内,在指定操作类别下获取用户唯一标识的密文。
该后台服务调用子模块4024,可以被配置为在所述后台服务内将所述用户唯一标识的密文作为安全模块的接口的入参,调用安全模块的接口。
该第一标识获取子模块4026,可以被配置为在安全模块内响应于所述接口被调用,获取所述用户唯一标识的密文,并对所述用户唯一标识的密文进行解密,得到所述用户唯一标识。
再例如,根据本说明书实施例提供的装置,可以用于解决访问服务端的连接受限的问题。具体地,所述用户标识获取模块402可以包括:连接关系构建子模块4028及第二标识获取子模块4030。
该连接关系构建子模块4028,可以被配置为响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系;
该第二标识获取子模块4030,可以被配置为安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识。
可见,根据本实施例提供的装置,只需要全局一次性地将用户根密钥传递到安全模块即可,后续例如SQL连接可以无状态的进行可信计算,解决了连接受限的问题。
例如,所述连接关系构建子模块4028,可以被配置为响应于与客户端建立连接,在确定连接的客户端已获得用户对根密钥授权的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。
再例如,所述连接关系构建子模块4028,可以被配置为响应于与客户端建立连接,在确定连接的客户端是经由客户端连接池化或者经由中间件建立连接的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。
本说明书一个或多个实施例中,所述装置还可以包括:上下文关联模块412,可以被配置为根据分配给所述连接的安全模块和服务会话上下文,将安全模块唯一标识和服务会话上下文唯一标识关联到所述对应关系中。相应地,例如,所述第二标识获取子模块4030可以包括:会话上下文确定子模块4032及上下文标识检索子模块4034。
该会话上下文确定子模块4032,可以被配置为在安全模块的接口内根据传入的连接唯一标识,从所述对应关系中确定被分配的安全模块以及对应的服务会话上下文。
该上下文标识检索子模块4034,可以被配置为在被分配的安全模块内,使用对应的服务会话上下文,根据所述服务会话上下文唯一标识从所述对应关系中获取对应的用户唯一标识。
根据该实施例,使得用户的连接、被分配的安全模块、服务会话上下文以及对应的用户唯一标识整个映射链路得以打通,便于安全模块基于该对应关系获取相应信息。而且,对于上层数据库服务端来说,其提供连接唯一标识即可使安全模块的接口根据上述对应关系获知连接被分配到的enclave实例、服务会话上下文以及用户唯一标识,有效减轻了数据库服务端的逻辑复杂度,提高服务效率。
上述为本实施例的一种安全模块解密的装置的示意性方案。需要说明的是,该安全模块解密的装置的技术方案与上述的安全模块解密的方法的技术方案属于同一构思,安全模块解密的装置的技术方案未详细描述的细节内容,均可以参见上述安全模块解密的方法的技术方案的描述。
图6示出了根据本说明书一个实施例提供的数据库系统的框图。如图6所示,所述数据库系统可以包括:安全模块602以及数据库服务端604。所述安全模块602内预先缓存了用户唯一标识到用户根密钥的索引。
所述数据库服务端604,用于通过所述安全模块的服务接口调用所述安全模块602进行可信计算。
所述安全模块602,用于响应于被调用,根据传入的参数获取用户的用户唯一标识,利用所述用户唯一标识从缓存检索得到用户根密钥,使用所述用户根密钥解密数据密钥密文。
上述为本说明书实施例的一种数据库系统的示意性方案。需要说明的是,该数据库系统的技术方案与上述安全模块解密的方法的技术方案属于同一构思,数据库系统未详细描述的细节内容,均可以参见上述安全模块解密的方法的技术方案的描述。
图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
其中,处理器720用于执行如下计算机可执行指令:
安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,所述安全模块内预先缓存了用户唯一标识到用户根密钥的索引;
安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;
安全模块使用所述用户根密钥解密数据密钥密文。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的安全模块解密的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述安全模块解密的方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,所述安全模块内预先缓存了用户唯一标识到用户根密钥的索引;
安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;
安全模块使用所述用户根密钥解密数据密钥密文。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的安全模块解密的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述安全模块解密的方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (12)
1.一种安全模块解密的方法,应用于服务器,所述服务器上设置了用于接入客户端访问密钥库以及数据库服务端的数据库访问接口以及位于不可信区域的密钥库,所述数据库服务端,用于通过所述服务器的安全模块的服务接口调用所述安全模块进行可信计算;所述服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,其中,所述用户根密钥是所述服务器在与用户使用的客户端一次或多次连接之后,将所述用户提交的根密钥密文传递到安全模块的,所述方法包括:
数据库访问接口根据接收到的访问请求包含的类型信息区分访问用户数据或者密钥库;
针对用户数据的可信计算,数据库服务端通过非可信访问接口调用安全模块的服务接口;
安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识;
安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;
安全模块使用所述用户根密钥解密数据密钥密文,所述数据密钥,用于解密用户的敏感数据密文。
2.根据权利要求1所述的方法,所述方法还包括:
响应于与用户使用的客户端首次建立连接,将所述用户提交的根密钥密文传递到安全模块;
安全模块对所述根密钥密文解密,得到根密钥,并在缓存内建立所述客户端的用户唯一标识到所述用户根密钥的索引。
3.根据权利要求1所述的方法,所述安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,包括:
后台服务在指定操作类别下获取用户唯一标识的密文;
所述后台服务将所述用户唯一标识的密文作为安全模块的接口的入参,调用安全模块的接口;
安全模块响应于所述接口被调用,获取所述用户唯一标识的密文,并对所述用户唯一标识的密文进行解密,得到所述用户唯一标识。
4.根据权利要求1所述的方法,所述安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,包括:
响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系;
安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识。
5.根据权利要求4所述的方法,所述响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系,包括:
响应于与客户端建立连接,在确定连接的客户端已获得用户对根密钥授权的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。
6.根据权利要求4所述的方法,所述响应于与客户端建立连接,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系,包括:
响应于与客户端建立连接,在确定连接的客户端是经由客户端连接池化或者经由中间件建立连接的情况下,构建所述连接的连接唯一标识与所述客户端的用户唯一标识之间的对应关系。
7.根据权利要求4所述的方法,还包括:
根据分配给所述连接的安全模块和服务会话上下文,将安全模块唯一标识和服务会话上下文唯一标识关联到所述对应关系中。
8.根据权利要求7所述的方法,所述安全模块响应于被调用,根据传入的连接唯一标识,从所述对应关系中获取对应的用户唯一标识,包括:
安全模块的接口根据传入的连接唯一标识,从所述对应关系中确定被分配的安全模块以及对应的服务会话上下文;
被分配的安全模块使用对应的服务会话上下文,根据所述服务会话上下文唯一标识从所述对应关系中获取对应的用户唯一标识。
9.一种安全模块解密的装置,配置于服务器,所述服务器上设置了用于接入客户端访问密钥库以及数据库服务端的数据库访问接口以及位于不可信区域的密钥库,所述数据库访问接口,用于根据接收到的访问请求包含的类型信息区分访问用户数据或者密钥库;所述数据库服务端,用于通过所述服务器的安全模块的服务接口调用所述安全模块进行可信计算,其中,针对用户数据的可信计算,数据库服务端通过非可信访问接口调用安全模块的服务接口;所述服务器的安全模块内预先缓存了用户唯一标识到用户根密钥的索引,其中,所述用户根密钥是所述服务器在与用户使用的客户端一次或多次连接之后,将所述用户提交的根密钥密文传递到安全模块的,所述装置包括:
用户标识获取模块,被配置为在安全模块内响应于被调用,根据传入的参数获取用户的用户唯一标识;
检索模块,被配置为在安全模块内利用所述用户唯一标识从缓存检索得到用户根密钥;
解密模块,被配置为在安全模块内使用所述用户根密钥解密数据密钥密文,所述数据密钥,用于解密用户的敏感数据密文。
10.一种数据库系统,包括:安全模块以及数据库服务端,其中,服务器上设置了用于接入客户端访问密钥库以及数据库服务端的数据库访问接口以及位于不可信区域的密钥库;所述安全模块内预先缓存了用户唯一标识到用户根密钥的索引,其中,所述用户根密钥是所述服务器在与用户使用的客户端一次或多次连接之后,将所述用户提交的根密钥密文传递到安全模块的;
所述数据库访问接口,用于根据接收到的访问请求包含的类型信息区分访问用户数据或者密钥库;
所述数据库服务端,用于通过所述安全模块的服务接口调用所述安全模块进行可信计算,其中,针对用户数据的可信计算,数据库服务端通过非可信访问接口调用安全模块的服务接口;
所述安全模块,用于响应于被调用,根据传入的参数获取用户的用户唯一标识,利用所述用户唯一标识从缓存检索得到用户根密钥,使用所述用户根密钥解密数据密钥密文,所述数据密钥,用于解密用户的敏感数据密文。
11.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
安全模块响应于被调用,根据传入的参数获取用户的用户唯一标识,所述安全模块内预先缓存了用户唯一标识到用户根密钥的索引,其中,所述用户根密钥是服务器在与用户使用的客户端一次或多次连接之后,将所述用户提交的根密钥密文传递到安全模块的;
安全模块利用所述用户唯一标识从缓存检索得到用户根密钥;
安全模块使用所述用户根密钥解密数据密钥密文,所述数据密钥,用于解密用户的敏感数据密文;
其中,服务器上设置了用于接入客户端访问密钥库以及数据库服务端的数据库访问接口以及位于不可信区域的密钥库,所述数据库访问接口,用于根据接收到的访问请求包含的类型信息区分访问用户数据或者密钥库;所述数据库服务端,用于通过所述服务器的所述安全模块的服务接口调用所述安全模块进行可信计算,其中,针对用户数据的可信计算,数据库服务端通过非可信访问接口调用安全模块的服务接口。
12.一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现权利要求1至8任意一项所述安全模块解密的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110299518.XA CN112699132B (zh) | 2021-03-22 | 2021-03-22 | 安全模块解密的方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110299518.XA CN112699132B (zh) | 2021-03-22 | 2021-03-22 | 安全模块解密的方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112699132A CN112699132A (zh) | 2021-04-23 |
CN112699132B true CN112699132B (zh) | 2022-04-22 |
Family
ID=75515273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110299518.XA Active CN112699132B (zh) | 2021-03-22 | 2021-03-22 | 安全模块解密的方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699132B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302449A (zh) * | 2016-08-15 | 2017-01-04 | 中国科学院信息工程研究所 | 一种密文存储与密文检索开放云服务方法和系统 |
CN107276756A (zh) * | 2017-07-27 | 2017-10-20 | 深圳市金立通信设备有限公司 | 一种获取根密钥的方法及服务器 |
CN108012266A (zh) * | 2016-10-31 | 2018-05-08 | 华为技术有限公司 | 一种数据传输方法及相关设备 |
CN109040109A (zh) * | 2018-08-31 | 2018-12-18 | 国鼎网络空间安全技术有限公司 | 基于密钥管理机制的数据交易方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108429719B (zh) * | 2017-02-14 | 2020-12-01 | 华为技术有限公司 | 密钥保护方法及装置 |
-
2021
- 2021-03-22 CN CN202110299518.XA patent/CN112699132B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302449A (zh) * | 2016-08-15 | 2017-01-04 | 中国科学院信息工程研究所 | 一种密文存储与密文检索开放云服务方法和系统 |
CN108012266A (zh) * | 2016-10-31 | 2018-05-08 | 华为技术有限公司 | 一种数据传输方法及相关设备 |
CN107276756A (zh) * | 2017-07-27 | 2017-10-20 | 深圳市金立通信设备有限公司 | 一种获取根密钥的方法及服务器 |
CN109040109A (zh) * | 2018-08-31 | 2018-12-18 | 国鼎网络空间安全技术有限公司 | 基于密钥管理机制的数据交易方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112699132A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109981561B (zh) | 单体架构系统迁移到微服务架构的用户认证方法 | |
US10402579B2 (en) | Systems, methods, and apparatus to provide private information retrieval | |
CN112699399B (zh) | 加密数据库系统、实现加密数据库系统的方法以及装置 | |
US20050266798A1 (en) | Linking security association to entries in a contact directory of a wireless device | |
US8862753B2 (en) | Distributing overlay network ingress information | |
CN111447220B (zh) | 认证信息管理方法、应用系统的服务端及计算机存储介质 | |
JP6096376B2 (ja) | アクセス制御方法、装置、プログラム、及び記録媒体 | |
US10841096B2 (en) | Encrypted self-identification using a proxy server | |
CN113034154A (zh) | 身份认证方法、实现免登授权组件的方法及各自装置 | |
US9596217B2 (en) | Manage encrypted network traffic using spoofed addresses | |
CN113642014A (zh) | 一种基于混合云的数据访问系统及公有云服务器 | |
CN111163093A (zh) | 联盟区块链中从外部数据源获取外部数据的方法和装置 | |
CN112699132B (zh) | 安全模块解密的方法以及装置 | |
CN114880698B (zh) | 数据库访问方法和装置、计算设备和计算机程序产品 | |
CN116010529B (zh) | 数据处理方法及系统 | |
US20230353362A1 (en) | Access policy token | |
CN117278323B (zh) | 第三方信息的获取方法、电子设备及可读存储介质 | |
CN115001743B (zh) | 访问方法、装置以及系统 | |
US11804969B2 (en) | Establishing trust between two devices for secure peer-to-peer communication | |
CN115982766A (zh) | 容器访问方法以及装置 | |
CN117272358A (zh) | 数据存储加密方法、装置、电子设备和计算机程序产品 | |
CN115865538A (zh) | 区块链数据上链方法、装置、电子设备、存储介质 | |
CN116915441A (zh) | 基于数据缓存区加密网络资源请求访问方法及相关装置 | |
CN115134175A (zh) | 一种基于授权策略的安全通讯方法及装置 | |
CN115118474A (zh) | 标识查询、存储管理方法、标识代理模块及权限管理系统 |
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 |