一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于用户态文件系统的数据库透明加解密实现方法及系统与流程

2021-11-22 13:55:00 来源:中国专利 TAG:


1.本发明涉及数据库加解密技术领域,具体而言,涉及一种基于用户态文件系统的数据库透明加解密实现方法及系统。


背景技术:

2.现有的数据库的透明加密技术tde,只能依赖于数据库本身的实现,比如oracle本身的tde技术,以及mysql的keyring技术,数据库自身支持的tde配置复杂,健壮性不高。并且实现的不足是对所有加密的数据库和表只能提供一个密钥,对密钥管理造成一定困难,并且不支持国密算法sm4,无法在需要使用国密算法的地方使用。


技术实现要素:

3.为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种基于用户态文件系统的数据库透明加解密实现方法及系统,可在保证对用户无感的数据库透明加密的同时也保证加密的效率,以及可对不同数据库支持国密算法sm4。
4.本发明的实施例是这样实现的:
5.第一方面,本发明实施例提供一种基于用户态文件系统的数据库透明加解密实现方法,包括以下步骤:
6.调用用户态文件系统;
7.基于用户态文件系统构建用户态加密文件系统;
8.在数据库中创建用于存放密文的密文目录和用于存放明文的明文目录;
9.基于用户态加密文件系统对密文目录进行初始化处理,以得到目标密文目录;
10.将目标密文目录挂载到明文目录,以实现数据库透明加解密。
11.本发明基于用户文件系统构建加密系统,进而支持不同数据库的加密算法,实现对数据库的透明有效的加密和解密,解决了现有技术中不支持国密算法sm4的技术问题。用户态文件系统由3部分组成:内核模块、用户态库文件以及mount工具。内核模块提供内核的接入口;用户态库给用户提供一系列的编程接口;mount工具用于挂载用户编写的文件系统。用户程序只需要和用户态库以及mount工具进行交互。为了实现对不同数据库的加密支撑,首先,调用一个基础的用户态文件系统,以此为基础,在用户态文件系统的基础上构建并实现对各个函数的调用以构建一个用户态加密文件系统,进而通过用户态加密文件系统实现后续的数据库加密,无需进行其他操作即可对接各个不同数据库,实现数据库的加解密操作。用户态加密文件系统构建完成后,在此基础上为对应的数据库创建用于存放密文的密文目录和用于存放明文的明文目录,然后对密文目录进行初始化处理,以得到目标密文目录,并在初始化处理过程会在cipher生成密钥配置文件,然后将目标密文目录挂载到明文目录,为后续用户在明文目录中的操作提供加密基础,基于密文目录和明文目录之间的关联,用户在明文目录中写入的数据内容也会直接进行加密,进而实现数据库透明加密。用户对数据进行解密查看时,只需要通过调用用户态加密文件系统中的解密函数即可实现
数据的解密,方便快捷的进行加解密。
12.本方法基于用户文件系统构建加密系统,可支持不同数据库的加密算法,无需多余的操作配置只需要调用用户态加密文件系统中的加解密函数即可实现对数据内容的加密和解密,实现对数据库的透明有效的加密和解密。
13.基于第一方面,在本发明的一些实施例中,上述基于用户态文件系统构建用户态加密文件系统的方法包括以下步骤:
14.基于用户态文件系统分别构建datafort_fs_open函数、datafort_fs_write加密函数、datafort_fs_read解密函数、datafort_fs_getattr函数、datafort_fs_mkdir函数和datafort_fs_readdir函数,以得到用户态加密文件系统。
15.基于第一方面,在本发明的一些实施例中,上述调用用户态文件系统的方法包括以下步骤:
16.获取shell终端的命令请求;
17.通过glibc将命令请求发送至用户态文件系统的内核;
18.通过内核的vfs把命令请求发送给fuse文件系统;
19.通过fuse文件系统调用用户态实现的api来返回结果调用,实现用户态文件系统的调用。
20.基于第一方面,在本发明的一些实施例中,该基于用户态文件系统的数据库透明加解密实现方法还包括以下步骤:
21.在明文目录上创建表空间;
22.获取数据库的原有表,并将原有表移动至表空间,完成文件加密。
23.第二方面,本发明实施例提供一种基于用户态文件系统的数据库透明加解密实现系统,包括系统调用模块、加密系统构建模块、目录创建模块、目录初始化模块以及目录挂载模块,其中:
24.系统调用模块,用于调用用户态文件系统;
25.加密系统构建模块,用于基于用户态文件系统构建用户态加密文件系统;
26.目录创建模块,用于在数据库中创建用于存放密文的密文目录和用于存放明文的明文目录;
27.目录初始化模块,用于基于用户态加密文件系统对密文目录进行初始化处理,以得到目标密文目录;
28.目录挂载模块,用于将目标密文目录挂载到明文目录,以实现数据库透明加解密。
29.本发明基于用户文件系统构建加密系统,进而支持不同数据库的加密算法,实现对数据库的透明有效的加密和解密,解决了现有技术中不支持国密算法sm4的技术问题。用户态文件系统由3部分组成:内核模块、用户态库文件以及mount工具。内核模块提供内核的接入口;用户态库给用户提供一系列的编程接口;mount工具用于挂载用户编写的文件系统。用户程序只需要和用户态库以及mount工具进行交互。为了实现对不同数据库的加密支撑,首先,通过系统调用模块调用一个基础的用户态文件系统,以此为基础,加密系统构建模块在用户态文件系统的基础上构建并实现对各个函数的调用以构建一个用户态加密文件系统,进而通过用户态加密文件系统实现后续的数据库加密,无需进行其他操作即可对接各个不同数据库,实现数据库的加解密操作。用户态加密文件系统构建完成后,目录创建
模块在此基础上为对应的数据库创建用于存放密文的密文目录和用于存放明文的明文目录,然后通过目录初始化模块对密文目录进行初始化处理,以得到目标密文目录,并在初始化处理过程会在cipher生成密钥配置文件,然后通过目录挂载模块将目标密文目录挂载到明文目录,为后续用户在明文目录中的操作提供加密基础,基于密文目录和明文目录之间的关联,用户在明文目录中写入的数据内容也会直接进行加密,进而实现数据库透明加密。用户对数据进行解密查看时,只需要通过调用用户态加密文件系统中的解密函数即可实现数据的解密,方便快捷的进行加解密。
30.本系统基于用户文件系统构建加密系统,可支持不同数据库的加密算法,无需多余的操作配置只需要调用用户态加密文件系统中的加解密函数即可实现对数据内容的加密和解密,实现对数据库的透明有效的加密和解密。
31.基于第二方面,在本发明的一些实施例中,上述加密系统构建模块包括函数加载子模块,用于基于用户态文件系统分别构建datafort_fs_open函数、datafort_fs_write加密函数、datafort_fs_read解密函数、datafort_fs_getattr函数、datafort_fs_mkdir函数和datafort_fs_readdir函数,以得到用户态加密文件系统。
32.基于第二方面,在本发明的一些实施例中,上述系统调用模块包括终端命令子模块、请求发送子模块、内核发送子模块以及结果调用子模块,其中:
33.终端命令子模块,用于获取shell终端的命令请求;
34.请求发送子模块,用于通过glibc将命令请求发送至用户态文件系统的内核;
35.内核发送子模块,用于通过内核的vfs把命令请求发送给fuse文件系统;
36.结果调用子模块,用于通过fuse文件系统调用用户态实现的api来返回结果调用,实现用户态文件系统的调用。
37.基于第二方面,在本发明的一些实施例中,该基于用户态文件系统的数据库透明加解密实现系统还包括表空间创建模块和文件加密模块,其中:
38.表空间创建模块,用于在明文目录上创建表空间;
39.文件加密模块,用于获取数据库的原有表,并将原有表移动至表空间,完成文件加密。
40.第三方面,本技术实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。
41.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
42.本发明实施例至少具有如下优点或有益效果:
43.本发明实施例提供一种基于用户态文件系统的数据库透明加解密实现方法及系统,本发明基于用户文件系统构建加密系统,进而支持不同数据库的加密算法,实现对数据库的透明有效的加密和解密,解决了现有技术中不支持国密算法sm4的技术问题,无需多余的操作配置只需要调用用户态加密文件系统中的加解密函数即可实现对数据内容的加密和解密,实现对数据库的透明有效的加密和解密。
附图说明
44.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附
图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
45.图1为本发明实施例一种基于用户态文件系统的数据库透明加解密实现方法的流程图;
46.图2为本发明实施例一种基于用户态文件系统的数据库透明加解密实现方法中用户态文件系统调用示意图;
47.图3为本发明实施例一种基于用户态文件系统的数据库透明加解密实现系统的原理框图;
48.图4为本发明实施例提供的一种电子设备的结构框图。
49.图标:100、系统调用模块;110、终端命令子模块;120、请求发送子模块;130、内核发送子模块;140、结果调用子模块;200、加密系统构建模块;210、函数加载子模块;300、目录创建模块;400、目录初始化模块;500、目录挂载模块;600、表空间创建模块;700、文件加密模块;101、存储器;102、处理器;103、通信接口。
具体实施方式
50.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
51.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
53.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
54.实施例
55.如图1

图2所示,第一方面,本发明实施例提供一种基于用户态文件系统的数据库透明加解密实现方法,包括以下步骤:
56.s1、调用用户态文件系统;
57.进一步地,获取shell终端的命令请求;通过glibc将命令请求发送至用户态文件系统的内核;通过内核的vfs把命令请求发送给fuse文件系统;通过fuse文件系统调用用户
态实现的api来返回结果调用,实现用户态文件系统的调用。
58.在本发明的一些实施例中,用户态文件系统由3部分组成:内核模块、用户态库文件以及mount工具。内核模块提供内核的接入口;用户态库给用户提供一系列的编程接口;mount工具用于挂载用户编写的文件系统。用户程序只需要和用户态库以及mount工具进行交互。为了实现对不同数据库的加密支撑,首先,调用一个基础的用户态文件系统。用户态文件系统调用流程包括:用户在shell终端输入命令;请求通过glibc到达内核空间;内核的vfs把请求发送给fuse文件系统;fuse文件系统调用用户态实现的api来返回结果调用。
59.s2、基于用户态文件系统构建用户态加密文件系统;
60.进一步地,基于用户态文件系统分别构建datafort_fs_open函数、datafort_fs_write加密函数、datafort_fs_read解密函数、datafort_fs_getattr函数、datafort_fs_mkdir函数和datafort_fs_readdir函数,以得到用户态加密文件系统。
61.在本发明的一些实施例中,以用户态文件系统为基础,在用户态文件系统的基础上构建并实现对各个函数的调用以构建一个用户态加密文件系统,进而通过用户态加密文件系统实现后续的数据库加密,无需进行其他操作即可对接各个不同数据库,实现数据库的加解密操作。
62.用户态加密文件系统datafort_fs实现过程:
63.1.实现datafort_fs_open函数,用于打开文件;
64.2.实现datafort_fs_write加密函数,当用户数据写入磁盘前调用该函数,该函数实现相关加密算法(aes,des3,sm4等);
65.3.实现datafort_fs_read解密函数,当用户读取磁盘数据后调用该函数解密数据;
66.4.实现datafort_fs_getattr函数,用于获取文件相关属性;
67.5.实现datafort_fs_mkdir函数,用于创建datafort_fs文件系统目录;
68.6.实现datafort_fs_readdir函数,用于读取datafort_fs文件系统目录。
69.s3、在数据库中创建用于存放密文的密文目录和用于存放明文的明文目录;
70.在本发明的一些实施例中,用户态加密文件系统构建完成后,即可使用用户态加密文件系统,在此基础上为对应的数据库创建用于存放密文的密文目录和用于存放明文的明文目录。datafort_fs文件系统使用过程(以oracle为例):创建两个目录,一个存放密文一个存放明文:
71.mkdir/opt/oracle/oradata/orcl/cipher;
72.mkdir/opt/oracle/oradata/orcl/plain。
73.s4、基于用户态加密文件系统对密文目录进行初始化处理,以得到目标密文目录;
74.在本发明的一些实施例中,对密文目录进行初始化处理,以得到目标密文目录,并在初始化处理过程会在cipher生成密钥配置文件。使用用户态文件系统初始化密文文件夹(密文目录):
75../datafortfs

init/opt/oracle/oradata/orcl/cipher,执行此步骤会在cipher生成密钥配置文件。
76.s5、将目标密文目录挂载到明文目录,以实现数据库透明加解密。
77.在本发明的一些实施例中,将目标密文目录挂载到明文目录,为后续用户在明文
目录中的操作提供加密基础,基于密文目录和明文目录之间的关联,用户在明文目录中写入的数据内容也会直接进行加密,进而实现数据库透明加密。用户对数据进行解密查看时,只需要通过调用用户态加密文件系统中的解密函数即可实现数据的解密,方便快捷的进行加解密。挂载密文文件夹到明文文件夹(明文目录):
78../datafortfs/opt/oracle/oradata/orcl/cipher/opt/oracle/oradata/orcl/plain。
79.本发明基于用户文件系统构建加密系统,进而支持不同数据库的加密算法,实现对数据库的透明有效的加密和解密,解决了现有技术中不支持国密算法sm4的技术问题。以用户态文件系统为基础,在用户态文件系统的基础上构建并实现对各个函数的调用以构建一个用户态加密文件系统,进而通过用户态加密文件系统实现后续的数据库加密,无需进行其他操作即可对接各个不同数据库,实现数据库的加解密操作。本方法基于用户文件系统构建加密系统,可支持不同数据库的加密算法,无需多余的操作配置只需要调用用户态加密文件系统中的加解密函数即可实现对数据内容的加密和解密,实现对数据库的透明有效的加密和解密。
80.基于第一方面,在本发明的一些实施例中,该基于用户态文件系统的数据库透明加解密实现方法还包括以下步骤:
81.在明文目录上创建表空间;
82.获取数据库的原有表,并将原有表移动至表空间,完成文件加密。
83.将密文目录挂载到明文目录后,即为用户对数据库透明加密构建了基础,用户可以通过在明文目录上创建一个表空间,然后将数据库原有表移动到新创建的表空间内,基于已经构建好的密文目录和明文目录之间的关联,此时的密文目录下的文件内容已经是加密文件了,无需多余的操作,自动调用用户态加密文件系统的加密函数对目录内的文件内容进行加密。
84.如图3所示,第二方面,本发明实施例提供一种基于用户态文件系统的数据库透明加解密实现系统,包括系统调用模块100、加密系统构建模块200、目录创建模块300、目录初始化模块400以及目录挂载模块500,其中:
85.系统调用模块100,用于调用用户态文件系统;
86.进一步地,上述系统调用模块100包括终端命令子模块110、请求发送子模块120、内核发送子模块130以及结果调用子模块140,其中:
87.终端命令子模块110,用于获取shell终端的命令请求;请求发送子模块120,用于通过glibc将命令请求发送至用户态文件系统的内核;内核发送子模块130,用于通过内核的vfs把命令请求发送给fuse文件系统;结果调用子模块140,用于通过fuse文件系统调用用户态实现的api来返回结果调用,实现用户态文件系统的调用。
88.加密系统构建模块200,用于基于用户态文件系统构建用户态加密文件系统;
89.进一步地,上述加密系统构建模块200包括函数加载子模块210,用于基于用户态文件系统分别构建datafort_fs_open函数、datafort_fs_write加密函数、datafort_fs_read解密函数、datafort_fs_getattr函数、datafort_fs_mkdir函数和datafort_fs_readdir函数,以得到用户态加密文件系统。
90.目录创建模块300,用于在数据库中创建用于存放密文的密文目录和用于存放明
文的明文目录;
91.目录初始化模块400,用于基于用户态加密文件系统对密文目录进行初始化处理,以得到目标密文目录;
92.目录挂载模块500,用于将目标密文目录挂载到明文目录,以实现数据库透明加解密。
93.本发明基于用户文件系统构建加密系统,进而支持不同数据库的加密算法,实现对数据库的透明有效的加密和解密,解决了现有技术中不支持国密算法sm4的技术问题。用户态文件系统由3部分组成:内核模块、用户态库文件以及mount工具。内核模块提供内核的接入口;用户态库给用户提供一系列的编程接口;mount工具用于挂载用户编写的文件系统。用户程序只需要和用户态库以及mount工具进行交互。为了实现对不同数据库的加密支撑,首先,通过系统调用模块100调用一个基础的用户态文件系统,以此为基础,加密系统构建模块200在用户态文件系统的基础上构建并实现对各个函数的调用以构建一个用户态加密文件系统,进而通过用户态加密文件系统实现后续的数据库加密,无需进行其他操作即可对接各个不同数据库,实现数据库的加解密操作。用户态加密文件系统构建完成后,目录创建模块300在此基础上为对应的数据库创建用于存放密文的密文目录和用于存放明文的明文目录,然后通过目录初始化模块400对密文目录进行初始化处理,以得到目标密文目录,并在初始化处理过程会在cipher生成密钥配置文件,然后通过目录挂载模块500将目标密文目录挂载到明文目录,为后续用户在明文目录中的操作提供加密基础,基于密文目录和明文目录之间的关联,用户在明文目录中写入的数据内容也会直接进行加密,进而实现数据库透明加密。用户对数据进行解密查看时,只需要通过调用用户态加密文件系统中的解密函数即可实现数据的解密,方便快捷的进行加解密。
94.本系统基于用户文件系统构建加密系统,可支持不同数据库的加密算法,无需多余的操作配置只需要调用用户态加密文件系统中的加解密函数即可实现对数据内容的加密和解密,实现对数据库的透明有效的加密和解密。
95.如图3所示,基于第二方面,在本发明的一些实施例中,该基于用户态文件系统的数据库透明加解密实现系统还包括表空间创建模块600和文件加密模块700,其中:
96.表空间创建模块600,用于在明文目录上创建表空间;
97.文件加密模块700,用于获取数据库的原有表,并将原有表移动至表空间,完成文件加密。
98.将密文目录挂载到明文目录后,即为用户对数据库透明加密构建了基础,用户可以通过表空间创建模块600在明文目录上创建一个表空间,然后文件加密模块700将数据库原有表移动到新创建的表空间内,基于已经构建好的密文目录和明文目录之间的关联,此时的密文目录下的文件内容已经是加密文件了,无需多余的操作,自动调用用户态加密文件系统的加密函数对目录内的文件内容进行加密。
99.如图4所示,第三方面,本技术实施例提供一种电子设备,其包括存储器101,用于存储一个或多个程序;处理器102。当一个或多个程序被处理器102执行时,实现如上述第一方面中任一项的方法。
100.还包括通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯
总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
101.其中,存储器101可以是但不限于,随机存取存储器101(random access memory,ram),只读存储器101(read only memory,rom),可编程只读存储器101(programmable read

only memory,prom),可擦除只读存储器101(erasable programmable read

only memory,eprom),电可擦除只读存储器101(electric erasable programmable read

only memory,eeprom)等。
102.处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器102,包括中央处理器102(central processing unit,cpu)、网络处理器102(network processor,np)等;还可以是数字信号处理器102(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
103.在本技术所提供的实施例中,应该理解到,所揭露的方法及系统和方法,也可以通过其它的方式实现。以上所描述的方法及系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的方法及系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
104.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
105.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器102执行时实现如上述第一方面中任一项的方法。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器101(rom,read

only memory)、随机存取存储器101(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
106.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
107.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在
不背离本技术的精神或基本特征的情况下,能够以其它的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献