一种基于国产密码机对数据库表密钥进行派生的方法及系统技术方案

技术编号:37852652 阅读:14 留言:0更新日期:2023-06-14 22:44
本发明专利技术公开了一种基于国产密码机对数据库表密钥进行派生的方法及系统,其中方法包括:修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;通过所述表密钥对所述数据库表进行加密或解密。数据库表进行加密或解密。数据库表进行加密或解密。

【技术实现步骤摘要】
一种基于国产密码机对数据库表密钥进行派生的方法及系统


[0001]本专利技术涉及网络空间安全
,更具体地,涉及一种基于国产密码机对数据库表密钥进行派生的方法及系统。

技术介绍

[0002]随着信息时代的发展,数据量呈现爆炸式的增长,数据库是管理数据十分成熟的方法,因此也被应用到了越来越多的领域。但是,随着数据安全、隐私保护相关问题的出现,数据的安全应用成为了人们越来越关注的问题。一般情况下,数据库管理的数据均为明文存储于硬件磁盘,因而会存在一定的安全漏洞,即如果数据库的硬件磁盘被窃取,那么就会造成数据泄露的问题。因此,一些主流的数据库均提供了透明数据加密方法,以此保证数据在物理设备上的安全存储。
[0003]透明数据加密是通过将数据库中明文存储的信息进行加密,之后将产生的密文存入到物理磁盘中,以保证数据不被通过物理窃取的方式而泄露;同时会对加密使用的密钥进行管理。整个透明数据加密过程对用户透明,即用户只需选择是否使用透明数据加密功能即可,而无需关心其加密的过程。
[0004]但是,主流数据库使用的透明加密算法大多使用的是自身的插件进行密钥生成及管理,由此在密钥生成算法上存在算法安全与可信性问题;以MySQL实现的透明数据加密表密钥生成算法为例,在使用MySQL透明数据加密的功能时,只能使用MySQL默认的Keyring密钥管理插件中的算法生成表密钥并进行管理,而Keyring插件会通过自身的随机数生成算法等功能来生成表密钥,这个过程就存在算法安全与可信性问题。这就导致在某些应用场景下,如果对透明数据加密算法的安全性和可信性有相应的需求时,无法通过这种方法实现透明数据加密,从而给其应用带来一定的限制。
[0005]因此,需一和种技术,以实现基于国产密码机对数据库表密钥进行派生。

技术实现思路

[0006]本专利技术技术方案提供一种基于国产密码机对数据库表密钥进行派生的方法及系统,以解决透明数据加密表密钥生成存在的算法安全与可信性问题。
[0007]为了解决上述问题,本专利技术提供了一种基于国产密码机对数据库表密钥进行派生的方法,所述方法包括:
[0008]修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
[0009]配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
[0010]基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;
[0011]通过所述表密钥对所述数据库表进行加密或解密。
[0012]优选地,所述修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用
国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:
[0013]将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;
[0014]通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;
[0015]对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。
[0016]优选地,所述表密钥派生函数包括:tablespace_key_gen(space_id,space

>encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space

>encryption_key为生成的表密钥,存放在数据库表空间缓存中。
[0017]优选地,表密钥派生算法包括:
[0018]通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。
[0019]优选地,所述表密钥派生算法API调用,包括:
[0020]打开国产密码机,获取国产密码机的句柄handle;
[0021]进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init
[0022]、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
[0023]进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3哈希结果;
[0024]将SM4输出结果处理后作为表密钥派生后的结果;
[0025]关闭硬件密码机。
[0026]优选地,所述配置密码机文件与参数,包括:
[0027]在声明密码算法的头文件my_aes.h中添加调用硬件密码机进行表密钥派生API的函数名tablespace_key_gen();
[0028]添加密码机头文件fm_cpc_pub.h和fm_def.h至/mysql

5.7.33/include目录下;
[0029]添加密码机的配置文件FMDevice.conf至/etc目录下并正确配置IP以及配置链接数目以及日志存储路径,并添加动态库文件libfmapiv100.so至/usr/lib目录下。
[0030]优选地,所述修改数据库表的CMakeLists文件,包括:
[0031]修改/mysql

5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
[0032]基于本专利技术的另一方面,本专利技术提供一种基于国产密码机对数据库表密钥进行派生的系统,所述系统包括:
[0033]初始单元,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
[0034]运算单元,用于配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
[0035]派生单元,用于基于运算结果派生出所述数据库表的表密钥,修改数据库表的
CMakeLists文件;
[0036]结果单元,用于通过所述表密钥对所述数据库表进行加密或解密。
[0037]优选地,所述初始单元,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于国产密码机对数据库表密钥进行派生的方法,所述方法包括:修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;通过所述表密钥对所述数据库表进行加密或解密。2.根据权利要求1所述的方法,所述修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。3.根据权利要求2所述的方法,所述表密钥派生函数包括:tablespace_key_gen(space_id,space

>encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space

>encryption_key为生成的表密钥,存放在数据库表空间缓存中。4.根据权利要求3所述的方法,表密钥派生算法包括:通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。5.根据权利要求4所述的方法,所述表密钥派生算法API调用,包括:打开国产密码机,获取国产密码机的句柄handle;进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3哈希结果;将SM4输出结果处理后作为表密钥派生后的结果;关闭硬件密码机。6.根据权利要求3所述的方法,所述配置密码机文件与参数,包括:在声明密码算法的头文件my_aes.h中添加调用硬件密码机进行表密钥派生API的函数名tablespace_key_gen();添加密码机头文件fm_cpc_pub.h和fm_def.h至/mysql

5.7.33/include目录下;添加密码机的配置文件FMDevice.conf至/etc目录下并正确配置IP以及配置链接数目以及日志存储路径,并添加动态库文件libfmapiv100.so至/usr/lib目录下。7.根据权利要求1所述的方法,所述修改数据库表的CMakeLists文件,包括:修改/mysql

5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_
libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。8.一种基于国产密码机对数据库表密钥进行派生的系统,所述...

【专利技术属性】
技术研发人员:梁宵戴大鑫耿方危学艳毛敬凯张宇驰孟祥东
申请(专利权)人:西部安全认证中心有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1