CN107707353B - Sm9算法的实现方法和装置 - Google Patents

Sm9算法的实现方法和装置 Download PDF

Info

Publication number
CN107707353B
CN107707353B CN201710885011.6A CN201710885011A CN107707353B CN 107707353 B CN107707353 B CN 107707353B CN 201710885011 A CN201710885011 A CN 201710885011A CN 107707353 B CN107707353 B CN 107707353B
Authority
CN
China
Prior art keywords
type expansion
tower type
expansion expression
expression
tower
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
CN201710885011.6A
Other languages
English (en)
Other versions
CN107707353A (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.)
Shenzhen Aolian Information Security Technology Co ltd
Original Assignee
Shenzhen Aolian Information Security 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 Shenzhen Aolian Information Security Technology Co ltd filed Critical Shenzhen Aolian Information Security Technology Co ltd
Priority to CN201710885011.6A priority Critical patent/CN107707353B/zh
Publication of CN107707353A publication Critical patent/CN107707353A/zh
Application granted granted Critical
Publication of CN107707353B publication Critical patent/CN107707353B/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/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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Image Generation (AREA)
  • Supply And Distribution Of Alternating Current (AREA)
  • Thin Film Transistor (AREA)

Abstract

本发明揭示了一种SM9算法的实现方法和装置,其中方法包括:对BN‑12曲线上的双线性对结果域
Figure DDA0001419985720000011
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行,再根据需要转换为SM9标准规定的1‑2‑4‑12塔式扩张表达。本发明在保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure DDA0001419985720000012
上幂乘运算的高速实现。

Description

SM9算法的实现方法和装置
技术领域
本发明涉及到SM9算法领域,特别是涉及到一种SM9算法的实现方法和装置。
背景技术
SM9算法是中国制定一种标识密码算法标准,包括标识加密、标识签名和标识密钥协商算法。这些算法的计算过程涉及双线性对的计算和双线对映射结果域上元素的幂乘运算。SM9算法标准采用嵌入度数为12的BN曲线实现,其上双线对映射结果域为
Figure BDA0001419985700000011
SM9标准规定
Figure BDA0001419985700000012
上的元素采用的1-2-4-12塔式扩张表达。1-2-4-12塔式扩张表达在幂乘运算时速度相对较慢,降低SM9算法的实现速度。
发明内容
本发明的主要目的为提供一种在保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure BDA0001419985700000013
上幂乘运算的高速实现的SM9算法的实现方法和装置。
为了实现上述发明目的,本发明提出一种SM9算法的实现方法,包括:
对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000014
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;
根据需要,处理幂乘完成后的结果。
进一步地,所述初始采用的塔式扩张表达包括1-2-4-12塔式扩张表达、1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达;
所述二次塔式扩张表达包括1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达。
进一步地,所述如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则所述根据需要,处理幂乘完成后的结果的步骤,包括:
在SM9算法需将二次塔式扩张表达转换为字节串数据操作时,先将元素转换为1-2-4-12的塔式扩张表达,再转换为字节串数据。
进一步地,所述如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则所述根据需要,处理幂乘完成后的结果的步骤,包括:
将幂乘完成后的结果转换为1-2-4-12的塔式扩张表达。
本发明还提供一种SM9算法的实现装置,包括:
执行单元,用于对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000021
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;
处理单元,用于根据需要,处理所述幂乘完成后的结果。
进一步地,所述初始采用的塔式扩张表达包括1-2-4-12塔式扩张表达、1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达;
所述二次塔式扩张表达包括1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达。
进一步地,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,所述处理单元,包括:
第一转换单元,用于在SM9算法需将二次塔式扩张表达转换为字节串数据操作时,先将元素转换为1-2-4-12的塔式扩张表达,再转换为字节串数据。
进一步地,如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,所述处理单元,包括:
第二转换单元,用于将幂乘完成后的结果转换为1-2-4-12的塔式扩张表达。
本发明的SM9算法的实现方法和装置,将在BN-12曲线上的双线性对结果域
Figure BDA0001419985700000031
里元素采用塔式扩张表达时,将单一元素的幂乘运算时不能采用Lucas阶梯计算方法的塔式扩张表达转成成可以采用Lucas阶梯计算方法的二次塔式扩张表达,再根据需要转换为SM9标准规定的1-2-4-12塔式扩张表达,保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure BDA0001419985700000032
上幂乘运算的高速实现。
附图说明
图1为本发明一实施例的SM9算法的实现装置的结构示意框图;
图2为本发明一实施例的处理单元的结构示意框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种SM9算法的实现方法,包括:
S1、对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000033
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;
S2、根据需要,处理幂乘完成后的结果。
如上述步骤S1所述,上述初始采用的塔式扩张表达一般包括1-2-4-12塔式扩张表达、1-2-6-12塔式扩张表达、1-3-6-12塔式扩张表达,而预设的二次塔式扩张表达一般包括1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达。上述Lucas阶梯计算方法是一种可以执行二次塔式扩张表达的方法,其具有计算速度快的特点,但是其不能计算如1-2-4-12塔式扩张表达等三次塔式扩张表达,所以如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,如1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达,则需要将采用的塔式扩张表达转换成如1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行。
如上述步骤S2所述,上述根据需要,处理幂乘完成后的结果的过程一般包括两种具体的处理过程,其一为:如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,在SM9算法需将二次塔式扩张表达转换为字节串数据操作时,先将元素转换为1-2-4-12的塔式扩张表达,再转换为字节串数据;其二为:所述如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将幂乘完成后的结果转换为1-2-4-12的塔式扩张表达。进而在保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure BDA0001419985700000041
上幂乘运算的高速实现。
在一具体实施例中,不同于SM9标准规范,本实施例对SM9算法使用的BN-12曲线上的双线性对结果域
Figure BDA0001419985700000042
上的元素采用1-2-6-12塔式扩张表达使得其计算过程可以使用Lucas阶梯计算方法计算
Figure BDA0001419985700000043
里单一元素的幂乘运算,从而使得SM9算法可以更高效地实现。为了保持和SM9标准中规定的1-2-4-12扩张方式表达
Figure BDA0001419985700000044
里元素结果的一致性,须在将
Figure BDA0001419985700000045
里元素转换为字节串数据时,将1-2-6-12塔式扩张表达转换为1-2-4-12塔式扩张表达方式,再输出为对应字节串。具体地:
A1、对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000051
里元素初始采用1-2-6-12塔式扩张表达:
Figure BDA0001419985700000052
Figure BDA0001419985700000053
Figure BDA0001419985700000054
其中β为
Figure BDA0001419985700000055
的非立方剩余,ζ为
Figure BDA0001419985700000056
上的非平方剩余。对应的
Figure BDA0001419985700000057
表达用基域Fq中的元素表示为:
(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11)。
A2、对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果成为
Figure BDA0001419985700000058
里单一元素后:即元素可表达为W+uζ时,其中w,
Figure BDA0001419985700000059
其幂乘运算可选地采用Lucas阶梯计算方法计算;对SM9算法中涉及的
Figure BDA00014199857000000510
里单一元素的幂乘运算(如SM9签名算法中签名过程的第B4步:计算群
Figure BDA00014199857000000511
中的元素t=gh′的幂乘运算,所述
Figure BDA00014199857000000512
Figure BDA00014199857000000513
)采用Lucas阶梯计算方法计算。
A3、对SM9算法中涉及将
Figure BDA00014199857000000514
里元素转换为字节串数据时(如SM9签名算法中的签名过程的第B9步),先转换为SM9标准的1-2-4-12的塔式扩张表达,再转换为字节串数据。转换方法为:
将(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11)表达转化为
(c11,c10,a11,a10,b01,b00,b11,b10,c01,c00,a01,a00)后输出字节串。
在另一具体实施例中,本实施例对SM9算法使用的BN-12曲线上的双线性对结果域
Figure BDA00014199857000000515
上的元素按照SM9标准实现采用1-2-4-12塔式扩张表达,在需要幂乘运算时将其表达临时转为1-2-6-12塔式扩张表达,使用Lucas阶梯计算方法计算幂乘运算,从而使得SM9算法可以更高效地实现,计算完成后将结果转换为1-2-4-12塔式扩张表达,具体地:
B1、对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000061
里元素初始采用1-2-4-12塔式扩张表达:
Figure BDA0001419985700000062
Figure BDA0001419985700000063
Figure BDA0001419985700000064
其中Ψ为
Figure BDA0001419985700000065
的非平方剩余,λ为
Figure BDA0001419985700000066
上的非立方剩余。对应的
Figure BDA0001419985700000067
表达用基域Fq中的元素表示为:
(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)。
B2、对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果f计算完成
Figure BDA0001419985700000068
后,后续幂乘运算可选地将元素表达转换为1-2-6-12塔式扩张表达,采用Lucas阶梯计算方法计算幂乘。对SM9算法中涉及的双线性映射结果值的幂乘运算(如SM9签名算法中签名过程的第B4步:计算群
Figure BDA0001419985700000069
中的元素t=gh′的幂乘运算,所述
Figure BDA00014199857000000610
Figure BDA00014199857000000611
),将底数(如所述g)转换为1-2-6-12塔式扩张表达后,采用Lucas阶梯计算方法计算。塔式扩张表达间的转换方法为:
将(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)转化为
(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00)
B3、在完成幂乘运算后将元素的1-2-6-12塔式扩张表达转换为1-2-4-12塔式扩张表达。塔式扩张表达间的转换方法为
将(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00)转化为
(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)
本发明的SM9算法的实现方法,将在BN-12曲线上的双线性对结果域
Figure BDA00014199857000000612
里元素采用塔式扩张表达时,将单一元素的幂乘运算时不能采用Lucas阶梯计算方法的塔式扩张表达转成成可以采用Lucas阶梯计算方法的二次塔式扩张表达,再根据需要转换为SM9标准规定的1-2-4-12塔式扩张表达,在保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure BDA00014199857000000613
上幂乘运算的高速实现。
参照图1,本发明实施例还提供一种SM9算法的实现装置,包括:
执行单元10,用于对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000071
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;
处理单元20,用于根据需要,处理幂乘完成后的结果。
如上述执行单元10,上述初始采用的塔式扩张表达一般包括1-2-4-12塔式扩张表达、1-2-6-12塔式扩张表达、1-3-6-12塔式扩张表达,而预设的二次塔式扩张表达一般包括1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达。上述Lucas阶梯计算方法是一种可以执行二次塔式扩张表达的方法,其具有计算速度快的特点,但是其不能计算如1-2-4-12塔式扩张表达等三次塔式扩张表达,所以如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,如1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达,则需要将采用的塔式扩张表达转换成如1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行。
如上述处理单元20,上述处理单元20一般包括第一转换模块和第二转换模块,其中,第一转换模块21,用于如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,在SM9算法需将二次塔式扩张表达转换为字节串数据操作时,先将元素转换为1-2-4-12的塔式扩张表达,再转换为字节串数据;第二转换模块22,用于如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将幂乘完成后的结果转换为1-2-4-12的塔式扩张表达。进而在保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure BDA0001419985700000072
上幂乘运算的高速实现。
在一具体实施例中,不同于SM9标准规范,本实施例对SM9算法使用的BN-12曲线上的双线性对结果域
Figure BDA0001419985700000081
上的元素采用1-2-6-12塔式扩张表达使得其计算过程可以使用Lucas阶梯计算方法计算
Figure BDA0001419985700000082
里单一元素的幂乘运算,从而使得SM9算法可以更高效地实现。为了保持和SM9标准中规定的1-2-4-12扩张方式表达
Figure BDA0001419985700000083
里元素结果的一致性,须在将
Figure BDA0001419985700000084
里元素转换为字节串数据时,将1-2-6-12塔式扩张表达转换为1-2-4-12塔式扩张表达方式,再输出为对应字节串,包括步骤:
对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000085
里元素初始采用1-2-6-12塔式扩张表达,该1-2-6-12塔式扩张表达如下:
Figure BDA0001419985700000086
Figure BDA0001419985700000087
Figure BDA0001419985700000088
其中β为
Figure BDA0001419985700000089
的非立方剩余,ζ为
Figure BDA00014199857000000810
上的非平方剩余。对应的
Figure BDA00014199857000000811
表达用基域Fq中的元素表示为:
(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11)。
执行单元10对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果成为
Figure BDA00014199857000000812
里单一元素后:即元素可表达为W+uζ时,其中w,
Figure BDA00014199857000000813
其幂乘运算可选地采用Lucas阶梯计算方法计算;对SM9算法中涉及的
Figure BDA00014199857000000814
里单一元素的幂乘运算(如SM9签名算法中签名过程的第B4步:计算群
Figure BDA00014199857000000815
中的元素t=gh′的幂乘运算,所述
Figure BDA00014199857000000816
Figure BDA00014199857000000817
)采用Lucas阶梯计算方法计算。
第一转换模块21对SM9算法中涉及将
Figure BDA00014199857000000818
里元素转换为字节串数据时(如SM9签名算法中的签名过程的第B9步),先转换为SM9标准的1-2-4-12的塔式扩张表达,再转换为字节串数据。转换方法为:
将(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11)表达转化为
(c11,c10,a11,a10,b01,b00,b11,b10,c01,c00,a01,a00)后输出字节串。在另一具体实施例中,本实施例对SM9算法使用的BN-12曲线上的双线性对结果域
Figure BDA0001419985700000091
上的元素按照标准实现采用1-2-4-12塔式扩张表达,在需要幂乘运算时将其表达临时转为1-2-6-12塔式扩张表达,使用Lucas阶梯计算方法计算幂乘运算,从而使得SM9算法可以更高效地实现,计算完成后将结果转换为1-2-4-12塔式扩张表达。具体地,执行单元10,对BN-12曲线上的双线性对结果域
Figure BDA0001419985700000092
里元素初始采用1-2-4-12塔式扩张表达:
Figure BDA0001419985700000093
Figure BDA0001419985700000094
Figure BDA0001419985700000095
其中Ψ为
Figure BDA0001419985700000096
的非平方剩余,λ为
Figure BDA0001419985700000097
上的非立方剩余。对应的
Figure BDA0001419985700000098
表达用基域Fq中的元素表示为:
(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)。第二执行模块22对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果f计算完成
Figure BDA0001419985700000099
后,后续幂乘运算可选地将元素表达转换为1-2-6-12塔式扩张表达,采用Lucas阶梯计算方法计算幂乘。对SM9算法中涉及的双线性映射结果值的幂乘运算(如SM9签名算法中签名过程的第B4步:计算群
Figure BDA00014199857000000910
中的元素t=gh′的幂乘运算,所述
Figure BDA00014199857000000911
Figure BDA00014199857000000912
),将底数(如所述g)转换为1-2-6-12塔式扩张表达后,采用Lucas阶梯计算方法计算。塔式扩张表达间的转换方法为:
将(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)转化为
(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00)
第二转换单元21在完成幂乘运算后将元素的1-2-6-12塔式扩张表达转换为1-2-4-12塔式扩张表达。塔式扩张表达间的转换方法为:
将(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00)转化为
(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)。
本发明的SM9算法的实现装置,将在BN-12曲线上的双线性对结果域
Figure BDA00014199857000000913
里元素采用塔式扩张表达时,将单一元素的幂乘运算时不能采用Lucas阶梯计算方法的塔式扩张表达转成成可以采用Lucas阶梯计算方法的二次塔式扩张表达,再根据需要转换为SM9标准规定的1-2-4-12塔式扩张表达,在保证计算出SM9标准规定的数据结果的同时实现双线性对和
Figure BDA0001419985700000101
上幂乘运算的高速实现。

Claims (4)

1.一种SM9算法的实现方法,其特征在于,包括:
对BN-12曲线上的双线性对结果域
Figure FDF0000009739530000011
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;其中,所述初始采用的塔式扩张表达包括1-2-4-12塔式扩张表达、1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达;所述二次塔式扩张表达包括1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达;
根据需要,处理幂乘完成后的结果;
所述根据需要,处理幂乘完成后的结果,包括:
如果所述初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将幂乘完成后的结果转换为1-2-4-12的塔式扩张表达;
所述1-2-6-12塔式扩张表达为:
Figure FDF0000009739530000012
Figure FDF0000009739530000013
Figure FDF0000009739530000014
时,
所述SM9算法的实现方法包括以下步骤:
A1、对BN-12曲线上的双线性对结果域
Figure FDF0000009739530000015
里元素初始采用1-2-6-12塔式扩张表达:
Figure FDF0000009739530000016
Figure FDF0000009739530000017
Figure FDF0000009739530000018
其中β为
Figure FDF0000009739530000019
的非立方剩余,ζ为
Figure FDF00000097395300000110
上的非平方剩余。对应的
Figure FDF00000097395300000111
表达用基域Fq中的元素表示为:
(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11);
A2、对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果成为
Figure FDF00000097395300000112
里单一元素后,其幂乘运算可选地采用Lucas阶梯计算方法计算;对SM9算法中涉及的
Figure FDF0000009739530000021
里单一元素的幂乘运算采用Lucas阶梯计算方法计算;
A3、对SM9算法中涉及将
Figure FDF0000009739530000022
里元素转换为字节串数据时,先转换为SM9标准的1-2-4-12的塔式扩张表达,再转换为字节串数据;转换方法为:
将(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11)表达转化为(c11,c10,a11,a10,b01,b00,b11,b10,c01,c00,a01,a00)后输出字节串;
或者,所述1-2-4-12塔式扩张表达为:
Figure FDF0000009739530000023
Figure FDF0000009739530000024
Figure FDF0000009739530000025
时,
所述SM9算法的实现方法包括以下步骤:
B1、对BN-12曲线上的双线性对结果域
Figure FDF0000009739530000026
里元素初始采用1-2-4-12塔式扩张表达:
Figure FDF0000009739530000027
Figure FDF0000009739530000028
Figure FDF0000009739530000029
其中Ψ为
Figure FDF00000097395300000210
的非平方剩余,λ为
Figure FDF00000097395300000211
上的非立方剩余。对应的
Figure FDF00000097395300000212
表达用基域Fq中的元素表示为:
(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11);
B2、对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果f计算完成
Figure FDF00000097395300000213
后,后续幂乘运算可选地将元素表达转换为1-2-6-12塔式扩张表达,采用Lucas阶梯计算方法计算幂乘;对SM9算法中涉及的双线性映射结果值的幂乘运算,将底数转换为1-2-6-12塔式扩张表达后,采用Lucas阶梯计算方法计算;塔式扩张表达间的转换方法为:
将(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)转化为(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00);
B3、在完成幂乘运算后将元素的1-2-6-12塔式扩张表达转换为1-2-4-12塔式扩张表达。塔式扩张表达间的转换方法为:
将(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00)转化为(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)。
2.根据权利要求1所述的SM9算法的实现方法,其特征在于,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则所述根据需要,处理幂乘完成后的结果的步骤,包括:
在SM9算法需将二次塔式扩张表达转换为字节串数据操作时,先将元素转换为1-2-4-12的塔式扩张表达,再转换为字节串数据。
3.一种SM9算法的实现装置,其特征在于,包括:
执行单元,用于对BN-12曲线上的双线性对结果域
Figure FDF0000009739530000031
里元素采用塔式扩张表达时,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,则在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;如果初始采用的塔式扩张表达不是预设的二次塔式扩张表达,则将初始采用的塔式扩张表达转换为所述二次塔式扩张表达,然后在单一元素的幂乘运算时采用Lucas阶梯计算方法执行;其中,所述初始采用的塔式扩张表达包括1-2-4-12塔式扩张表达、1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达;所述二次塔式扩张表达包括1-2-6-12塔式扩张表达或1-3-6-12塔式扩张表达
处理单元,用于根据需要,处理所述幂乘完成后的结果;
所述处理单元,包括:
第二转换单元,用于将幂乘完成后的结果转换为1-2-4-12的塔式扩张表达;
所述1-2-6-12塔式扩张表达为:
Figure FDF0000009739530000032
Figure FDF0000009739530000033
Figure FDF0000009739530000034
时,
包括以下步骤:
对BN-12曲线上的双线性对结果域
Figure FDF0000009739530000035
里元素初始采用1-2-6-12塔式扩张表达,该1-2-6-12塔式扩张表达如下:
Figure FDF0000009739530000036
Figure FDF0000009739530000037
Figure FDF0000009739530000038
其中β为
Figure FDF0000009739530000041
的非立方剩余,ζ为
Figure FDF0000009739530000042
上的非平方剩余。对应的
Figure FDF0000009739530000043
表达用基域Fq中的元素表示为:
(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11);
执行单元对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果成为
Figure FDF0000009739530000044
里单一元素后,其幂乘运算可选地采用Lucas阶梯计算方法计算;对SM9算法中涉及的
Figure FDF0000009739530000045
里单一元素的幂乘运算采用Lucas阶梯计算方法计算;
第一转换模块对SM9算法中涉及将
Figure FDF0000009739530000046
里元素转换为字节串数据时,先转换为SM9标准的1-2-4-12的塔式扩张表达,再转换为字节串数据。转换方法为:
将(a00,a01,a10,a11,b00,b01,b10,b11,c00,c01,c10,c11)表达转化为(c11,c10,a11,a10,b01,b00,b11,b10,c01,c00,a01,a00)后输出字节串;
或者,所述1-2-4-12塔式扩张表达为:
Figure FDF0000009739530000047
Figure FDF0000009739530000048
Figure FDF0000009739530000049
时,
包括以下步骤:
对BN-12曲线上的双线性对结果域
Figure FDF00000097395300000410
里元素初始采用1-2-4-12塔式扩张表达:
Figure FDF00000097395300000411
Figure FDF00000097395300000412
Figure FDF00000097395300000413
其中Ψ为
Figure FDF00000097395300000414
的非平方剩余,λ为
Figure FDF00000097395300000415
上的非立方剩余;对应的
Figure FDF00000097395300000416
表达用基域Fq中的元素表示为:
(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11);
第二执行模块对优化的Ate对计算过程涉及的幂乘运算,当计算的中间结果f计算完成
Figure FDF00000097395300000417
后,后续幂乘运算可选地将元素表达转换为1-2-6-12塔式扩张表达,采用Lucas阶梯计算方法计算幂乘。对SM9算法中涉及的双线性映射结果值的幂乘运算,将底数转换为1-2-6-12塔式扩张表达后,采用Lucas阶梯计算方法计算。塔式扩张表达间的转换方法为:
将(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)转化为(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00);
第二转换单元在完成幂乘运算后将元素的1-2-6-12塔式扩张表达转换为1-2-4-12塔式扩张表达。塔式扩张表达间的转换方法为:
将(z11,z10,x11,x10,y01,y00,y11,y10,z01,z00,x01,x00)转化为(x00,x01,x10,x11,y00,y01,y10,y11,z00,z01,z10,z11)。
4.根据权利要求3所述的SM9算法的实现装置,其特征在于,如果初始采用的塔式扩张表达是预设的二次塔式扩张表达,所述处理单元,包括:
第一转换模块,用于在SM9算法需将二次塔式扩张表达转换为字节串数据操作时,先将元素转换为1-2-4-12的塔式扩张表达,再转换为字节串数据。
CN201710885011.6A 2017-09-26 2017-09-26 Sm9算法的实现方法和装置 Active CN107707353B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710885011.6A CN107707353B (zh) 2017-09-26 2017-09-26 Sm9算法的实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710885011.6A CN107707353B (zh) 2017-09-26 2017-09-26 Sm9算法的实现方法和装置

Publications (2)

Publication Number Publication Date
CN107707353A CN107707353A (zh) 2018-02-16
CN107707353B true CN107707353B (zh) 2020-10-23

Family

ID=61176040

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710885011.6A Active CN107707353B (zh) 2017-09-26 2017-09-26 Sm9算法的实现方法和装置

Country Status (1)

Country Link
CN (1) CN107707353B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109274487B (zh) * 2018-08-17 2020-04-14 西安电子科技大学 基于国密sm9密码算法的群签名标识签发方法
CN110086620A (zh) * 2019-03-25 2019-08-02 电子科技大学 基于OpenSSL库的R-ate双线性对实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107135080A (zh) * 2017-07-06 2017-09-05 深圳奥联信息安全技术有限公司 Sm9解密方法和装置
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107135080A (zh) * 2017-07-06 2017-09-05 深圳奥联信息安全技术有限公司 Sm9解密方法和装置
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
High-Speed Software Implementation of the Optimal Ate Pairing over Barreto–Naehrig Curves;Jean-Luc Beuchat 等;《International Conference on Pairing-Based Cryptography Pairing 2010: Pairing-Based Cryptography-Pairing 2010》;20101231;第2-3节,第23页至第24页 *
SM9标识密码算法综述;袁峰 等;《信息安全研究》;20161130;第2卷(第11期);全文 *

Also Published As

Publication number Publication date
CN107707353A (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
TWI670621B (zh) 資訊加密、解密方法及裝置
CN101867474B (zh) 数字签名方法
CN104378374B (zh) 一种基于安全套接层建立通信的方法及系统
US10230724B2 (en) Identification method of an entity
CN107707353B (zh) Sm9算法的实现方法和装置
JP6730740B2 (ja) 処理装置、処理方法、処理プログラム、及び暗号処理システム
CN103457720B (zh) 用于基于id的加密系统的密钥生成装置及其方法
US10044499B2 (en) Information processing apparatus, program, and storage medium
WO2023138265A1 (zh) 一种数据加解密方法、系统、设备及计算机可读存储介质
CN106301761B (zh) 一种基于密码杂凑算法的压缩方法及装置
CN113541921A (zh) 一种全同态加密gpu高性能实现方法
CN112152784A (zh) 用于基于散列的签名算法的并行处理技术
WO2011050624A1 (zh) 数据变换方法及装置
CN107248914B (zh) 一种iOS设备上新型对称加密系统及加密方法
WO2019105164A1 (zh) 一种在线离线循环非平衡油醋签名方法
CN106452726B (zh) 一种s盒及其构造方法
JP2017511537A (ja) ペアワイズ距離計算のためのシステム及び方法
TWI731770B (zh) 運算系統
CN101141248A (zh) 基于神经网络权值同步的轻量级密钥协商方法
CN112084523A (zh) 文本加密方法及装置、终端设备、存储介质
CN101814989B (zh) 用于散列到椭圆曲线的点上的方法和设备
CN106100843B (zh) 多变量公钥生成、加密和解密方法
TW201426684A (zh) 以多次加密進行數字加密之方法
CN112953706B (zh) 信息处理方法和装置
CN109450616A (zh) 一种提高sm4加密算法速度的方法

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