用于算法加速的方法和装置制造方法及图纸

技术编号:20977933 阅读:35 留言:0更新日期:2019-04-29 18:36
提供了一种用于算法加速的方法,所述方法包括:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。

Method and Device for Accelerating Algorithms

A method for algorithm acceleration is provided, which includes: acquiring and parsing the current command; executing the current command based on the result of parsing the current command and the input data needed to execute the current command, and performing additional operations during executing the current command, including hashing of the source data involved in the current command and the next life. Make at least one of the related pre-operations; and execute the next command; where the pre-operations related to the next command include: parsing the next command to prefetch the input data needed to execute the next command; and if the hashing operation of the source data involved in the next command is required based on the result of parsing the next command, then the next command involves Hash operation of source data.

【技术实现步骤摘要】
用于算法加速的方法和装置
本公开涉及非对称密码算法领域,更具体地,涉及一种用于算法加速的方法和装置。
技术介绍
非对称密码算法也称为公开密钥密码算法,是当今密码学主题的一个方面。在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。1976年提出的公开密钥密码体制,其原理是将加密密钥和解密密钥分离。这样,一个具体用户就可以将自己设计的加密密钥和算法公诸于众,而只保留解密密钥。任何人利用这个加密密钥和算法向该用户发送的加密信息,该用户均可以将之还原。公开密钥密码的优点是不需要经安全渠道传递密钥,大大简化了密钥管理。它的算法有时也称为公开密钥算法或简称为公钥算法。1978年提出公共密钥密码的具体实施方案,即RSA方案。1991年提出的DSA算法也是一种公共密钥算法,在数字签名方面有较大的应用优势。非对称密码算法的应用主要包括:1)加密和解密;2)数字签名和验签;3)密钥交换。需要一种用于非对称密码算法中的算法加速的技术。
技术实现思路
本公开的一方面提出了一种用于算法加速的方法,所述方法包括:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。本公开的另一方面提供了一种用于算法加速的装置,所述装置包括:解析模块,被配置为获取并解析命令;哈希模块,用于进行哈希运算;算术运算模块,与所述哈希模块连接,其中,基于所述解析模块解析当前命令的结果和基于执行当前命令所需要的输入数据,由所述算术运算模块执行当前命令,并且在所述算术运算模块执行当前命令期间由哈希模块和/或所述解析模块执行附加操作,所述附加操作包括由所述哈希模块进行当前命令所涉及的源数据的哈希运算以及由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作中的至少一个;以及由所述算术运算模块执行下一命令;其中,由所述哈希模块和/或所述解析模块执行与下一命令相关的预操作包括:由解析模块解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则由哈希模块进行下一命令所涉及的源数据的哈希运算。本公开另一方面提供了一种计算机系统,包括:处理器和存储器,所述存储器存储计算机可执行指令,该指令在被处理器运行时执行如下方法:获取并解析当前命令;基于解析当前命令的结果和基于执行当前命令所需要的输入数据,执行当前命令,并且在执行当前命令期间执行附加操作,所述附加操作包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个;以及执行下一命令;其中,与下一命令相关的预操作包括:解析下一命令,进行执行下一命令所需要的输入数据的预取操作;和如果基于解析下一命令的结果,需要进行对下一命令所涉及的源数据的哈希运算,则进行下一命令所涉及的源数据的哈希运算。本公开通过在执行当前命令期间执行包括当前命令所涉及的源数据的哈希运算以及与下一命令相关的预操作中的至少一个的附加操作,基本可以利用执行当前命令所需的时间来获取执行下一命令所需要的输入数据,从而节约获取下一命令所需要的输入数据的时间,和/或在执行当前命令的同时,进行当前命令所涉及的源数据的哈希运算和/或预先进行下一命令所涉及的源数据的哈希运算从而利用执行当前命令所需的时间来执行这些哈希运算,节约了这些哈希运算所需的时间,进而从整体上提高非对称密码算法中的加速性能。要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并且意图在于提供要求保护的技术的进一步说明。附图说明通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。图1示出了根据本公开实施例的用于算法加速的方法的流程图;图2示出了根据本公开实施例的,用于算法加速的、在执行所述当前命令期间执行当前命令所涉及的源数据的哈希运算的方法的流程图;图3示出了根据本公开实施例的,用于算法加速的、在执行所述当前命令期间执行与下一命令相关的预操作的方法的流程图;图4A-4D示出了根据本公开实施例的、本公开与现有技术对比的概念图;图5示出了根据本公开实施例的用于执行算法加速的装置的结构框图;图6示出了根据本公开实施例的解析模块的内部流程图;图7示出了根据本公开实施例的计算机系统的结构框图。具体实施方式在后文中,将参照附图描述多个实施例、应用和修改。此外,下面描述的实施例是优选的特定示例,并且设置了技术上优选的各种限制,但是在以下描述中,本公开不限于这些实施例。迄今为止的所有公开密钥密码体系中,RSA和ECC(椭圆曲线密码学,英文为Ellipticcurvecryptography,缩写为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≡1modΦ(n)。RSA算法中运算量最大的是模幂运算,譬如加密过程:密文=明文EmodN,解密过程:明文=密文DmodN,模幂需要的输入包括明文和公钥对(E,N)或密文和私钥对(D,N)。计算模幂可以使用普通的二进制扫描幂指数平方-乘的方法或使用中国剩余定理(CRT)快速执行模幂计算,下面是CRT算法的大概描述。拥有私钥的一方同时也知道素数p和q。CRT的基本思想不是使用一个“非常长”的模数n进行算术运算,而是执行两个单独的指数运算模上两个“较短”素数p和q。这是一种变换运算,需要三个步骤:变换到CRT域;在CRT域内进行计算;对得到的结果进行逆变换。二、ECC算法椭圆曲线密码学ECC,一种建立公开密钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由NealKoblitz和VictorMiller分别独立提出的。ECC使用较短的操作数,可提供与RSA同等的安全等级(所需要的操作数的长度之比大概为160~256位比1024~3072位)。在很多情况下,ECC在性能(更少的计算量)和带宽(更短的签名和密钥)上都比RSA更具有优势。椭本文档来自技高网...

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

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

【专利技术属性】
技术研发人员:李健李艳华韩睦华
申请(专利权)人:贵州华芯通半导体技术有限公司
类型:发明
国别省市:贵州,52

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1