一种数据加解密方法及装置与流程

文档序号:37098564发布日期:2024-02-22 20:56阅读:11来源:国知局
一种数据加解密方法及装置与流程

本发明涉及数据安全,具体的,涉及一种数据加解密方法及装置。


背景技术:

1、为避免数据库自身安全体系被攻破后的数据泄露风险,往往需要将数据加密后存入数据库。目前,常见的加解密方案主要是开发人员对业务程序直接进行手动修改,在其中添加加解密的代码,从而将数据在应用中加密后存入数据库,并在数据取出阶段解密,这种方案较适合应用开发中的功能,而对于已开发完成的功能,改造代价较大。

2、为了实现对业务侵入较小,减少改造的工作量,目前也有通过构造在数据库与业务程序之间构造切面,通过注解的方式引入加解密方法,但这种方式也还是需要在业务程序中使用注解标明敏感字段。还是无法做到业务与加解密完全抽离,而且不能灵活调整需要加解密的字段。


技术实现思路

1、本申请是通过将业务中需要保密存储的重要数据采用可配置化的形式抽象为表名+字段名,在执行sql语句时通过查找事先配置好的表名和字段名,确定是否是敏感数据,并调用加解密平台的接口执行加密算法,将数据转为密文。

2、一种数据加解密方法,包括以下步骤:

3、在配置源设置敏感表名和字段名;

4、在应用启动阶段,从配置源查询敏感表名和字段名,并将查询结果缓存到应用内存中;

5、在应用运行过程中,对应用发送给平台的标准jdbc接口的sql语句进行拦截,判断jdbc接口类型,根据jdbc接口类型执行对应的解析方法,将敏感字段角标记录为加密字段索引缓存起来,根据加密字段索引获取对应的字面量,调用加密算法将字面量转为密文;

6、当sql是查询语句时,平台在查询语句执行后拦截sql语句,判断字段索引与缓存中的加密字段索引是否匹配,如果匹配,平台将返回值解密成明文再返回,完成查询结果的解密。

7、可选的,对于statement接口类型,获取sql语句中的表名和字段名,并与应用内存中敏感表名和字段名比较判断是否为敏感数据,如果是敏感数据,则将敏感字段角标记录为加密字段索引缓存起来,解析sql语句,根据加密字段索引获取对应的字面量,调用加密算法将相应字面量转为密文后重新写回sql语句中,向后传递改写后的sql。

8、可选的,对于preparedstatement接口类型,平台拦截预编译,对sql进行解析,获取sql语句中的表名和字段名,并与应用内存中的表名和字段名比较判断是否为敏感数据,如果是敏感数据,则将敏感字段角标记录为加密字段索引缓存起来。

9、判断参数绑定阶段的参数索引与缓存中的加密字段索引是否匹配,如果匹配,则将字面量加密成密文,然后再将加密后的密文作为参数传入,完成参数的重绑定。

10、可选的,对sql语句进行拦截,是通过spring框架的容器扩展点自定义bean后置处理器实现的,该后置处理器通过扫描应用中所有的数据源,调用包装类执行自定义处理来拦截sql语句,在加解密操作结束后,包装类将sql执行委托给原对象执行。

11、可选的,还包括:通过java的池化方法建立加解密客户端池,其中包含有多个加解密客户端,每个加解密客户端都用以提供加解密服务,当sql语句执行到需要加密或者解密的时候,从加解密客户端池中获取一个可用的加解密客户端,加解密结束后将该加解密客户端归还到加解密客户端池中。

12、可选的,所述配置源支持启动参数、配置文件、配置中心或配置表中任一种方式,其中,配置中心支持apollo、nacos,应用在启动阶段,从配置中心的api拉取参数,获取敏感表名和字段名。

13、可选的,还设置有全局开关参数,平台在应用启动阶段读取开关参数,判断是否开启加解密功能。

14、可选的,通过encrypt.ext进行下级参数无限扩展,包括与加密机对接以及自定义加密算法,

15、其中,当对接加密机时,通过配置加密机的接口地址和加密机的授权key实现;

16、其中,当通过加密算法实现类进行加密时,通过初始化方法的入口参数prop来获取加密机接口地址和加密机的授权key;

17、其中,当通过软加密进行加密时,通过配置加密算法和加密key实现。

18、可选的,所述解析方法包括先检查sql操作的表名,如果是敏感数据表,再进一步解析至少包含insert、set、where和select中一个的子句,获取操作的字段名,如果是敏感字段,则将字段角标记录为加密字段索引,和字段名一起缓存。

19、本申请还提供一种电子装置,包括:

20、至少一个处理器;以及,

21、与所述至少一个处理器通信连接的存储器;其中,

22、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的数据加解密方法。

23、本申请的数据加解密方法通过将业务中需要保密存储的重要数据采用可配置化的形式抽象为表名+字段名存储在配置源,在执行sql语句时通过查找事先配置好的表名和字段名,确定是否是敏感数据,并调用加解密算法执行加解密操作。本方法完全杜绝了需要修改业务程序代码的情况,也可以根据需要在配置源灵活调整需要加解密的字段。



技术特征:

1.一种数据加解密方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的数据加解密方法,其特征在于,对于statement接口类型,获取sql语句中的表名和字段名,并与应用内存中敏感表名和字段名比较判断是否为敏感数据,如果是敏感数据,则将敏感字段角标记录为加密字段索引缓存起来,解析sql语句,根据加密字段索引获取对应的字面量,调用加密算法将相应字面量转为密文后重新写回sql语句中,向后传递改写后的sql。

3.根据权利要求1所述的数据加解密方法,其特征在于,

4.根据权利要求1所述的数据加解密方法,其特征在于,

5.根据权利要求1所述的数据加解密方法,其特征在于,还包括:通过java的池化方法建立加解密客户端池,其中包含有多个加解密客户端,每个加解密客户端都用以提供加解密服务,当sql语句执行到需要加密或者解密的时候,从加解密客户端池中获取一个可用的加解密客户端,加解密结束后将该加解密客户端归还到加解密客户端池中。

6.根据权利要求1所述的数据加解密方法,其特征在于,所述配置源支持启动参数、配置文件、配置中心或配置表中任一种方式,其中,配置中心支持apollo、nacos,应用在启动阶段,从配置中心的api拉取参数,获取敏感表名和字段名。

7.根据权利要求1所述的数据加解密方法,其特征在于,还设置有全局开关参数,平台在应用启动阶段读取开关参数,判断是否开启加解密功能。

8.根据权利要求1所述的数据加解密方法,其特征在于,通过encrypt.ext进行下级参数无限扩展,包括与加密机对接以及自定义加密算法,

9.根据权利要求1所述的数据加解密方法,其特征在于,

10.一种电子装置,其特征在于,包括:


技术总结
本申请公开一种数据加解密方法及装置,方法包括:在配置源设置敏感表名和字段名;在应用启动阶段缓存到应用内存中;对应用发送给平台的SQL语句拦截,判断JDBC接口类型,根据JDBC接口类型执行对应的解析方法,将敏感字段角标记录为加密字段索引缓存,根据加密字段索引获取对应的字面量,调用加密算法将字面量转为密文;当SQL是查询语句时,平台在查询语句执行后拦截SQL语句,判断字段索引与缓存中的加密字段索引是否匹配,如果匹配,平台将返回值解密成明文再返回,完成查询结果的解密。本申请完全杜绝了需要修改业务程序代码的情况,也可以根据需要在配置源灵活调整需要加解密的字段。

技术研发人员:林楠,庞家琛
受保护的技术使用者:华信永道(北京)科技股份有限公司
技术研发日:
技术公布日:2024/2/21
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1