CN116248253A - 一种基于国产密码机对数据库表密钥进行派生的方法及系统 - Google Patents
一种基于国产密码机对数据库表密钥进行派生的方法及系统 Download PDFInfo
- Publication number
- CN116248253A CN116248253A CN202211679515.XA CN202211679515A CN116248253A CN 116248253 A CN116248253 A CN 116248253A CN 202211679515 A CN202211679515 A CN 202211679515A CN 116248253 A CN116248253 A CN 116248253A
- Authority
- CN
- China
- Prior art keywords
- key
- domestic
- algorithm
- database table
- file
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 165
- 230000006870 function Effects 0.000 claims abstract description 94
- 238000009795 derivation Methods 0.000 claims description 62
- 230000001502 supplementing effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004075 alteration Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/043—Masking or blinding of tables, e.g. lookup, substitution or mapping
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于国产密码机对数据库表密钥进行派生的方法及系统,其中方法包括:修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;通过所述表密钥对所述数据库表进行加密或解密。
Description
技术领域
本发明涉及网络空间安全技术领域,更具体地,涉及一种基于国产密码机对数据库表密钥进行派生的方法及系统。
背景技术
随着信息时代的发展,数据量呈现爆炸式的增长,数据库是管理数据十分成熟的方法,因此也被应用到了越来越多的领域。但是,随着数据安全、隐私保护相关问题的出现,数据的安全应用成为了人们越来越关注的问题。一般情况下,数据库管理的数据均为明文存储于硬件磁盘,因而会存在一定的安全漏洞,即如果数据库的硬件磁盘被窃取,那么就会造成数据泄露的问题。因此,一些主流的数据库均提供了透明数据加密方法,以此保证数据在物理设备上的安全存储。
透明数据加密是通过将数据库中明文存储的信息进行加密,之后将产生的密文存入到物理磁盘中,以保证数据不被通过物理窃取的方式而泄露;同时会对加密使用的密钥进行管理。整个透明数据加密过程对用户透明,即用户只需选择是否使用透明数据加密功能即可,而无需关心其加密的过程。
但是,主流数据库使用的透明加密算法大多使用的是自身的插件进行密钥生成及管理,由此在密钥生成算法上存在算法安全与可信性问题;以MySQL实现的透明数据加密表密钥生成算法为例,在使用MySQL透明数据加密的功能时,只能使用MySQL默认的Keyring密钥管理插件中的算法生成表密钥并进行管理,而Keyring插件会通过自身的随机数生成算法等功能来生成表密钥,这个过程就存在算法安全与可信性问题。这就导致在某些应用场景下,如果对透明数据加密算法的安全性和可信性有相应的需求时,无法通过这种方法实现透明数据加密,从而给其应用带来一定的限制。
因此,需一和种技术,以实现基于国产密码机对数据库表密钥进行派生。
发明内容
本发明技术方案提供一种基于国产密码机对数据库表密钥进行派生的方法及系统,以解决透明数据加密表密钥生成存在的算法安全与可信性问题。
为了解决上述问题,本发明提供了一种基于国产密码机对数据库表密钥进行派生的方法,所述方法包括:
修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;
通过所述表密钥对所述数据库表进行加密或解密。
优选地,所述修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:
将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;
通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;
对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。
优选地,所述表密钥派生函数包括:tablespace_key_gen(space_id,space->encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space->encryption_key为生成的表密钥,存放在数据库表空间缓存中。
优选地,表密钥派生算法包括:
通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。
优选地,所述表密钥派生算法API调用,包括:
打开国产密码机,获取国产密码机的句柄handle;
进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init
、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3哈希结果;
将SM4输出结果处理后作为表密钥派生后的结果;
关闭硬件密码机。
优选地,所述配置密码机文件与参数,包括:
在声明密码算法的头文件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目录下。
优选地,所述修改数据库表的CMakeLists文件,包括:
修改/mysql-5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
基于本发明的另一方面,本发明提供一种基于国产密码机对数据库表密钥进行派生的系统,所述系统包括:
初始单元,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
运算单元,用于配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
派生单元,用于基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;
结果单元,用于通过所述表密钥对所述数据库表进行加密或解密。
优选地,所述初始单元,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:
将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;
通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;
对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。
优选地,所述表密钥派生函数包括:tablespace_key_gen(space_id,space->encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space->encryption_key为生成的表密钥,存放在数据库表空间缓存中。
优选地,表密钥派生算法包括:
通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。
优选地,所述表密钥派生算法API调用,包括:
打开国产密码机,获取国产密码机的句柄handle;
进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init
、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3哈希结果;
将SM4输出结果处理后作为表密钥派生后的结果;
关闭硬件密码机。
优选地,所述配置密码机文件与参数,包括:
在声明密码算法的头文件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目录下。
优选地,所述派生单元,用于修改数据库表的CMakeLists文件,包括:
修改/mysql-5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
本发明技术方案提供了一种基于国产密码机对数据库表密钥进行派生的方法及系统,其中方法包括:修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;基于运算结果派生出数据库表的表密钥,修改数据库表的CMakeLists文件;通过表密钥对数据库表进行加密或解密。本发明技术方案提出的一种基于国产密码机的MySQL数据库表密钥派生及系统,解决了主流数据库使用的数据保护加密算法在密钥生成时普遍存在的算法安全与可信性问题,本发明技术方案修改了MySQL的表密钥生成过程,通过调用国产密码机中的函数与待加密表自身的标识符派生得到新的表密钥用于透明数据加密。本发明技术方案在不影响MySQL原有密钥生成功能的前提下解决了MySQL透明数据加密表密钥生成功能存在的算法安全与可信性问题。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明优选实施方式的一种基于国产密码机对数据库表密钥进行派生的方法流程图;
图2为根据本发明优选实施方式的基于国产密码机的MySQL数据库表密钥派生功能示意图;
图3为根据本发明优选实施方式的MySQL数据库原有表密钥生成功能示意图;以及
图4为根据本发明优选实施方式的一种基于国产密码机对数据库表密钥进行派生的系统结构图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明优选实施方式的一种基于国产密码机对数据库表密钥进行派生的方法流程图。本发明对于当前MySQL数据库使用的表密钥生成与管理方法存在的算法安全与可信性问题,提供了一种基于国产密码机的MySQL透明数据加密表密钥派生的方法,它实现了一种可信的MySQL数据库表密钥派生功能,同时实现了针对业务的即时部署。
本发明涉及一种基于国产密码机的MySQL数据库表密钥派生方法。本发明通过使用国产密码机中的国产密码算法SM3与SM4,对加密表的唯一标识号(表标识号)进行运算,并基于运算结果派生出该表的表密钥,用于对MySQL中该数据表进行透明数据加密。本发明解决了MySQL5.7.33版本的透明数据加密功能使用Keyring插件对表密钥进行生成并管理所导致的表密钥生成算法的安全与可信性问题。本发明在实现目标功能的前提下,对MySQL数据库的透明加密功能没有影响,对MySQL上层业务软件具有透明性,且对数据库性能影响很小。
本发明提出的一种基于国产密码机的MySQL数据库表密钥派生方法,根据硬件密码机接口函数特征,替换MySQL5.7.33数据库中原有关于表密钥生成部分的语句和函数,使其在对数据表进行透明数据加解密时使用通过国产密码机派生出的表密钥完成MySQL5.7.33透明数据加密功能。
本发明提出的方法依托的系统框架如图2所示,基于国产密码机的MySQL数据库表密钥派生方法是一种基于现有MySQL数据库表密钥生成的改进(原系统框架如图3所示)。本发明修改了MySQL的表密钥生成过程,通过调用国产密码机中的函数与待加密表自身的标识符派生得到新的表密钥用于透明数据加密。本发明在不影响MySQL原有密钥生成功能的前提下解决了MySQL透明数据加密表密钥生成功能存在的算法安全与可信性问题。
如图1所示,本发明提供一种基于国产密码机对数据库表密钥进行派生的方法,方法包括:
步骤101:修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
优选地,修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:
将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;
通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;
对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。
优选地,表密钥派生算法包括:
通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。
优选地,表密钥派生算法API调用,包括:
打开国产密码机,获取国产密码机的句柄handle;
进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init
、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3M4输出结果处理后作为表密钥派生后的结果;
关闭硬件密码机。
本发明在步骤101中,根据硬件密码机接口函数特征,修改原有MySQL5.7.33透明数据加密功能中表密钥生成的语句和函数;
步骤101-1,修改透明数据加密调用的表密钥生成算法:将MySQL5.7.33透明数据加密功能中密钥生成算法由其原本使用的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法:SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;针对透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将其中判断当表密钥不存在需要调用加密类中实现的随机数生成函数生成表密钥的语句替换为本方法中通过调用国产密码机实现的表密钥派生函数,即将上述文件中的Encryption::random_value(space->encryption_key)替换为tablespace_key_gen(space_id,space->encryption_key),其中tablespace_key_gen()为调用国产密码机中SM3和SM4算法实现的表密钥派生算法,space_id为当前待加密表的表标识号,其为该表的唯一标识,space->encryption_key为生成的表密钥,存放在表空间缓存中;
步骤101-2,实现表密钥派生算法的具体方法:实现通过调用国产密码机进行表密钥派生API的调用,即具体实现tablespace_key_gen(),并将其补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,由此完成基于国产密码机实现的表密钥派生算法API调用的实现;
调用硬件密码机实现的表密钥派生算法API的具体方法如下:
首先打开国产密码机,得到国产密码机的句柄handle;
进行国产密码机实现的SM3哈希算法的API调用,共三部分,分别是SM3_Init、SM3_Update和SM3_Final,这三步需要传入包括加密机句柄、该表的唯一标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及上述步骤中输出的SM3哈希结果等在内的一系列相关参数;
将SM4输出结果处理后作为表密钥派生后的结果;
关闭硬件密码机。
步骤102:配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
优选地,表密钥派生函数包括:tablespace_key_gen(space_id,space->encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space->encryption_key为生成的表密钥,存放在数据库表空间缓存中。
优选地,配置密码机文件与参数,包括:
在声明密码算法的头文件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目录下。
本发明在步骤102,配置本方法所需相关文件与参数,包括调用头文件,配置文件,动态链接库;
步骤102的具体过程为:
步骤102-1,声明实现的硬件加密机操作方法:在声明密码算法的头文件my_aes.h中添加步骤12中实现的调用硬件密码机进行表密钥派生API的函数名tablespace_key_gen();
步骤102-2,添加密码机头文件fm_cpc_pub.h和fm_def.h至/mysql-5.7.33/include目录下;
步骤102-3,添加密码机的配置文件FMDevice.conf至/etc目录下并正确配置IP以及配置链接数目以及日志存储路径,并添加动态库文件libfmapiv100.so至/usr/lib目录下。
步骤103:基于运算结果派生出数据库表的表密钥,修改数据库表的CMakeLists文件;
优选地,修改数据库表的CMakeLists文件,包括:
修改/mysql-5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
本发明在步骤103,修改MySQL5.7.33的CMakeLists文件。
步骤103-1,修改/mysql-5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
本发明完成了基于国产密码机的MySQL数据库表密钥派生方法的工作。
步骤104:通过表密钥对数据库表进行加密或解密。
本发明的优势之处在于:(1)本发明解决了MySQL透明数据加密过程中存在的表密钥生成算法的安全与可信性问题;(2)本发明通过硬件密码机可以高效的生成安全性高的表密钥用于加解密;(3)改造后的MySQL数据库完全保留了原始透明数据加密的各种功能,可以实现针对业务的即时部署;(4)本发明针对MySQL原始数据库修改少,有较好的向前兼容性。
图4为根据本发明优选实施方式的一种基于国产密码机对数据库表密钥进行派生的系统结构图。
如图4所示,本发明提供一种基于国产密码机对数据库表密钥进行派生的系统,系统包括:
初始单元401,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
优选地,初始单元401,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:
将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;
通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;
对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。
运算单元402,用于配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
优选地,表密钥派生函数包括:tablespace_key_gen(space_id,space->encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space->encryption_key为生成的表密钥,存放在数据库表空间缓存中。
优选地,表密钥派生算法包括:
通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。
优选地,表密钥派生算法API调用,包括:
打开国产密码机,获取国产密码机的句柄handle;
进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init
、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3哈希结果;
将SM4输出结果处理后作为表密钥派生后的结果;
关闭硬件密码机。
优选地,配置密码机文件与参数,包括:
在声明密码算法的头文件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目录下。
派生单元403,用于基于运算结果派生出数据库表的表密钥,修改数据库表的CMakeLists文件;
优选地,派生单元,用于修改数据库表的CMakeLists文件,包括:
修改/mysql-5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
结果单元404,用于通过表密钥对数据库表进行加密或解密。
本发明提供一种基于国产密码机对数据库表密钥进行派生的系统与本发明提供一种基于国产密码机对数据库表密钥进行派生的方法相对应,在此不再进行赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
Claims (14)
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.一种基于国产密码机对数据库表密钥进行派生的系统,所述系统包括:
初始单元,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法;
运算单元,用于配置密码机文件与参数,通过国产密码算法SM3和SM4对数据库表的表标识进行运算,获取运算结果;
派生单元,用于基于运算结果派生出所述数据库表的表密钥,修改数据库表的CMakeLists文件;
结果单元,用于通过所述表密钥对所述数据库表进行加密或解密。
9.根据权利要求8所述的系统,所述初始单元,用于修改原数据库表中透明数据加密功能中的密钥生成语句和函数,用国产密码算法SM3和SM4替换原数据库表的插件密钥生成算法,包括:
将数据库表中透明数据加密功能中密钥生成算法中的Keyring密钥管理插件密钥生成算法替换为使用国产密码机中的算法,包括:SM3杂凑算法和SM4密码算法;
通过SM3杂凑算法和SM4密码算法对加密表的表密钥进行派生;
对于数据库表中的透明数据加密前进行密钥生成功能实现的文件fil0fil.cc,将文件fil0fil.cc中的随机数生成函数替换为通过调用国产密码机实现的表密钥派生函数。
10.根据权利要求9所述的系统,所述表密钥派生函数包括:tablespace_key_gen(space_id,space->encryption_key),其中tablespace_key_gen()为调用国产密码机中算法SM3和SM4实现的表密钥派生算法,space_id为当前待加密的数据库表的表标识,space->encryption_key为生成的表密钥,存放在数据库表空间缓存中。
11.根据权利要求10所述的系统,表密钥派生算法包括:
通过调用国产密码机进行表密钥派生API的调用,实现tablespace_key_gen(),并将tablespace_key_gen()补充到包含MySQL自有实现的密码算法的.cc文件my_aes_openssl.cc中,完成基于国产密码机实现的表密钥派生算法API调用。
12.根据权利要求11所述的系统,所述表密钥派生算法API调用,包括:
打开国产密码机,获取国产密码机的句柄handle;
进行国产密码机SM3哈希算法的API调用,包括三步调用:SM3_Init、SM3_Update和SM3_Final;三步调用需要传入包括加密机句柄、数据库表的标识号、SM3输出结果缓存以及SM3输出长度在内的相关参数;
进行国产密码机实现的SM4对称加密算法的API调用,传入包括加密机句柄、加密机中主加密密钥、加密模式、SM4输出缓存、输出长度以及SM3哈希结果;
将SM4输出结果处理后作为表密钥派生后的结果;
关闭硬件密码机。
13.根据权利要求10所述的系统,所述配置密码机文件与参数,包括:
在声明密码算法的头文件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目录下。
14.根据权利要求8所述的系统,所述派生单元,用于修改数据库表的CMakeLists文件,包括:
修改/mysql-5.7.33/mysys_ssl目录下的CMakeLists文件,添加“target_link_libraries(mysys_ssl/usr/lib/libfmapiv100.so)”指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211679515.XA CN116248253A (zh) | 2022-12-26 | 2022-12-26 | 一种基于国产密码机对数据库表密钥进行派生的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211679515.XA CN116248253A (zh) | 2022-12-26 | 2022-12-26 | 一种基于国产密码机对数据库表密钥进行派生的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116248253A true CN116248253A (zh) | 2023-06-09 |
Family
ID=86625211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211679515.XA Pending CN116248253A (zh) | 2022-12-26 | 2022-12-26 | 一种基于国产密码机对数据库表密钥进行派生的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116248253A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117113423A (zh) * | 2023-10-24 | 2023-11-24 | 中电科网络安全科技股份有限公司 | 一种数据库透明加密方法、装置、设备及存储介质 |
-
2022
- 2022-12-26 CN CN202211679515.XA patent/CN116248253A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117113423A (zh) * | 2023-10-24 | 2023-11-24 | 中电科网络安全科技股份有限公司 | 一种数据库透明加密方法、装置、设备及存储介质 |
CN117113423B (zh) * | 2023-10-24 | 2024-04-12 | 中电科网络安全科技股份有限公司 | 一种数据库透明加密方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11451386B2 (en) | Method and system for many-to-many symmetric cryptography and a network employing the same | |
JP5679018B2 (ja) | データベース暗号化システムと方法及びプログラム | |
US10904231B2 (en) | Encryption using multi-level encryption key derivation | |
US10880100B2 (en) | Apparatus and method for certificate enrollment | |
JPWO2013069770A1 (ja) | データベース装置と方法及びプログラム | |
US20200213331A1 (en) | Data service system | |
CN111884986B (zh) | 一种数据加密处理方法、装置及存储介质 | |
CN111737720B (zh) | 数据处理方法、装置及电子设备 | |
CN115442032A (zh) | 一种数据处理方法、片上系统及可读存储介质 | |
CN116248253A (zh) | 一种基于国产密码机对数据库表密钥进行派生的方法及系统 | |
US11748521B2 (en) | Privacy-enhanced computation via sequestered encryption | |
US10673627B2 (en) | Encryption device, search device, computer readable medium, encryption method, and search method | |
CN114020705A (zh) | 一种文件处理方法、装置和存储介质 | |
CN113794706A (zh) | 数据的处理方法、装置、电子设备及可读存储介质 | |
WO2024098550A1 (zh) | 数据中用户标识的加解密方法、系统及设备 | |
KR101699176B1 (ko) | Hdfs 데이터 암호화 및 복호화 방법 | |
CN109543366B (zh) | 一种源代码加密方法及其装置和系统 | |
US11720693B2 (en) | System and method for securely transferring data | |
CN115499118A (zh) | 报文密钥生成、文件加密、解密方法、装置、设备和介质 | |
CN111639349B (zh) | 一种数据加密处理方法、装置和存储介质 | |
CN113014375B (zh) | 网络威胁情报信息的跨组织处理方法、相关装置和介质 | |
CN117113423B (zh) | 一种数据库透明加密方法、装置、设备及存储介质 | |
US11522707B2 (en) | System and method for detecting compromised devices | |
Masoodi et al. | Cryptographic (in) security in android apps | |
EP4009212A1 (en) | Consent management |
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 |