一种基于sqlite的密钥管理方法与流程

专利2023-09-06  105



1.本发明涉及密钥管理术领域,尤其涉及一种基于sqlite的密钥管理方法。


背景技术:

2.随着社会信息化的进程加快,为了保障信息安全,密码技术在日常生活中使用的愈加频繁,为了满足日益繁多的密码使用需求,也为了能够提供安全便捷的密码技术,各种基于不同平台、不同应用场景的密码模块层出不穷。然而,对于密码模块而言,其提供的密码功能或多或少都会涉及到一个重要的敏感安全参数“密钥”,为了保障密码模块自身的安全可靠性,也为了保障模块提供密码功能的安全可靠性,妥善管理密码模块产生“密钥”是重中之重。常见的密钥管理通常是通过存储于加密介质中,如:软件加密模块通常存储于加密数据库或加密磁盘中,硬件加密模块通常存储于加密芯片中。
3.目前常见的密码模块所提供的密钥管理流程大多仅仅考虑密钥存储的安全性,对于密钥创建—》存储—》应用,这整个流程没有形成一个可持续的管理体系,且对于密钥自身的安全自检也有缺失,而常见的硬件加密卡存在存储密钥空间有限的问题。


技术实现要素:

4.针对现有技术的不足,本发明提供了一种基于sqlite数据库,适用于软件密码模块或混合密码模块的可持续,安全可靠的密钥管理机制,并能够支持多种不同类型的密钥管理,用于解决上述现有技术中存在的技术问题。
5.为实现适用于软件密码模块或混合密码模块的可持续,安全可靠的密钥管理机制的目的,本发明提供如下技术方案:一种基于sqlite的密钥管理方法,该方法包括:密钥创建管理、密钥存储、密钥完整性自测、密钥调用;
6.密钥创建管理包括如下步骤:管理工具创建密钥;创建的密钥通过密钥功能自检;对密钥功能自检成功的秘钥进行hash运算;保存密钥和密钥的hash值;
7.密钥存储流程:第一步,通过加密卡生成一个16/32位随机数;第二步,获取的随机数作为cek;第三步,使用cek+sqlcipher加密数据库;第四步,检测加密卡内部kek是否创建,没有创建,返回失败,创建,获取kek的index值;第五步,通过index获取kek密钥句柄;第六步,借助kek对cek加密;第七步,保存cek;
8.密钥完整性自测包括如下步骤:密钥模块启动;密钥完整性测试;失败,密码模块初始化失败,不能继续执行;成功,密码模块功能正常运行;
9.密钥调用流程:使用密码模块对外安全api接口调用sm2算法对数据加密,密码模块根据对应index密钥索引从数据库中检索密钥对,并提取该密钥对的hash值,将检索到的密钥对进行sm3hash运算,运算结果与之前提取的密钥对hash值比对,比对失败,密钥完整性检测不通过,密钥失效并结束该操作要求用户使用管理工具重新生成密钥对,比对成功则对密钥对进行功能自检,再此案例中进行加解密操作,故执行加解密功能自检,失败密钥功能有误,密钥失效并结束该操作要求用户使用管理工具重新生成密钥对,通过则可继续
使用密钥对数据进行加密操作。
10.可选地,所述密钥创建管理步骤中,密钥功能自检失败,显示密钥创建失败。
11.可选地,所述密钥调用流程时,需确认已使用管理工具合法生成相应的密钥,并记录下对应的index值,如index下不存在密钥对,调用执行步骤1会返回相应错误。
12.可选地,所述密钥创建管理步骤中,保存密钥和密钥的hash值储存于加密数据库。
13.可选地,所述密钥存储流程中第三步密钥存储流程使用cek+sqlcipher加密数据库存储于sqlite3中。
14.可选地,所述密钥存储流程中第七步,保存cek并储存文件系统。
15.与现有技术相比,本发明提供了一种基于sqlite的密钥管理方法,具备以下有益效果:
16.其一,该基于sqlite的密钥管理方法,实现了一种基于sqlite数据库,适用于软件密码模块或混合密码模块的可持续,安全可靠的密钥管理机制。并能够支持多种不同类型的密钥管理。
17.其二,该基于sqlite的密钥管理方法为一种基于sqlite的密钥管理机制,对于密钥创建—》存储—》应用这整个流程形成了一个可持续的管理体系,且实现了密钥自检功能对密钥的完整性和功能性做到了保障,相较于一般的硬件加密卡拥有更大容量的密钥存储空间,且实现了密钥的安全存储。
附图说明
18.图1为本发明密钥创建流程示意图;
19.图2为本发明密钥存储流程示意图;
20.图3为本发明密钥完整性自测流程示意图;
21.图4为本发明密钥调用流程示意图。
具体实施方式
22.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
23.实施例1
24.为了便于理解,请参阅图1至图4,本发明提供的一种基于sqlite的密钥管理方法的一个实施例,该具体方法包括密钥创建管理、密钥存储、密钥完整性自测、密钥调用;
25.密钥创建管理包括如下步骤:管理工具创建密钥;创建的密钥通过密钥功能自检;对密钥功能自检成功的秘钥进行hash运算;保存密钥和密钥的hash值;
26.密钥存储流程:第一步,通过加密卡生成一个16/32位随机数;第二步,获取的随机数作为cek;第三步,使用cek+sqlcipher加密数据库;第四步,检测加密卡内部kek是否创建,没有创建,返回失败,创建,获取kek的index值;第五步,通过index获取kek密钥句柄;第六步,借助kek对cek加密;第七步,保存cek;
27.密钥完整性自测包括如下步骤:密钥模块启动;密钥完整性测试;失败,密码模块
初始化失败,不能继续执行;成功,密码模块功能正常运行;
28.密钥调用流程:使用密码模块对外安全api接口调用sm2算法对数据加密,密码模块根据对应index密钥索引从数据库中检索密钥对,并提取该密钥对的hash值,将检索到的密钥对进行sm3hash运算,运算结果与之前提取的密钥对hash值比对,比对失败,密钥完整性检测不通过,密钥失效并结束该操作要求用户使用管理工具重新生成密钥对,比对成功则对密钥对进行功能自检,再此案例中进行加解密操作,故执行加解密功能自检,失败密钥功能有误,密钥失效并结束该操作要求用户使用管理工具重新生成密钥对,通过则可继续使用密钥对数据进行加密操作。
29.密钥创建管理步骤中,密钥功能自检失败,显示密钥创建失败。
30.密钥调用流程时,需确认已使用管理工具合法生成相应的密钥,并记录下对应的index值,如index下不存在密钥对,调用执行步骤1会返回相应错误。
31.密钥创建管理步骤中,保存密钥和密钥的hash值储存于加密数据库。
32.密钥存储流程中第三步密钥存储流程使用cek+sqlcipher加密数据库存储于sqlite3中。
33.密钥存储流程中第七步,保存cek并储存文件系统。
34.实施例2
35.数据库针对不同类型密钥的表单设计
36.对称密钥表(以sm4对称密钥为例)
[0037][0038][0039]
非对称密钥对表(以sm2非对称密钥为例)
[0040]
[0041][0042]
如上两张表单分别对应sm2、sm4两种密钥的在数据库中的存储形式,除了算法id(用于区分密钥类型)、密钥索引(用于快速索引密钥)等常规列,还添加了密钥散列值(即hash值)用于校验密钥完整性(主要应用于密钥完整性自测),sm2非对称表单中还可以实现一个密钥索引可以管理一对加密公私钥和一对签名公私钥,便于管理和使用密钥对(私钥用于解密和验签由对应的公钥加密或签名的数据)。私钥口令散列值则是用于管理工具合法访问私钥时使用(存储于加密数据库中的私钥属于敏感安全参数,访问时需要鉴别访问的合法性,私钥口令实现了这个功能,而私钥口令散列值则用于校验私钥口令正确性)。
[0043]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种基于sqlite的密钥管理方法,其特征在于:该方法具体包括密钥创建管理、密钥存储、密钥完整性自测、密钥调用;密钥创建管理包括如下步骤:管理工具创建密钥;创建的密钥通过密钥功能自检;对密钥功能自检成功的秘钥进行hash运算;保存密钥和密钥的hash值;密钥存储流程:第一步,通过加密卡生成一个16/32位随机数;第二步,获取的随机数作为cek;第三步,使用cek+sqlcipher加密数据库;第四步,检测加密卡内部kek是否创建,没有创建,返回失败,创建,获取kek的index值;第五步,通过index获取kek密钥句柄;第六步,借助kek对cek加密;第七步,保存cek;密钥完整性自测包括如下步骤:密钥模块启动;密钥完整性测试;失败,密码模块初始化失败,不能继续执行;成功,密码模块功能正常运行;密钥调用流程:使用密码模块对外安全api接口调用sm2算法对数据加密,密码模块根据对应index密钥索引从数据库中检索密钥对,并提取该密钥对的hash值,将检索到的密钥对进行sm3hash运算,运算结果与之前提取的密钥对hash值比对,比对失败,密钥完整性检测不通过,密钥失效并结束该操作要求用户使用管理工具重新生成密钥对,比对成功则对密钥对进行功能自检,再此案例中进行加解密操作,故执行加解密功能自检,失败密钥功能有误,密钥失效并结束该操作要求用户使用管理工具重新生成密钥对,通过则可继续使用密钥对数据进行加密操作。2.根据权利要求1所述的一种基于sqlite的密钥管理方法,其特征在于:所述密钥创建管理步骤中,密钥功能自检失败,显示密钥创建失败。3.根据权利要求1所述的一种基于sqlite的密钥管理方法,其特征在于:所述密钥调用流程时,需确认已使用管理工具合法生成相应的密钥,并记录下对应的index值,如index下不存在密钥对,调用执行步骤1会返回相应错误。4.根据权利要求1所述的一种基于sqlite的密钥管理方法,其特征在于:所述密钥创建管理步骤中,保存密钥和密钥的hash值储存于加密数据库。5.根据权利要求1所述的一种基于sqlite的密钥管理方法,其特征在于:所述密钥存储流程中第三步密钥存储流程使用cek+sqlcipher加密数据库存储于sqlite3中。6.根据权利要求1所述的一种基于sqlite的密钥管理方法,其特征在于:所述密钥存储流程中第七步,保存cek并储存文件系统。

技术总结
本发明涉及密钥管理技术领域,且公开了一种基于sqlite的密钥管理方法,该方法具体包括密钥创建管理、密钥存储、密钥完整性自测、密钥调用;密钥调用流程:使用密码模块对外安全API接口调用SM2算法对数据加密,密码模块根据对应Index密钥索引从数据库中检索密钥对,并提取该密钥对的hash值,将检索到的密钥对进行sm3Hash运算,通过则可继续使用密钥对数据进行加密操作。该基于sqlite的密钥管理方法为一种基于sqlite的密钥管理机制,对于密钥创建—>存储—>应用这整个流程形成了一个可持续的管理体系,且实现了密钥自检功能对密钥的完整性和功能性做到了保障,相较于一般的硬件加密卡拥有更大容量的密钥存储空间,且实现了密钥的安全存储。的安全存储。的安全存储。


技术研发人员:谢宇星 岳佳圆 宋俊涛 边秀宁 孔金珠 杨诏钧 李蕾 于珊珊
受保护的技术使用者:麒麟软件有限公司
技术研发日:2022.06.24
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4949.html

最新回复(0)