CN109995524B - 一种基于加解密资源调度和密钥管理的加密数据库及方法 - Google Patents
一种基于加解密资源调度和密钥管理的加密数据库及方法 Download PDFInfo
- Publication number
- CN109995524B CN109995524B CN201910222086.5A CN201910222086A CN109995524B CN 109995524 B CN109995524 B CN 109995524B CN 201910222086 A CN201910222086 A CN 201910222086A CN 109995524 B CN109995524 B CN 109995524B
- Authority
- CN
- China
- Prior art keywords
- encryption
- key
- module
- user
- sql statement
- 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
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于加解密资源调度和密钥管理的加密数据库及方法,主要涉及到密钥管理模块和加解密服务模块,密钥管理模块用于对用户信息和其密钥的分发与管理,加解密服务模块用于对SQL语句的加密及其调度问题。本发明提出的调度方法,在多用户多线程同时请求加密资源时,通过对请求加密的SQL语句分配一个优先数,然后根据优先数依次为SQL语句分配一个时间片去占用加密资源,同时根据剩余的加密资源再去等待占用加密资源的SQL语句中寻找合适的SQL语句,为其分配加密资源,以提高加解密服务模块的吞吐量。密钥管理模块针对同一用户具有多种密钥的问题,以键值对的形式去存储和管理用户信息及其密钥,简化了密钥存储和分发的难度。
Description
技术领域
本发明属于信息安全技术领域,具体涉及一种在加密数据库中对加解密服务模块中加解密资源的调度和密钥管理的方法,通过对加解密服务模块中的加解密资源进行合理的调度和对密钥的有效管理,来提高加解密服务模块的吞吐量。
背景技术
随着信息化和大数据时代的到来,人们越来越多的将自己的数据外包到云服务器进行存储和管理,然而,近些年来,云安全事件层出不穷,攻击者利用软件漏洞获取对私有数据的访问权限,也有某些失职的管理员窃取或泄漏数据,因此,最好的安全保护方法就是对数据进行加密。为此,MIT的研究团队设计了加密数据库CryptDB,其通过对数据使用不同的加密函数进行加密的技术,达到了在密文数据库上对加密数据进行操作的功能。然而,该方案仅支持单用户,且不适用于云环境下保护数据机密性的需求。
西安电子科技大学在其申请的“混合云环境下面向加密数据库的数据存取系统及方法”(申请号:CN201610876906.9,公开号:CN106529327A)公开了一种混合云环境下面向加密数据库的数据存取系统及方法,该方法的具体步骤为:(1)上传数据;(2)生成密钥;(3)加密数据;(4)存储数据;(5)完整性验证;(6)身份认证;(7)权限控制;(8)发起查询;(9)加密查询语句;(10)密文查询;(11)解密密文;(12)加密查询结果;(13)解密查询结果。该方法实现了对第三方公有云上数据的安全存储与查询,并且数据拥有者在上传数据过程中,用户模块按照数据密级的不同将数据进行密级划分,私有云服务器的不同模块对上传的数据进行加密处理;用户查询数据时,首先要经过私有云服务器上的不同模块,对用户进行身份认证和权限控制,使得用户在其权限范围内实现在密文数据上进行查询;同时还实现了对公有云上数据的完整性验证。该系统存在的不足之处是:在密钥管理模块上,由于使用不同的加密方式所需要的密钥是不同的,没有提出有效的密钥分发方案;在加解密模块上,对于多用户多线程同时请求调用加解密模块时,没有提出有效的调度方法,不能够充分利用加解密资源,无法提高加解密模块的吞吐量。
发明内容
为解决现有技术中存在的上述缺陷,本发明的目的在于提供一种加密数据库中加解密资源调度和密钥管理的方法,通过对待处理语句进行预操作并在调度过程中遵循一定规则来提高加解密模块的处理效率,同时密钥管理模块采用一种特定的存储密钥的方式,来实现密钥的高效分发。
本发明是通过下述技术方案来实现的。
一种基于加解密资源调度和密钥管理的加密数据库,包括加密数据库代理、云数据库和用户,其中:
加密数据库代理包括密钥管理模块和加解密服务模块;
所述密钥管理模块,包括密钥生成模块和密钥存储模块,所述密钥生成模块根据用户身份信息来生成该用户对应的不同加密方式所需要的加密密钥;所述密钥存储模块按照一定的存储规则来存储用户的身份信息和与其对应的加密密钥;
所述加解密服务模块,包括资源池和资源池管理模块,所述资源池中包括加密数据库中需要用到的五种加密资源;所述资源池管理模块负责对代理传入加解密服务模块中的SQL语句进行调度,对资源池中的加密资源进行合理分配,以提高加解密服务模块的吞吐量。
进一步,所述密钥管理模块中:
密钥管理模块对新注册用户生成一个能唯一识别用户身份的ID;
密钥生成模块结合用户的身份ID,生成多种针对不同加密方式的加密密钥;
密钥管理模块将所述密钥生成模块所生成的加密密钥和用户身份ID发送给所述密钥存储模块;
所述密钥存储模块根据所述密钥管理模块传来的用户身份ID和加密密钥,以键值对的形式存放。
进一步,所述密钥存储模块中,用户及其密钥以键值对的形式存放,用户信息对应key值,密钥对应value值,value值中存放用户的多个加密密钥,且以一定的顺序存放。
进一步,所述加解密服务模块中:
加解密服务模块中的所述资源池管理模块来对所述代理传入的SQL语句进行调度;
资源池管理模块对所述代理传入的SQL语句分配一个优先数,如果SQL语句已经有优先数,则资源池管理模块对SQL语句的优先数不做修改;
资源池管理模块对SQL语句按照优先数进行排序;
所述资源池管理模块每次调度时将加密资源分配给队列中的队首SQL语句,让其执行一个时间片长度;
在一个时间片结束时发生时钟中断,所述资源池管理模块暂停当前SQL语句的重写,将其送到队列的末尾,然后再选择队首的SQL语句进行重写,并通过上下文切换执行SQL语句;
所述资源池管理模块计算出队列中每条SQL语句所需要用到的所有加密资源;
如果使用加密资源的SQL语句没有占用完资源池中的所有加密方式,则所述资源池管理模块可以选择合适的SQL语句再为其分配资源。
进一步,所述资源池管理模块在面对多用户多线程同时请求资源池中的加密资源时,其主要的调度策略是,首先通过优先数来区分SQL语句的处理顺序,然后为SQL语句分配时间去占用资源池中的加密资源,最后根据未被分配的加密资源,去寻找适合的SQL语句来进行重写操作,以提高加解密服务模块的吞吐量。
本发明的一种加密数据库的加解密资源调度和密钥管理方法,包括如下步骤:
S01,建立代理模块,包括密钥管理模块和加解密服务模块;
S02,密钥管理模块根据用户的账号生成唯一的身份标识ID,然后密钥生成模块用此ID作为加密密钥的生成密钥,为该用户生成多种加密函数的加密密钥;如果不想使用密钥生成模块来生成加密密钥,用户也可以选择自己设定多种加密密钥;
S03,密钥管理模块将用户的身份信息和其密钥一并存放到密钥存储模块中;
S04,代理将SQL语句发送给加解密服务模块,对SQL语句进行加密;
S05,加解密服务模块根据SQL语句所需要的加密方式,向密钥管理模块申请相应的加密密钥;
S06,密钥管理模块根据加解密服务模块所请求的加密密钥类型,从密钥存储模块中取出对应的加密密钥,然后发送给加解密服务模块;
S07,得到加密密钥后的加解密服务模块对SQL语句进行加密;
S08,如果返回的结果中需要解密,则根据密文类型向密钥管理模块申请相应的解密密钥;
S09,得到解密密钥后的加解密服务模块对密文进行解密。
进一步,所述步骤S02中,密钥生成模块生成加密函数的加密密钥的具体步骤如下:
21)密钥管理模块根据用户输入的账号密码,给用户生成一个唯一的ID,此ID能唯一识别该用户,可以选择使用MD5、SHA1等单向陷门函数来生成这个唯一的ID;
22)根据加解密服务模块中有五种不同的加密方式,每个用户需要针对不同的加密方式,拥有五种不同的密钥;密钥生成模块结合用户ID,按照一定的规则为用户生成五种不同的加密密钥;如果用户选择自己输入加密密钥,则在这一步中不需要为用户生成加密密钥;
23)密钥生成模块将用户ID和与之对应的五种加密密钥一并发送给密钥存储模块。
进一步,所述步骤S03中,密钥存储模块存储用户的身份信息及其密钥的具体步骤如下:
31)密钥存储模块接收到密钥生成模块传来的用户ID和五种加密密钥;
32)密钥存储模块中采用键值对的形式来存储用户ID和五种加密密钥,用户ID作为key值,五种加密密钥按规定的顺序排列后作为value值,存放到密钥存储模块中,可以使用Redis数据库来存放这个键值对;
33)当加解密服务模块向密钥管理模块申请加密密钥时,密钥存储模块根据用户ID找到对应的键值对,同时加密密钥是按序存放,可以直接取出所需加密密钥,返回给加解密服务模块。
进一步,所述步骤S04中,代理将SQL语句发送给加解密服务模块后,加解密服务模块内部对多用户多线程同时请求加密资源的调度方法的具体步骤如下:
41)对于每一个传入到加解密服务模块中的SQL语句都需要分配一个优先数来决定其占用加密资源的先后顺序:
411)如果在SQL语句分配到加密资源后,用户不要求再改变其SQL语句的优先级,那么可以让用户在输入SQL语句时就规定它的优先数,这个数值在加解密服务模块运行过程中保持不变,直到这条SQL语句被重写结束,在对SQL语句进行调度的时候优先选择优先数大的占用加解密服务模块;
412)如果在上一步中没有给出SQL语句的优先数,则资源池管理模块根据SQL语句到达的先后顺序依次分配优先数,先到的SQL语句优先数大,后到的SQL语句的优先数依次降低;
413)如果在加密服务模块运行过程中,需要让各用户都相对公平的得到加密资源的加密服务,避免一条SQL语句长时间占用加密资源,而使其他SQL语句的等待时间过长,选择在加解密服务模块运行过程中动态改变SQL语句的优先数;
42)根据已经分配好优先数的SQL语句,按执行语句的先后顺序为语句分配一个时间片,时间片用完就换下一条语句执行:
421)根据前面步骤中给SQL语句分配的优先数,将需要调用资源池的SQL语句按优先数从大到小排成一个队列;
422)用户可以自定义一个适当长度的时间片,在每次调度时将加密资源分配给队列中的队首SQL语句,让其执行一个时间片长度;
423)在时间片执行完毕时发生时钟中断,资源池管理模块暂停当前SQL语句的重写,将其送到队列的末尾;然后再选择队首的SQL语句进行重写,并通过上下文切换执行SQL语句;
43)根据资源池中未被占用的加密资源,在SQL语句队列中寻找一条满足条件的语句,为其分配加密资源,以提高加解密服务模块的吞吐量:
431)计算出队列中每条SQL语句所需要用到的所有加密资源;
432)如果正在使用加密资源的SQL语句没有占用资源池中的所有加密资源,则再从队列中选择一条合适的SQL语句去使用加密服务模块,以提高加解密服务模块的吞吐量;
433)如果满足步骤432)中有空闲的加密资源的条件,则根据资源池中空闲的加密资源,去SQL语句的队列中寻找只用到那些空闲资源的SQL语句,然后为该SQL语句分配加密资源;如果遍历SQL语句队列后没有找到符合条件的SQL语句,转步骤434);如果不符合步骤432)的条件,也转步骤434);
434)等待占用资源池的SQL语句释放加密资源后,再为SQL语句队列中队首的SQL语句分配加密资源,然后转步骤432);若SQL队列为空,则资源池管理模块结束调度。
本发明由于采取以上技术方案,其具有以下有益效果:
在密钥管理上,因为使用不同的加密方式要对应不同的加密密钥,所以在存储密钥时将用户信息和其对应的多种密钥存放在一起,同时为了实现密钥的高效分发,我们将密钥按一定的顺序存放,这样就使得当加解密服务模块在请求某个加密密钥时,不需要取出所有的密钥来判断是否为所需密钥,而是直接取出对应位置的密钥即可。针对多用户多线程同时请求调用加解密服务模块的情况,提出了有效的调度方案。首先根据用户的需求自定义传入SQL语句的执行顺序;然后为使多用户相对公平的得到加密资源,引入时间片,让SQL语句执行一个时间片后就让出加密资源,让后面的SQL语句执行;最后,为了进一步提高加解密服务模块的吞吐量,又根据资源池中剩余的加密资源,为其选择合适的SQL语句以进一步提高加密资源的利用率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的不当限定,在附图中:
图1为本发明中加密数据库的整体框架图;
图2为本发明中的密钥管理模块图;
图3为本发明中加解密服务模块图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
参照图1所示,为本发明加密数据库的整体框架图,建立代理模块,代理模块中包括密钥管理模块和加解密服务模块。
参照图2所示,密钥管理模块中包括密钥生成和密钥存储两个模块,密钥生成模块根据用户身份信息来生成该用户对应的不同加密方式所需要的加密密钥,密钥存储模块按照一定的存储规则来存储用户的身份信息和与其对应的加密密钥。
参照图3所示,加解密服务模块中包括资源池和资源池管理模块,资源池中包括了加密数据库中需要用到的五种加密资源,资源池管理模块主要负责对代理传入加解密服务模块中的SQL语句进行调度,对资源池中的加密资源进行合理分配,以提高加解密服务模块的吞吐量。
A.模块对密钥的管理及分发:
密钥的管理:
a11)密钥管理模块根据用户注册时的账号为其生成一个能唯一标识该用户的身份ID,可以使用MD5,SHA1等单向陷门函数来生成这个唯一的ID;
a12)密钥生成模块根据用户的身份ID,利用不同的密钥生成函数为用户生成多种加密密钥,如果用户选择自己输入加密密钥而不使用密钥生成模块为其生成加密密钥,则此密钥生成模块不生成用户的加密密钥;
a13)密钥生成模块将用户ID和与之对应的多种加密密钥一并发送给密钥存储模块;
a14)密钥存储模块接收到用户ID和与之对应的多种加密密钥后,对用户的加密密钥按照一定的先后顺序进行排序;
a15)密钥存储模块将用户ID作为key值,排好序的加密密钥作为value值,以键值对的形式存放到数据库中,可以选择使用Redis数据库。
密钥的分发:
a21)密钥管理模块接收到来自加解密服务模块的请求加密密钥的申请;
a22)密钥管理模块根据请求分配加密密钥的用户ID,在密钥存储模块中找到该用户的键值对;
a23)密钥管理模块根据所请求的加密密钥类型,在键值对中找出对应的加密密钥,返回给加解密服务模块。
密钥存储模块中,用户及其密钥以键值对的形式存放,用户信息对应key值,密钥对应value值,value值中存放用户的多个加密密钥,且以一定的顺序存放。
B.多用户多线程同时请求调用加解密服务模块时的调度方法:
1)对于每一个传入到加解密服务模块中的SQL语句都需要分配一个优先数来决定其占用加密资源的先后顺序。
具体的:
b11)如果在加解密服务模块运行过程中,用户不要求再改变SQL语句的优先级,那么可以在输入SQL语句时就规定它的优先数,并且这个数值在加密服务模块运行过程中保持不变,直到这条SQL语句被重写结束,在对SQL语句进行调度的时候优先选择优先数大的占用加解密服务模块。例如,用户要求加解密服务模块对某条SQL语句的响应时间越短越好,那么可以在输入这条语句时就赋予该语句一个较高的优先数,如果用户对某条语句的响应时间不作要求或对响应时间不敏感,则可以在输入这条语句时赋予该语句一个较低的优先数;
b12)如果在上一步中没有给出SQL语句的优先数,则资源池管理模块根据SQL语句到达的先后顺序依次分配优先数,先到的SQL语句优先数大,后到的SQL语句的优先数依次降低;
b13)如果在加密服务模块运行过程中,需要让各用户都相对公平的得到加密资源的加密服务,避免一条SQL语句长时间占用加密资源,而使其他SQL语句的等待时间过长。可以选择在加密服务模块运行过程中动态改变SQL语句的优先数。比如,当某条SQL语句占用加密资源的时间过长,就降低该语句的优先数;或者某条SQL语句的等待时间过长,就提高该语句的优先数。同时可以选择让资源池管理模块在每隔一段时间就重新计算各SQL语句的优先数,对其进行重新排列;也可以在每次重写完一条SQL语句后就重新计算各SQL语句的优先数并更新各SQL语句的执行顺序。
2)根据已经分配好优先数的SQL语句,按执行语句的先后顺序为语句分配一个时间片,时间片用完就换下一条语句执行。
具体的:
b21)在上面的步骤中,资源池管理模块或者用户自己已经对请求调用加解密服务模块的SQL语句赋予了一个优先数,资源池管理模块根据SQL语句的优先数,按照优先数从高到低排成一个队列,依次请求资源池中的加密资源;
b22)用户自定义一个合适的时间间隔作为时间片,资源池管理模块依次为队列中队首的SQL语句分配加密资源,让其执行一个时间片;
b23)在一个时间片结束时发生时钟中断,调度程序暂停当前SQL语句的重写,将其送到队列的末尾。然后再选择队首的SQL语句进行重写,并通过上下文切换执行SQL语句;
3)根据资源池中未被占用的加密资源,在SQL语句队列中寻找一条满足条件的语句,为其分配加密资源,以提高加解密服务模块的吞吐量。
具体的:
b31)计算出队列中每条SQL语句所需要用到的所有加密资源;
b32)如果使用加密资源的SQL语句没有占用完资源池中的所有加密方式,则再从队列中选择一条合适的SQL语句去使用资源池中的加密资源,以提高加解密服务模块的吞吐量;
b33)如果满足步骤b32)的条件,则根据资源池中空闲的加密资源,去SQL语句的队列中寻找只用到那些空闲资源的SQL语句,为此SQL语句分配资源;如果遍历SQL语句队列后没有找到符合条件的SQL语句,转步骤b34);如果不符合步骤b32)的条件,也转步骤b34)。例如第一条SQL语句需要用到第1、3、5这三种加密资源,那么将这三种加密资源分配给这条SQL语句,不能再被其他语句占用,直到释放资源;然后按顺序扫描未分配加密资源的SQL语句,按队列依次寻找第一条符合只用到剩余加密方式条件的SQL语句并为其分配加密资源,如果没有找到满足条件的SQL语句,则等待加密资源被释放后,按优先级顺序处理下一条SQL语句;
b34)等待占用资源池的SQL语句释放加密资源后,再为SQL语句队列中队首的SQL语句分配加密资源,然后转步骤b32);若SQL队列为空,则资源池管理模块结束调度。
本发明针对加密数据库代理中的密钥管理模块和加解密服务模块的不足,通过引入密钥存储模块和密钥生成模块来提高加密密钥的分发效率;通过资源池管理模块来对SQL语句进行调度,来应对多用户多线程同时请求加密资源的情况,以提高加解密服务模块的吞吐量。
密钥管理模块将用户信息和其加密密钥以键值对的形式存放,在查找所需密钥时直接根据加密密钥类型便能找到对应的密钥。
加解密服务模块中针对多用户多线程的调度问题,通过以下三点来解决:1、根据用户的需求决定是使用动态的优先数还是静态的优先数,然后根据优先数对语句的执行顺序进行排序;2、为了使用户得到相对公平的处理时间,规定一个合理的时间间隔作为时间片,每条语句执行这一个时间片后让出加密资源,等待下一次分配时间,每隔一段时间就换下一条语句;3、为了提高加解密服务模块的吞吐量,再在分配加密资源的基础上对资源池中五种加密方式进行进一步的分配,给未使用到的加密资源也分配语句,以提高系统吞吐量。
本发明的加密数据库的加解密资源调度和密钥管理方法,具体包括如下步骤:
S01,建立代理模块,包括密钥管理模块和加解密服务模块;
S02,密钥管理模块根据用户的账号生成唯一的身份标识ID,然后密钥生成模块用此ID作为加密密钥的生成密钥,为该用户生成多种加密函数的加密密钥;如果不想使用密钥生成模块来生成加密密钥,用户也可以选择自己设定多种加密密钥;
其中,密钥生成模块生成加密函数的加密密钥的具体步骤如下:
21)密钥管理模块根据用户输入的账号密码,给用户生成一个唯一的ID,此ID能唯一识别该用户,可以选择使用MD5、SHA1等单向陷门函数来生成这个唯一的ID;
22)根据加解密模块中有五种不同的加密方式,每个用户需要针对不同的加密方式,拥有五种不同的密钥;密钥生成模块结合用户ID,按照一定的规则为用户生成五种不同的加密密钥;如果用户选择自己输入加密密钥,则在这一步中不需要为用户生成加密密钥;
23)密钥生成模块将用户ID和与之对应的五种加密密钥一并发送给密钥存储模块。
S03,密钥管理模块将用户的身份信息和其密钥一并存放到密钥存储模块中;
其中,密钥存储模块存储用户的身份信息及其密钥的具体步骤如下:
31)密钥存储模块接收到密钥生成模块传来的用户ID和五种加密密钥;
32)密钥存储模块中采用键值对的形式来存储用户ID和五种加密密钥,用户ID作为key值,五种加密密钥按规定的顺序排列后作为value值,存放到密钥存储模块中,可以使用Redis数据库来存放这个键值对;
33)当加解密服务模块向密钥管理模块申请加密密钥时,密钥存储模块根据用户ID找到对应的键值对,同时加密密钥是按序存放,可以直接取出所需加密密钥,返回给加解密服务模块。
S04,代理将SQL语句发送给加解密服务模块,对SQL语句进行加密;
其中,代理将SQL语句发送给加解密服务模块后,加解密服务模块内部对多用户多线程同时请求加密资源的调度方法的具体步骤如下:
41)对于每一个传入到加解密服务模块中的SQL语句都需要分配一个优先数来决定其占用加密资源的先后顺序:
411)如果在SQL语句分配到加密资源后,用户不要求再改变其SQL语句的优先级,那么可以让用户在输入SQL语句时就规定它的优先数,这个数值在加解密服务模块运行过程中保持不变,直到这条SQL语句被重写结束,在对SQL语句进行调度的时候优先选择优先数大的占用加解密服务模块;
412)如果在上一步中没有给出SQL语句的优先数,则资源池管理模块根据SQL语句到达的先后顺序依次分配优先数,先到的SQL语句优先数大,后到的SQL语句的优先数依次降低;
413)如果在加密服务模块运行过程中,需要让各用户都相对公平的得到加密资源的加密服务,避免一条SQL语句长时间占用加密资源,而使其他SQL语句的等待时间过长,选择在加密服务模块运行过程中动态改变SQL语句的优先数;
42)根据已经分配好优先数的SQL语句,按执行语句的先后顺序为语句分配一个时间片,时间片用完就换下一条语句执行:
421)根据前面步骤中给SQL语句分配的优先数,将需要调用资源池的SQL语句按优先数从大到小排成一个队列;
422)用户可以自定义一个适当长度的时间片,在每次调度时将加密资源分配给队列中的队首SQL语句,让其执行一个时间片长度;
423)在时间片执行完毕时发生时钟中断,资源池管理模块暂停当前SQL语句的重写,将其送到队列的末尾;然后再选择队首的SQL语句进行重写,并通过上下文切换执行SQL语句;
43)根据资源池中未被占用的加密资源,在SQL语句队列中寻找一条满足条件的语句,为其分配加密资源,以提高加解密服务模块的吞吐量:
431)计算出队列中每条SQL语句所需要用到的所有加密资源;
432)如果正在使用加密资源的SQL语句没有占用资源池中的所有加密资源,则再从队列中选择一条合适的SQL语句去使用加密服务模块,以提高加解密服务模块的吞吐量;
433)如果满足步骤432)中有空闲的加密资源的条件,则根据资源池中空闲的加密资源,去SQL语句的队列中寻找只用到那些空闲资源的SQL语句,然后为该SQL语句分配加密资源;如果遍历SQL语句队列后没有找到符合条件的SQL语句,转步骤434);如果不符合步骤432)的条件,也转步骤434);
434)等待占用资源池的SQL语句释放加密资源后,再为SQL语句队列中队首的SQL语句分配加密资源,然后转步骤432);若SQL队列为空,则资源池管理模块结束调度。
S05,加解密服务模块根据SQL语句所需要的加密方式,向密钥管理模块申请相应的加密密钥;
S06,密钥管理模块根据加解密服务模块所请求的加密密钥类型,从密钥存储模块中取出对应的加密密钥,然后发送给加解密服务模块;
S07,得到加密密钥后的加解密服务模块对SQL语句进行加密;
S08,如果返回的结果中需要解密,则根据密文类型向密钥管理模块申请相应的解密密钥;
S09,得到解密密钥后的加解密服务模块对密文进行解密。
本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。
Claims (8)
1.一种基于加解密资源调度和密钥管理的加密存储服务器系统,其特征在于,包括加密数据库代理、云数据库和用户,其中:
加密数据库代理包括密钥管理模块和加解密服务模块;
所述密钥管理模块,包括密钥生成模块和密钥存储模块,所述密钥生成模块根据用户身份信息来生成该用户对应的不同加密方式所需要的加密密钥;所述密钥存储模块按照一定的存储规则来存储用户的身份信息和与其对应的加密密钥;
所述加解密服务模块,包括资源池和资源池管理模块,所述资源池中包括加密数据库中需要用到的五种加密资源,所述五种加密资源包括保序加密、模糊查询加密、确定性加密、乘法同态加密和加法同态加密;所述资源池管理模块负责对代理传入加解密服务模块中的SQL语句进行调度,对资源池中的加密资源进行合理分配,以提高加解密服务模块的吞吐量;
所述加解密服务模块中:
加解密服务模块中的所述资源池管理模块来对所述代理传入的SQL语句进行调度;
资源池管理模块对所述代理传入的SQL语句分配一个优先数,如果SQL语句已经有优先数,则资源池管理模块对SQL语句的优先数不做修改;
资源池管理模块对SQL语句按照优先数进行排序;
所述资源池管理模块每次调度时将加密资源分配给队列中的队首SQL语句,让其执行一个时间片长度;
在一个时间片结束时发生时钟中断,所述资源池管理模块暂停当前SQL语句的重写,将其送到队列的末尾,然后再选择队首的SQL语句进行重写,并通过上下文切换执行SQL语句;
所述资源池管理模块计算出队列中每条SQL语句所需要用到的所有加密资源;
如果使用加密资源的SQL语句没有占用完资源池中的所有加密方式,则所述资源池管理模块选择合适的SQL语句再为其分配资源。
2.根据权利要求1所述的基于加解密资源调度和密钥管理的加密存储服务器系统,其特征在于,所述密钥管理模块中,密钥的管理包括:
密钥管理模块对新注册用户生成一个能唯一识别用户身份的ID;
密钥生成模块结合用户的身份ID,生成多种针对不同加密方式的加密密钥;
密钥管理模块将所述密钥生成模块所生成的加密密钥和用户身份ID发送给所述密钥存储模块;
所述密钥存储模块根据所述密钥管理模块传来的用户身份ID和加密密钥,以键值对的形式存放。
3.根据权利要求1所述的基于加解密资源调度和密钥管理的加密存储服务器系统,其特征在于,所述密钥管理模块中,密钥的分发包括:
1)密钥管理模块接收到来自加解密服务模块的请求加密密钥的申请;
2)密钥管理模块根据请求分配加密密钥的用户ID,在密钥存储模块中找到该用户的键值对;
3)密钥管理模块根据所请求的加密密钥类型,在键值对中找出对应的加密密钥,返回给加解密服务模块。
4.根据权利要求1-3任一项所述的基于加解密资源调度和密钥管理的加密存储服务器系统,其特征在于,所述密钥存储模块中,用户及其密钥以键值对的形式存放,用户信息对应key值,密钥对应value值,value值中存放用户的多个加密密钥,且以一定的顺序存放。
5.根据权利要求4所述的基于加解密资源调度和密钥管理的加密存储服务器系统,其特征在于,所述资源池管理模块在面对多用户多线程同时请求资源池中的加密资源时,首先通过优先数来区分SQL语句的处理顺序,然后为SQL语句分配时间去占用资源池中的加密资源,最后根据未被分配的加密资源,去寻找适合的SQL语句来进行重写操作。
6.一种权利要求1所述的加密存储服务器系统的加解密资源调度和密钥管理方法,其特征在于,包括如下步骤:
S01,建立代理模块,包括密钥管理模块和加解密服务模块;
S02,密钥管理模块根据用户的账号生成唯一的身份标识ID,然后密钥生成模块用此ID作为加密密钥的生成密钥,为该用户生成多种加密函数的加密密钥;如果不想使用密钥生成模块来生成加密密钥,用户也选择自己设定多种加密密钥;
S03,密钥管理模块将用户的身份信息和其密钥一并存放到密钥存储模块中;
S04,代理模块将SQL语句发送给加解密服务模块,对SQL语句进行加密;
S05,加解密服务模块根据SQL语句所需要的加密方式,向密钥管理模块申请相应的加密密钥;
S06,密钥管理模块根据加解密服务模块所请求的加密密钥类型,从密钥存储模块中取出对应的加密密钥,然后发送给加解密服务模块;
S07,得到加密密钥后的加解密服务模块对SQL语句进行加密;
S08,如果返回的结果中需要解密,则根据密文类型向密钥管理模块申请相应的解密密钥;
S09,得到解密密钥后的加解密服务模块对密文进行解密;
所述步骤S04中,代理模块将SQL语句发送给加解密服务模块后,加解密服务模块内部对多用户多线程同时请求加密资源的调度方法的具体步骤如下:
41)对于每一个传入到加解密服务模块中的SQL语句都需要分配一个优先数来决定其占用加密资源的先后顺序:
411)如果在SQL语句分配到加密资源后,用户不要求再改变其SQL语句的优先级,那么让用户在输入SQL语句时就规定它的优先数,这个数值在加解密服务模块运行过程中保持不变,直到这条SQL语句被重写结束,在对SQL语句进行调度的时候优先选择优先数大的占用加解密服务模块;
412)如果在上一步中没有给出SQL语句的优先数,则资源池管理模块根据SQL语句到达的先后顺序依次分配优先数,先到的SQL语句优先数大,后到的SQL语句的优先数依次降低;
413)如果在加密服务模块运行过程中,需要让各用户都相对公平的得到加密资源的加密服务,避免一条SQL语句长时间占用加密资源,而使其他SQL语句的等待时间过长,选择在加解密服务模块运行过程中动态改变SQL语句的优先数;
42)根据已经分配好优先数的SQL语句,按执行语句的先后顺序为语句分配一个时间片,时间片用完就换下一条语句执行:
421)根据前面步骤中给SQL语句分配的优先数,将需要调用资源池的SQL语句按优先数从大到小排成一个队列;
422)用户自定义一个适当长度的时间片,在每次调度时将加密资源分配给队列中的队首SQL语句,让其执行一个时间片长度;
423)在时间片执行完毕时发生时钟中断,资源池管理模块暂停当前SQL语句的重写,将其送到队列的末尾;然后再选择队首的SQL语句进行重写,并通过上下文切换执行SQL语句;
43)根据资源池中未被占用的加密资源,在SQL语句队列中寻找一条满足条件的语句,为其分配加密资源,以提高加解密服务模块的吞吐量:
431)计算出队列中每条SQL语句所需要用到的所有加密资源;
432)如果正在使用加密资源的SQL语句没有占用资源池中的所有加密资源,则再从队列中选择一条合适的SQL语句去使用加密服务模块,以提高加解密服务模块的吞吐量;
433)如果满足步骤432)中有空闲的加密资源的条件,则根据资源池中空闲的加密资源,去SQL语句的队列中寻找只用到那些空闲资源的SQL语句,然后为该SQL语句分配加密资源;如果遍历SQL语句队列后没有找到符合条件的SQL语句,转步骤434);如果不符合步骤432)的条件,也转步骤434);
434)等待占用资源池的SQL语句释放加密资源后,再为SQL语句队列中队首的SQL语句分配加密资源,然后转步骤432);若SQL队列为空,则资源池管理模块结束调度。
7.根据权利要求6所述的一种加密存储服务器系统中加解密资源调度和密钥管理方法,其特征在于,所述步骤S02中,密钥生成模块生成加密函数的加密密钥的具体步骤如下:
21)密钥管理模块根据用户输入的账号密码,给用户生成一个唯一的ID,此ID能唯一识别该用户,选择使用MD5、SHA1单向陷门函数来生成这个唯一的ID;
22)根据加解密服务模块中有五种不同加密资源的加密方式,密钥生成模块结合用户ID,按照一定的规则为用户生成五种不同的加密密钥;如果用户选择自己输入加密密钥,则在这一步中不需要为用户生成加密密钥;
23)密钥生成模块将用户ID和与之对应的五种加密密钥一并发送给密钥存储模块。
8.根据权利要求6所述的一种加密存储服务器系统中加解密资源调度和密钥管理方法,其特征在于,所述步骤S03中,密钥存储模块存储用户的身份信息及其密钥的具体步骤如下:
31)密钥存储模块接收到密钥生成模块传来的用户ID和五种加密密钥;
32)密钥存储模块中采用键值对的形式来存储用户ID和五种加密密钥,用户ID作为key值,五种加密密钥按规定的顺序排列后作为value值,存放到密钥存储模块中,使用Redis数据库来存放这个键值对;
33)当加解密服务模块向密钥管理模块申请加密密钥时,密钥存储模块根据用户ID找到对应的键值对,同时加密密钥是按序存放,直接取出所需加密密钥,返回给加解密服务模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910222086.5A CN109995524B (zh) | 2019-03-22 | 2019-03-22 | 一种基于加解密资源调度和密钥管理的加密数据库及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910222086.5A CN109995524B (zh) | 2019-03-22 | 2019-03-22 | 一种基于加解密资源调度和密钥管理的加密数据库及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109995524A CN109995524A (zh) | 2019-07-09 |
CN109995524B true CN109995524B (zh) | 2020-06-30 |
Family
ID=67130814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910222086.5A Active CN109995524B (zh) | 2019-03-22 | 2019-03-22 | 一种基于加解密资源调度和密钥管理的加密数据库及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109995524B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463828B (zh) * | 2020-11-02 | 2021-07-27 | 马上消费金融股份有限公司 | 一种数据处理方法、装置、设备、系统及可读存储介质 |
CN114615025B (zh) * | 2022-02-22 | 2024-05-03 | 中国建设银行股份有限公司 | 一种密钥同步处理方法和装置 |
CN115981817B (zh) * | 2022-12-30 | 2023-09-05 | 深圳计算科学研究院 | 一种面向htap的任务资源调度方法及其系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504706B (zh) * | 2009-03-03 | 2011-05-11 | 中国科学院软件研究所 | 数据库信息加密方法和系统 |
CN107370725A (zh) * | 2017-06-21 | 2017-11-21 | 西安电子科技大学 | 一种云环境下通用加密数据库的存取方法及系统 |
-
2019
- 2019-03-22 CN CN201910222086.5A patent/CN109995524B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109995524A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109995524B (zh) | 一种基于加解密资源调度和密钥管理的加密数据库及方法 | |
CN109144961B (zh) | 授权文件共享方法及装置 | |
US10901918B2 (en) | Constructing flexibly-secure systems in a disaggregated environment | |
CN108259422B (zh) | 一种多租户访问控制方法和装置 | |
Tong et al. | Cloud-assisted mobile-access of health data with privacy and auditability | |
US9864874B1 (en) | Management of encrypted data storage | |
CN101252506B (zh) | 一种数据传输系统 | |
CN109981267B (zh) | 大规模用户多密钥场景云加密数据库系统及存储查询方法 | |
KR101270991B1 (ko) | 계층적 역할 기반 접근 제어를 위한 키 트리 구성 및 키 분배 방법 | |
JP2009089045A (ja) | 暗号モジュール選定装置およびプログラム | |
CN111680307A (zh) | 分布式数据加密方法、装置、云存储服务器及存储介质 | |
CN110688666B (zh) | 一种分布式存储中数据加密保存方法 | |
CN112835912B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
CN111414381A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110866262A (zh) | 一种软硬件协同工作的异步加解密系统和方法 | |
CN111641678A (zh) | 任务调度方法、装置、电子设备及介质 | |
CN111917711B (zh) | 数据访问方法、装置、计算机设备和存储介质 | |
CN116647567A (zh) | 隐私保护集合求交方法和装置 | |
CN112799851B (zh) | 多方安全计算中的数据处理方法和相关装置 | |
Reddy et al. | Secure data sharing in cloud computing: a comprehensive review | |
CN116893903B (zh) | 一种加密资源分配方法、系统、设备及存储介质 | |
CA2490645A1 (en) | Data-centric distributed computing | |
CN114531455B (zh) | 基于边缘协助的多云安全存储方法 | |
CN113569265B (zh) | 一种数据处理方法、系统及装置 | |
CN114760602A (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 |