CN117896067A - 适用于国密sm2算法的并行模约减方法及装置 - Google Patents

适用于国密sm2算法的并行模约减方法及装置 Download PDF

Info

Publication number
CN117896067A
CN117896067A CN202410287577.9A CN202410287577A CN117896067A CN 117896067 A CN117896067 A CN 117896067A CN 202410287577 A CN202410287577 A CN 202410287577A CN 117896067 A CN117896067 A CN 117896067A
Authority
CN
China
Prior art keywords
data
algorithm
modular reduction
operation result
register
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.)
Granted
Application number
CN202410287577.9A
Other languages
English (en)
Other versions
CN117896067B (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.)
Hangzhou Jinzhita Technology Co ltd
Original Assignee
Hangzhou Jinzhita 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 Hangzhou Jinzhita Technology Co ltd filed Critical Hangzhou Jinzhita Technology Co ltd
Priority to CN202410287577.9A priority Critical patent/CN117896067B/zh
Publication of CN117896067A publication Critical patent/CN117896067A/zh
Application granted granted Critical
Publication of CN117896067B publication Critical patent/CN117896067B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Power Engineering (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本说明书实施例提供适用于国密SM2算法的并行模约减方法及装置,该适用于国密SM2算法的并行模约减方法包括:确定国密SM2算法对应的多个待处理数据;分别对各待处理数据进行数据划分,获得各待处理数据对应的划分数据集合,其中,划分数据集合包含从待处理数据中划分的多个划分数据;确定各划分数据集合中各划分数据的数据属性信息,并基于数据属性信息,从多个寄存器中分别为各划分数据确定相关联的关联寄存器;将各划分数据存储至关联寄存器,并基于关联寄存器,确定多个关联寄存器组;基于各关联寄存器组存储的划分数据,并行执行模约减处理,获得实现国密SM2算法的模约减结果,提高国密SM2算法的计算效率。

Description

适用于国密SM2算法的并行模约减方法及装置
技术领域
本说明书实施例涉及密码学技术领域,特别涉及一种适用于国密SM2算法的并行模约减方法及装置、计算设备、存储介质以及计算机程序产品。
背景技术
随着计算机技术以及密码学技术的不断发展,各种加密算法在计算机领域获得广泛应用。例如,在网上银行等领域,可以采用国密SM2算法进行数据验证处理。
现有技术在采用国密SM2算法进行数据验证的过程中,需要消耗大量的时间和计算资源,因此,如何提高国密SM2算法的计算效率,避免国密SM2算法在计算过程中消耗大量的时间和计算资源成为亟需解决的问题。
发明内容
有鉴于此,本说明书实施例提供了一种适用于国密SM2算法的并行模约减方法。本说明书一个或者多个实施例同时涉及一种适用于国密SM2算法的并行模约减装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序产品,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种适用于国密SM2算法的并行模约减方法,包括:
确定国密SM2算法对应的多个待处理数据;
分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据;
确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器;
将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器;
基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
根据本说明书实施例的第二方面,提供了一种适用于国密SM2算法的并行模约减装置,包括:
数据确定模块,被配置为确定国密SM2算法对应的多个待处理数据;
数据集合获取模块,被配置为分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据;
寄存器确定模块,被配置为确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器;
数据存储模块,被配置为将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器;
模约减处理模块,被配置为基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机程序/指令,所述处理器用于执行所述计算机程序/指令,该计算机程序/指令被处理器执行时实现上述适用于国密SM2算法的并行模约减方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现上述适用于国密SM2算法的并行模约减方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述适用于国密SM2算法的并行模约减方法的步骤。
本说明书一个或多个实施例实现了一种适用于国密SM2算法的并行模约减方法,包括:确定国密SM2算法对应的多个待处理数据;分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据;确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器;将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器;基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
具体的,本说明书提供的适用于国密SM2算法的并行模约减方法,在确定国密SM2算法对应的多个待处理数据之后,能将各待处理数据划分为划分数据集合,并将数据集合中的划分数据存储至相关联的关联寄存器。然后将多个关联寄存器组中存储的划分数据,以并行的方式快速的执行模约减处理,从而快速的获得实现所述国密SM2算法的模约减结果,提高国密SM2算法的计算效率,避免了国密SM2算法在计算过程中需要消耗大量的时间和计算资源的问题。
附图说明
图1是本说明书一个实施例提供的一种适用于国密SM2算法的并行模约减方法的流程图;
图2是本说明书一个实施例提供的一种适用于国密SM2算法的并行模约减方法的处理过程流程图;
图3是本说明书一个实施例提供的一种适用于国密SM2算法的并行模约减装置的结构示意图;
图4是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
国密SM2算法:是国家密码管理局发布的椭圆曲线公钥密码算法。
SIMD指令集:全称为单指令集多数据(Single Instruction Multiple Data),是一种技术,允许一个控制器同时处理多个数据流。通过使用一组指令,可以对多组数据进行并行操作。SIMD指令集在本质上类似于一个向量处理器,它能够对一组数据(也称为“数据向量”)同时执行相同的操作,从而实现空间上的并行。
52基:是指该算法让CPU(中央处理器)处理的字长为52bit,比如256bit的元素需要采用5个字长来表示(一个字长为52bit)。
素数域p下的大整数运算(模加、模减、模乘等)是SM2椭圆曲线公钥密码算法的基础,其中模乘的计算过程复杂、在国密SM2算法中使用频率高,是国密SM2算法的主要性能消耗点。模乘可拆分为两步:整数乘法、整数模约减,其中整数乘法为固定操作,而模约减具有多种优化方式。因此设计一种高效的模约减算法,将极大提升基于SM2实现数字签名、公钥加解密、密钥交换等算法的运行效率,具有重要意义。
针对上述问题,本说明书提供三种算法,第一种为Montgomery模乘算法,通过选择一个适当的模数R及其模p下的逆元,利用Montgomery转换和Montgomery乘法取代模约减算法。第二种为Barrett模约减算法,是通过一系列乘法和右移操作来近似计算模数的倒数,然后利用近似值来执行模减法取代除法运算。第三种为快速模约简算法,是通过素数的表示特性,利用一系列加法和减法取代乘法和除法操作。但是,上述三种算法存在较大缺陷。首先,三种算法的适用场景较为单一,无法适用于不同的场景,因此适用性较差。其次,上述三种算法针对模约减的优化效果较差,无法满足实际应用场景的需要,导致国密SM2算法依旧存在计算效率较低,以及在计算过程中会消耗大量的时间和计算资源的问题。
基于此,在本说明书中,提供了一种适用于国密SM2算法的并行模约减方法,本说明书同时涉及一种适用于国密SM2算法的并行模约减装置,一种计算设备,一种计算机程序产品以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了根据本说明书一个实施例提供的一种适用于国密SM2算法的并行模约减方法的流程图,具体包括以下步骤。
步骤102:确定国密SM2算法对应的多个待处理数据。
其中,待处理数据可以理解为国密SM2算法在进行数据验证过程中需要验证的数据。例如,电子政务、网上银行等领域,需要采用SM2数字签名算法进行大量签名和验签。在此场景中,该待处理数据为需要SM2数字签名算法进行大量签名和验签的秘钥、数据签名等信息。
以本说明书提供的适用于国密SM2算法的并行模约减方法在快速模约减场景中的应用为例,对本说明书提供的适用于国密SM2算法的并行模约减方法进行说明。其中,该待处理数据为域元素,该域元素可以是一个长为256bit(二进制)的数据。需要说明的是,本说明书提供的适用于国密SM2算法的并行模约减方法可以是基于SIMD指令集的8路并行快速模约减算法,在执行的过程中包括两个步骤,第一步骤为域元素的表示方式以及到AVX512寄存器的映射;第二步骤为52基乘法和模约减算法设计。基于此,本说明书提供的适用于国密SM2算法的并行模约减方法,在实现快速模约减处理的过程中,首先要确定域元素A,该域元素A可以是一个长为256bit的数据。
在本说明书提供的一个或多个实施例中,所述确定国密SM2算法对应的多个待处理数据,包括:
确定用户对应的待验证数据;
对所述待验证数据进行哈希处理,获得国密SM2算法对应的多个待处理数据。
其中,该待验证数据可以理解为国密SM2算法在进行数据验证过程中需要验证的数据,例如,电子政务、网上银行等领域,需要采用SM2数字签名算法进行大量签名和验签。在此场景中,该待验证数据为需要SM2数字签名算法进行大量签名和验签的秘钥、数据签名等信息。基于此,该待处理数据可以理解为经过哈希处理后的待验证数据。需要说明的是,该待验证数据可以为多个,例如,多个待验证数据可以为8组需要国密SM2算法进行数据验证的密钥、公钥、消息等信息。
沿用上例,获取8组需要国密SM2算法进行数据验证的密钥、公钥、消息等信息,并对该多个信息分别进行哈希操作,获得长为256bit的多个域元素(即多个待处理数据)。
基于此,通过对待验证数据进行哈希处理,获得多个待处理数据,便于后续基于该待处理数据实现快速模约减处理,提高国密SM2算法的计算效率。
步骤104:分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据。
其中,划分数据集合可以理解为由划分数据构成的集合,需要说明的是,一个划分数据集合中可以包含将一个待处理数据进行数据划分后获得的多个划分数据。
该划分数据可以理解为对待处理数据进行数据划分后获得的划分数据。例如,该待处理数据为域元素,因此,该划分数据可以为将域元素划分为5个分支之后,获得的5个分支数据。
沿用上例,在步骤“域元素的表示方式以及到AVX512寄存器的映射”中,当确定域元素之后,需要通过预设方式对该域元素进行表示。也即是,采用52基进行表示。具体的,对于长为256bit的域元素A采用52基表示如下:。也即是说一个域元素仅需5个分支(即划分数据)进行表示。需要说明的是,5个分支对应5个数值。该5个分支的确定过程为:将一个256bit的域元素A划分为5个数值,因此,第一个分支/>中包含了0-51这前52个二进制bit,第二、三、四个分支(即/>)同理。最后一个分支包含最后48个二进制bit。
并且,由于待处理数据为多个,例如待处理数据可以为,因此,对于A、B、C、D、E、F、G、H这8个相互独立域元素,均采用上述52基表示。
步骤106:确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器。
其中,该数据属性信息可以理解为用于表示该划分数据的特定属性的信息,例如,该数据属性信息可以为数据标识、数据排序位置等。
该寄存器可以根据实际应用场景进行设置,本说明书对该寄存器的型号、性能不作具体限制,例如,该寄存器可以为AVX512寄存器。
关联寄存器可以理解为与一个或多个划分数据相关联的寄存器,用于存储与之相关联的一个或多个划分数据。
具体的,本说明书提供的一个或多个实施例中,所述确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器,包括:
确定各划分数据集合中各划分数据的数据属性信息,并确定所述多个寄存器的寄存器属性信息;
从所述寄存器属性信息中,确定与所述数据属性信息相关联的关联寄存器属性信息;
将所述关联寄存器属性信息对应的所述寄存器,确定为与所述数据属性信息对应的划分数据相关联的关联寄存器。
其中,该寄存器属性信息可以理解为用于表示该关联寄存器的特定属性的信息,例如,该寄存器属性信息可以为寄存器标识、寄存器排序位置等。
沿用上例,在步骤“域元素的表示方式以及到AVX512寄存器的映射”中,当确定域元素的表示方式之后,需要将其映射至AVX512寄存器中。而在将域元素的52基表示方式映射至AVX512寄存器的过程中,需要确定每个域元素的分支所对应的寄存器。因此,在确定域元素的表示方式之后,需要确定5个用于存储域元素分支的寄存器,然后基于该域元素分支的标识信息以及5个AVX512寄存器的标识信息,建立彼此之间的关联关系。比如,域元素/>这8个域元素的分支数据中,每个第一分支可以与5个寄存器中的第一个寄存器/>相关联。
基于上述内容可知,通过利用数据属性信息从多个寄存器中分别为各划分数据确定相关联的关联寄存器,便于后续将各划分数据存储至相关联的关联寄存器中,从而便于后续基于该关联寄存器中的划分数据快速的进行模约减处理。
步骤108:将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器。
沿用上例,在步骤“域元素的表示方式以及到AVX512寄存器的映射”中,在确定每个域元素的分支所对应的寄存器之后。对于8个相互独立且采用52基表示的域元素映射到AVX512寄存器方式如下述公式1所示,域元素的5个分支对应5个AVX512寄存器/>,其分别存储所有域元素/>的对应值。
公式1
其中,公式1中a、b、c、d、e、f、g、h这8个小写英文字符,分别表示A、B、C、D、E、F、G、H这8个相互独立域元素的分支数据。8个小写英文字符的下标数字,分别表示不同的分支数据,下标数字0表示该分支为第一分支,下标数字4表示该分支为第五分支。
步骤110:基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
其中,并行执行模约减处理可以理解为通过多路并行的方式,执行模约减处理,从而快速执行模约减,提高模约减处理的效率。例如,本说明书提供的适用于国密SM2算法的并行模约减方法,可以是一种适用于国密SM2算法的8路并行快速模约减算法。也即是说,该并行执行模约减处理可以理解为通过8路并行的方式执行模约减处理。
需要说明的是,该并行执行模约减处理可以是在单CPU核数下,并行执行模约减处理。也即是说,本说明书提供的适用于国密SM2算法的并行模约减方法,可以是单CPU核数下8路并行的快速模约减算法。因此,本说明书提供的适用于国密SM2算法的并行模约减方法,可以应用于CPU。
在本说明书提供的一个或多个实施例中,本说明书提供的适用于国密SM2算法的并行模约减方法,除了在单CPU核数下并行执行模约减处理之外,该并行执行模约减处理可以是在多CPU核数下,并行执行模约减处理。
在本说明书提供的一个或多个实施例中,所述基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果,包括步骤一和步骤二:
步骤一:通过并行的方式,分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果。
其中,并行的方式可以理解为多路并行的方式,例如,8路并行的方式,16路并行的方式。并且,该多路并行的方式可以是在单CPU核数下实现的。
在本说明书提供的一个或多个实施例中,所述分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果,包括:
确定目标关联寄存器组中存储的第一划分数据和第二划分数据,其中,所述目标关联寄存器组为所述各关联寄存器组中的任意一个关联寄存器组;
将所述第一划分数据和所述第二划分数据进行乘法运算,获得所述目标关联寄存器组对应的乘法运算结果,其中,所述乘法运算结果为二进制520位的数据。
其中,该目标关联寄存器组为各关联寄存器组中的任意一个关联寄存器组。而对于该各关联寄存器组中除目标关联寄存器组之外的其他关联寄存器组,执行与该目标关联寄存器组相同的处理步骤,并且各关联寄存器组采用多路并行的方式执行。为了避免过多赘述,以目标关联寄存器组为例进行说明,针对其他关联寄存器组的处理步骤,可以参见针对该目标关联寄存器组的处理步骤中相同或相应的内容。
该目标关联寄存器组中可以包含两个关联寄存器,基于此,该目标关联寄存器组中存储的第一划分数据,可以理解为目标关联寄存器组中第一个关联寄存器中存储的划分数据(即上述域元素分支);该目标关联寄存器组中存储的第二划分数据,可以理解为目标关联寄存器组中第二个关联寄存器中存储的划分数据(即上述域元素分支)。
沿用上例,本说明书提供的适用于国密SM2算法的并行模约减方法可以是基于SIMD指令集的8路并行快速模约减算法,在执行的过程中包括两个步骤,第一步骤为域元素的表示方式以及到AVX512寄存器的映射;第二步骤为52基乘法和模约减算法设计。基于此,在完成第一步骤之后,需要执行第二步骤“52基乘法和模约减算法设计”。而第二步骤在执行过程中,对于52基数据表示下的8路并行乘法和模约减算法,需要确定对应的输入数据。比如,该输入数据可以为:两个AVX512寄存器数组、/>,其分别由/>(即第一划分数据)和/>(即第二划分数据)通过“域元素的表示方式以及到AVX512寄存器的映射”步骤确定,其中,MO可以理解为8个域元素的分支数据中,每个第一分支。M1可以理解为8个域元素的分支数据中,每个第二分支。
基于此,在获得输入数据之后,将对两个260bit长的元素(即输入数据)进行乘法,获得乘法运行的乘积值,其乘积值最大长度为520bit。
基于上述内容中将第一划分数据和第二划分数据进行乘法运算,获得目标关联寄存器组对应的乘法运算结果,从而便于实现将SM2素数P的快速模约减算法,替换为52基乘法和模约减算法设计,提高国密SM2算法的计算效率,并且,由于52基乘法和模约减算法的分支数量更少,因此模约减过程中的乘、加、减、移位等操作数量更少,从而得到更高效的快速模约减算法。
需要说明的是,此操作为完成素数域P下的模乘操作,也就是。输入为A,B表示为AVX512形式的元素(这里A,B分别为8个相互独立的元素表示,即两个AVX512寄存器数组/>、/>),输出为/>的值。
在本说明书提供的一个或多个实施例中,所述分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果之后,还包括:
通过进位处理的方式,将所述乘法运算结果存储至运算结果寄存器。从而便于后续快速的获取乘法运算结果进行并行模约减处理。
在本说明书提供的一个或多个实施例中,所述分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果之后,还包括:
将所述乘法运算结果划分为多个运行结果数据,并将所述多个运行结果数据存储至运算结果寄存器。
其中,该运算结果寄存器可以理解为用于存储该乘法运算结果的寄存器。该运算结果寄存器可以根据实际应用场景进行设置,本说明书对该运算结果寄存器的型号、性能不作具体限制。例如,运算结果寄存器为AVX512寄存器。
运行结果数据可以理解为从乘法运算结果中划分出的数据。例如,将乘法运算结果划分为高位运行结果数据以及低位运行结果数据,该高位运行结果数据以及低位运行结果数据可以为运行结果数据。
沿用上例,在执行“52基乘法和模约减算法设计”过程中,对于两个260bit长的域元素进行乘法,其积最大长度为520bit,因此可以采用10个AVX512寄存器对/>的乘积进行存储。从而以52bit为位宽,将8个域元素的同一位置分支映射到一个AVX512寄存器中,提供8路并行的可能,便于后续得到单CPU核数下8路并行的快速模约简算法。
在本说明书提供的一个或多个实施例中,所述运算结果寄存器为多个;
所述将所述乘法运算结果划分为多个运行结果数据,并将所述多个运行结果数据存储至运算结果寄存器,包括:
确定多个运算结果寄存器中的高位运算结果寄存器和低位运算结果寄存器,其中,所述高位运算结果寄存器用于存储所述乘法运算结果中的高位运行结果数据,所述低位运算结果寄存器用于存储所述乘法运算结果中的低位运行结果数据;
将所述乘法运算结果划分为所述高位运行结果数据以及所述低位运行结果数据;
将所述高位运行结果数据存储至所述高位运算结果寄存器,将所述低位运行结果数据存储至所述低位运算结果寄存器,其中,所述高位运算结果寄存器中存储二进制52位的所述高位运行结果数据,所述低位运算结果寄存器中存储二进制52位的所述低位运行结果数据。
其中,该高位运行结果数据可以理解为所述乘积值的高52位。低位运行结果数据可以理解为所述乘积值的低52位。该高位运行结果数据可以为一个或多个,该低位运行结果数据可以为一个或多个。高位运算结果寄存器可以为一个或多个,低位运算结果寄存器可以为一个或多个。
沿用上例,在执行“52基乘法和模约减算法设计”过程中,对于两个260bit长的域元素进行乘法,因此可以采用10个AVX512寄存器对/>和/>的乘积值进行存储。具体可以是,确定乘积值中的高52位数据(即高位运行结果数据)以及低52位数据(低位运行结果数据)。并从10个AVX512寄存器/>中,确定用于存储高52位数据的高位寄存器(即高位运算结果寄存器)以及确定用于存储低52位数据的低位寄存器(即低位运算结果寄存器)。然后将高52位数据存储至高位寄存器中,将低52位数据存储至低位寄存器。具体实现过程可以参见下述步骤:
for(int j=0;j<5;j++){
int count=j;
For(int i=0;i<5;i++){
r[count]=_mm512_madd52lo_epu64(r[count],R0[i],R1[j]);
count++;
r[count]=_mm512_madd52hi_epu64(r[count],R0[i],R1[j]);
}
}
其中,用于将/>和/>乘积的低52位存储在里,/>用于将/>和/>乘积的高52位存储在里,因此最终得到未模P的520bit乘积值。
其中,以及/>是指进位处理,由于域元素是256bit(二进制),类似于10进制,会有进位处理。/>以及/>是指进位处理。
通过上述将两个260bit长的域元素的乘积,存储至10个AVX512寄存器。从而实现以52bit为位宽, 将8个域元素的同一位置分支映射到一个AVX512寄存器中,为后续执行8路并行提供了可能,便于后续得到单CPU核数下8路并行的快速模约简算法。
步骤二:按照预设数据格式,分别将各乘法运算结果转换为模约减参数,并对所述模约减参数执行模约减处理,获得实现所述国密SM2算法的模约减结果。
其中,模约减参数可以理解为用于进行模约减处理,获得模约减结果的参数。预设数据格式可以理解为预先设计的、用于将各乘法运算结果转换为模约减参数的数据格式。例如,该预设数据格式可以为素数格式、国密SM2算法的素数格式、国密SM2算法的伪梅森素数格式等。
在本说明书提供的一个或多个实施例中,所述按照预设数据格式,分别将各乘法运算结果转换为模约减参数,并对所述模约减参数执行模约减处理,获得实现所述国密SM2算法的模约减结果,包括:
从所述运算结果寄存器中确定目标运行结果数据,其中,所述目标运行结果数据为所述多个运行结果数据中的任意一个运行结果数据;
按照国密SM2算法的素数格式,将所述目标运行结果数据转换为多个模约减参数;
基于各模约减参数的幂,分别对所述各模约减参数进行转换,获得模约减算法,并通过执行所述模约减算法,获得实现所述国密SM2算法的模约减结果。
其中,目标运行结果数据可以为多个运行结果数据中的任意一个运行结果数据,该多个运行结果数据存储在运算结果寄存器中。而对于该多个运行结果数据中除目标运行结果数据之外的其他运行结果数据,执行与该目标运行结果数据相同的处理步骤,并且多个运行结果数据采用多路并行的方式执行。为了避免过多赘述,以目标运行结果数据为例进行说明,针对其他运行结果数据的处理步骤,可以参见针对该目标运行结果数据的处理步骤中相同或相应的内容。
国密SM2算法的素数格式可以理解为国密SM2算法的伪梅森素数表现形式。具体可以根据实际应用场景进行设置。
沿用上例,本说明书提供的适用于国密SM2算法的并行模约减方法可以是基于SIMD指令集的8路并行快速模约减算法。基于此,在完成第一步骤之后,需要执行第二步骤“52基乘法和模约减算法设计”。而第二步骤在执行过程中,当得到未模P的520bit乘积值之后,考虑到国密SM2算法的伪梅森素数表现形式如下:。因此,当位宽为52bit的情况下,将乘积a(即上述未模P的520bit乘积值)划分为10个权重分别为/>的值(即模约减参数),该10个权重分别为/>的值可以为/>,其值表示为如下:/>
然后基于该10个权重分别为的值中每个值的幂,对该10个权重分别为/>的值进行转换,从而得到快速模约减算法。通过执行该快速模约减算法,从而快速的获得模约减结果,
在本说明书提供的一个或多个实施例中,所述基于各模约减参数的幂,分别对所述各模约减参数进行转换,获得模约减算法,包括:
从各模约减参数的幂中,确定大于等于预设高次幂阈值的高次幂;
将所述高次幂对应的模约减参数进行取模运算,获得取模运算结果,并将所述取模运算结果转换为低次幂格式,获得低次幂取模运算结果;
从所述低次幂取模运算结果的幂中,确定大于等于预设目标幂阈值的目标幂,并将所述目标幂对应的所述低次幂取模运算结果,确定为待转换取模运算结果;
将所述待转换取模运算结果转换为多个模约减算法参数,并基于各模约减算法参数生成模约减算法。
沿用上例,本说明书提供的适用于国密SM2算法的并行模约减方法,在执行第二步骤“52基乘法和模约减算法设计”过程中,当将乘积a划分为10个权重分别为的值之后,对/>的高次幂(大于等于预设高次幂阈值的幂)进行取模运算,获得取模运算结果,并采用低次幂表示,该取模运算结果的低次幂表示(即低次幂取模运算结果)如下:
在获得取模运算结果的低次幂表示之后,再将上述取模运算结果的低次幂表示中,大于等于(即预设目标幂阈值)的幂(即目标幂)经过转换,可以得到如下快速模约减算法:
基于此,本说明书提供的适用于国密SM2算法的并行模约减方法,以52bit为位宽,将8个域元素的同一位置分支映射到一个AVX512寄存器中,提供8路并行的可能。将SM2素数P的快速模约减算法替换为52基乘法和模约减算法设计,并采用AVX512指令集实现。最终得到单CPU核数下8路并行的快速模约简算法。
在本说明书提供的一个或多个实施例中,所述通过并行执行所述模约减算法,获得实现所述国密SM2算法的模约减结果,包括:
对所述多个模约减算法参数进行进位处理,获得多个进行处理后的模约减算法参数;
将所述多个进行处理后的模约减算法参数相加,获得实现所述国密SM2算法的模约减结果。
沿用上例,本说明书提供的适用于国密SM2算法的并行模约减方法,在执行第二步骤“52基乘法和模约减算法设计”过程中,在得到快速模约减算法之后,计算。其中/>为进位传播将每个分支的长度减少到52bit内。最终得到模约减结果R。
其中,模约减结果R可以理解为52基乘法和模约减算法的输出数据:一个AVX512寄存器数组,其通过AVX512寄存器到域元素映射可得到
其中,P为SM2素数。
需要说明的是,在国密SM2算法中会涉及到大量的模乘操作,也就说明模乘的性能影响国密SM2算法的性能。因此本说明书提供的适用于国密SM2算法的并行模约减方法中的模乘算法,是国密SM2算法中的必要内容。通过提升模约减的性能可以提升国密SM2算法的性能,从而提升国密SM2算法在身份验证等领域的性能。
本说明书提供的适用于国密SM2算法的并行模约减方法,在确定国密SM2算法对应的多个待处理数据之后,能将各待处理数据划分为划分数据集合,并将数据集合中的划分数据存储至相关联的关联寄存器。然后将多个关联寄存器组中存储的划分数据,以并行的方式快速的执行模约减处理,从而快速的获得实现所述国密SM2算法的模约减结果,提高国密SM2算法的计算效率,避免了国密SM2算法在计算过程中需要消耗大量的时间和计算资源的问题。
下述结合附图2,以本说明书提供的适用于国密SM2算法的并行模约减方法在快速模约减场景中的应用为例,对所述适用于国密SM2算法的并行模约减方法进行进一步说明。其中,图2示出了本说明书一个实施例提供的一种适用于国密SM2算法的并行模约减方法的处理过程流程图,具体包括以下步骤。
步骤202:确定域元素的表示方式。
首先,获取8组需要SM2算法进行数据验证的密钥、公钥、消息等信息,并对该多个信息分别进行哈希操作,获得长为256bit的多个域元素
其次,将域元素以52基表示。以域元素A为例,对于长为256bit的域元素A采用52基表示如下:,一个域元素仅需5个分支进行表示。
步骤204:将域元素的表示方式映射至AVX512寄存器。
对于将8个相互独立且采用52基表示的域元素,映射到AVX512寄存器方式如下所示:
首先,确定域元素的5个分支分别对应5个AVX512寄存器。/>
其次,基于该域元素5个分支的标识信息以及5个AVX512寄存器的标识信息,建立彼此之间的关联关系。比如,域元素中每个域元素的第一分支(),可以与5个寄存器中的第一个寄存器/>相关联。域元素/>中每个域元素的第二分支(/>),可以与5个寄存器中的第二个寄存器/>相关联。
最后,将域元素的5个分支,存储至对应5个AVX512寄存器,5个AVX512寄存器分别存储所有域元素/>的对应值。具体可参见下述公式。
步骤206:针对域元素的表示方式,执行52基乘法,获得乘积值。
首先,确定52基乘法的输入数据,该输入数据可以为:两个AVX512寄存器数组、/>,其分别由/>和/>通过“域元素的表示方式以及到AVX512寄存器的映射”步骤而来。
其次,对于、/>这两个260bit长的元素进行乘法,获得乘积值。其中,该乘积值最大长度为520bit。
最后,采用10个AVX512寄存器对/>和/>的乘积值进行存储。具体方式可以为:
1、确定乘积值中的高52位数据以及低52位数据。
2、从10个AVX512寄存器中,确定用于存储高52位数据的高位寄存器,以及确定用于存储低52位数据的低位寄存器。
3、将高52位数据存储至高位寄存器中,将低52位数据存储至低位寄存器。
需要说明的是,对于采用10个AVX512寄存器对/>和/>的乘积值进行存储的方式,可以参见下述代码:
具体实现过程可以参见下述步骤:
for(int j=0;j<5;j++){
int count=j;
For(int i=0;i<5;i++){
r[count]=_mm512_madd52lo_epu64(r[count],R0[i],R1[j]);
count++;
r[count]=_mm512_madd52hi_epu64(r[count],R0[i],R1[j]);
}
}
其中,用于将/>和/>乘积的低52位存储在里,/>用于将/>和/>乘积的高52位存储在里,因此最终得到未模P的520bit乘积值。
步骤208:对于未模P的520bit乘积值,执行52基快速模约减,获得模约减结果。
首先,由于sm2的伪梅森素数表现形式如下:。因此,当位宽为52bit的情况下,将乘积a(即未模P的520bit乘积值)划分为10个权重分别为的值,即/>,其值可表示为如下:/>
其次,确定的高次幂,并对该高次幂对应的值(属于/>中)进行取模运算,获得取模运算结果。
并且,对于该取模运算结果采用低次幂表示,该取模运算结果的低次幂表示如下:
需要说明的是,确定该高次幂的方式可以是判断的幂是否大于等于。若是,则确定为高次幂;反之,则不是高次幂。
再次,将上述取模运算结果的低次幂表示中,大于等于的幂经过转换,可以得到如下快速模约减算法:
最后,计算。其中/>为进位传播将每个分支的长度减少到52bit内。最终得到模约减结果R。
本说明书一个或多个实施例中提供的适用于国密SM2算法的并行模约减方法,是一种适用于国密SM2算法的8路并行快速模约减算法。考虑到SM2数字签名算法的实现,需要高CPU核数实现批量签名和验签操作,性能较差。以及针对国密SM2算法的其他优化方式中,AVX512指令集不支持进位传播、乘法器最大输入字长为32比特的限制等问题,
本说明书一个或多个实施例提供的适用于国密SM2算法的8路并行快速模约减算法,在AVX512指令集中查找到52基乘法指令,因此可以采用52基冗余基数表示法,将9个分支减少到5个分支,并通过移位和加法实现进位传播功能,然后设计52基的模约减算法,最终得到8路并行的快速模约减算法。
基于此可知,本说明书一个或多个实施例提供的适用于国密SM2算法的8路并行快速模约减算法,利用CPU指令集SIMD实现通过8路并行及快速模约简算法可提升SM2数字签名算法的性能。将域元素表示为52基及AVX512映射提供并行签名和验签的可能,由于国密SM2算法的素数P为伪梅森素数,因此可采用快速模约简算法进行性能提升。
也即是说,本说明书一个或多个实施例中提供的适用于国密SM2算法的并行模约减方法,设计了一种52基下的快速模约简算法以适用于单CPU核下8路并行操作。其在52基下的分支数量更少,因此模约减过程中的乘、加、减、移位等操作数量更少,从而得到更高效的快速模约减算法。
与上述方法实施例相对应,本说明书还提供了适用于国密SM2算法的并行模约减装置实施例,图3示出了本说明书一个实施例提供的一种适用于国密SM2算法的并行模约减装置的结构示意图。如图3所示,该装置包括:
数据确定模块302,被配置为确定国密SM2算法对应的多个待处理数据;
数据集合获取模块304,被配置为分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据;
寄存器确定模块306,被配置为确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器;
数据存储模块308,被配置为将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器;
模约减处理模块310,被配置为基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
可选地,所述模约减处理模块310,还被配置为:
通过并行的方式,分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果;
按照预设数据格式,分别将各乘法运算结果转换为模约减参数,并对所述模约减参数执行模约减处理,获得实现所述国密SM2算法的模约减结果。
可选地,所述模约减处理模块310,还被配置为:
确定目标关联寄存器组中存储的第一划分数据和第二划分数据,其中,所述目标关联寄存器组为所述各关联寄存器组中的任意一个关联寄存器组;
将所述第一划分数据和所述第二划分数据进行乘法运算,获得所述目标关联寄存器组对应的乘法运算结果,其中,所述乘法运算结果为二进制520位的数据。
可选地,所述模约减处理模块310,还被配置为:
将所述乘法运算结果划分为多个运行结果数据,并将所述多个运行结果数据存储至运算结果寄存器。
可选地,所述运算结果寄存器为多个;
所述模约减处理模块310,还被配置为:
确定多个运算结果寄存器中的高位运算结果寄存器和低位运算结果寄存器,其中,所述高位运算结果寄存器用于存储所述乘法运算结果中的高位运行结果数据,所述低位运算结果寄存器用于存储所述乘法运算结果中的低位运行结果数据;
将所述乘法运算结果划分为所述高位运行结果数据以及所述低位运行结果数据;
将所述高位运行结果数据存储至所述高位运算结果寄存器,将所述低位运行结果数据存储至所述低位运算结果寄存器,其中,所述高位运算结果寄存器中存储二进制52位的所述高位运行结果数据,所述低位运算结果寄存器中存储二进制52位的所述低位运行结果数据。
可选地,所述模约减处理模块310,还被配置为:
从所述运算结果寄存器中确定目标运行结果数据,其中,所述目标运行结果数据为所述多个运行结果数据中的任意一个运行结果数据;
按照国密SM2算法的素数格式,将所述目标运行结果数据转换为多个模约减参数;
基于各模约减参数的幂,分别对所述各模约减参数进行转换,获得模约减算法,并通过执行所述模约减算法,获得实现所述国密SM2算法的模约减结果。
可选地,所述模约减处理模块310,还被配置为:
从各模约减参数的幂中,确定大于等于预设高次幂阈值的高次幂;
将所述高次幂对应的模约减参数进行取模运算,获得取模运算结果,并将所述取模运算结果转换为低次幂格式,获得低次幂取模运算结果;
从所述低次幂取模运算结果的幂中,确定大于等于预设目标幂阈值的目标幂,并将所述目标幂对应的所述低次幂取模运算结果,确定为待转换取模运算结果;
将所述待转换取模运算结果转换为多个模约减算法参数,并基于各模约减算法参数生成模约减算法。
可选地,所述模约减处理模块310,还被配置为:
对所述多个模约减算法参数进行进位处理,获得多个进行处理后的模约减算法参数;
将所述多个进行处理后的模约减算法参数相加,获得实现所述国密SM2算法的模约减结果。
可选地,所述数据确定模块302,还被配置为:
确定用户对应的待验证数据;
对所述待验证数据进行哈希处理,获得国密SM2算法对应的多个待处理数据。
可选地,所述寄存器确定模块306,还被配置为:
确定各划分数据集合中各划分数据的数据属性信息,并确定所述多个寄存器的寄存器属性信息;
从所述寄存器属性信息中,确定与所述数据属性信息相关联的关联寄存器属性信息;
将所述关联寄存器属性信息对应的所述寄存器,确定为与所述数据属性信息对应的划分数据相关联的关联寄存器。
本说明书提供的适用于国密SM2算法的并行模约减装置,在确定国密SM2算法对应的多个待处理数据之后,能将各待处理数据划分为划分数据集合,并将数据集合中的划分数据存储至相关联的关联寄存器。然后将多个关联寄存器组中存储的划分数据,以并行的方式快速的执行模约减处理,从而快速的获得实现所述国密SM2算法的模约减结果,提高国密SM2算法的计算效率,避免了国密SM2算法在计算过程中需要消耗大量的时间和计算资源的问题。
上述为本实施例的一种适用于国密SM2算法的并行模约减装置的示意性方案。需要说明的是,该适用于国密SM2算法的并行模约减装置的技术方案与上述的适用于国密SM2算法的并行模约减方法的技术方案属于同一构思,适用于国密SM2算法的并行模约减装置的技术方案未详细描述的细节内容,均可以参见上述适用于国密SM2算法的并行模约减方法的技术方案的描述。
图4示出了根据本说明书一个实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)。
在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
其中,处理器420用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述适用于国密SM2算法的并行模约减方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于计算设备实施例而言,由于其基本相似于适用于国密SM2算法的并行模约减方法实施例,所以描述的比较简单,相关之处参见适用于国密SM2算法的并行模约减方法实施例的部分说明即可。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现上述适用于国密SM2算法的并行模约减方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于计算机可读存储介质实施例而言,由于其基本相似于适用于国密SM2算法的并行模约减方法实施例,所以描述的比较简单,相关之处参见适用于国密SM2算法的并行模约减方法实施例的部分说明即可。
本说明书一实施例还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述适用于国密SM2算法的并行模约减方法的步骤。
上述为本实施例的一种计算机程序产品的示意性方案。需要说明的是,该计算机程序产品的技术方案与上述的适用于国密SM2算法的并行模约减方法的技术方案属于同一构思,计算机程序产品的技术方案未详细描述的细节内容,均可以参见上述适用于国密SM2算法的并行模约减方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (14)

1.一种适用于国密SM2算法的并行模约减方法,其特征在于,包括:
确定国密SM2算法对应的多个待处理数据;
分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据;
确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器;
将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器;
基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
2.根据权利要求1提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果,包括:
通过并行的方式,分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果;
按照预设数据格式,分别将各乘法运算结果转换为模约减参数,并对所述模约减参数执行模约减处理,获得实现所述国密SM2算法的模约减结果。
3.根据权利要求2提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果,包括:
确定目标关联寄存器组中存储的第一划分数据和第二划分数据,其中,所述目标关联寄存器组为所述各关联寄存器组中的任意一个关联寄存器组;
将所述第一划分数据和所述第二划分数据进行乘法运算,获得所述目标关联寄存器组对应的乘法运算结果,其中,所述乘法运算结果为二进制520位的数据。
4.根据权利要求2提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述分别将所述各关联寄存器组中存储的所述划分数据进行乘法运算,获得所述各关联寄存器组对应的乘法运算结果之后,还包括:
将所述乘法运算结果划分为多个运行结果数据,并将所述多个运行结果数据存储至运算结果寄存器。
5.根据权利要求4提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述运算结果寄存器为多个;
所述将所述乘法运算结果划分为多个运行结果数据,并将所述多个运行结果数据存储至运算结果寄存器,包括:
确定多个运算结果寄存器中的高位运算结果寄存器和低位运算结果寄存器,其中,所述高位运算结果寄存器用于存储所述乘法运算结果中的高位运行结果数据,所述低位运算结果寄存器用于存储所述乘法运算结果中的低位运行结果数据;
将所述乘法运算结果划分为所述高位运行结果数据以及所述低位运行结果数据;
将所述高位运行结果数据存储至所述高位运算结果寄存器,将所述低位运行结果数据存储至所述低位运算结果寄存器,其中,所述高位运算结果寄存器中存储二进制52位的所述高位运行结果数据,所述低位运算结果寄存器中存储二进制52位的所述低位运行结果数据。
6.根据权利要求4提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述按照预设数据格式,分别将各乘法运算结果转换为模约减参数,并对所述模约减参数执行模约减处理,获得实现所述国密SM2算法的模约减结果,包括:
从所述运算结果寄存器中确定目标运行结果数据,其中,所述目标运行结果数据为所述多个运行结果数据中的任意一个运行结果数据;
按照国密SM2算法的素数格式,将所述目标运行结果数据转换为多个模约减参数;
基于各模约减参数的幂,分别对所述各模约减参数进行转换,获得模约减算法,并通过执行所述模约减算法,获得实现所述国密SM2算法的模约减结果。
7.根据权利要求6提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述基于各模约减参数的幂,分别对所述各模约减参数进行转换,获得模约减算法,包括:
从各模约减参数的幂中,确定大于等于预设高次幂阈值的高次幂;
将所述高次幂对应的模约减参数进行取模运算,获得取模运算结果,并将所述取模运算结果转换为低次幂格式,获得低次幂取模运算结果;
从所述低次幂取模运算结果的幂中,确定大于等于预设目标幂阈值的目标幂,并将所述目标幂对应的所述低次幂取模运算结果,确定为待转换取模运算结果;
将所述待转换取模运算结果转换为多个模约减算法参数,并基于各模约减算法参数生成模约减算法。
8.根据权利要求7提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述通过并行执行所述模约减算法,获得实现所述国密SM2算法的模约减结果,包括:
对所述多个模约减算法参数进行进位处理,获得多个进行处理后的模约减算法参数;
将所述多个进行处理后的模约减算法参数相加,获得实现所述国密SM2算法的模约减结果。
9.根据权利要求1提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述确定国密SM2算法对应的多个待处理数据,包括:
确定用户对应的待验证数据;
对所述待验证数据进行哈希处理,获得国密SM2算法对应的多个待处理数据。
10.根据权利要求1提供的适用于国密SM2算法的并行模约减方法,其特征在于,所述确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器,包括:
确定各划分数据集合中各划分数据的数据属性信息,并确定所述多个寄存器的寄存器属性信息;
从所述寄存器属性信息中,确定与所述数据属性信息相关联的关联寄存器属性信息;
将所述关联寄存器属性信息对应的所述寄存器,确定为与所述数据属性信息对应的划分数据相关联的关联寄存器。
11.一种适用于国密SM2算法的并行模约减装置,其特征在于,包括:
数据确定模块,被配置为确定国密SM2算法对应的多个待处理数据;
数据集合获取模块,被配置为分别对各待处理数据进行数据划分,获得所述各待处理数据对应的划分数据集合,其中,所述划分数据集合包含从所述待处理数据中划分的多个划分数据;
寄存器确定模块,被配置为确定各划分数据集合中各划分数据的数据属性信息,并基于所述数据属性信息,从多个寄存器中分别为所述各划分数据确定相关联的关联寄存器;
数据存储模块,被配置为将所述各划分数据存储至所述关联寄存器,并基于所述关联寄存器,确定多个关联寄存器组,其中,各关联寄存器组包含至少两个所述关联寄存器;
模约减处理模块,被配置为基于所述各关联寄存器组存储的所述划分数据,并行执行模约减处理,获得实现所述国密SM2算法的模约减结果。
12.一种计算设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储计算机程序/指令,所述处理器用于执行所述计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1至10任意一项所述适用于国密SM2算法的并行模约减方法的步骤。
13.一种计算机可读存储介质,其特征在于,其存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1至10任意一项所述适用于国密SM2算法的并行模约减方法的步骤。
14.一种计算机程序产品,其特征在于,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1至10任意一项所述适用于国密SM2算法的并行模约减方法的步骤。
CN202410287577.9A 2024-03-13 2024-03-13 适用于国密sm2算法的并行模约减方法及装置 Active CN117896067B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410287577.9A CN117896067B (zh) 2024-03-13 2024-03-13 适用于国密sm2算法的并行模约减方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410287577.9A CN117896067B (zh) 2024-03-13 2024-03-13 适用于国密sm2算法的并行模约减方法及装置

Publications (2)

Publication Number Publication Date
CN117896067A true CN117896067A (zh) 2024-04-16
CN117896067B CN117896067B (zh) 2024-07-16

Family

ID=90652031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410287577.9A Active CN117896067B (zh) 2024-03-13 2024-03-13 适用于国密sm2算法的并行模约减方法及装置

Country Status (1)

Country Link
CN (1) CN117896067B (zh)

Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110119467A1 (en) * 2009-11-13 2011-05-19 Nec Laboratories America, Inc. Massively parallel, smart memory based accelerator
CN102253919A (zh) * 2011-05-25 2011-11-23 中国石油集团川庆钻探工程有限公司 基于gpu和cpu协同运算的并行数值模拟方法和***
CN103023659A (zh) * 2013-01-08 2013-04-03 武汉大学 一种参数位宽可扩展的ecc加密硬件装置
US10133573B1 (en) * 2017-12-12 2018-11-20 Google Llc Multivalue reductions using serial initial reductions in multiple register spaces and parallel subsequent reductions in a single register space
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器
CN110262773A (zh) * 2019-04-28 2019-09-20 阿里巴巴集团控股有限公司 一种计算机数据处理方法及装置
CN110413776A (zh) * 2019-07-01 2019-11-05 武汉大学 一种基于cpu-gpu协同并行的文本主题模型lda高性能计算方法
CN111291869A (zh) * 2020-05-09 2020-06-16 支付宝(杭州)信息技术有限公司 并行训练业务模型的方法及装置
CN112148437A (zh) * 2020-10-21 2020-12-29 深圳致星科技有限公司 用于联邦学习的计算任务加速处理方法、装置及设备
CN112540793A (zh) * 2020-12-18 2021-03-23 清华大学 支持多访存模式的可重构处理单元阵列及控制方法、装置
CN113794552A (zh) * 2021-09-14 2021-12-14 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及***
CN114338049A (zh) * 2022-03-14 2022-04-12 山东区块链研究院 基于模归约的国密算法sm2的快速实现方法及***
CN114527956A (zh) * 2022-01-25 2022-05-24 北京航空航天大学 抗spa攻击的国密sm2算法中非定点标量乘法的计算方法
CN114594925A (zh) * 2022-03-17 2022-06-07 安徽师范大学 适用于sm2加密运算的高效模乘电路及其运算方法
CN114757034A (zh) * 2022-04-20 2022-07-15 麦田云网(杭州)信息技术有限公司 一种基于FPGA的poseidon哈希算法的优化***
CN115048076A (zh) * 2022-06-01 2022-09-13 山东大学 一种基于sm2特定域的快速模乘芯片实现装置及方法
CN115348017A (zh) * 2022-10-18 2022-11-15 阿里巴巴(中国)有限公司 密文处理方法以及装置
CN115390986A (zh) * 2022-07-04 2022-11-25 电子科技大学 一种基于国密芯片的智能合约并行执行***
CN115622685A (zh) * 2022-12-16 2023-01-17 成方金融科技有限公司 隐私数据同态加密方法、装置及***
CN116842532A (zh) * 2022-03-24 2023-10-03 财付通支付科技有限公司 数据处理方法、装置、计算机设备及计算机可读存储介质

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110119467A1 (en) * 2009-11-13 2011-05-19 Nec Laboratories America, Inc. Massively parallel, smart memory based accelerator
CN102253919A (zh) * 2011-05-25 2011-11-23 中国石油集团川庆钻探工程有限公司 基于gpu和cpu协同运算的并行数值模拟方法和***
CN103023659A (zh) * 2013-01-08 2013-04-03 武汉大学 一种参数位宽可扩展的ecc加密硬件装置
US10133573B1 (en) * 2017-12-12 2018-11-20 Google Llc Multivalue reductions using serial initial reductions in multiple register spaces and parallel subsequent reductions in a single register space
CN111448545A (zh) * 2017-12-12 2020-07-24 谷歌有限责任公司 并行多值归约
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器
CN110262773A (zh) * 2019-04-28 2019-09-20 阿里巴巴集团控股有限公司 一种计算机数据处理方法及装置
CN110413776A (zh) * 2019-07-01 2019-11-05 武汉大学 一种基于cpu-gpu协同并行的文本主题模型lda高性能计算方法
CN111291869A (zh) * 2020-05-09 2020-06-16 支付宝(杭州)信息技术有限公司 并行训练业务模型的方法及装置
CN112148437A (zh) * 2020-10-21 2020-12-29 深圳致星科技有限公司 用于联邦学习的计算任务加速处理方法、装置及设备
CN112540793A (zh) * 2020-12-18 2021-03-23 清华大学 支持多访存模式的可重构处理单元阵列及控制方法、装置
CN113794552A (zh) * 2021-09-14 2021-12-14 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及***
CN114527956A (zh) * 2022-01-25 2022-05-24 北京航空航天大学 抗spa攻击的国密sm2算法中非定点标量乘法的计算方法
CN114338049A (zh) * 2022-03-14 2022-04-12 山东区块链研究院 基于模归约的国密算法sm2的快速实现方法及***
CN114594925A (zh) * 2022-03-17 2022-06-07 安徽师范大学 适用于sm2加密运算的高效模乘电路及其运算方法
CN116842532A (zh) * 2022-03-24 2023-10-03 财付通支付科技有限公司 数据处理方法、装置、计算机设备及计算机可读存储介质
CN114757034A (zh) * 2022-04-20 2022-07-15 麦田云网(杭州)信息技术有限公司 一种基于FPGA的poseidon哈希算法的优化***
CN115048076A (zh) * 2022-06-01 2022-09-13 山东大学 一种基于sm2特定域的快速模乘芯片实现装置及方法
CN115390986A (zh) * 2022-07-04 2022-11-25 电子科技大学 一种基于国密芯片的智能合约并行执行***
CN115348017A (zh) * 2022-10-18 2022-11-15 阿里巴巴(中国)有限公司 密文处理方法以及装置
CN115622685A (zh) * 2022-12-16 2023-01-17 成方金融科技有限公司 隐私数据同态加密方法、装置及***

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
YUQIAO SHU; ZHENJIANG WANG; LEI WANG; CHENGZHUO LI: "Hardware Design of SM2 Coprocessor Based on RISC-V", 《2023 3RD INTERNATIONAL SYMPOSIUM ON COMPUTER TECHNOLOGY AND INFORMATION SCIENCE (ISCTIS)》, 16 August 2023 (2023-08-16) *
张军阳;郭阳;扈啸;: "二维矩阵卷积的并行计算方法", 浙江大学学报(工学版), no. 03, 15 March 2018 (2018-03-15) *
戴涛;杨洲;方勇;景旭;: "基于CUDA的k-means文档聚类算法并行优化", 计算机工程与设计, no. 11, 16 November 2013 (2013-11-16) *
李凡;李云峰;翁天恒;张俊杰;: "基于FPGA的SM2点运算快速并行实现", 电子测量技术, no. 15, 8 August 2020 (2020-08-08) *
杨晓辉;戴紫彬;李淼;张永福;: "面向椭圆曲线密码的处理器并行体系结构研究与设计", 通信学报, no. 05, 25 May 2011 (2011-05-25) *
贾斌斌: "工业控制***中可信计算的国密SM2算法研究", 《中国优秀硕士学位论文全文数据库》, 15 January 2024 (2024-01-15) *

Also Published As

Publication number Publication date
CN117896067B (zh) 2024-07-16

Similar Documents

Publication Publication Date Title
Hua et al. Color image encryption using orthogonal Latin squares and a new 2D chaotic system
Shih et al. Securing M2M with post-quantum public-key cryptography
CN109145616B (zh) 基于高效模乘的sm2加密、签名和密钥交换的实现方法及***
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN111736902B (zh) 基于simd指令的sm4的并行计算方法及装置、可读存储介质
Yang et al. Poseidon: Practical homomorphic encryption accelerator
CN115348017B (zh) 密文处理方法以及装置
US11902432B2 (en) System and method to optimize generation of coprime numbers in cryptographic applications
CN113296733A (zh) 数据处理方法以及装置
Agrawal et al. Open-source FPGA implementation of post-quantum cryptographic hardware primitives
Shantha et al. Analysis and implementation of ECC algorithm in lightweight device
Moon et al. An Efficient Encrypted Floating‐Point Representation Using HEAAN and TFHE
CN114095149B (zh) 信息加密方法、装置、设备及存储介质
CN115622685A (zh) 隐私数据同态加密方法、装置及***
Wang et al. A hardware implementation of ZUC-256 stream cipher
CN116633526B (zh) 一种数据处理方法、装置、设备及介质
CN117896067B (zh) 适用于国密sm2算法的并行模约减方法及装置
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
CN114338049B (zh) 基于模归约的国密算法sm2的快速实现方法及***
Imran et al. A systematic study of lattice-based NIST PQC algorithms: From reference implementations to hardware accelerators
CN114826560A (zh) 一种轻量级分组密码cref实现方法及***
CN117972761B (zh) 基于国密sm2算法的数据处理方法以及装置
CN110100409B (zh) 产生安全散列值的方法和设备
CN118074889B (zh) 基于国密sm3算法和mac算法的数据处理方法及装置
Seo et al. Portable and Efficient Implementation of CRYSTALS-Kyber Based on WebAssembly.

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