CN112631772A - 密码运算方法、处理器、装置及存储介质 - Google Patents
密码运算方法、处理器、装置及存储介质 Download PDFInfo
- Publication number
- CN112631772A CN112631772A CN202011518735.5A CN202011518735A CN112631772A CN 112631772 A CN112631772 A CN 112631772A CN 202011518735 A CN202011518735 A CN 202011518735A CN 112631772 A CN112631772 A CN 112631772A
- Authority
- CN
- China
- Prior art keywords
- module
- cryptographic operation
- processor
- cryptographic
- hardware module
- 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 57
- 238000012545 processing Methods 0.000 claims abstract description 71
- 238000004422 calculation algorithm Methods 0.000 claims description 61
- 230000003044 adaptive effect Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013478 data encryption standard Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013524 data verification Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供密码运算方法、处理器、装置及存储介质,通过获取处理器进行密码运算的状态信息;获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;调用所选择的硬件模块或软件模块以进行密码运算;本申请实现精确判断并选择硬件模块和软件模块中密码运算效率更高的方式来进行工作,从而达到更好的密码运算效率,并能使处理器能有更多计算资源用于其它任务而提升其它任务的处理性能。
Description
技术领域
本申请实施例涉及密码处理技术领域,尤其涉及密码运算方法、处理器、装置及存储介质。
背景技术
在信息化的时代,每时每刻都在产生大量数据,而这些数据在使用和传输过程中如何保证安全,其中就涉及到加密和解密的运算,而加解密运算就必然会带来额外的计算量,其计算量随加密数据的大小相应变化。
在数据使用和传输的安全技术中,常对数据生成数字签名以用于验证,数字签名中会用到消息摘要,而消息摘要会使用哈希函数生成。哈希(Hash)又称散列、杂凑,哈希函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。具体的,哈希函数将数据打乱混合,重新创建一个叫做散列值(或哈希值)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。以SHA-256为例,对于任意长度的消息,SHA256都会产生一个256bit长的哈希值作为消息摘要。
与SHA-256相应的,中国的国产密码算法是SM3,该算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求密码,此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。
根据上述算法可知,密码运算需要消耗大量处理器资源,往往会造成处理器占用率高,运行效率低下的问题。
因此,如何找到一种能提升处理器的密码运算效率的方案,已成为业界亟待解决的技术问题。
发明内容
有鉴于此,本申请实施例中提供密码运算方法、处理器、装置及存储介质,解决现有技术中的问题。
本申请实施例提供了一种密码运算方法,应用于使用预设密码算法对数据进行密码运算处理的处理器,所述密码运算方法包括:获取处理器进行密码运算的状态信息;获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;调用所选择的硬件模块或软件模块以进行密码运算。
可选的,所述软件模块由所述处理器运行的用于密码运算的应用程序实现。
可选的,所述硬件模块为集成在所述处理器中的电路模块。
可选的,所述硬件模块包括密码协处理器。
可选的,所述硬件模块通过直接存储访问方式访问存储器,以获取数据进行密码运算。
可选的,所述状态信息包括:处理器的当前占用率及当前待处理数据量;所述运算方式选择条件包括:处理器的当前占用率与预设占用率阈值间的大小关系条件、以及当前待处理数据量与处理量临界值间的大小关系条件;其中,在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化;
所述获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块,包括:
若所述处理器的当前占用率高于预设占用率阈值,调用硬件模块进行密码运算;或者,若所述处理器的当前占用率不高于预设占用率阈值时,根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块。
可选的,所述在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化,包括:
当待处理数据量不小于处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块;
所述根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块,包括:
在判断当前待处理数据量不小于处理量临界值时,选择硬件模块;
或者,在判断当前待处理数据量小于处理量临界值时,选择软件模块。
可选的,所述密码运算算法包括:SM3标准算法;所述处理量临界值包括64K字节;在待处理数据量低于64K字节时,软件模块进行密码运算的效率高于硬件模块;在待处理数据量高于64K字节时,硬件模块进行密码运算的效率高于软件模块。
可选的,所述预设占用率阈值为50%。
本申请实施例提供了一种密码运算装置,应用于使用预设密码算法对数据进行密码运算处理的处理器,所述密码运算装置包括:
信息获取单元,用于获取处理器进行密码运算的状态信息;
模块选择单元,用于获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;
密码运算单元,用于调用所选择的硬件模块或软件模块以进行密码运算。
可选的,所述状态信息包括:处理器的当前占用率及当前待处理数据量;所述运算方式选择条件包括:处理器的当前占用率与预设占用率阈值间的大小关系条件、以及当前待处理数据量与处理量临界值间的大小关系条件;其中,在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化;
所述模块选择单元,用于在判断所述处理器的当前占用率高于预设占用率阈值时,调用硬件模块进行密码运算;或者,在判断所述处理器的当前占用率不高于预设占用率阈值时,根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块。
可选的,所述在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化,包括:
当待处理数据量不小于处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块;
所述根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块,包括:
在判断当前待处理数据量不小于处理量临界值时,选择硬件模块;
或者,在判断当前待处理数据量小于处理量临界值时,选择软件模块。
可选的,所述密码运算算法包括:SM3标准算法;所述处理量临界值包括64K字节;在待处理数据量低于64K字节时,软件模块进行密码运算的效率高于硬件模块;在待处理数据量高于64K字节时,硬件模块进行密码运算的效率高于软件模块。
本申请实施例提供了一种处理器,用于运行存储器中的可执行程序代码以执行所述的密码运算方法,以选择硬件模块或软件模块加以调用以进行密码运算。
本申请实施例提供了一种计算机装置,包括:存储器,存储有可执行程序代码;以及所述的处理器,与所述存储器耦接。
本申请实施例提供了一种计算机可读存储介质,其上存储有可执行程序代码,所述可执行程序代码被运行时执行所述的密码运算方法。
与现有技术相比,本申请实施例的技术方案具有以下有益效果:
一方面,本申请实施例中的密码运算方法,创新性地根据处理器的状态信息来选择适配的更高密码运算效率的硬件模块或软件模块,从而达到更好的运算效率,以使处理器能提供更多计算资源予密码运算以外任务,而提升在其它任务上的处理性能。
另一方面,本申请实施例中还探究了采用预设密码算法时硬件模块或软件模块间密码运算效率优劣同运算量的相关性,从而通过与处理量临界值作和待处理数据量比较结果相关的运算方式选择条件,能选择不同待处理数据量比较结果下密码运算效率更高的模块,兼顾处理器的性能和预设密码算法下处理器的密码运算效率。
再一方面,硬件模块可以是集成在处理器中的电路模块实现,比如密码协处理器,可以是采用直接存储访问方式访问存储器来获取数据进行密码运算,运算效率高且数据传输速度快。
附图说明
图1A展示为本申请一种实施例中的处理器实现密码运算的架构示意图。
图1B展示为本申请另一种实施例中的处理器实现密码运算的架构示意图。
图2展示为本申请实施例中密码运算方法实际实施的流程示意图。
图3展示为本申请实施例中具体的步骤S202的状态信息在运算方式选择条件上进行判断的流程示意图。
图4展示为本申请实施例中计算机装置的结构示意图。
图5展示为本申请实施例中实现密码运算方法的软件架构原理图。
图6展示为本申请实施例中密码运算装置的功能模块示意图。
具体实施方式
在进行密码计算时,处理器(如CPU、SoC等)通过运行软件程序来进行密码运算,例如对存储器中的数据进行加密、解密、映射(如哈希)等运算。其中,加密、解密、电子签名等常用于网络的安全通信场景中,例如发送方对数据进行加密运算,接收方对收到的加密数据进行解密运算获取原始数据等。如果是对称加密方式,则发送方和接收方使用相同密钥进行加密和解密,或者如果是非对称加密方式,则发送方通过其接收方的公钥对原始数据加密形成密文,再发给接收方由其私钥解密;为验证发送方身份和数据间对应合法,在发送密文时附上发送方的电子签名,发送方的电子签名是通过对原始数据通过消息摘要算法形成摘要再经发送方的私钥加密完成签名,接收方可以通过发送方的公钥解密电子签名,以得到其中的一个摘要,供与根据接收方的私钥解密该密文得到的原始数据经相同消息摘要算法生成的另一个摘要对比,从而验证该电子签名。此即“公钥加密,私钥解密;私钥加密,公钥解密”。
在处理器进行密码运算时,如果需处理的数据量较大,会导致处理器的占用率较高,而降低处理器处理处理其它任务的性能。
在本申请的一些实施例中,可以通过为处理器配置的硬件模块来解决这一问题。
请参阅图1A,展示本申请一种实施例中处理器100A配置硬件模块102A的结构示意图。
如图1A所示,在此示例中,所述处理器100A可以封装为芯片形式。所述硬件模块102A为集成在所述处理器100A中的电路模块。在可能的示例中,所述处理器100A中可以具有一个或多个处理器核101A,所述硬件模块102A可以实现为密码协处理器(CryptographicCoProcessor,CCP),与所述一个或多个处理器核101A耦接,以协助所述一个或多个处理器核101A进行密码运算。
为提升密码运算速度,可选的,所述硬件模块102A可以实现为密码协处理器,所述硬件模块102A可根据处理器100A的可以通过直接存储访问方式(Direct Memory Access,DMA)来从存储器中获得数据,而不经过处理器核心101A,以进行密码运算。例如,硬件模块102A在接受处理器100A的调用情况下,从存储器的目标物理地址中取出需进行加密计算、解密计算、或哈希计算等的数据,计算得到结果后将计算结果存入该目标物理地址或其它地址,供处理器100A获取。
在具体实施中,所述存储器包括以下中的至少一种:处理器100A的芯片中集成的高速缓冲存储器,可以由静态存储器(Static Random Access Memory,SRAM);处理器100A外部的内存(Memory),可以由例如同步动态随机存储器(SDRAM)、双倍速率同步动态随机存储器(DDR SDRAM)等实现。
此外,所述处理器100A中的处理器核101A可以通过运行程序来实现所需功能,例如运行用于密码运算的应用程序来进行密码运算的功能,本申请中将处理器101A运行程序实现功能定义为“软件模块”,图中软件模块标记为103A。
需特别说明的是,虽然图1A中所展示的硬件模块102A可以呈现为集成在处理器100A内的电路模块实现,例如密码协处理器;但是在其它示例中,例如图1B所示,硬件模块102B也可以由处理器100B外部的例如加密卡等实现,处理器100B内包含处理器核101B及其实现的软件模块103B。
可选的,如果是通过网络或USB等接口与处理器通信连接的加密卡,其可能会受限于数据传输速率而无法达到较好的密码运算效率。故在一些示例中,所述加密卡可以是采用数据传输速度更高的通信类型,例如PCI-E(Peripheral Component InterconnectExpress)等。
处理器可以选择调用所述硬件模块或软件模块来进行密码运算。至于选择其中哪种模块进行密码运算,取决于两种模块在当前密码运算场景下哪种模块的运算效率更高。
在具体实施中,可以通过监测处理器的运行状态信息来匹配运算效率更高的模块。
如图2所示,展示本申请实施例中密码运算方法的流程示意图。所述密码运算方法可以应用于之前实施例中的处理器。在具体实现示例中,所述密码运算方法可以由处理器运行可执行程序代码来实现。
所述密码运算方法包括:
步骤S201:获取处理器进行密码运算的状态信息;
步骤S202:获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;
步骤S203:调用所选择的硬件模块或软件模块以进行密码运算。
在一些示例中,所述密码运算方法的执行可以由密码运算需求而触发。例如,某个应用程序需要对数据进行哈希运算,可以通过与实现所述密码运算方法的密码运算程序(例如Openssl)所提供的密码运算接口(例如Openss提供接口以供选择密码算法)来选择预设密码算法以执行后续流程。
在一些示例中,在获取状态信息的实现方式上,可以是监测程序实时监测并记录状态信息到预定内存地址中,而在执行密码运算方法时读取状态信息;或者,也可以在执行密码运算方法调用监测程序即时监测得到所述状态信息。
在一些示例中,所述状态信息是与处理器进行密码运算的效率相关的,其中可以包括与处理器本身负荷相关的指标,如处理器的当前占用率等,呈现为例如25%,50%,80%,100%等,当运算量较大而导致占用率越高时,处理器对单一任务提供的运算资源会降低,整体会呈现出“卡顿”的感觉;此外,所述状态信息也可以是与占用率不直接相关而与密码运算效率直接相关的因素,例如需要进行密码运算的待处理数据量等。
在一些示例中,所述处理器的状态信息可以是由相应的状态监测程序监测得到,例如对应占用率的占用率监测程序,对应待处理数据量的任务信息监测程序等。
在一些示例中,所述密码运算是使用预设密码算法的,例如国际密码算法:高级加密标准(Advanced Encryption Standard,AES)、椭圆曲线密码编码学(Elliptic CurvesCryptography,ECC)、MD5消息摘要算法(MD5Message-Digest Algorithm)、数据加密标准(DES Data Encryption Standard,DES);国产密码标准算法:SM1、SM2、SM3、SM4等;其中,SM1算法是由国家密码管理局发布的商用密码分组标准对称算法,SM2是由国家密码管理局发布的椭圆曲线公钥密码标准算法,SM3是由国家密码管理局发布的密码散列函数标准算法,SM4是由国家密码管理局发布的分组密码标准算法。
在理论上来说,固有处理器核心以外的硬件模块专用于密码运算效率,而非如处理器核心还需要执行其它任务,密码运算效率应该会强于软件模块。然而实际上,由于预设密码算法的特点,并非所有场景下硬件模块的密码运算效率都会比软件模块要高。
在一些示例中,在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系会随之变化。
举例来说,可能出现这样的情形:当待处理数据量不小于(即大于或等于)处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块。
申请人以SM3算法为例,进行了相应的测试。在不同的密码运算所处理数据量的情况下,可以分别得到硬件模块和软件模块的运算时间的对比结果如下表所示:
从该测试数据可见,当密码运算所处理的数据量在小于64K字节时,软件模块所需的运算时间要低于硬件模块,且数据量越少软件模块超出硬件模块的运算效率越多;而当密码运算所处理的数据量大于或等于64K字节时,软件模块所需的运算时间开始高于硬件模块,且数据量越多,硬件模块超出软件模块的运算效率越多;也就是说64K字节成为了硬件模块和软件模块间运算效率优劣关系产生变化(反转)的拐点。
产生上述情形的可能而非必然的原因在于,处理器是多任务运行的,密码运算是其中之一的任务,当运算数据量较小时,处理器在该任务上的计算资源充足而能直接快速地完成运算,而处理器与硬件模块间的通信交互等可能会占用一定时间以致硬件模块的密码运算效率不如软件模块;但当运算数据量较大时,处理器的计算资源可能相对不够充足,从而软件模块不如通过额外的硬件模块完成来得运算效率更高。
需特别说明的是,虽然上述示例中展示的是使用SM3算法时,随处理数据量的增加,从软件模块的运算效率高于硬件模块在处理量临界值后发生反转的情形,但是这只是一种情形示例,在其它各种密码运算算法中,皆可以通过测量手段得到其实际情形,可以和上述情形相同,亦可能相反;然而这些算法皆可以应用在本申请方案中,故所述预设密码算法也并非以SM3为限。
根据上述分析,在明确了影响硬件模块和软件模块间密码运算效率优劣的影响因素之后,在步骤S202中可以设置与所述状态信息相应的一条或多条运算方式选择条件(视考虑的因素多寡、相互关系来确定),从而用于判断密码运算效率更优的模块。
在一些示例中,所述运算方式选择条件包括:处理器的当前占用率与预设占用率阈值间的大小关系条件、以及当前待处理数据量与处理量临界值间的大小关系条件等。
举例来说,可以设置与处理器性能强弱转变相关的预设占用率阈值,例如占用率50%,从而设定相应条件:判断处理器的当前占用率是否高于50%;又比如,在采用SM3算法进行密码运算时,取处理量临界值64K字节,从而设定相应条件:判断处理器的当前待处理数据量是否不小于64K字节等。
相应的,可以预先对应上述判断条件的相应判断结果,配置相关联的能达到更好的运算效率的密码运算方式,比如使用软件模块运算,或使用硬件模块运算。需说明的是,上述示例性地展示的各个条件,在实际场景中,可以根据实际需求进行条件的增加或删减等,并非以此为限。
故在步骤S203中,通过将状态信息同这些条件进行一一匹配,以根据匹配的结果来选择相应的模块进行密码运算。
在一些示例中,若所述处理器的当前占用率高于预设占用率阈值,调用硬件模块进行密码运算。具体来讲,通过硬件模块来分担处理器(其中的处理器核)的密码运算任务,从而降低处理器的占用率。可选的,所述预设占用率阈值可以设置在例如50%。
或者,若所述处理器的当前占用率不高于预设占用率阈值时,根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块。
具体的,在一些可能场景中,当待处理数据量不小于处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块。
故相应的,在判断当前待处理数据量不小于处理量临界值时,可选择硬件模块;或者,在判断当前待处理数据量小于处理量临界值时,可选择软件模块。
在实际应用示例中,在使用例如SM3算法的密码运算时,该处理量临界值设为64K字节,判断待处理数据量和64K字节间大小关系,比如判断待处理数据量是否大于或等于64K字节。假设待处理数据量是1M字节,判断结果为1M字节大于64K字节,则可匹配到使用硬件模块来进行密码运算;又或者,待处理数据量是32K字节,判断结果为小于64K字节,则可匹配到使用软件模块来进行密码运算。
结合上述,如图3所示,展示本申请一具体实施例中步骤S202具体的流程示意图。
步骤S301:获取处理器的当前占用率和当前密码运算任务的当前待处理数据量;
步骤S302:判断处理器的当前占用率是否大于预设占用率阈值;
若否,则进入步骤S303;若是,则进入步骤S304。
步骤S303:判断处理器的当前待处理数据量是否不小于处理量临界值;
若是,则进入步骤S304;若否,则进入步骤S305。
步骤S304:选择硬件模块进行密码运算;
步骤S305:选择软件模块进行密码运算。
在具体实施中,可以是处理器运行用于密码运算的应用程序来完成,例如开源的软件程序Openssl等,在Openssl1.1.1版本的密码算法库中已支持多种国产密码算法,如SM1、SM2、SM3、SM4。可选的,在采用SM3密码算法时,可以在SM3密码算法中关键的处理函数如update、final,中添加上述对当前占用率、当前待处理数据量分别进行条件判断的逻辑,进而可选择后续的硬件模块或软件模块对应的处理函数,以进行对应模块的调用。
另外,对硬件模块的调用可以是通过硬件模块相关的驱动程序来驱动工作,例如通过密码协处理器的驱动程序来驱动密码协处理器工作。
如图4所示,展示本申请实施例中的计算机装置的结构示意图。
所述计算机装置400包括:
存储器401,存储有可执行程序代码。其中,所述可执行程序代码是对各种类型程序的总称,被处理器运行时实现功能。例如,操作系统程序被运行而实现操作系统(如Windows,Linux等),应用程序被运行时候实现应用功能,驱动程序被运行时能驱动硬件模块等。
处理器402,与所述存储器401耦接(例如通过总线连接);处理器402可以由例如图1A或图1B中的处理器实现;所述处理器402运行所述存储器401中的可执行程序代码中的系统程序而实现所需功能。例如,通过运行可执行程序代码实现例如图2实施例中的方法,以选择硬件模块或软件模块进行。
在一些示例中,所述存储器401可以包括内存存储器(亦可称为运行内存),由例如SDRAM或DDR SDRAM实现,以用于可执行程序代码的运行。所述存储器还可以包括非易失性存储器,例如ROM、固态硬盘、机械硬盘等。
在一些示例中,所述计算机装置400还可具有通信器403,以能实现收发而作为通信的接收方或发送方;当有安全通信需求而需要密码运算时,所述计算机装置可以通过。所述通信器可以包括有线通信电路模块和/或无线通信电路模块,有线通信电路模块包括例如有线网卡、USB模块等中的至少一种,无线通信电路模块包括例如WiFi模块、2G/3G/4G/5G模块、NFC模块、红外模块、蓝牙模块等中的至少一种。
在一些示例中,所述计算机装置400可以实现于例如服务器、服务器组、台式机、笔记本电脑、智能手机、平板电脑、智能手环、智能手表、或其它智能设备、或这些智能设备通信连接而形成的分布式处理系统等。
为更清楚说明本申请在实际应用中的具体实现,如图5所示,展示本申请实施例中实现密码运算方法的软件架构原理图。
如图所示,以操作系统按不同权限具有不同的运行模式,例如对应用户的用户模式(User Mode),亦被称为“用户态”;对应操作系统内核的特权模式,亦被称为“内核态”。内核态和用户态的划分,利于防止用户态中的应用程序进行越权的操作。
在操作系统中,可以预先注册硬件模块。由于硬件模块包含硬件设备,故其需在内核态权限下通过驱动程序调用。
在用户态中,存在密码运算需求的应用程序可以调用用户态下的密码运算接口进行密码运算,例如通过Openssl1.1.1选择密码算法库中的SM3算法;进而执行图2的流程,读取处理器的状态信息,如当前使用率、当前待处理数据量等,并进行条件判断,以选择采用软件模块或硬件模块进行密码运算;其中,当采用例如Openssl1.1.1等应用程序来实现时,可以通过在其中的处理函数添加上述条件判断的逻辑。
当条件判断结果为需采用软件模块进行密码运算时,在用户态调用软件模块,完成密码运算。
当判断需采用硬件模块进行密码运算时,发送用户态的密码运算请求到内核态的密码运算接口来尝试调用硬件模块,进而通过操作系统内核态下运行硬件模块的驱动程序以驱动硬件模块进行密码运算。在具体示例中,所述内核态加密码接口可以通过套接字(socket)的方式和用户态密码运算程序间建立通信关系。
在具体示例中,操作系统中包括密码运算架构,例如Linux中的密码运算架构等;该密码运算架构是一套内核通用的密码运算架构,提供统一接口,其中可以包含所述内核态的密码接口;当内核态的密码接口收到用户态的密码运算请求,由该密码运算架构通过驱动程序来驱动硬件模块。在可能的具体示例中,所述驱动程序包括密码运算驱动程序和硬件模块驱动程序,密码运算驱动程序用于实现硬件模块和操作系统的密码运算架构之间接口的功能,硬件模块驱动用于实现驱动硬件模块的运行工作,例如底层硬件的命令发送和接收处理等。
需说明的是,上述图5中的架构只是一种实际场景中的实现示例,可以根据实际需求采用不同的实现方式,并非以此示例为限。
再如图6所示,展示为本申请实施例中密码运算装置的功能模块示意图。所述密码运算装置,应用于使用预设密码算法对数据进行密码运算处理的处理器。在所述密码运算装置的具体实现上,可以参考前述图2实施例,此处不对重复的内容进行赘述。
所述密码运算装置600包括:
信息获取单元601,用于获取处理器进行密码运算的状态信息;
模块选择单元602,用于获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;
密码运算单元603,用于调用所选择的硬件模块或软件模块以进行密码运算。
可选的,所述状态信息包括:处理器的当前占用率及当前待处理数据量;所述运算方式选择条件包括:处理器的当前占用率与预设占用率阈值间的大小关系条件、以及当前待处理数据量与处理量临界值间的大小关系条件;其中,在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化;
所述模块选择单元602,用于在判断所述处理器的当前占用率高于预设占用率阈值时,调用硬件模块进行密码运算;或者,在判断所述处理器的当前占用率不高于预设占用率阈值时,根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块。
可选的,所述在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化,包括:
当待处理数据量不小于处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块;
所述根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块,包括:
在判断当前待处理数据量不小于处理量临界值时,选择硬件模块;
或者,在判断当前待处理数据量小于处理量临界值时,选择软件模块。
可选的,所述密码运算算法包括:SM3标准算法;所述处理量临界值包括64K字节;在待处理数据量低于64K字节时,软件模块进行密码运算的效率高于硬件模块;在待处理数据量高于64K字节时,硬件模块进行密码运算的效率高于软件模块。
本申请实施例中还可提供计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序运行时执行前述例如图2、图3实施例中的方法步骤。
即,本申请实施例(例如图2、图3实施例)中的方法流程可被实现为可存储在记录介质(诸如CDROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在前述实施例(例如图2、图3实施例)的方法步骤中。此外,当通用计算机访问用于实现在此示出方法的代码时,代码的执行将通用计算机转换为用于执行在此示出各方法步骤的专用计算机。
与现有技术相比,本申请实施例的技术方案具有以下有益效果:
一方面,本申请实施例中的密码运算方法,创新性地根据处理器的状态信息来选择适配的更高密码运算效率的硬件模块或软件模块,从而达到更好的运算效率,以使处理器能提供更多计算资源予密码运算以外任务,而提升在其它任务上的处理性能。
另一方面,本申请实施例中还探究了采用预设密码算法时硬件模块或软件模块间密码运算效率优劣同运算量的相关性,从而通过与处理量临界值作和待处理数据量比较结果相关的运算方式选择条件,能选择不同待处理数据量比较结果下密码运算效率更高的模块,兼顾处理器的性能和预设密码算法下处理器的密码运算效率。
再一方面,硬件模块可以是集成在处理器中的电路模块实现,比如密码协处理器,可以是采用直接存储访问方式访问存储器来获取数据进行密码运算,运算效率高且数据传输速度快。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机程序。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
例如,前述图2、图3等实施例中的各个步骤的顺序可以在具体场景中加以变化,并非以上述描述为限。
虽然本申请实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本申请实施例的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (16)
1.一种密码运算方法,其特征在于,应用于使用预设密码算法对数据进行密码运算处理的处理器,所述密码运算方法包括:
获取处理器进行密码运算的状态信息;
获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;
调用所选择的硬件模块或软件模块以进行密码运算。
2.根据权利要求1所述的密码运算方法,其特征在于,所述软件模块由所述处理器运行的用于密码运算的应用程序实现。
3.根据权利要求1所述的密码运算方法,其特征在于,所述硬件模块为集成在所述处理器中的电路模块。
4.根据权利要求3所述的密码运算方法,其特征在于,所述硬件模块包括密码协处理器。
5.根据权利要求3或4所述的密码运算方法,其特征在于,所述硬件模块通过直接存储访问方式访问存储器,以获取数据进行密码运算。
6.根据权利要求1所述的密码运算方法,其特征在于,所述状态信息包括:处理器的当前占用率及当前待处理数据量;所述运算方式选择条件包括:处理器的当前占用率与预设占用率阈值间的大小关系条件、以及当前待处理数据量与处理量临界值间的大小关系条件;其中,在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化;
所述获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块,包括:
若所述处理器的当前占用率高于预设占用率阈值,调用硬件模块进行密码运算;或者,若所述处理器的当前占用率不高于预设占用率阈值时,根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块。
7.根据权利要求6所述的密码运算方法,其特征在于,所述在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化,包括:
当待处理数据量不小于处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块;
所述根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块,包括:
在判断当前待处理数据量不小于处理量临界值时,选择硬件模块;
或者,在判断当前待处理数据量小于处理量临界值时,选择软件模块。
8.根据权利要求6所述的密码运算方法,其特征在于,所述密码运算算法包括:SM3标准算法;所述处理量临界值包括64K字节;在待处理数据量低于64K字节时,软件模块进行密码运算的效率高于硬件模块;在待处理数据量高于64K字节时,硬件模块进行密码运算的效率高于软件模块。
9.根据权利要求6所述的密码运算方法,其特征在于,所述预设占用率阈值为50%。
10.一种密码运算装置,其特征在于,应用于使用预设密码算法对数据进行密码运算处理的处理器,所述密码运算装置包括:
信息获取单元,用于获取处理器进行密码运算的状态信息;
模块选择单元,用于获取所述状态信息在运算方式选择条件上的条件判断结果,并在所述处理器的硬件模块或软件模块中选择适配于所述条件判断结果的模块;
密码运算单元,用于调用所选择的硬件模块或软件模块以进行密码运算。
11.根据权利要求10所述的密码运算装置,其特征在于,所述状态信息包括:处理器的当前占用率及当前待处理数据量;所述运算方式选择条件包括:处理器的当前占用率与预设占用率阈值间的大小关系条件、以及当前待处理数据量与处理量临界值间的大小关系条件;其中,在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化;
所述模块选择单元,用于在判断所述处理器的当前占用率高于预设占用率阈值时,调用硬件模块进行密码运算;或者,在判断所述处理器的当前占用率不高于预设占用率阈值时,根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块。
12.根据权利要求11所述的密码运算装置,其特征在于,所述在硬件模块和软件模块运行预设密码算法进行密码运算时,当密码运算的待处理数据量和处理量临界值的大小关系发生变化时,硬件模块和软件模块间的运算效率优劣关系随之变化,包括:
当待处理数据量不小于处理量临界值时,所述硬件模块的运算效率高于软件模块;当待处理数据量小于处理量临界值时,所述硬件模块的运算效率低于软件模块;
所述根据所述当前待处理数据量同处理量临界值间的大小关系,以选择适配的更高运算效率的硬件模块或软件模块,包括:
在判断当前待处理数据量不小于处理量临界值时,选择硬件模块;
或者,在判断当前待处理数据量小于处理量临界值时,选择软件模块。
13.根据权利要求11所述的密码运算装置,其特征在于,所述密码运算算法包括:SM3标准算法;所述处理量临界值包括64K字节;在待处理数据量低于64K字节时,软件模块进行密码运算的效率高于硬件模块;在待处理数据量高于64K字节时,硬件模块进行密码运算的效率高于软件模块。
14.一种处理器,其特征在于,用于运行存储器中的可执行程序代码以执行如权利要求1至9中任一项所述的密码运算方法,以选择硬件模块或软件模块加以调用以进行密码运算。
15.一种计算机装置,其特征在于,包括:存储器,存储有可执行程序代码;以及如权利要求14所述的处理器,与所述存储器耦接。
16.一种计算机可读存储介质,其上存储有可执行程序代码,其特征在于,所述可执行程序代码被运行时执行如权利要求1至9中任一项所述的密码运算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011518735.5A CN112631772A (zh) | 2020-12-21 | 2020-12-21 | 密码运算方法、处理器、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011518735.5A CN112631772A (zh) | 2020-12-21 | 2020-12-21 | 密码运算方法、处理器、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112631772A true CN112631772A (zh) | 2021-04-09 |
Family
ID=75320356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011518735.5A Pending CN112631772A (zh) | 2020-12-21 | 2020-12-21 | 密码运算方法、处理器、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631772A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342530A (zh) * | 2021-06-23 | 2021-09-03 | 海光信息技术股份有限公司 | 数据杂凑处理方法、装置、cpu、系统及电子设备 |
CN114915405A (zh) * | 2022-07-15 | 2022-08-16 | 麒麟软件有限公司 | 一种基于OpenSSL的国密算法硬件加速方法 |
CN116582267A (zh) * | 2023-05-15 | 2023-08-11 | 合芯科技(苏州)有限公司 | 一种数据加密系统、方法、装置、存储介质及电子设备 |
WO2023216461A1 (zh) * | 2022-05-09 | 2023-11-16 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111103856A (zh) * | 2019-12-18 | 2020-05-05 | 宁波和利时信息安全研究院有限公司 | 一种加密控制方法、装置及系统 |
CN111475728A (zh) * | 2020-04-07 | 2020-07-31 | 腾讯云计算(北京)有限责任公司 | 云资源信息搜索方法、装置、设备及存储介质 |
-
2020
- 2020-12-21 CN CN202011518735.5A patent/CN112631772A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111103856A (zh) * | 2019-12-18 | 2020-05-05 | 宁波和利时信息安全研究院有限公司 | 一种加密控制方法、装置及系统 |
CN111475728A (zh) * | 2020-04-07 | 2020-07-31 | 腾讯云计算(北京)有限责任公司 | 云资源信息搜索方法、装置、设备及存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342530A (zh) * | 2021-06-23 | 2021-09-03 | 海光信息技术股份有限公司 | 数据杂凑处理方法、装置、cpu、系统及电子设备 |
WO2023216461A1 (zh) * | 2022-05-09 | 2023-11-16 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
CN114915405A (zh) * | 2022-07-15 | 2022-08-16 | 麒麟软件有限公司 | 一种基于OpenSSL的国密算法硬件加速方法 |
CN114915405B (zh) * | 2022-07-15 | 2022-11-11 | 麒麟软件有限公司 | 一种基于OpenSSL的国密算法硬件加速方法 |
CN116582267A (zh) * | 2023-05-15 | 2023-08-11 | 合芯科技(苏州)有限公司 | 一种数据加密系统、方法、装置、存储介质及电子设备 |
CN116582267B (zh) * | 2023-05-15 | 2023-10-31 | 合芯科技(苏州)有限公司 | 一种数据加密系统、方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3657376B1 (en) | Hybrid-cloud data storage method and apparatus, related device, and cloud system | |
CN112631772A (zh) | 密码运算方法、处理器、装置及存储介质 | |
CN109150499B (zh) | 动态加密数据的方法、装置、计算机设备和存储介质 | |
US10044703B2 (en) | User device performing password based authentication and password registration and authentication methods thereof | |
KR101224322B1 (ko) | 마이크로제어기 내의 데이터 보안 처리를 위한 방법, 장치 및 집적 회로 | |
CN110324138B (zh) | 数据加密、解密方法及装置 | |
CN110677250A (zh) | 密钥和证书分发方法、身份信息处理方法、设备、介质 | |
JP2016517241A (ja) | ストレージデバイスによって支援されるインライン暗号化および暗号化解除 | |
JP2018511261A (ja) | プルーフオブワークに基づくユーザ識別システム | |
US9405919B2 (en) | Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers | |
CN108199827B (zh) | 客户端代码完整性校验方法、存储介质、电子设备及系统 | |
CN110580420A (zh) | 基于集成芯片的数据处理方法、计算机设备、存储介质 | |
US20210006391A1 (en) | Data processing method, circuit, terminal device and storage medium | |
US11463417B2 (en) | Encryption processing method and apparatus | |
CN111967023A (zh) | 数据加密和解密方法、装置、系统以及可读存储介质 | |
CN109586898B (zh) | 双系统通信密钥生成方法及计算机可读存储介质 | |
CN115442032A (zh) | 一种数据处理方法、片上系统及可读存储介质 | |
CN107924440B (zh) | 用于管理容器的方法、系统和计算机可读介质 | |
CN109960935B (zh) | 确定tpm可信状态的方法、装置及存储介质 | |
CN113127844A (zh) | 一种变量访问方法、装置、系统、设备和介质 | |
US20230093105A1 (en) | Method of dynamically loading encryption engine | |
WO2019184741A1 (zh) | 应用程序信息的存储、处理方法及装置 | |
CN113569265B (zh) | 一种数据处理方法、系统及装置 | |
CN115361198A (zh) | 解密方法、加密方法、装置、计算机设备和存储介质 | |
US11321323B2 (en) | Method and system for searching for at least a specific datum in a user unit |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210409 |
|
RJ01 | Rejection of invention patent application after publication |