SM4加解密方法、装置、设备和计算机可读存储介质与流程
- 国知局
- 2024-08-05 11:43:45
本发明涉及加解密,尤其涉及一种sm4加解密方法、装置、设备和计算机可读存储介质。
背景技术:
1、sm4算法是国密算法中的一种对称加密算法,其特点是加解密使用相同密钥。sm4算法实现简单,因此加解密速度较快,消耗资源少,主要用于大数据量的加密和解密。传统的国密sm4加解密流程在用户空间通过高级语言c/c++、java等实现,该算法的执行效率取决于cpu的主频,需要占用cpu算例资源,因而效率比较低。
技术实现思路
1、本发明提供了一种sm4加解密方法、装置、设备和计算机可读存储介质,用于解决传统的国密sm4加解密算法加解密性能差和效率低的技术问题。
2、有鉴于此,本发明第一方面提供了一种sm4加解密方法,包括以下步骤:
3、s1、加载包含关于密码协处理器对于sm4算法硬件支持的自定义密码协处理器内核驱动代码;
4、s2、通过sm4加解密测试程序从libkcapi库中调用加密api函数,将sm4算法中要加密或解密的参数传递给linux内核;
5、s3、通过linux内核调用自定义密码协处理器内核驱动代码,基于密码协处理器硬件特性完成sm4加密或解密,在sm4加密或解密完成后,将sm4加密或解密的数据从内核空间返回给用户空间。
6、可选地,自定义密码协处理器内核驱动代码,包括:
7、加密引擎设备初始化,配置工作队列,初始化每个工作队列关联的资源;
8、为每个工作队列创建并绑定一个内核工作线程,利用工作线程取出目标数据并通过直接内存访问请求将目标数据提交给密码协处理器进行加密或解密处理;
9、在密码协处理器完成加密或解密处理后,通过直接内存访问将加密或解密数据从密码协处理器设备地址空间拷贝到内存地址空间,通过中断通知内核空间加密或解密处理已完成。
10、可选地,步骤s1之后,步骤s2之前,还包括:
11、查看/proc/crypto文件,判断内核驱动是否已支持sm4算法,若是,则执行步骤s2,否则,返回步骤s1。
12、可选地,步骤s2中,sm4算法中要加密或解密的参数包括:加密或解密的目标数据、密钥和初始化向量。
13、本发明第二方面提供了一种sm4加解密装置,包括以下模块:
14、驱动加载模块,用于加载包含关于密码协处理器对于sm4算法硬件支持的自定义密码协处理器内核驱动代码;
15、调用模块,用于通过sm4加解密测试程序从libkcapi库中调用加密api函数,将sm4算法中要加密或解密的参数传递给linux内核;
16、加解密模块,用于通过linux内核调用自定义密码协处理器内核驱动代码,基于密码协处理器硬件特性完成sm4加密或解密,在sm4加密或解密完成后,将sm4加密或解密的数据从内核空间返回给用户空间。
17、可选地,自定义密码协处理器内核驱动代码,包括:
18、加密引擎设备初始化,配置工作队列,初始化每个工作队列关联的资源;
19、为每个工作队列创建并绑定一个内核工作线程,利用工作线程取出目标数据并通过直接内存访问请求将目标数据提交给密码协处理器进行加密或解密处理;
20、在密码协处理器完成加密或解密处理后,通过直接内存访问将加密或解密数据从密码协处理器设备地址空间拷贝到内存地址空间,通过中断通知内核空间加密或解密处理已完成;
21、内核空间收到中断通知后,将加解密数据拷贝到用户空间。
22、可选地,驱动加载模块之后,调用模块,还包括:
23、判断模块,用于查看/proc/crypto文件,判断内核驱动是否已支持sm4算法,若是,则执行调用模块,否则,返回执行驱动加载模块。
24、可选地,调用模块中,sm4算法中要加密或解密的参数包括:加密或解密的目标数据、密钥和初始化向量
25、本发明第三方面提供了一种sm4加解密设备,所述设备包括处理器以及存储器:
26、所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
27、所述处理器用于根据所述程序代码中的指令执行本发明第一方面所述的sm4加解密方法。
28、本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行本发明第一方面所述的sm4加解密方法。
29、从以上技术方案可以看出,本发明提供的sm4加解密方法具有以下优点:
30、本发明提供的sm4加解密方法,利用cpu内部集成的密码协处理器特性,将sm4加解密流程卸载到密码协处理器执行,而cpu可以去处理其他任务,减少了对cpu资源的占用,提升了sm4加解密执行效率,同时密码协处理器硬件执行加解密相比软件加解密性能有较大提升,因而更适合加解密数据量大的应用场景,解决了传统的国密sm4加解密算法加解密性能差和效率低的技术问题。
技术特征:1.一种sm4加解密方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的sm4加解密方法,其特征在于,自定义密码协处理器内核驱动代码,包括:
3.根据权利要求1所述的sm4加解密方法,其特征在于,步骤s1之后,步骤s2之前,还包括:
4.根据权利要求1所述的sm4加解密方法,其特征在于,步骤s2中,sm4算法中要加密或解密的参数包括:加密或解密的目标数据、密钥和初始化向量。
5.一种sm4加解密装置,其特征在于,包括以下模块:
6.根据权利要求5所述的sm4加解密装置,其特征在于,自定义密码协处理器内核驱动代码,包括:
7.根据权利要求5所述的sm4加解密装置,其特征在于,驱动加载模块之后,调用模块,还包括:
8.根据权利要求5所述的sm4加解密装置,其特征在于,调用模块中,sm4算法中要加密或解密的参数包括:加密或解密的目标数据、密钥和初始化向量。
9.一种sm4加解密设备,其特征在于,所述设备包括处理器以及存储器:
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-4任一项所述的sm4加解密方法。
技术总结本发明公开了一种SM4加解密方法、装置、设备和计算机可读存储介质,方法包括加载包含关于密码协处理器对于SM4算法硬件支持的自定义密码协处理器内核驱动代码,通过SM4加解密测试程序从libkcapi库中调用加密api函数,将SM4算法中要加密或解密的参数传递给linux内核,通过linux内核调用自定义密码协处理器内核驱动代码,基于密码协处理器硬件特性完成SM4加密或解密,在SM4加密或解密完成后,将SM4加密或解密的数据从内核空间返回给用户空间。解决了传统的国密SM4加解密算法加解密性能差和效率低的技术问题。技术研发人员:郭琦,郭天宇,郭海平,黄立滨,卢远宏受保护的技术使用者:南方电网科学研究院有限责任公司技术研发日:技术公布日:2024/8/1本文地址:https://www.jishuxx.com/zhuanli/20240802/259059.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。