[发明专利]一种通用加密数据库连接器及其设置方法有效
申请号: | 202010707286.2 | 申请日: | 2020-07-21 |
公开(公告)号: | CN111859426B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 马建峰;高宇;徐皖辉;马鑫迪;卢笛;沈玉龙;习宁 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/60 | 分类号: | G06F21/60;G06F21/62;G06F16/242 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 房鑫 |
地址: | 710071 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通用 加密 数据库 连接器 及其 设置 方法 | ||
1.一种通用加密数据库连接器,其特征在于,包括:
通信连接模块,用于与应用层、数据库服务器和加解密模块之间进行通信;
通信连接模块与应用层之间的通信,在功能方面能够适配各种类型数据库驱动,握手阶段根据协议解析模块中预处理层分析得到的协议包格式,得到数据库类型;在可用性和性能方面,连接器集群以反向代理的形式存在,并加上Linux虚拟服务-动态路由双机热备层和Nginx负载均衡层;
通信连接模块与数据库服务器之间进行通信时,将连接器与应用对应类型的数据库建立连接,每一种类型的数据库集群部署,均衡负载数据库操作;
通信连接模块与加解密模块之间进行通信时,设计一种封装SQL语句和结果集的协议,分为应用请求和数据库响应两种情况:如果是应用请求,写出未加密的SQL语句包,读入加密后的SQL语句包;如果是数据库响应,写出未解密的结果集包,读入解密后的结果集包;
协议解析模块,用于对各种类型的数据库解析出协议包中的重要信息,所述重要信息包括握手阶段的数据库驱动信息、请求包中的SQL语句和响应包中的结果集;
协议解析模块包括预处理层、解析层、判断层和交付层,预处理层用于数据库通信协议格式的分析;解析层用于解析出数据库通信协议格式中的字符串;判断层用于判断提取出的字符串是否需要加解密,包括加密判断和解密判断,加密判断根据提取出的SQL语句和模式串进行匹配,解密判断根据提取出的列的元数据和模式串进行匹配,如果匹配白名单成功或者匹配黑名单失败就需要加密或解密,否则不需要加密或解密;交付层用于把不需要加密或解密的SQL语句或结果集发送给连接模块处理,把需要加解密的SQL语句或结果集发送给加解密模块处理;
加解密模块,用于对协议解析模块中交付层提交的需要加密或解密的SQL语句或结果集进行加密或解密处理,并将加密或解密后的密文集或明文集传递给协议重组模块进行重组;
协议重组模块,用于把SQL语句重组为SQL请求以及把结果集重组为SQL响应;
服务模块,用于提供辅助功能;
服务模块包括配置解析子模块、keepalive子模块和日志子模块;其中,配置解析子模块在连接器服务启动的时候把配置文件中的内容读到内存并结构化;keepalive子模块用于从LVS调度器判断主LVS调度器是否存活以及从主连接器服务判断数据库服务器是否存活,主LVS调度器不存活就执行虚拟地址漂移操作,数据库服务器如果不存活就切换到下一台数据库服务器;日志子模块分等级记录日志,嵌入到各个模块,能够恢复数据库从服务器,动态拓展数据库服务器数量。
2.根据权利要求1所述的通用加密数据库连接器,其特征在于:加解密模块对SQL语句或结果集进行串行式处理,包括SQL语句重组、密钥组查询和加解密计算;SQL语句重组是将需要加密或解密的列属性替换为密文数据库能够理解的特殊格式;在对SQL语句生成语法树阶段,根据需要加密或解密列属性的数据类型确定对应的加密或解密算法,并从密钥管理器中获取数据库表相应的密钥组;按照SQL语句重组格式,使用加密算法和加密密钥组对数据进行加密,并将密文数据返回给交付层,对密文数据进行解密是先得到交付层发来的结果集,再使用解密算法和解密密钥组对密文数据进行解密,最后将明文数据返回给交付层。
3.根据权利要求1所述的通用加密数据库连接器,其特征在于:
所述的协议重组模块根据当前处理的数据库类型得到预处理阶段分析出来的协议包格式,然后对加解密模块发送过来的包解析出处理之后的SQL语句或结果集,按照协议包的格式完成字节流的替换填充,最后把字节流交给连接模块发送给接收者。
4.一种通用加密数据库连接器的设置方法,其特征在于,包括以下步骤:
与应用层、数据库服务器和加解密模块之间建立通信;
与应用层建立通信时,接收应用层使用数据库驱动发送的数据包,如果仍处于握手阶段,根据协议解析模块中预处理层分析得到的协议包格式,得到包序列号并根据它判断当前包属于请求包还是响应包,从请求包中解析出的数据库客户端信息,赋值给数据库类型,从响应包判断握手是否成功并记录,如果握手已经成功,跳过握手阶段;
与数据库服务器建立通信时,数据库操作读写分离,使用基于ip地址的hash负载均衡算法把对同一类型数据库的操作负载到不同的数据库服务器;
与加解密模块建立通信时,设计一种封装SQL语句和结果集的协议,分为应用请求和数据库响应两种情况:如果是应用请求,写出未加密的SQL语句包,读入加密后的SQL语句包;如果是数据库响应,写出未解密的结果集包,读入解密后的结果集包;
对各种类型的数据库解析出握手阶段的数据库驱动信息、请求包中的SQL语句和响应包中的结果集,分析SQL语句是否需要加密,分析结果集是否需要解密;分析SQL语句是否需要加密时根据提取出的SQL语句和模式串进行匹配,分析结果集是否需要解密时根据提取出的列的元数据和模式串进行匹配,如果匹配白名单成功或匹配黑名单失败就需要加密或解密,否则不需要加密或解密;加密或解密处理对SQL语句或结果集进行串行式处理;
对需要加密或解密的SQL语句或结果集进行加密或解密处理,并将加密或解密后的密文集或明文集进行重组;
把SQL语句重组为SQL请求以及把结果集重组为SQL响应;
以及,以上步骤中的辅助服务;
辅助服务包括在连接器服务启动时把配置文件中的内容读到内存并结构化;从LVS调度器判断主LVS调度器是否存活以及从主连接器服务判断数据库服务器是否存活,主LVS调度器不存活就执行虚拟地址漂移操作,数据库服务器如果不存活就切换到下一台数据库服务器;分等级记录日志,嵌入到各个模块,恢复数据库从服务器,动态拓展数据库服务器数量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010707286.2/1.html,转载请声明来源钻瓜专利网。