CN109687954B - 用于算法加速的方法和装置 - Google Patents

用于算法加速的方法和装置 Download PDF

Info

Publication number
CN109687954B
CN109687954B CN201811592733.3A CN201811592733A CN109687954B CN 109687954 B CN109687954 B CN 109687954B CN 201811592733 A CN201811592733 A CN 201811592733A CN 109687954 B CN109687954 B CN 109687954B
Authority
CN
China
Prior art keywords
hash
module
command
current command
source data
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.)
Active
Application number
CN201811592733.3A
Other languages
English (en)
Other versions
CN109687954A (zh
Inventor
李健
李艳华
韩睦华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guizhou Huaxin Semiconductor Technology Co ltd
Original Assignee
Guizhou Huaxintong Semiconductor Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guizhou Huaxintong Semiconductor Technology Co ltd filed Critical Guizhou Huaxintong Semiconductor Technology Co ltd
Priority to CN201811592733.3A priority Critical patent/CN109687954B/zh
Publication of CN109687954A publication Critical patent/CN109687954A/zh
Application granted granted Critical
Publication of CN109687954B publication Critical patent/CN109687954B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供了一种用于算法加速的方法,所述方法包括:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。

Description

用于算法加速的方法和装置
技术领域
本公开涉及非对称密码算法领域,更具体地,涉及一种用于算法加速的方法和装置。
背景技术
非对称密码算法也称为公开密钥密码算法,是当今密码学主题的一个方面。
在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。
1976年提出的公开密钥密码体制,其原理是将加密密钥和解密密钥分离。这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保留解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公开密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。
1978年提出公共密钥密码的具体实施方案,即RSA方案。
1991年提出的DSA算法也是一种公共密钥算法,在数字签名方面有较大的应用优势。
非对称密码算法的应用主要包括:1)加密和解密;2)数字签名和验签;3)密钥交换。
需要一种用于非对称密码算法中的算法加速的技术。
发明内容
本公开的一方面提出了一种用于算法加速的方法,所述方法包括:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。
本公开的另一方面提供了一种用于算法加速的装置,所述装置包括:解析模块,被配置为获取并解析命令;哈希模块,用于进行哈希运算;算术运算模块,与所述哈希模块连接,其中,基于所述解析模块解析当前命令的结果和基于执行当前命令所需要的输入数据,由所述算术运算模块执行当前命令,并且在所述算术运算模块执行当前命令期间由哈希模块和/或所述解析模块执行附加操作,所述附加操作包括由所述哈希模块进行当前命令所涉及的源数据的哈希运算以及由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作中的至少一个;以及由所述算术运算模块执行下一命令;其中,由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作包括:由解析模块解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则由哈希模块进行下一命令所涉及的源数据的哈希运算。
本公开另一方面提供了一种计算机系统,包括:处理器和存储器,所述存储器存储计算机可执行指令,该指令在被处理器运行时执行如下方法:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。
本公开通过在执行当前命令期间执行包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个的附加操作,基本可以利用执行当前命令所需的时间来获取执行下一命令所需要的输入数据,从而节约获取下一命令所需要的输入数据的时间,和/或在执行当前命令的同时,进行当前命令所涉及的源数据的哈希运算和/或预先进行下一命令所涉及的源数据的哈希运算从而利用执行当前命令所需的时间来执行这些哈希运算,节约了这些哈希运算所需的时间,进而从整体上提高非对称密码算法中的加速性能。
要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并且意图在于提供要求保护的技术的进一步说明。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出了根据本公开实施例的用于算法加速的方法的流程图;
图2示出了根据本公开实施例的,用于算法加速的、在执行所述当前命令期间执行当前命令所涉及的源数据的哈希运算的方法的流程图;
图3示出了根据本公开实施例的,用于算法加速的、在执行所述当前命令期间执行与下一命令相关的预操作的方法的流程图;
图4A-4D示出了根据本公开实施例的、本公开与现有技术对比的概念图;
图5示出了根据本公开实施例的用于执行算法加速的装置的结构框图;
图6示出了根据本公开实施例的解析模块的内部流程图;
图7示出了根据本公开实施例的计算机系统的结构框图。
具体实施方式
在后文中,将参照附图描述多个实施例、应用和修改。此外,下面描述的实施例是优选的特定示例,并且设置了技术上优选的各种限制,但是在以下描述中,本公开不限于这些实施例。
迄今为止的所有公开密钥密码体系中,RSA和ECC(椭圆曲线密码学,英文为Elliptic curve cryptography,缩写为ECC)是其中最著名、使用最广泛的两种。我国的SM2也是ECC的一个变种。
一、RSA算法
RSA利用的是大数分解难题,即选择两个大的质数,计算这两个质数的乘积比较简单,但是由这个乘积得到这两个素数则很难。
RSA密钥生成过程如下:
1.选择两个大素数p和q,这两个大素数是保密的。
2.计算n·p*q,该结果是公开的。
3.计算n的欧拉函数Φ(n)=(p-1)*(q-1),该结果是保密的。
4.选择满足以下条件的公开指数(公钥)e∈{1,2,...,Φ(n)-1},该公开指数是公开的,具体为:gcd(e,Φ(n))=1,其中gcd(*)函数表示返回两个或多个整数的最大公约数。
5.计算满足以下条件的私钥d,该私钥d是保密的,具体为:d*e≡1 mod Φ(n)。
RSA算法中运算量最大的是模幂运算,譬如加密过程:密文=明文E mod N,解密过程:明文=密文D mod N,模幂需要的输入包括明文和公钥对(E,N)或密文和私钥对(D,N)。计算模幂可以使用普通的二进制扫描幂指数平方-乘的方法或使用中国剩余定理(CRT)快速执行模幂计算,下面是CRT算法的大概描述。
拥有私钥的一方同时也知道素数p和q。CRT的基本思想不是使用一个“非常长”的模数n进行算术运算,而是执行两个单独的指数运算模上两个“较短”素数p和q。
这是一种变换运算,需要三个步骤:变换到CRT域;在CRT域内进行计算;对得到的结果进行逆变换。
二、ECC算法
椭圆曲线密码学ECC,一种建立公开密钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。
ECC使用较短的操作数,可提供与RSA同等的安全等级(所需要的操作数的长度之比大概为160~256位比1024~3072位)。在很多情况下,ECC在性能(更少的计算量)和带宽(更短的签名和密钥)上都比RSA更具有优势。
椭圆曲线密码学的许多形式有稍微的不同,所有的都依赖于被广泛承认的解决椭圆曲线离散对数问题的困难性上,对应有限域上椭圆曲线的群。一般认为在一个有限域乘法群上的离散对数问题(DLP)和椭圆曲线上的离散对数问题(ECDLP)并不等价;ECDLP比DLP要困难的多。
在密码的使用上,曲线E(q)和其中一个特定的基点G一起被选择和公布。一个私钥k被作为随机整数来选择;公钥来公布(注意假设的ECDLP困难性意味着k很难从P中确定)。
下面介绍各种算法的不同应用时的输入参数。
一、RSA签名和验签
RSA的签名和验签都包括对待签名/验签的明文信息的编码,目前常见的编码方式包括PSS/V15/X9.31,以PSS编码的签名为例时,对于硬件的实现来说,输入数据包括1)密钥对(D,N);2)待签名的明文。PSS/V15/X9.31描述了签名和验签的过程,为了不模糊本公开的公开点,这里不再详细描述。
二、ECC签名和验签
以ECDSA ANS X9.62-2005里面描述的签名过程为例(对该签名过程同样不做详细描述),对于硬件来说,输入数据包括:1)椭圆曲线参数,n/p/h/a/b/xG/yG;2)待签名的明文;3)私钥,并且一般需要对待签名的明文做哈希处理。
三、SM2签名和验签
以国家密码管理局GB/T 32918.2-2016中的签名为例(对该签名过程同样不做详细描述),对硬件来说,输入数据包括:1)椭圆曲线参数;2)ZA和待签名的消息M;3)私钥。
四、SM2加密和解密
以国家密码管理局GB/T 32918.4-2016中的加密为例(对该加密过程同样不做详细描述),对硬件来说,输入数据包括:1)椭圆曲线参数;2)待加密的消息M;3)公钥。
由于与对称算法相比,非对称密码算法存在运算量大,处理速度慢的缺点,所以会有很多针对非对称密码算法的硬件加速,并且针对非对称密码算法的硬件加速主要分两大类:
2.1)针对特定运算的加速,比如模乘、模幂、点加、点倍、点乘等,然后由软件+硬件一起实现特定协议层(比如ECDSA);
2.2)全协议层硬件加速,即把整个协议层的处理全部用硬件来实现,这样做的好处一是减少软件的负载,二是提高整体速度;缺点是灵活性稍差。
本公开针对的是全协议层硬件加速的优化,在本公开中将用于除了哈希运算之外的其它运算的单元统称为算术运算单元或底层运算单元;本公开省略对哈希运算和底层运算单元进行优化的处理的详细描述,以避免模糊本公开的保护范围。
在对性能要求不是很高的情况下,全协议层硬件加速器需要的输入数据(例如RSA/ECC/SM2所需要的输入,包括椭圆曲线参数,私钥/公钥等)可以通过CPU写寄存器的方式配置进去或者串行的通过直接存储器存取(Direct Memory Access,DMA)从主存中读取(譬如双倍速率(DoubleDate Rate,DDR)内存),但是,在高性能服务器领域,对非对称密码算法加速器的性能要求非常高,上述现有技术中的传统的做法(如CPU配置或串行从主存读取)会对整体性能造成影响。非对称密码算法加速器外部的DMA延时受到系统级芯片(System-On-Chip,SoC)芯片内部其它模块传输的影响,可能会很大。
同时,对于需要对源数据进行哈希运算的情况(例如ECC/SM2的签名/验签,都需要对待签名/验签数据做哈希运算),在性能要求不是很高的情况下,这些哈希运算可以通过软件来处理或者硬件串行处理,这些都会对整体性能造成直接影响,影响加速器的速度。
此外,非对称密码算法加速器的一个特性是底层运算单元执行运算操作所需时间很长,而所需的数据量相对比较小(和对称算法的数据量相比);等当前命令的执行(即由底层运算单元执行的与当前命令相对应的运算操作)结束后,再开始执行下一命令的处理,效率较低,影响整体性能。
因此,本公开提出了能够在高性能服务器领域有效提高非对称密码算法的性能的方法和装置。
图1示出了根据本公开实施例的用于算法加速的方法的流程图。
在步骤S101,获取并解析当前命令。
具体地,主机将需要处理的非对称密码算法具体工作组织成命令的形式,命令可以包括但不限于:协议类型、位宽、源数据地址和长度、目标数据地址和长度(运算结果)、参数的地址和长度、密钥的地址和长度以及其它和具体协议相关的一些参数。命令的具体格式及其组织形式可以根据实际应用场合而具有多种,但为了充分发挥本公开的性能优势,可以在执行当前命令(的算术运算)的时候,下一命令要准备完毕,这样就能流水地执行各个命令,一般一个命令对应一个完整的协议,比如ECDSA/SM2签名等。对于非对称密码算法来说,运算需要两类数据,一是和算法相关,和待处理数据无关的,这类称为输入数据;另外一类是和算法无关,实际需要处理的数据,这类称为源数据,以数字签名为例:1)对于ECC或SM2算法,和算法相关的输入数据包括椭圆曲线参数,私钥;对于RSA算法,和算法相关的输入数据包括私钥;2)和算法无关的是源数据,譬如要做签名的一个文本文件。
在步骤S102,基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令。
在步骤S103,在执行当前命令期间执行附加操作,附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个。其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。其中,执行当前命令是指由算术运算单元执行与当前命令相对应的运算操作。
在步骤104,在当前命令执行结束后,执行下一命令。
在该实施例中,通过在执行当前命令期间执行包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个的附加操作,基本可以利用执行当前命令所需的时间来获取执行下一命令所需要的输入数据,从而节约获取下一命令所需要的输入数据的时间,和/或在执行当前命令的同时,进行当前命令所涉及的源数据的哈希运算和/或预先进行下一命令所涉及的源数据的哈希运算从而利用执行当前命令(由底层的算术运算模块执行)所需的时间来执行这些哈希运算,节约了这些哈希运算所需的时间,进而从整体上提高非对称密码算法中的加速性能。
以上结合图1简要地概括了根据本公开实施例的用于算法加速的方法,以下将结合图2和图3分别详细描述在执行当前命令期间,执行当前命令所涉及的源数据的哈希运算或与下一命令相关的预操作的具体实施例,但是应当理解,可以将他们进行组合,即在执行当前命令期间,不仅执行当前命令所涉及的源数据的哈希运算还可以进行执行下一命令所需要的输入数据的预取操作和下一命令所涉及的源数据的哈希运算,具体在当前命令的执行期间进行哪些并行操作,可以根据实际情况而预先设置。
图2示出了根据本公开实施例的,用于算法加速的、在执行所述当前命令期间执行当前命令所涉及的源数据的哈希运算的方法的流程图。如图2所示,用于算法加速的、在执行所述当前命令期间执行当前命令所涉及的源数据的哈希运算的方法包括以下步骤。图2中的S101和S102以及S104与图1中的相同。
在步骤S101,获取并解析当前命令。
在步骤S102,基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令。在该步骤中,执行当前命令所需要的输入数据可以是在当前命令的前一命令的执行期间而预取的,或者在当前命令的前一命令的执行期间没有进行执行当前命令所需要的输入数据的预取操作的情况下,则在S101的步骤中,对主机提供的当前命令进行解析和处理,然后从该当前命令中指定的地址读取执行当前命令所需要的输入数据。
图2中的步骤S1031-S1033是图1中的S103的一些实施例,接下来对其进行详细描述。
在步骤S1031,如果基于解析当前命令的结果而判断出需要进行当前命令所涉及的源数据的哈希运算,且在当前命令的前一命令的执行期间没有进行过对当前命令所涉及的源数据的哈希运算,则在执行当前命令期间进行对当前命令所涉及的源数据的哈希运算。此时,解析模块将所述源数据的相关信息发送到哈希模块,同时向所述哈希模块发送一启动信号(Hash Int)以启动哈希运算,并且如果基于解析当前命令的结果,当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则在发送所述启动信号给所述哈希模块的同时,解析模块设置哈希模块的锁定标志位(Lock Flag),例如将哈希模块的锁定标志位设置为1来表示哈希模块目前不可用,以用于阻止下一命令在执行所述当前命令期间使用所述哈希模块,避免对哈希资源的使用冲突,其中哈希资源包括哈希模块和哈希RAM,为了便于描述,在后文描述中可将“哈希资源”和“哈希模块”互换使用。
在步骤S1032,在执行当前命令期间,算术运算模块中的算术运算进行到需要使用哈希运算的结果的步骤,算术运算模块向哈希模块发送请求信号以请求哈希模块的哈希运算的结果,哈希模返回哈希运算的结果以及回复应答信号。具体地,如果此时哈希模块的哈希运算已经结束,则哈希模块将所述哈希运算的结果输入到算术运算模块同时回复应答信号(Ack),如果此时哈希模块的哈希运算还没有结束,则等到哈希运算结束后,哈希模块再将哈希运算的结果输入到算术运算模块同时回复应答信号(Ack)。
在步骤S1033,如果哈希模块的锁定标志位先前被设置,如前面所述,如果当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则哈希模块的锁定标志位(Lock Flag)会被设置,因此在使用哈希模块结束后(即,执行当前命令期间已经不再需要使用哈希模块),算术运算模块向哈希模块发送一哈希释放信号(Hash Release)从而清除锁定标志位,以供下一命令使用哈希模块。
在步骤S104,在当前命令执行结束后,执行下一命令。其中,执行下一命令不一定在当前命令执行结束后接着执行的。例如,如果在当前命令的执行期间仅进行了当前命令所涉及的源数据的哈希运算,而并未执行与下一命令相关的预操作,则在当前命令执行结束后,还应当首先进行执行下一命令所需要的输入数据的获取操作和/或下一命令所涉及的源数据的哈希运算(如果需要)。其中,与下一命令相关的预操作的详细过程将参照图3进行说明。
在该实施例中,通过在执行当前命令期间执行当前命令所涉及的源数据的哈希运算,基本可以利用执行当前命令所需的时间来在执行当前命令的同时,进行当前命令所涉及的源数据的哈希运算从而利用执行当前命令所需的时间来执行哈希运算,节约了哈希运算所需的时间,进而从整体上提高非对称密码算法中的加速性能。此外,通过设置锁定标志位,能够避免对哈希资源的使用冲突,并且会在使用哈希模块结束后发送一哈希释放信号(Hash Release)来释放哈希模块,提高哈希资源的利用率。同时,通过在算术运算模块和哈希模块之间通过请求/回复机制,实现了两者的同步。
图3示出了根据本公开另一实施例的,用于算法加速的、在执行所述当前命令期间执行与下一命令相关的预操作的方法的流程图。
如图3所示,用于算法加速的、在执行所述当前命令期间执行与下一命令相关的预操作的方法包括以下步骤,其中图3中的S101和S102以及S104与图1中的相同。
在步骤S101,获取并解析当前命令;
在步骤S102,基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令。其中,与参照图2所描述的步骤S102类似,在该步骤中,执行当前命令所需要的输入数据可以是在当前命令的前一命令的执行期间而预取的,或者在当前命令的前一命令的执行期间没有进行执行当前命令所需要的输入数据的预取操作的情况下,则在S101的步骤中,对主机提供的当前命令进行解析和处理,然后从该当前命令中指定的地址读取执行当前命令所需要的输入数据。
图3中的步骤S1031’-S1033’是图1中的S103的另外一些实施例,接下来对其进行详细描述。
在步骤S1031’,在执行当前命令期间,解析下一命令,进行执行下一命令所需要的输入数据的预取操作包括从所述下一命令中经解析得到的指定的地址将执行所述下一命令所需要的输入数据预取到预取缓冲器。
在步骤S1032’,在执行当前命令期间,如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算在满足以下条件的情况下进行:哈希模块中不存在锁定标志位。
例如,可以首先需要判断哈希模块(哈希资源)此时是否可用的(例如不存在锁定标志位的情况:正在执行的当前命令不需在执行过程中进行除源数据之外的数据的哈希运算,或者正在执行的当前命令已经使用哈希模块完毕且哈希模块已经接收到哈希释放信号等情况,哈希模块则是可用的),然后在哈希模块可用时进行下一命令所涉及的源数据的哈希运算,以避免对哈希模块的哈希资源的使用冲突。
虽然图3中示出了步骤S1031’和S1032’是顺序地执行的,但本领域技术人员应该理解,由于执行下一命令所需要的输入数据的预取操作和下一命令所涉及的源数据的哈希运算可以是两个独立的过程,它们也可以是同时进行的或者调换顺序来执行,只要在当前命令的执行期间进行即可。
在步骤S1033’,不必等到步骤S1032’中的哈希运算结束,可以先将在步骤S1031’结束了预取操作的下一命令放置到命令先进先出缓冲器(Command FIFO)中。
由于执行下一命令所需要的输入数据的预取操作和源数据(包括当前命令所涉及的源数据和下一命令所涉及的源数据)的哈希运算是两个独立的过程,当它们并行地进行时,所需要的时间长短不同,因此可能在执行下一命令所需要的输入数据的预取操作结束的时候,哈希运算尚未结束,而为了提升效率,可以先将结束了预取操作的下一命令放置到Command FIFO中,经过这种方式,甚至还可以进行执行下一命令之后的命令所需要的输入数据的预取操作。
在步骤S1034,在所述当前命令执行结束后,如果Command FIFO中存在结束了预取操作的下一命令,则从Command FIFO中取出所述下一命令,并将执行所述下一命令所需要的输入数据从预取缓冲器发送到算术运算模块。
在步骤104,执行下一命令。具体地,可以启动所述算术运算模块的算术运算来执行下一命令。
在该实施例中,通过在执行当前命令期间执行与下一命令相关的预操作,基本可以利用执行当前命令所需的时间来获取非对称密码算法加速器执行下一命令所需要的输入数据,从而节约获取下一命令所需要的输入数据的时间,和/或在执行当前命令的同时,预先进行下一命令所涉及的源数据的哈希运算从而利用执行当前命令(由底层的算术运算模块执行)所需的时间来获取执行下一命令所需要的输入数据以及执行该哈希运算,节约了获取执行下一命令所需要的输入数据和下一命令所涉及的源数据的哈希运算所需的时间,进而从整体上提高非对称密码算法中的加速性能。此外,通过命令先进先出缓冲器将命令的解析步骤以及命令的执行进行隔离,从而使得能够在当前命令的执行期间有序地进行下一命令的解析等操作。
图4A-4D示出了根据本公开实施例的、本公开与现有技术对比的概念图。
图4A示出了根据本公开实施例的、在执行当前命令期间执行当前命令所涉及的源数据的哈希运算与现有技术的相关过程的比较。
如图4A所示,在现有技术中,首先进行当前命令(命令0)所需要的输入数据的读取(DMA读取),并且在执行当前命令所需要的输入数据的读取结束后,进行当前命令所涉及的源数据的哈希运算,并且在当前命令(命令0)所涉及的源数据的哈希运算结束后,再执行当前命令(命令0)(即,算术运算单元的底层运算),即这一系列操作是顺序进行的。
而在本公开的实施例中,对当前命令(命令0)所涉及的源数据的哈希运算和当前命令(命令0)的执行并行处理,在执行当前命令期间可以执行当前命令所涉及的源数据的哈希运算,因此当前命令所涉及的源数据的哈希运算不占用额外时间,从而节省了时间。
图4B示出了根据本公开实施例的、在执行当前命令期间执行下一命令所需要的输入数据的预取操作与现有技术的相关过程的比较。
在现有技术中,首先读取当前命令(命令0)所需要的输入数据(DMA读取),所述输入数据包括参数、密钥等,然后在执行当前命令所需要的输入数据的读取结束后,执行当前命令,然后在当前命令(命令0)的执行结束后,再进行下一命令(命令1)所需要的输入数据的读取,继续在下一命令(命令1)所需要的输入数据的读取结束后,接着执行下一命令(命令1),即这一系列操作是顺序进行的。
而在本公开的实施例中,在当前命令的执行期间,可以进行下一命令(命令1)所需要的输入数据的读取(即预取操作)(DMA读取),即并行地执行当前命令和执行下一命令所需要的输入数据的预取操作,因此下一命令所需要的输入数据的读取不占用额外时间,从而也节省了时间。
图4C示出了根据本公开实施例的、在执行当前命令期间执行下一命令所涉及的源数据的哈希运算与现有技术的相关过程的比较。
在现有技术中,首先进行当前命令(命令0)所涉及的源数据的哈希运算,然后再执行当前命令,并且在当前命令的执行结束后,进行下一命令(命令1)所涉及的源数据的哈希运算,然后再执行下一命令,即这一系列操作是顺序进行的。
而在本公开的实施例中,可以并行地执行当前命令(命令0)和执行下一命令(命令1)所涉及的源数据的哈希运算,即在当前命令的执行期间,进行了下一命令(命令1)所涉及的源数据的哈希运算,因此下一命令(命令1)所涉及的源数据的哈希运算不占用额外时间,从而也节省了时间。
图4D示出了根据本公开实施例的、并行地执行当前命令和执行下一命令所需要的输入数据的预取操作以及进行下一命令所涉及的源数据的哈希运算与现有技术的相关过程的比较。
在现有技术中,首先读取当前命令(命令0)所需要的输入数据,所述输入数据包括参数、密钥等,并且在执行当前命令所需要的输入数据的读取结束后,进行当前命令(命令0)所涉及的源数据的哈希运算,接着在哈希运算结束后再执行当前命令,然后在当前命令的执行结束后,重复上述过程进行下一命令(命令1)的相同操作,即这一系列操作是顺序进行的。
而在本公开的实施例中,在当前命令(命令0)的执行期间,可以进行下一命令(命令1)所需要的输入数据的读取(即预取操作)(DMA读取)和进行下一命令(命令1)所涉及的源数据的哈希运算,即并行地执行当前命令(命令0)和执行下一命令(命令1)所需要的输入数据的预取操作(DMA读取)以及进行下一命令(命令1)所涉及的源数据的哈希运算,因此下一命令(命令1)所需要的输入数据的读取以及下一命令(命令1)所涉及的源数据的哈希运算不占用额外时间,从而节省了更多的时间。
以上示出了根据本公开实施例的几种并行执行各种操作的示例,但这些仅仅是示例性的,本领域技术人员完全可以在此基础上进行各种修改,并根据实际情况进行各种合理的组合和调整,而不脱离本公开的保护范围。例如,如果当前命令的执行时间足够长,可以在执行当前命令期间,与当前命令的执行并行地执行当前命令所涉及的源数据的哈希运算、下一命令所需要的输入数据的读取和下一命令所涉及的源数据的哈希运算,并且下一命令所需要的输入数据的读取和下一命令所涉及的源数据的哈希运算也可以是同时进行的。
图5示出了根据本公开实施例的、用于执行算法加速的装置500的结构框图。
装置500包括解析模块501、哈希模块502、算术运算模块503、可选且非必要的命令先进先出缓冲器(Command FIFO)504、可选且非必要的执行模块505以及可选且非必要的DMA接口506。
具体地,例如,主机将需要处理的非对称密码算法具体工作组织成命令的形式,命令可以包括但不限于:协议类型、位宽、源数据地址和长度、目标数据地址和长度(运算结果)、参数的地址和长度、密钥的地址和长度以及其它和具体协议相关的一些参数。命令的具体格式及其组织形式可以根据实际应用场合而具有多种,但为了充分发挥本公开的性能优势,要求在执行当前命令的时候,下一命令要准备完毕,这样才能流水地执行各个命令。对于非对称密码算法来说,运算需要两类数据,一是和算法相关,和待处理数据无关的,这类称为输入数据;另外一类是和算法无关,实际需要处理的数据,这类称为源数据,以数字签名为例:1)对于ECC或SM2算法,和算法相关的输入数据包括椭圆曲线参数,私钥;对于RSA算法,和算法相关的输入数据包括私钥;2)和算法无关的是源数据,譬如要做签名的一个文本文件。
解析模块501被配置为对主机提供的各个命令进行解析和处理。哈希模块502被配置为进行哈希运算。算术运算模块503被配置为执行与各个命令相对应的运算操作,包括各种协议层解析、处理以及各种底层模运算(包括模乘、模逆、模加、模减、模幂、点加、点倍、点乘等的操作);由于本公开和这些具体运算模块没有关系,所以将其统一抽象地称为算术运算模块(Arithmetic Modules)。命令先进先出缓冲器(Command FIFO)504设置在解析模块和算术运算模块503(经由执行模块505)之间,用于隔离解析操作和命令的执行操作,执行模块505用于将Command FIFO 504中的命令发送到算术运算模块503。
上述几个模块协同作用,共同用于算法加速。下面将详细介绍其示例。
解析模块501获取并解析当前命令,并且基于解析当前命令的结果和基于执行当前命令所需要的输入数据,由算术运算模块503执行当前命令,并且在执行当前命令期间,由哈希模块502和/或解析模块501执行附加操作,附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及由算术运算单元执行下一命令;其中,与下一命令相关的预操作包括:解析模块501解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则哈希模块502还进行下一命令所涉及的源数据的哈希运算。
其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,解析模块501还被配置为:将源数据的地址和长度以及一启动信号(Hash Int)发送到哈希模块502,以启动哈希运算。同时,基于解析模块501解析当前命令的结果,若当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则在解析模块501发送启动信号给哈希模块502的同时,设置哈希模块502的锁定标志位(Lock Flag),例如,当哈希模块的锁定标志位为1时表示哈希模块不可用,以阻止下一命令在执行当前命令期间使用哈希模块502。
在当前命令的执行过程中,当算术运算模块503中的算术运算进行到需要使用哈希运算的结果的步骤时,算术运算模块503向哈希模块502发送一请求信号(Req)以请求使用哈希模块502,并且如果此时哈希模块502的哈希运算已经结束,则哈希模块502将哈希运算的结果输入到算术运算模块503同时回复一应答信号(Ack),如果此时哈希模块502的哈希运算还没有结束,则等到哈希运算结束后,哈希模块502再将哈希运算的结果输入到算术运算模块503同时回复应答信号(Ack)。如果哈希模块的锁定标志位先前被设置,如前面所述,如果当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则哈希模块的锁定标志位(Lock Flag)会被设置,因此在使用哈希模块结束后(即,执行当前命令期间已经不再需要使用哈希模块),算术运算模块可以向哈希模块发送一哈希释放信号(HashRelease)从而清除锁定标志位,以供下一命令使用哈希模块。
此外,在算术运算模块503执行当前命令期间还可以进行对执行下一命令所需要的输入数据的预取操作和/或下一命令所涉及的源数据的哈希运算。其中,进行下一命令所需要的输入数据的预取操作包括:从所述下一命令中经解析模块解析得到的指定的地址将所述下一命令需要的输入数据预取到解析模块的预取缓冲器。
由于源数据的哈希运算和对执行下一命令所需要的输入数据的预取操作是两个独立的过程,因此不必等待哈希模块502的哈希运算结束,解析模块501即可将结束了预取操作的下一命令放到命令先进先出缓冲器(Command FIFO)504中。
执行模块505被配置在Command FIFO 504和算术运算模块之间,并且用于当所述当前命令执行结束后,只要Command FIFO非空,即Command FIFO中存在结束了预取操作的下一命令,则执行模块505从Command FIFO中取出下一命令以及从解析模块的预取缓冲器接收执行下一命令所需要的输入数据,将两者传递到算术运算模块503内部的算法RAM,并发送启动信号给算术运算模块,然后等待算术运算模块执行结束。
图6示出了根据本公开实施例的解析模块的内部流程图。
在步骤S601,解析模块处于空闲状态(IDLE)。在该状态下,解析模块不进行任何操作,等待从主机获取命令。
在步骤S602,解析模块对获取的命令进行解析,该解析包括从主机提供的命令获得指定的该命令所需要的输入数据的地址,并且如果根据该命令包括的协议类型,还需要进行该命令所涉及的源数据的哈希运算,还包括从主机提供的命令获得该命令所涉及的源数据的地址和长度。
在步骤S603,解析模块从命令中指定的上述地址将执行该命令所需要的输入数据读入预取缓冲器。
如果需要对源数据做哈希运算,则在步骤S604将源数据的地址和长度发送给哈希模块,同时发送一个启动信号以启动哈希模块。
在步骤S605,在输入数据的预取操作结束后,将结束了预取操作的命令写入到Command FIFO中,以用于被传输到算术运算模块以执行该命令。
在步骤S606,在解析模块将预取缓冲器里的输入数据也传输到算术运算模块以执行该命令后,对该预取缓冲器进行刷新,从而解析模块恢复到空闲状态,等待从主机获取下一个命令。
图7示出了根据本公开实施例的计算机系统700的结构框图。该计算机系统700包括处理器701以及存储器702。其中,该存储器702上存储有计算机可执行指令,该计算机可执行指令在被处理器运行时执行如参照附图1-3所描述的用于算法加速的方法。
本公开采用的技术方案在于,公开了一种用于算法加速的方法,所述方法包括:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。
在一个实施例中,所述在执行当前命令期间执行附加操作包括:如果在执行前一命令期间已经进行过对当前命令所涉及的源数据的哈希运算,则不进行当前命令所涉及的源数据的哈希运算。
在一个实施例中,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述在执行当前命令期间执行附加操作包括:基于解析当前命令的结果,将所述源数据的相关信息发送到哈希模块,同时向所述哈希模块发送一启动信号以启动所述源数据的哈希运算。
在一个实施例中,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述在执行当前命令期间执行附加操作包括:基于解析当前命令的结果,如果当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则在发送所述启动信号给所述哈希模块的同时,还设置哈希模块的锁定标志位,以阻止下一命令在执行所述当前命令期间使用所述哈希模块。
在一个实施例中,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述在执行当前命令期间执行附加操作包括:当在执行当前命令期间,算术运算模块中的算术运算进行到需要使用哈希运算的结果的步骤时,算术运算模块向哈希模块发送请求信号以请求哈希运算的结果;如果此时哈希模块的哈希运算已经结束,则所述哈希模块将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号,如果此时哈希模块的哈希运算还没有结束,则等到哈希运算结束后,所述哈希模块再将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号;如果哈希模块的锁定标志位先前被设置,所述算术运算模块还在使用哈希模块结束后,发送哈希释放信号到哈希模块,同时清除设置的锁定标志位,以供下一命令使用哈希模块。
在一个实施例中,其中,解析下一命令,进行执行下一命令所需要的输入数据的预取操作包括:从所述下一命令中经解析得到的指定的地址将执行所述下一命令所需要的输入数据预取到预取缓冲器。
在一个实施例中,其中当附加操作包括与下一命令相关的预操作时,所述解析下一命令,进行执行下一命令所需要的输入数据的预取操作包括:从所述下一命令中经解析得到的指定的地址将执行所述下一命令所需要的输入数据预取到预取缓冲器。
在一个实施例中,其中,所述方法还包括:在所述解析下一命令,进行执行下一命令所需要的输入数据的预取操作的步骤结束后,不必等到哈希运算结束,将结束了预取操作的下一命令放置到命令先进先出缓冲器中。
在一个实施例中,其中,在所述执行下一命令之前,所述方法还包括:当所述当前命令执行结束后,如果命令先进先出缓冲器中存在结束了预取操作的下一命令,则从命令先进先出缓冲器中取出所述下一命令,并将执行所述下一命令所需要的输入数据从预取缓冲器发送到算术运算模块。
在一个实施例中,其中,所述如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算还应该在满足以下条件的情况下进行:哈希模块中不存在锁定标志位。
本公开采用的技术方案还在于,公开了一种用于算法加速的装置,所述装置包括解析模块,被配置为获取并解析命令;哈希模块,用于进行哈希运算;算术运算模块,与所述哈希模块连接,其中,基于所述解析模块解析当前命令的结果和基于执行当前命令所需要的输入数据,由所述算术运算模块执行当前命令,并且在所述算术运算模块执行当前命令期间由哈希模块和/或所述解析模块执行附加操作,所述附加操作包括由所述哈希模块进行当前命令所涉及的源数据的哈希运算以及由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作中的至少一个;以及由所述算术运算模块执行下一命令;其中,由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作包括:由解析模块解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则由哈希模块进行下一命令所涉及的源数据的哈希运算。
在一个实施例中,其中,所述在执行当前命令期间执行附加操作包括:如果在执行前一命令期间已经进行过对当前命令所涉及的源数据的哈希运算,则不进行当前命令所涉及的源数据的哈希运算。
在一个实施例中,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述哈希模块和解析模块还被配置为:基于解析模块解析当前命令的结果,哈希模块从所述解析模块接收所述源数据的相关信息以及一启动信号,以启动哈希运算。
在一个实施例中,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述哈希模块和解析模块还被配置为:基于解析当前命令的结果,如果当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则在发送所述启动信号给所述哈希模块的同时,还设置哈希模块的锁定标志位,以阻止下一命令在执行所述当前命令期间使用所述哈希模块。
在一个实施例中,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述哈希模块和解析模块还被配置为:当在执行当前命令期间,算术运算模块中的算术运算进行到需要使用哈希运算的结果的步骤时,算术运算模块向哈希模块发送请求信号以请求哈希运算的结果,并且如果此时哈希模块的哈希运算已经结束,则所述哈希模块将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号,如果此时哈希模块的哈希运算还没有结束,则等到哈希运算结束后,所述哈希模块再将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号;如果哈希模块的锁定标志位被设置,所述算术运算模块还在使用哈希模块结束后,发送哈希释放信号到哈希模块,设置的锁定标志位也同时被清除,以供下一命令使用哈希模块。
在一个实施例中,所述解析模块还包括预取缓冲器,其中,所述解析模块解析下一命令,进行下一命令所需要的输入数据的预取操作包括:从所述下一命令中经解析得到的指定的地址将所述下一命令需要的输入数据预取到所述预取缓冲器。
在一个实施例中,所述装置还包括命令先进先出缓冲器,所述命令先进先出缓冲器被配置为:在解析下一命令,进行下一命令所需要的输入数据的预取操作的步骤结束后,不必等到哈希运算结束,将结束了预取操作的下一命令放置到其中。
在一个实施例中,其中,在执行下一命令之前,当所述当前命令执行结束后,如果命令先进先出缓冲器中存在结束了预取操作的下一命令,则算术运算模块从命令先进先出缓冲器中取出所述下一命令以及从预取缓冲器接收所述下一命令所需要的输入数据。
在一个实施例中,其中,所述如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算还应该在满足以下条件的情况下进行:哈希模块中不存在锁定标志位。
本公开采用的技术方案还在于,公开了一种计算机系统,包括:处理器,和存储器,用于存储计算机可执行指令,其在被处理器运行时执行如上述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第三等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保护范围为准。

Claims (13)

1.一种用于算法加速的方法,所述方法包括:
获取并解析当前命令;
基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令;
在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个,其中,与下一命令相关的预操作包括:
从所述下一命令中经解析得到的指定的地址将执行所述下一命令所需要的输入数据预取到预取缓冲器;
如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算;
不必等到哈希运算结束,将结束了预取操作的下一命令放置到命令先进先出缓冲器中;
当所述当前命令执行结束后,如果命令先进先出缓冲器中存在结束了预取操作的下一命令,则从命令先进先出缓冲器中取出所述下一命令,并将执行所述下一命令所需要的输入数据从预取缓冲器发送到算术运算模块;以及
执行下一命令。
2.如权利要求1所述的方法,所述在执行当前命令期间执行附加操作包括:
如果在执行前一命令期间已经进行过对当前命令所涉及的源数据的哈希运算,则不进行当前命令所涉及的源数据的哈希运算。
3.如权利要求1所述的方法,其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述在执行当前命令期间执行附加操作包括:
基于解析当前命令的结果,将所述源数据的相关信息发送到哈希模块,同时向所述哈希模块发送一启动信号以启动所述源数据的哈希运算。
4.如权利要求3所述的方法,
其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述在执行当前命令期间执行附加操作包括:
基于解析当前命令的结果,如果当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则在发送所述启动信号给所述哈希模块的同时,还设置哈希模块的锁定标志位,以阻止下一命令在执行所述当前命令期间使用所述哈希模块。
5.如权利要求4所述的方法,
其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述在执行当前命令期间执行附加操作包括:
当在执行当前命令期间,算术运算模块中的算术运算进行到需要使用哈希运算的结果的步骤时,算术运算模块向哈希模块发送请求信号以请求哈希运算的结果;
如果此时哈希模块的哈希运算已经结束,则所述哈希模块将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号,
如果此时哈希模块的哈希运算还没有结束,则等到哈希运算结束后,所述哈希模块再将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号;
如果哈希模块的锁定标志位先前被设置,所述算术运算模块还在使用哈希模块结束后,发送哈希释放信号到哈希模块,同时清除设置的锁定标志位,以供下一命令使用哈希模块。
6.如权利要求1所述的方法,其中,所述如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算在满足以下条件的情况下进行:哈希模块中不存在锁定标志位。
7.一种用于算法加速的装置,包括:
解析模块,被配置为获取并解析命令;
哈希模块,与所述解析模块连接,用于进行哈希运算;
算术运算模块,与所述哈希模块连接,用于执行命令;
其中,基于所述解析模块解析当前命令的结果和基于执行当前命令所需要的输入数据,由所述算术运算模块执行当前命令,并且在所述算术运算模块执行当前命令期间由哈希模块和/或所述解析模块执行附加操作,所述附加操作包括由所述哈希模块进行当前命令所涉及的源数据的哈希运算以及由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作中的至少一个,其中,由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作包括:
从所述下一命令中经解析得到的指定的地址将执行所述下一命令所需要的输入数据预取到预取缓冲器;
如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则由哈希模块进行下一命令所涉及的源数据的哈希运算;
不必等到哈希运算结束,将结束了预取操作的下一命令放置到命令先进先出缓冲器中;
当所述当前命令执行结束后,如果命令先进先出缓冲器中存在结束了预取操作的下一命令,则从命令先进先出缓冲器中取出所述下一命令,并将执行所述下一命令所需要的输入数据从预取缓冲器发送到算术运算模块;以及
由所述算术运算模块执行下一命令。
8.如权利要求7所述的装置,其中,在执行当前命令期间由哈希模块和/或所述解析模块执行附加操作包括:
如果已经进行过对当前命令所涉及的源数据的哈希运算,则哈希模块不进行当前命令所涉及的源数据的哈希运算。
9.如权利要求7所述的装置,
其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述解析模块还被配置为:
基于解析模块解析当前命令的结果,将所述源数据的相关信息以及一启动信号发送到哈希模块,以启动哈希运算。
10.如权利要求9所述的装置,
其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述解析模块还被配置为:
基于解析当前命令的结果,如果当前命令需要在执行过程中进行除源数据之外的数据的哈希运算,则在发送所述启动信号给所述哈希模块的同时,还设置哈希模块的锁定标志位,以阻止下一命令在算术运算模块执行所述当前命令期间使用所述哈希模块。
11.如权利要求10所述的装置,
其中,当附加操作包括当前命令所涉及的源数据的哈希运算时,所述算术运算模块和哈希模块还被配置为:
当在执行当前命令期间,算术运算模块中的算术运算进行到需要使用哈希运算的结果的步骤时,算术运算模块向哈希模块发送请求信号以请求哈希运算的结果,
如果此时哈希模块的哈希运算已经结束,则所述哈希模块将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号,
如果此时哈希模块的哈希运算还没有结束,则等到哈希运算结束后,所述哈希模块再将所述哈希运算的结果输入到所述算术运算模块同时回复应答信号;
如果哈希模块的锁定标志位在先前被设置,所述算术运算模块还在使用哈希模块结束后,发送哈希释放信号到哈希模块,同时清除设置的锁定标志位,以供下一命令使用哈希模块。
12.如权利要求7所述的装置,
其中,所述如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算还应该在满足以下条件的情况下进行:哈希模块中不存在锁定标志位。
13.一种计算机系统,包括:
处理器,
存储器,存储计算机可执行指令,其在被处理器运行时执行如权利要求1-6任一项所述的方法。
CN201811592733.3A 2018-12-25 2018-12-25 用于算法加速的方法和装置 Active CN109687954B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811592733.3A CN109687954B (zh) 2018-12-25 2018-12-25 用于算法加速的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811592733.3A CN109687954B (zh) 2018-12-25 2018-12-25 用于算法加速的方法和装置

Publications (2)

Publication Number Publication Date
CN109687954A CN109687954A (zh) 2019-04-26
CN109687954B true CN109687954B (zh) 2022-05-13

Family

ID=66189484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811592733.3A Active CN109687954B (zh) 2018-12-25 2018-12-25 用于算法加速的方法和装置

Country Status (1)

Country Link
CN (1) CN109687954B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111323149A (zh) * 2020-03-13 2020-06-23 上海申矽凌微电子科技有限公司 含纠正otp错误功能的温度传感器装置及otp错误的纠正方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2838153Y (zh) * 2005-10-12 2006-11-15 浙江大学 一种用于公钥密码运算加速的体系结构
CN101202628B (zh) * 2006-12-11 2010-10-20 北京中电华大电子设计有限责任公司 分组哈希协处理器的一种实现方法
US8194854B2 (en) * 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation
CN102043916B (zh) * 2010-12-01 2012-10-03 戴葵 一种高性能可扩展公钥密码协处理器结构
CN102752102B (zh) * 2012-07-02 2015-05-13 珠海全志科技股份有限公司 数据包分段加密传输处理方法和装置
CN104579656A (zh) * 2014-12-31 2015-04-29 北京时代民芯科技有限公司 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器
US10200546B2 (en) * 2015-09-25 2019-02-05 The Nielsen Company (Us), Llc Methods and apparatus to identify media using hybrid hash keys

Also Published As

Publication number Publication date
CN109687954A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
US10756893B2 (en) Elliptic curve random number generation
RU2376651C2 (ru) Использование изогений для разработки криптосистем
JP3862500B2 (ja) 直接埋め込み方式による高速楕円曲線暗号化の方法と装置
KR101866935B1 (ko) 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들
US7908641B2 (en) Modular exponentiation with randomized exponent
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US20050190912A1 (en) Multiple cryptographic key precompute and store
NL2013944B1 (en) Public-key encryption system.
US8806214B2 (en) Communication with non-repudiation and blind signatures
CN114175572B (zh) 利用拟群运算对加密数据实行相等和小于运算的系统和方法
Abidi et al. Implementation of elliptic curve digital signature algorithm (ECDSA)
JP7091322B2 (ja) 複合デジタル署名
JP2003208097A (ja) サイドチャネルアタック耐性を有する暗号演算装置及び方法
CN112118113B (zh) 一种基于sm2算法的多方协同群签名方法及装置、系统、介质
US20100046746A1 (en) Parameter generating device and cryptographic processing system
CN111325535A (zh) 基于椭圆曲线偏移的区块链私钥管理方法、系统及存储介质
JP2004501385A (ja) 楕円曲線暗号化方法
Güneysu et al. Lattice-based signatures: optimization and implementation on reconfigurable hardware
CN116830523A (zh) 阈值密钥交换
Lizama-Pérez et al. Public hash signature for mobile network devices
CN109687954B (zh) 用于算法加速的方法和装置
WO2009115824A1 (en) Encryption method
WO2014165925A1 (en) Method and system for the secure transfer and verification of ownership of digital sequences
Bellare et al. Defending against key exfiltration: efficiency improvements for big-key cryptography via large-alphabet subkey prediction
Fanfara et al. Usage of asymmetric encryption algorithms to enhance the security of sensitive data in secure communication

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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 9th Floor, Building C, Gui'an Center, Plot ZD-64, Big Data Science and Technology Innovation City, Gui'an New Area, Guiyang City, Guizhou Province, 550003 (No. 2 on the south side)

Patentee after: Guizhou Huaxin Semiconductor Technology Co.,Ltd.

Address before: 550081 2nd floor, intersection of Qianzhong Avenue and Jinma Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee before: GUIZHOU HUAXINTONG SEMICONDUCTOR TECHNOLOGY Co.,Ltd.