CN114465735A - 验签***、电子装置、电子设备及验签方法 - Google Patents
验签***、电子装置、电子设备及验签方法 Download PDFInfo
- Publication number
- CN114465735A CN114465735A CN202210376774.9A CN202210376774A CN114465735A CN 114465735 A CN114465735 A CN 114465735A CN 202210376774 A CN202210376774 A CN 202210376774A CN 114465735 A CN114465735 A CN 114465735A
- Authority
- CN
- China
- Prior art keywords
- point
- signature
- elliptic curve
- module
- point multiplication
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012795 verification Methods 0.000 claims abstract description 69
- 238000004886 process control Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000010835 comparative analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
- H04L9/3252—Cryptographic 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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Storage Device Security (AREA)
Abstract
本公开提供一种验签***、电子装置、电子设备及验签方法,旨在提升验签效率并确保验签结果可靠。其中,验签***包括双点乘模块和单点乘模块,双点乘模块基于非二进制编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点;其中,第一椭圆曲线点在不是无穷远点的情况下用于验证签名是否有效。单点乘模块在第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对验签参数执行单点乘运算,得到第二椭圆曲线点;其中,第二椭圆曲线点用于验证签名是否有效。本公开中,通过双点乘模块计算第一椭圆曲线点,可以有效提升验签效率。此外,在第一椭圆曲线点是无穷远点的情况下,通过单点乘模块再次计算椭圆曲线点,确保验签结果的可靠性。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种验签***、电子装置、电子设备及验签方法。
背景技术
为了确保数据来源的可靠性,数据接收方获得数据后,通常会验证数据的签名是否有效,如果签名有效,则数据的来源可靠,如果签名无效,则数据的来源不可靠。
以ECDSA验签算法为例,验签过程通常包括以下步骤:判断签名值是否在预设区间内,若是,则执行下一步,若否,则确定签名无效;计算数据的哈希值,并根据该哈希值推导出整数;对签名值和整数进行取模运算,获得验签参数和;根据验签参数、、G(椭圆曲线的基点)、Q(公钥),计算椭圆曲线点;如果椭圆曲线点是无穷远点,则确定签名无效;如果不是无穷远点,则对横坐标执行取模运算,得到取模运算结果;如果取模运算结果等于签名值,则确定签名有效,如果取模运算结果不等于签名值,则确定签名无效。例如论文《国密SM2数字签名算法与ECDSA算法对比分析研究》(发表于2013年2月15日)和《安全高效的两方协同ECDSA签名方案》(发表于2021年2月25日)均部分或全部公开了上述验签过程。
发明内容
本公开的目的是提供一种验签***、电子装置、电子设备及验签方法,在确保验签结果可靠性的前提下提升验签效率。
根据本公开的一个方面,提供一种验签***,包括:
双点乘模块,被配置为基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点;其中,预设编码方式是一种非二进制编码方式,第一椭圆曲线点在不是无穷远点的情况下用于验证签名是否有效;
单点乘模块,被配置为在第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对验签参数执行单点乘运算,得到第二椭圆曲线点;其中,第二椭圆曲线点用于验证所述签名是否有效。
可选地,验签***还包括:
流程控制模块,被配置为获得双点乘模块运算得到的第一椭圆曲线点,在第一椭圆曲线点是无穷远点的情况下,向单点乘模块发送控制信息,以控制单点乘模块基于二进制编码方式对验签参数执行单点乘运算。
可选地,流程控制模块和双点乘模块通过第一接口连接,第一接口用于双点乘模块向流程控制模块发送第一椭圆曲线点;
流程控制模块和单点乘模块通过第二接口连接,第二接口用于流程控制模块向单点乘模块发送控制信息。
可选地,验签***还包括:
点加点倍模块,双点乘模块和单点乘模块均与点加点倍模块连接;双点乘模块在执行双点乘运算期间,调用点加点倍模块执行点加和/或点倍运算;单点乘模块在执行单点乘运算期间,调用点加点倍模块执行点加和/或点倍运算。
可选地,验签***还包括:
模运算模块,被配置为在第一椭圆曲线点不是无穷远点的情况下,对第一椭圆曲线点的横坐标执行取模运算,或者对第一椭圆曲线点的横坐标转换成的整数进行取模运算。
可选地,模运算模块还被配置为在第二椭圆曲线点不是无穷远点的情况下,对第二椭圆曲线点的横坐标执行取模运算,或者对第二椭圆曲线点的横坐标转换成的整数进行取模运算。
可选地,预设编码方式是以下多种编码方式中的任一种:JSF编码、NAF编码。
可选地,单点乘模块还被配置为执行签名任务中的点乘运算。
可选地,所单点乘模块还被配置为在执行签名任务中的点乘运算期间,响应于控制信息,将签名任务的运算状态保存至存储模块,并基于二进制编码方式对验签参数执行单点乘运算;其中,控制信息用于指示单点乘模块执行验签任务中的点乘运算;
单点乘模块还被配置为在得到第二椭圆曲线点后,从存储模块获取运算状态,并根据运算状态继续执行签名任务中的点乘运算。
根据本公开的另一方面,还提供一种电子装置,该电子装置包括上述任一实施例中所述验签***。在一些使用场景下,该电子装置的产品形式体现为CPU主板。
根据本公开的另一方面,还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备、POS机等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等;在一些使用场景下,该电子设备的产品形式是服务器主机、密码机、生产设备。
根据本公开的另一方面,还提供一种验签方法,包括:
基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点;其中,预设编码方式是一种非二进制编码方式;
在第一椭圆曲线点不是无穷远点的情况下,根据第一椭圆曲线点验证签名是否有效;
在第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对验签参数执行单点乘运算,得到第二椭圆曲线点,并根据第二椭圆曲线点验证签名是否有效。
可选地,根据第一椭圆曲线点验证签名是否有效,包括:
对第一椭圆曲线点的横坐标进行取模运算,得到第一取模运算结果;判断第一取模运算结果是否等于签名值,如果第一取模运算结果等于签名值,则确定签名有效,如果第一取模运算结果不等于签名值,则确定签名无效。
可选地,根据第一椭圆曲线点验证签名是否有效,包括:
将第一椭圆曲线点的横坐标转换成第一整数;对第一整数进行取模运算,得到第二取模运算结果;判断第二取模运算结果是否等于签名值,如果第二取模运算结果等于签名值,则确定签名有效,如果第二取模运算结果不等于签名值,则确定签名无效。
可选地,根据第二椭圆曲线点验证签名是否有效,包括:
在第二椭圆曲线点是无穷远点的情况下,确定签名无效。
可选地,根据第二椭圆曲线点验证签名是否有效,还包括:
在第二椭圆曲线点不是无穷远点的情况下,对第二椭圆曲线点的横坐标进行取模运算,得到第三取模运算结果;判断第三取模运算结果是否等于签名值,如果第三取模运算结果等于签名值,则确定签名有效,如果第三取模运算结果不等于签名值,则确定签名无效。
可选地,根据第二椭圆曲线点验证签名是否有效,还包括:
在第二椭圆曲线点不是无穷远点的情况下,将第二椭圆曲线点的横坐标转换成第二整数;对第二整数进行取模运算,得到第四取模运算结果;判断第四取模运算结果是否等于签名值,如果第四取模运算结果等于签名值,则确定签名有效,如果第四取模运算结果不等于签名值,则确定签名无效。
可选地,预设编码方式是以下多种编码方式中的任一种:JSF编码、NAF编码。
附图说明
图1是本公开一实施例提供的验签***的结构示意图;
图2是本公开一实施例提供的验签方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种提升验签效率的验签方案,并确保验签结果的可靠性。
本公开的一个实施例提供一种验签***,该验签***包括双点乘模块和单点乘模块。
双点乘模块被配置为:基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点。其中,预设编码方式是一种非二进制编码方式,第一椭圆曲线点在不是无穷远点的情况下用于验证签名是否有效。在一些可行的实现方式中,预设编码方式可以是JSF编码,即联合稀疏形式(Joint Sparse Form)编码方式。在另一些可行的实现方式中,预设编码方式可以是NAF编码,即非相邻形式(Non-Adjacent Form)编码方式。
单点乘模块被配置为:在第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对验签参数执行单点乘运算,得到第二椭圆曲线点。其中,第二椭圆曲线点用于验证所述签名是否有效。
本公开的上述验签***可用于验签过程中计算椭圆曲线点。值得说明的是,验签***首先通过双点乘模块基于非二进制编码方式(如JSF或NAF)计算出椭圆曲线点,如果该椭圆曲线点不是无穷远点,则可以继续根据该椭圆曲线点验证签名是否有效。由于双点乘模块基于非二进制编码方式计算椭圆曲线点的计算速率,比单点乘模块基于二进制编码方式计算椭圆曲线点的计算速率更高,因此首先利用双点乘模块计算椭圆曲线点,可以更快速地获得椭圆曲线点,从而有效提升验签效率。
但是本公开的发明人发现,基于非二进制编码的双点乘运算在计算椭圆曲线点时,存在较小概率会计算出假无穷远点。换言之,如果双点乘模块计算出的椭圆曲线点是一个无穷远点,则该椭圆曲线点存在较小概率是一个假无穷远点。并且发明人发现,存在假无穷远点的概率,是由“基于非二进制编码的双点乘运算”这种算法自身的特点所引起的。
在一般的验签算法中,如果计算出的椭圆曲线点属于无穷远点,则会直接确定签名无效(即签名不合法)。但是本公开中,为了避免假无穷远点引起的验签结果错误,例如将实际有效的签名误判为无效。本公开在通过双点乘模块计算出无穷远点后,还会进一步通过单点乘模块基于二进制编码方式,重新计算椭圆曲线点。由于“基于二进制编码的单点乘运算”这种算法不会产生假无穷远点,因此本公开在单点乘模块计算出椭圆曲线点后,可以直接根据该椭圆曲线点验证签名是否有效,从而可以确保验签结果的可靠性。
还值得说明的是,基于非二进制编码方式进行双点乘运算时,计算出假无穷远点的概率很小。因此对于本身合法的签名而言,在绝大多数情况下,双点乘模块都不会计算出无穷远点,所以本公开在绝大多数情况下,可以有效提升合法签名的验签效率。而对于本身非法的签名而言,当双点乘模块计算出无穷远点后,本公开通过单点乘模块再次计算椭圆曲线点,虽然会增加验签耗时,但是对于本身非法的签名而言,由于其签名者是非法的,因此即使验签耗时增加,本公开也可以不考虑非法签名者的体验/感受。
在一些可行的实施方式中,双点乘模块可以是软件模块,换言之,可以通过程序实现双点乘模块的功能。或者,双点乘模块也可以是硬件模块,例如双点乘模块可以通过电路结构实现。
同样地,在一些可行的实施方式中,单点乘模块可以是软件模块,换言之,可以通过程序实现单点乘模块的功能。或者,单点乘模块也可以是硬件模块,例如单点乘模块可以通过电路结构实现。
为便于理解,本公开以双点乘模块为例,给出双点乘模块计算椭圆曲线点的具体实现方式:对验签参数和分别进行JSF编码,得到的编码结果和的编码结果;针对两个编码结果,如果不等于(0,0),则令,其中R是椭圆曲线点。上述过程作为双点乘模块的具体实现方式,可用于设计相应的软件模块。但需要说明的是,以上过程仅作为本公开的一个示例,本公开对于双点乘模块的具体实现,不限定于上述示例。
为便于理解,如果将双点乘模块设计成硬件模块,本公开给出如下具体实施方式:双点乘模块包括编码电路和控制单元,编码电路对验签参数和分别进行JSF编码,得到的编码结果和的编码结果,控制单元根据编码结果,调用点加点倍模块执行点加和/或点倍运算,从而计算出椭圆曲线点。其中,点加点倍模块在运算期间,可以进一步调用模运算模块执行模运算。需要说明的是,以上具体实施方式仅作为本公开的一个示例,本公开对于双点乘模块的具体实现,不限定于上述具体实施方式。
参考图1,图1是本公开一实施例提供的验签***的结构示意图。如图1所示,验签***包括流程控制模块、双点乘模块以及单点乘模块。其中,流程控制模块和双点乘模块通过一个或多个第一接口连接,流程控制模块和单点乘模块通过一个或多个第二接口连接。
双点乘模块被配置为:基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点。其中,预设编码方式可以是JSF编码方式或NAF编码方式。
在一些可行的实施方式中,如图1所示,第一接口包括控制接口,流程控制模块在接收到验签任务后,可以通过控制接口向双点乘模块发送控制信息DP_Control,双点乘模块接收到控制信息DP_Control后,才对验签参数执行双点乘运算。
流程控制模块被配置为:获得双点乘模块运算得到的第一椭圆曲线点,在第一椭圆曲线点是无穷远点的情况下,向单点乘模块发送控制信息,以控制单点乘模块基于二进制编码方式对验签参数执行单点乘运算。
在一些可行的实施方式中,如图1所示,第一接口还包括运算状态接口和运算结果接口。双点乘模块计算出第一椭圆曲线点后,通过运算状态接口向流程控制模块发送运算状态信息DP_Done,并通过运算结果接口向流程控制模块发送运算结果信息DP_Status(即第一椭圆曲线点)。流程控制模块识别运算状态信息DP_Done,如果DP_Done等于预设值(例如如果DP_Done等于1),则流程控制模块检查DP_Status是否是无穷远点。其中,运算状态信息DP_Done相当于是运算结果信息DP_Status的使能信号(也可以理解成触发信号),当DP_Done等于预设值时,DP_Status的信号才有意义。
如图1所示,第二接口也包括控制接口,如果DP_Status是无穷远点,则流程控制模块通过控制接口向单点乘模块发送控制信息SP_Control。
单点乘模块被配置为:在第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对验签参数执行单点乘运算,得到第二椭圆曲线点。
在一些可行的实施方式中,单点乘模块接收到流程控制模块发送的控制信息SP_Control后,才对验签参数执行单点乘运算。如图1所示,第二接口还包括运算状态接口和运算结果接口。单点乘模块计算出第二椭圆曲线点后,通过运算状态接口向流程控制模块发送运算状态信息SP_Done,并通过运算结果接口向流程控制模块发送运算结果信息SP_Status(即第二椭圆曲线点)。流程控制模块识别运算状态信息SP_Done,如果SP_Done等于预设值(例如如果SP_Done等于1),则流程控制模块检查SP_Status是否是无穷远点。其中,运算状态信息SP_Done相当于是运算结果信息SP_Status的使能信号(也可以理解成触发信号),当SP_Done等于预设值时,SP_Status的信号才有意义。
如图1所示,验签***还可以包括点加点倍模块,双点乘模块和单点乘模块均与点加点倍模块连接。
双点乘模块在执行双点乘运算期间,调用点加点倍模块执行点加和/或点倍运算。在一些可行的实施方式中,双点乘模块在接收到流程控制模块发送的控制信息DP_Control后,从存储模块(例如双端口SRAM)获取验签参数和,然后对和分别进行JSF编码(或者NAF编码),得到和的JSF编码结果。双点乘模块根据和的JSF编码结果,调用点加点倍模块执行点加运算,或者执行点倍运算,或者执行点加运算和点倍运算。例如当的编码结果和的编码结果满足条件:不等于时,双点乘模块调用点加点倍模块执行点加和/或点倍运算。点加点倍模块执行点加和/或点倍运算期间,从双端口SRAM读取验签参数:G(椭圆曲线的基点)、Q(公钥),并根据的编码结果、的编码结果、G以及Q,执行点加和/或点倍运算。
单点乘模块在执行单点乘运算期间,也调用点加点倍模块执行点加和/或点倍运算。在一些可行的实施方式中,单点乘模块可以根据验签参数和的二进制编码结果,调用点加点倍模块执行点加运算,或者执行点倍运算,或者执行点加运算和点倍运算。
此外,如图1所示,流程控制模块可以调用点加点倍模块。具体地,流程控制模块可以在调用双点乘模块执行双点乘运算之前,流程控制模块可以预先调用点加点倍模块对验签参数进行预计算,从而预计算出一些点,这些点可以被存入双端口SRAM。在双点乘模块执行双点乘运算期间,可以利用这些点。
如图1所示,验签***还可以包括模运算模块,点加点倍模块与模运算模块连接。点加点倍模块在执行点加/点倍运算期间,调用模运算模块执行以下多种模运算中的至少一种:取模运算、模乘运算、模加运算、模逆运算。
此外,在一些可行的实施方式中,模运算模块还被配置为:在第一椭圆曲线点不是无穷远点的情况下,对第一椭圆曲线点的横坐标执行取模运算。如前所述,基于JSF编码(或者NAF编码)的双点乘运算存在计算出假无穷远点的可能性,但是如果计算出的椭圆曲线点不是无穷远点,则需要根据该椭圆曲线点验证签名是否有效。本公开中,如果基于JSF编码(或者NAF编码)的双点乘运算计算出的椭圆曲线点不是无穷远点,则可以通过模运算模块对该椭圆曲线点的横坐标执行取模运算,得到取模运算结果。如果取模运算结果等于签名值,则签名有效,否则签名无效。
或者在另一些可行的实施方式中,模运算模块还被配置为:对第一椭圆曲线点的横坐标转换成的整数进行取模运算。
需要说明的是,由于椭圆曲线涉及的数值通常是大数,即位数较长的数,例如256位的数。而电子设备(例如计算机)的位数通常是32位或64位。因此,如果本公开是通过软件程序实现的,则计算出的椭圆曲线点的横坐标通常需要以数组的形式存储,所以在对横坐标取模之前,需要将数组形式的横坐标转换成整数。而如果本公开是通过硬件电路实现的,以可以申明是256位的数,对于硬件而言,产生的横坐标本身就是256位的整数,因此可以直接对横坐标取模。
在一些可行的实施方式中,模运算模块还被配置为:在第二椭圆曲线点不是无穷远点的情况下,对第二椭圆曲线点的横坐标执行取模运算,或者对第二椭圆曲线点的横坐标转换成的整数进行取模运算。如前所述,基于二进制编码的单点乘运算不存在计算出假无穷远点的可能性,因此如果单点乘模块计算出的椭圆曲线点是无穷远点,则可以确定签名无效。
如果单点乘模块计算出的椭圆曲线点不是无穷远点,则可以通过模运算模块对该椭圆曲线点的横坐标执行取模运算,得到取模运算结果。或者通过模运算模块对第二椭圆曲线点的横坐标转换成的整数进行取模运算,得到取模运算结果。如果取模运算结果等于签名值,则签名有效,否则签名无效。
本公开中,将双点乘模块设置成验签运算期间计算椭圆曲线点的默认模块。换言之,当需要在验签任务中计算椭圆曲线点时,本公开会首先通过双点乘模块计算椭圆曲线点。如果双点乘模块计算出的椭圆曲线点不是无穷远点,则会利用该椭圆曲线点继续执行验签运算,例如对椭圆曲线点的横坐标进行取模运算,并将取模运算结果与验签值进行比较。在此情况下,单点乘模块不需要为该验签任务计算椭圆曲线点。如此,单点乘模块在很多情况下会处于空闲状态。
此外,如图1所示,本公开中双端口SRAM与流程控制模块和模运算模块连接。其中,流程控制模块用于从双端口SRAM读取验签数据,或者将验签数据存入双端口SRAM。模运算模块用于将中间结果和运算结果存入双端口SRAM。
为了提升单点乘模块和整个验签***的利用率,本公开中,单点乘模块还被配置为执行签名任务中的点乘运算。在一些可行的实施方式中,将单点乘模块设置为签名运算期间执行点乘运算的默认模块。例如,当流程控制模块接收到签名任务时,会通过第二接口向单点乘模块发送控制信息,以控制单点乘模块执行签名任务中的点乘运算。
单点乘模块在执行签名任务的点乘运算期间,可以调用点加点倍模块执行点加和/或点倍运算。点加点倍模块执行点加和/或点倍运算期间,可以调用模运算模块执行以下多种模运算中的至少一种:取模运算、模乘运算、模加运算、模逆运算。
此外,考虑到在极少情况下本身合法的签名在验签期间,双点乘模块会计算出假无穷远点,从而需要通过单点乘模块再次计算椭圆曲线点,导致验签耗时增加。然而在需要单点乘模块计算椭圆曲线点时,单点乘模块有可能正在执行签名任务中的点乘运算。为了不进一步增加验签耗时,本公开中,单点乘模块还可以被配置为:在执行签名任务中的单点乘运算期间,响应于控制信息,将签名任务的运算状态保存至存储模块(例如双端口SRAM),并基于二进制编码方式对验签参数执行单点乘运算。其中,控制信息用于指示单点乘模块执行验签任务中的单点乘运算。
并且,单点乘模块还被配置为在得到第二椭圆曲线点后,从存储模块获取运算状态,并根据该运算状态继续执行签名任务中的单点乘运算。
换言之,单点乘模块在执行签名任务中的点乘运算期间,如果双点乘模块在验签任务中计算出无穷远点,则单点乘模块会接收到控制信息。单点乘模块响应于该控制信息,中断签名任务中的点乘运算,转而执行验签任务中的点乘运算,从而计算椭圆曲线点。单点乘模块计算出椭圆曲线点后,再继续执行被中断的签名任务中的点乘运算。
在一些可行的实施方式中,单点乘模块保存至存储模块的运算状态可以包括:中间结果、点乘运算中二进制编码已经被执行的位数。
本公开实施例还提供一种电子装置,该电子装置包括上述任一实施例中所述的验签***。在一些使用场景下,该电子装置的产品形式体现为CPU主板。
本公开实施例还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备、POS机等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等;在一些使用场景下,该电子设备的产品形式是服务器主机、密码机、生产设备。
本公开实施例还提供一种验签方法,参考图2,图2是本公开一实施例提供的验签方法的流程示意图。如图2所示,该验签方法包括以下步骤:
S210:基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点;其中,预设编码方式是一种非二进制编码方式。
在一些可行的实施方式中,上述预设编码方式具体可以是JSF编码方式,或者可以是NAF编码方式。对于如何基于JSF编码(或NAF编码)执行双点乘运算,可参见上述实施例,为避免重复,此处不做赘述。
S220:在第一椭圆曲线点不是无穷远点的情况下,根据第一椭圆曲线点验证签名是否有效。
在一些可行的实施方式中,在根据第一椭圆曲线点验证签名是否有效时,具体可以对第一椭圆曲线点的横坐标进行取模运算,得到第一取模运算结果;再判断第一取模运算结果是否等于签名值,如果第一取模运算结果等于签名值,则确定签名有效,如果第一取模运算结果不等于签名值,则确定签名无效。
或者,在另一些可行的实施方式中,在根据第一椭圆曲线点验证签名是否有效时,具体可以将第一椭圆曲线点的横坐标转换成第一整数;再对第一整数进行取模运算,得到第二取模运算结果;然后判断第二取模运算结果是否等于签名值,如果第二取模运算结果等于签名值,则确定签名有效,如果第二取模运算结果不等于签名值,则确定签名无效。
S230:在第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对验签参数执行单点乘运算,得到第二椭圆曲线点,并根据第二椭圆曲线点验证签名是否有效。
在一些可行的实施方式中,在根据第二椭圆曲线点验证签名是否有效时,具体可以在第二椭圆曲线点是无穷远点的情况下,确定签名无效。如前所述,基于二进制编码执行单点乘运算时,不会计算出假无穷远点。因此本公开中,如果基于二进制编码执行单点乘运算时,计算出的椭圆曲线点是无穷远点,则可以直接确定签名无效。
在一些可行的实施方式中,在根据第二椭圆曲线点验证签名是否有效时,还可以在第二椭圆曲线点不是无穷远点的情况下,对第二椭圆曲线点的横坐标进行取模运算,得到第三取模运算结果;再判断第三取模运算结果是否等于签名值,如果第三取模运算结果等于签名值,则确定签名有效,如果第三取模运算结果不等于签名值,则确定签名无效。
或者,在另一些可行的实施方式中,在根据第二椭圆曲线点验证签名是否有效时,还可以在第二椭圆曲线点不是无穷远点的情况下,将第二椭圆曲线点的横坐标转换成第二整数;再对第二整数进行取模运算,得到第四取模运算结果;然后判断第四取模运算结果是否等于签名值,如果第四取模运算结果等于签名值,则确定签名有效,如果第四取模运算结果不等于签名值,则确定签名无效。
如前所述,基于非二进制编码方式进行双点乘运算时,计算出假无穷远点的概率很小。因此对于本身合法的签名而言,在绝大多数情况下,双点乘模块都会计算出非无穷远点,所以本公开在绝大多数情况下,可以有效提升合法签名的验签效率。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (18)
1.一种验签***,包括:
双点乘模块,被配置为基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点;其中,所述预设编码方式是一种非二进制编码方式,所述第一椭圆曲线点在不是无穷远点的情况下用于验证签名是否有效;
单点乘模块,被配置为在所述第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对所述验签参数执行单点乘运算,得到第二椭圆曲线点;其中,所述第二椭圆曲线点用于验证所述签名是否有效。
2.根据权利要求1所述的***,所述验签***还包括:
流程控制模块,被配置为获得所述双点乘模块运算得到的所述第一椭圆曲线点,在所述第一椭圆曲线点是无穷远点的情况下,向所述单点乘模块发送控制信息,以控制所述单点乘模块基于二进制编码方式对所述验签参数执行单点乘运算。
3.根据权利要求2所述的***,所述流程控制模块和所述双点乘模块通过第一接口连接,所述第一接口用于所述双点乘模块向所述流程控制模块发送所述第一椭圆曲线点;
所述流程控制模块和所述单点乘模块通过第二接口连接,所述第二接口用于所述流程控制模块向所述单点乘模块发送所述控制信息。
4.根据权利要求1所述的***,所述验签***还包括:
点加点倍模块,所述双点乘模块和所述单点乘模块均与所述点加点倍模块连接;所述双点乘模块在执行双点乘运算期间,调用所述点加点倍模块执行点加和/或点倍运算;所述单点乘模块在执行单点乘运算期间,调用所述点加点倍模块执行点加和/或点倍运算。
5.根据权利要求1所述的***,所述验签***还包括:
模运算模块,被配置为在所述第一椭圆曲线点不是无穷远点的情况下,对所述第一椭圆曲线点的横坐标执行取模运算,或者对所述第一椭圆曲线点的横坐标转换成的整数进行取模运算。
6.根据权利要求5所述的***,所述模运算模块还被配置为在所述第二椭圆曲线点不是无穷远点的情况下,对所述第二椭圆曲线点的横坐标执行取模运算,或者对所述第二椭圆曲线点的横坐标转换成的整数进行取模运算。
7.根据权利要求1至5任一所述***,所述预设编码方式是以下多种编码方式中的任一种:JSF编码、NAF编码。
8.根据权利要求1至5任一所述***,所述单点乘模块还被配置为执行签名任务中的点乘运算。
9.根据权利要求8所述的***,所述单点乘模块还被配置为在执行所述签名任务中的点乘运算期间,响应于控制信息,将所述签名任务的运算状态保存至存储模块,并基于二进制编码方式对所述验签参数执行单点乘运算;其中,所述控制信息用于指示所述单点乘模块执行验签任务中的点乘运算;
所述单点乘模块还被配置为在得到所述第二椭圆曲线点后,从所述存储模块获取所述运算状态,并根据所述运算状态继续执行所述签名任务中的点乘运算。
10.一种电子装置,包括权利要求1至9任一项所述的***。
11.一种电子设备,包括权利要求10所述的电子装置。
12.一种验签方法,包括:
基于预设编码方式对验签参数执行双点乘运算,得到第一椭圆曲线点;其中,所述预设编码方式是一种非二进制编码方式;
在所述第一椭圆曲线点不是无穷远点的情况下,根据所述第一椭圆曲线点验证签名是否有效;
在所述第一椭圆曲线点是无穷远点的情况下,基于二进制编码方式对所述验签参数执行单点乘运算,得到第二椭圆曲线点,并根据所述第二椭圆曲线点验证所述签名是否有效。
13.根据权利要求12所述的方法,所述根据所述第一椭圆曲线点验证签名是否有效,包括:
对所述第一椭圆曲线点的横坐标进行取模运算,得到第一取模运算结果;
判断所述第一取模运算结果是否等于签名值,如果所述第一取模运算结果等于所述签名值,则确定所述签名有效,如果所述第一取模运算结果不等于所述签名值,则确定所述签名无效。
14.根据权利要求12所述的方法,所述根据所述第一椭圆曲线点验证签名是否有效,包括:
将所述第一椭圆曲线点的横坐标转换成第一整数;
对所述第一整数进行取模运算,得到第二取模运算结果;
判断所述第二取模运算结果是否等于签名值,如果所述第二取模运算结果等于所述签名值,则确定所述签名有效,如果所述第二取模运算结果不等于所述签名值,则确定所述签名无效。
15.根据权利要求12所述的方法,所述根据所述第二椭圆曲线点验证所述签名是否有效,包括:
在所述第二椭圆曲线点是无穷远点的情况下,确定所述签名无效。
16.根据权利要求15所述的方法,所述根据所述第二椭圆曲线点验证所述签名是否有效,还包括:
在所述第二椭圆曲线点不是无穷远点的情况下,对所述第二椭圆曲线点的横坐标进行取模运算,得到第三取模运算结果;
判断所述第三取模运算结果是否等于签名值,如果所述第三取模运算结果等于所述签名值,则确定所述签名有效,如果所述第三取模运算结果不等于所述签名值,则确定所述签名无效。
17.根据权利要求15所述的方法,所述根据所述第二椭圆曲线点验证所述签名是否有效,还包括:
在所述第二椭圆曲线点不是无穷远点的情况下,将所述第二椭圆曲线点的横坐标转换成第二整数;
对所述第二整数进行取模运算,得到第四取模运算结果;
判断所述第四取模运算结果是否等于签名值,如果所述第四取模运算结果等于所述签名值,则确定所述签名有效,如果所述第四取模运算结果不等于所述签名值,则确定所述签名无效。
18.根据权利要求12至17任一所述的方法,所述预设编码方式是以下多种编码方式中的任一种:JSF编码、NAF编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210376774.9A CN114465735B (zh) | 2022-04-12 | 2022-04-12 | 验签***、电子装置、电子设备及验签方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210376774.9A CN114465735B (zh) | 2022-04-12 | 2022-04-12 | 验签***、电子装置、电子设备及验签方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114465735A true CN114465735A (zh) | 2022-05-10 |
CN114465735B CN114465735B (zh) | 2022-06-17 |
Family
ID=81416855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210376774.9A Active CN114465735B (zh) | 2022-04-12 | 2022-04-12 | 验签***、电子装置、电子设备及验签方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114465735B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129297A (zh) * | 2022-08-30 | 2022-09-30 | 北京象帝先计算技术有限公司 | 多点乘运算***、方法、图形处理器、电子装置及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030059043A1 (en) * | 2001-09-26 | 2003-03-27 | Katsuyuki Okeya | Elliptic curve signature verification method and apparatus and a storage medium for implementing the same |
US7024559B1 (en) * | 2002-06-28 | 2006-04-04 | The United States Of America As Represented By The National Security Agency | Method of elliptic curve digital signature using expansion in joint sparse form |
CN106533682A (zh) * | 2016-11-10 | 2017-03-22 | 上海华虹集成电路有限责任公司 | 点对点的椭圆曲线数字签名算法及验签方法 |
CN107425968A (zh) * | 2017-06-22 | 2017-12-01 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现*** |
CN108650087A (zh) * | 2018-05-16 | 2018-10-12 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线签名点乘加密方法 |
CN112099760A (zh) * | 2020-08-24 | 2020-12-18 | 清华大学 | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 |
CN113783702A (zh) * | 2021-09-28 | 2021-12-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种椭圆曲线数字签名与验签的硬件实现方法和*** |
CN113794572A (zh) * | 2021-09-28 | 2021-12-14 | 南京宁麒智能计算芯片研究院有限公司 | 一种高性能椭圆曲线数字签名与验签的硬件实现***和方法 |
-
2022
- 2022-04-12 CN CN202210376774.9A patent/CN114465735B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030059043A1 (en) * | 2001-09-26 | 2003-03-27 | Katsuyuki Okeya | Elliptic curve signature verification method and apparatus and a storage medium for implementing the same |
US7024559B1 (en) * | 2002-06-28 | 2006-04-04 | The United States Of America As Represented By The National Security Agency | Method of elliptic curve digital signature using expansion in joint sparse form |
CN106533682A (zh) * | 2016-11-10 | 2017-03-22 | 上海华虹集成电路有限责任公司 | 点对点的椭圆曲线数字签名算法及验签方法 |
CN107425968A (zh) * | 2017-06-22 | 2017-12-01 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现*** |
CN108650087A (zh) * | 2018-05-16 | 2018-10-12 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线签名点乘加密方法 |
CN112099760A (zh) * | 2020-08-24 | 2020-12-18 | 清华大学 | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 |
CN113783702A (zh) * | 2021-09-28 | 2021-12-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种椭圆曲线数字签名与验签的硬件实现方法和*** |
CN113794572A (zh) * | 2021-09-28 | 2021-12-14 | 南京宁麒智能计算芯片研究院有限公司 | 一种高性能椭圆曲线数字签名与验签的硬件实现***和方法 |
Non-Patent Citations (2)
Title |
---|
李凡等: "基于FPGA的SM2点运算快速并行实现", 《电子测量技术》 * |
王婧等: "安全高效的两方协同ECDSA签名方案", 《通信学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129297A (zh) * | 2022-08-30 | 2022-09-30 | 北京象帝先计算技术有限公司 | 多点乘运算***、方法、图形处理器、电子装置及设备 |
CN115129297B (zh) * | 2022-08-30 | 2022-12-13 | 北京象帝先计算技术有限公司 | 多点乘运算***、方法、图形处理器、电子装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114465735B (zh) | 2022-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1729442A2 (en) | An authentication system executing an elliptic curve digital signature cryptographic process | |
CN111064583B (zh) | 一种门限sm2数字签名方法、装置、电子设备及存储介质 | |
US9391773B2 (en) | Elliptic curve point multiplication procedure resistant to side-channel information leakage | |
CN108494557B (zh) | 社保数字证书管理方法、计算机可读存储介质及终端设备 | |
JP7206324B2 (ja) | 暗号アルゴリズム向けのワンタイムの中国剰余定理のべき乗のためのシステムおよび方法 | |
CN112262544B (zh) | 生成和处理密码学参数的设备、***、以及方法 | |
CN108964914B (zh) | 抗侧信道攻击的sm2点乘架构 | |
CN114465735B (zh) | 验签***、电子装置、电子设备及验签方法 | |
CN107566360B (zh) | 一种数据认证码的生成方法 | |
CN109145651B (zh) | 一种数据处理方法及装置 | |
CN113839781A (zh) | 用于对受保护的签名操作和密钥交换操作的侧信道攻击的对策 | |
CN113722734A (zh) | 两方安全选择确定选择结果分片的方法、装置和*** | |
CN111737757A (zh) | 针对隐私数据进行安全运算的方法和装置 | |
US20080320557A1 (en) | Batch verification device, program and batch verification method | |
CN111586013A (zh) | 网络入侵检测方法、装置、节点终端及存储介质 | |
CN111600703A (zh) | 基于sm2的签名方法、***、电子设备及存储介质 | |
CN115242402B (zh) | 签名方法、验签方法及电子设备 | |
CN116225369A (zh) | Sm2算法标量乘运算优化方法及*** | |
US8966254B2 (en) | Keyless challenge and response system | |
CN115113848B (zh) | 签名/验签电路、装置、设备、方法及坐标还原电路 | |
CN114363658B (zh) | 一种音视频流加密传输的方法和装置 | |
CN114124356B (zh) | 应用于区块链的密文生成方法、服务器、介质及装置 | |
US20240195636A1 (en) | Hardened Encoded Message Check for RSA Signature Verification | |
CN113761561B (zh) | 一种基于褶积优化的sha1加密方法及装置 | |
CN113595730B (zh) | 一种用于工程中生成ecc曲线的处理方法和装置 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231204 Address after: 401135 No. 618 Liangjiang Avenue, Longxing Town, Yubei District, Chongqing Patentee after: Xiangdixian Computing Technology (Chongqing) Co.,Ltd. Address before: Room 901, 901, floor 9 (09), building 1, yard 5, Anding Road, Chaoyang District, Beijing 100029 Patentee before: Beijing xiangdixian Computing Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |