CN113472540A - 生成密文的方法、装置、电子设备及存储介质 - Google Patents

生成密文的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113472540A
CN113472540A CN202110743361.5A CN202110743361A CN113472540A CN 113472540 A CN113472540 A CN 113472540A CN 202110743361 A CN202110743361 A CN 202110743361A CN 113472540 A CN113472540 A CN 113472540A
Authority
CN
China
Prior art keywords
point
value
dot
multiplication
multiplied
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
CN202110743361.5A
Other languages
English (en)
Other versions
CN113472540B (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.)
Rock Jiahua Chongqing Technology Co ltd
Original Assignee
Rock Jiahua Chongqing 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 Rock Jiahua Chongqing Technology Co ltd filed Critical Rock Jiahua Chongqing Technology Co ltd
Priority to CN202110743361.5A priority Critical patent/CN113472540B/zh
Publication of CN113472540A publication Critical patent/CN113472540A/zh
Application granted granted Critical
Publication of CN113472540B publication Critical patent/CN113472540B/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/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
    • 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
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本申请提供了一种生成密文的方法、装置、电子设备及存储介质,涉及数据处理技术领域,该方法包括:获取用于点乘运算的椭圆曲线,选取椭圆曲线上的预设点作为待乘点,并确定作用于待乘点的点乘整数。计算点乘整数的非邻接值,针对非邻接值进行点乘运算,包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值,基于非邻接值的当前的二进制数位取值、倍点运算值以及待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值,并获得点乘运算结果。基于点乘运算结果和明文得到明文对应的密文。通过低阶因子相乘的方式能够提高点加运算的运算效率,以提高调用点加运算得到密文的效率。

Description

生成密文的方法、装置、电子设备及存储介质
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种生成密文的方法、装置、电子设备及存储介质。
背景技术
现有技术中,在基于椭圆曲线运算的数据加解密、密钥协商、签名验签等过程中,均需要调用点加、倍点以及点乘运算,在这个过程中,存在运算效率低的问题。
发明内容
本申请的实施例在于提供一种生成密文的方法、装置、电子设备及存储介质,以解决目前方法基于椭圆曲线运算生成密文时存在的效率低的问题。
本申请的实施例提供了一种生成密文的方法,所述方法包括:
获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
计算所述点乘整数的非邻接值;
按照所述非邻接值中各个二进制数位取值的排序,针对所述非邻接值进行点乘运算,所述点乘运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值;其中,所述点乘中间运算值的初始值预先设定;在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
基于所述点乘运算结果和明文得到所述明文对应的密文。
在上述实现过程中,按照所述排序对所述点乘整数的非邻接值中各个二进制数位取值进行循环运算得到点乘运算结果,在循环的过程中调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
可选地,所述根据当前的点乘中间运算值进行倍点运算得到倍点运算值,包括:
在当前的所述点乘中间运算值不为0时,通过第一计算公式对当前的所述点乘中间运算值(x0,y0,z0)进行运算,得到第一中间计算结果,所述第一中间计算结果包括A1、A2以及A3
所述第一计算公式包括:A1=z0 2、A2=y0 2以及A3=x0 2
通过第二计算公式对当前的点乘中间运算值(x0,y0,z0)、所述第一中间计算结果进行运算得到第二中间计算结果,所述第二中间计算结果包括B1、B2、B3以及B4
所述第二计算公式包括:B1=A1 2、B2=x0A2、B3=A2 2以及B4=3A3
通过第三计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第一中间计算结果、所述第二中间计算结果进行运算得到第三中间计算结果,所述第三中间计算结果包括C1、C2、C3以及C4;其中,所述第三计算公式包括:C1=aB1、C2=8B2、C3=B4+C1以及C4=4B2
通过第四计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第二中间计算结果、所述第三中间计算结果得到第四中间计算结果,所述第四中间计算结果包括D1、D2、D3、D4以及D5
所述第四计算公式包括:
D1=C3 2、D2=y0z0、D3=C3 2-C2、D4=C4-D3以及D5=8B3
通过第五计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第三中间计算结果、所述第四中间计算结果进行计算得到第五中间计算结果,所述第五中间计算结果包括E1、E2以及E3
所述第五计算公式包括:
E1=C3D4、E2=E1-D5、E3=2y0z0
其中,所述倍点运算值Q(x1,y1,z1)的取值分别为x1=D3,y1=E2,z1=E3
在上述实现过程中,在计算点乘运算结果调用倍点运算时,通过低阶分解因子相乘的方式逐步得到倍点运算值,能够避免高阶相乘运算,提高倍点运算的运算效率。
可选地,所述基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算,得到更新的点乘中间运算值,包括:
在当前的所述二进制数位取值为1时,通过第六计算公式对所述待乘点P(x2,y2,z2)以及所述倍点运算值Q(x1,y1,z1)进行运算得到第一点加中间值,所述第一点加中间值包括M1以及M2
所述第六计算公式包括:
M1=z2 2以及M2=y1z2
通过第七计算公式对所述待乘点P(x2,y2,z2)、所述倍点运算值Q(x1,y1,z1)、所述第一点加中间值运算得到第二点加中间值,所述第二点加中间值包括N1、N2、N3以及N4
所述第七计算公式包括:
N1=M1M2、N2=x1M1、N3=N2-x2以及N4=N1-y2
通过第八计算公式基于所述待乘点P(x2,y2,z2)以及所述第二点加中间值运算得到第三点加中间值,所述第三点加中间值包括R1、R2以及R3
所述第八计算公式包括:
R1=N3z2、R2=N3 2以及R3=N4 2
通过第九计算公式对所述待乘点P(x2,y2,z2)、所述第二点加中间值以及所述第三点加中间值运算得到第四点加中间值,所述第四点加中间值包括S1、S2、S3、S4、S5、S6以及S7
所述第九计算公式包括:
S1=x2R2、S2=N3R2、S3=R1 2、S4=R3-R2、S5=2S1、S6=R3-S2-2S1以及S7=S1-S6
通过第十计算公式对所述待乘点P(x2,y2,z2)、所述第二点加中间值、所述第三点加中间值以及所述第四点加中间值运算得到第五点加中间值,所述第五点加中间值包括T1、T2、T3以及T4
所述第十计算公式包括:
T1=N4S7、T2=y2S2、T3=R1S3以及T4=T1-T2
其中,所述更新的点乘中间运算值表示为(x3,y3,z3),x3=S6,y3=T4,z3=R1
在上述实现过程中,在计算点乘运算结果调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,并在针对最后一个所述二进制数位取值进行点乘中间运算后,获得点乘运算结果,能够避免高阶相乘运算,提高点乘运算的运算效率。
可选地,所述计算所述点乘整数的非邻接值,包括:
判断当前的所述点乘整数的奇偶性;
在当前的所述点乘整数为奇数时,通过第十一计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
所述第十一计算公式包括:ki=2-(kmod4);
当所述点乘整数为偶数时,通过第十二计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
所述第十二计算公式包括:ki=0;
计算得到更新后的点乘整数为(k-ki)/2;重复执行步骤判断当前的所述点乘整数的奇偶性至步骤计算得到更新后的点乘整数为(k-ki)/2,直到所述二进制数位取值结束;其中,i表示所述非邻接值的第i个二进制数位的位置,ki表示所述非邻接值在第i个二进制数位上的二进制数位取值,k表示所述点乘整数。
在上述实现过程中,将所述点乘整数写成非邻接值的形式,由于非邻接值的各个二进制数位中的二进制数位取值含有最少的非零位,能够降低点乘运算中点加运算以及倍点运算的循环次数,降低点乘运算的运算耗时,提高获取密文的运算效率。
本申请的实施例提供了一种生成密文的装置,所述装置包括:
第一获取模块,用于获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
第一计算模块,用于计算所述点乘整数的非邻接值;
第一点乘运算模块,用于按照所述非邻接值中各个二进制数位取值的排序,针对所述非邻接值进行点乘运算,所述点乘运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值;其中,所述点乘中间运算值的初始值预先设定;在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
第一加密模块,用于基于所述点乘运算结果和明文得到所述明文对应的密文。
在上述实现过程中,按照所述排序对所述点乘整数的非邻接值中各个二进制数位取值进行循环运算得到点乘运算结果,在循环的过程中调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
可选地,所述第一点乘运算模块用于:
在当前的所述点乘中间运算值不为0时,通过第一计算公式对当前的所述点乘中间运算值(x0,y0,z0)进行运算,得到第一中间计算结果,所述第一中间计算结果包括A1、A2以及A3
所述第一计算公式包括:A1=z0 2、A2=y0 2以及A3=x0 2
通过第二计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第一中间计算结果进行运算得到第二中间计算结果,所述第二中间计算结果包括B1、B2、B3以及B4
所述第二计算公式包括:B1=A1 2、B2=x0A2、B3=A2 2以及B4=3A3
通过第三计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第一中间计算结果、所述第二中间计算结果进行运算得到第三中间计算结果,所述第三中间计算结果包括C1、C2、C3以及C4
所述第三计算公式包括:C1=aB1、C2=8B2、C3=B4+C1以及C4=4B2
通过第四计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第二中间计算结果、所述第三中间计算结果得到第四中间计算结果,所述第四中间计算结果包括D1、D2、D3、D4以及D5
所述第四计算公式包括:
D1=C3 2、D2=y0z0、D3=C3 2-C2、D4=C4-D3以及D5=8B3
通过第五计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第三中间计算结果、所述第四中间计算结果进行计算得到第五中间计算结果,所述第五中间计算结果包括E1、E2以及E3
所述第五计算公式包括:
E1=C3D4、E2=E1-D5、E3=2y0z0
其中,所述倍点运算值Q(x1,y1,z1)的取值分别为x1=D3,y1=E2,z1=E3
在上述实现过程中,在计算点乘运算结果调用倍点运算时,通过低阶分解因子相乘的方式逐步得到倍点运算值,能够避免高阶相乘运算,提高倍点运算的运算效率。
可选地,所述第一点乘运算模块用于:
在当前的所述二进制数位取值为1时,通过第六计算公式对所述待乘点P(x2,y2,z2)以及倍点运算值Q(x1,y1,z1)进行运算得到第一点加中间值,所述第一点加中间值包括M1以及M2
所述第六计算公式包括:
M1=z2 2以及M2=y1z2
通过第七计算公式对所述待乘点P(x2,y2,z2)、所述倍点运算值Q(x1,y1,z1)、所述第一点加中间值运算得到第二点加中间值,所述第二点加中间值包括N1、N2、N3以及N4
所述第七计算公式包括:
N1=M1M2、N2=x1M1、N3=N2-x2以及N4=N1-y2
通过第八计算公式基于所述待乘点P(x2,y2,z2)以及所述第二点加中间值运算得到第三点加中间值,所述第三点加中间值包括R1、R2以及R3
所述第八计算公式包括:
R1=N3z2、R2=N3 2以及R3=N4 2
通过第九计算公式对所述待乘点P(x2,y2,z2)、所述第二点加中间值以及所述第三点加中间值运算得到第四点加中间值,所述第四点加中间值包括S1、S2、S3、S4、S5、S6以及S7
所述第九计算公式包括:
S1=x2R2、S2=N3R2、S3=R1 2、S4=R3-R2、S5=2S1、S6=R3-S2-2S1以及S7=S1-S6
通过第十计算公式对所述待乘点P(x2,y2,z2)、所述第二点加中间值、所述第三点加中间值以及所述第四点加中间值运算得到第五点加中间值,所述第五点加中间值包括T1、T2、T3以及T4
所述第十计算公式包括:
T1=N4S7、T2=y2S2、T3=R1S3以及T4=T1-T2
其中,所述更新的点乘中间运算值表示为(x3,y3,z3),x3=S6,y3=T4,z3=R1
在上述实现过程中,在计算点乘运算结果调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,并在针对最后一个所述二进制数位取值进行点乘中间运算后,获得点乘运算结果,能够避免高阶相乘运算,提高点乘运算的运算效率。
可选地,所述计算所述点乘整数的非邻接值,包括:
判断当前的所述点乘整数的奇偶性;
在当前的所述点乘整数为奇数时,通过第十一计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
所述第十一计算公式包括:ki=2-(kmod4);
在当前的所述点乘整数为偶数时,通过第十二计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
所述第十二计算公式包括:ki=0;
计算得到更新后的点乘整数为(k-ki)/2;
重复执行步骤判断当前的所述点乘整数的奇偶性至步骤计算得到更新后的点乘整数为(k-ki)/2,直到所述二进制数位取值结束,各个二进制数位上的二进制数位取值按照顺序组合得到所述非邻接值;其中,i表示所述非邻接值的第i个二进制数位的位置,ki表示所述非邻接值在第i个二进制数位上的二进制数位取值,k表示所述点乘整数。
在上述实现过程中,将所述点乘整数写成非邻接值的形式,由于非邻接值的各个二进制数位中的二进制数位取值含有最少的非零位,能够降低点乘运算中点加运算以及倍点运算的循环次数,降低点乘运算的运算耗时,提高基于椭圆曲线点乘运算获取密文的运算效率。
本申请的实施例还提供了一种生成密文的方法,所述方法包括:
获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
计算所述点乘整数的非邻接值;
基于所述待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,所述倍点运算初值预先设定;
基于排序第一的所述非邻接值的二进制数位取值、所述倍点运算值以及所述待乘点进行点加运算得到点乘中间运算值;
按照所述非邻接值中各个二进制数位取值的排序,针对位于排序第一的所述二进制数位取值之后的各个所述二进制数位取值进行点乘中间运算,所述点乘中间运算的过程包括:基于所述点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的所述二进制数位取值、所述更新的倍点运算值以及所述待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
基于所述点乘运算结果和明文得到所述明文对应的密文。
在上述实现过程中,按照所述排序对所述点乘整数的非邻接值中各个二进制数位取值进行循环运算得到点乘运算结果,在循环的过程中调用倍点运算时,通过低阶分解因子相乘的方式逐步得到更新的倍点运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
可选地,本申请的实施例提供了一种生成密文的装置,所述装置包括:
第二获取模块,用于获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
第二计算模块,用于计算所述点乘整数的非邻接值;
初始循环模块,用于基于所述待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,所述倍点运算初值预先设定;基于排序第一的所述二进制数位取值、所述倍点运算值以及所述待乘点进行点加运算得到点乘中间运算值;
第二循环模块,用于按照所述非邻接值中各个二进制数位取值的排序,针对位于排序第一的所述二进制数位取值之后的各个所述二进制数位取值进行点乘中间运算,所述点乘中间运算的过程包括:基于所述点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的所述二进制数位取值、所述更新的倍点运算值以及所述待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
第二加密模块,用于基于所述点乘运算结果和明文得到所述明文对应的密文。
在上述实现过程中,按照所述排序对所述点乘整数的非邻接值中各个二进制数位取值进行循环运算得到点乘运算结果,在循环的过程中调用倍点运算时,通过低阶分解因子相乘的方式逐步得到更新的倍点运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。
本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行上述任意方法中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
图1为本申请实施例提供的一种通过点加运算加速提高获取密文速度的方法的流程图。
图2为本申请实施例提供的一种通过点加运算加速提高点乘运算速度的步骤的流程图。
图3为本申请实施例提供的一种通过倍点运算加速提高获取密文速度的方法的流程图。
图4为本申请实施例提供的一种通过倍点运算加速提高点乘运算速度的步骤的流程图。
图5为本申请实施例提供的一种通过点加运算加速提高获取密文速度的装置示意图。
图6为本申请实施例提供的一种通过倍点运算加速提高获取密文速度的装置示意图。
图例:50-通过点加运算加速提高获取密文速度的装置;501-第一获取模块;502-第一计算模块;503-第一点乘运算模块;504-第一加密模块;60-通过倍点运算加速提高获取密文速度的装置;601-第二获取模块;602-第二计算模块;603-初始循环模块;604-第二循环模块;605-第二加密模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请的描述中,需要说明的是,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书、以及附图中所特别指出的结构来实现和获得。
基于椭圆曲线的算法,如SM2算法、SM9算法等,均需要利用点乘运算。点乘运算需要调用倍点运算和点加运算,由于在加密、解密、签名验签、密钥协商等技术领域中点乘运算的应用过程是类似的,本申请以点乘运算在加密领域的应用为例进行说明。为了提高得到密文的运算效率,本申请的实施例提供了一种生成密文的方法,请参看图1,图1为本申请实施例提供的一种通过点加运算加速提高获取密文速度的方法的流程图,所述生成密文的方法包括以下分步骤:
步骤S1:获取用于点乘运算的椭圆曲线,选取椭圆曲线上的预设点作为待乘点,并确定作用于待乘点的点乘整数。
步骤S2:计算点乘整数的非邻接值。
步骤S3:按照非邻接值中各个二进制数位取值的排序,针对非邻接值进行点乘中间运算,点乘中间运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的二进制数位取值、倍点运算值以及待乘点,通过低阶分解因子相乘的方式进行点加运算计算得到更新的点乘中间运算值;其中,点乘中间运算值的初始值预先设定;在针对最后一个二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果。
步骤S4:基于点乘运算结果和明文得到明文对应的密文。
在步骤S1-S4中,得到密文的过程可以简述为:通过在椭圆曲线上选取预设点作为待乘点,并选取相应的整数作为点乘整数,通过对待乘点进行点乘运算得到点乘运算结果,基于点乘运算结果和明文得到明文对应的密文。
在点乘运算调用倍点运算、点加运算的过程中,需要进行高阶的乘法运算,对于处理器来说,高阶乘法运算会调用大量的运算资源,因此存在点乘运算的运算速率低的问题,进而造成基于点乘运算生成密文的运算速率低下的问题。因此,按照排序对点乘整数的非邻接值的二进制数位取值通过循环得到点乘运算结果,在循环的过程中调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,提高得到密文的运算效率。
可选地,步骤S2包括以下分步骤:
步骤S21:判断当前的点乘整数的奇偶性。
步骤S22:在当前的点乘整数为奇数时,通过第十一计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值。
步骤S23:第十一计算公式包括:ki=2-(kmod4)。
步骤S24:在当前的点乘整数为偶数时,通过第十二计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
步骤S25:在当前的点乘整数为偶数时,通过第十二计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
步骤S26:第十二计算公式包括:ki=0;
步骤S27:计算得到更新后的点乘整数为(k-ki)/2。
步骤S28:重复执行步骤判断当前的点乘整数的奇偶性至步骤计算得到更新后的点乘整数为(k-ki)/2,直到所述二进制数位取值结束,各个二进制数位上的二进制数位取值按照顺序组合得到非邻接值,其中,i表示非邻接值的第i个二进制数位的位置,ki表示非邻接值在第i个二进制数位上的二进制数位取值,k表示点乘整数。
在步骤S21-S28中,将点乘整数写成非邻接值的形式,由于非邻接值的各个二进制数位中的取值含有最少的非零位,能够降低点乘运算中点加运算以及倍点运算的循环次数,降低点乘运算耗时,提高基于椭圆曲线点乘运算获取密文的运算效率。
在步骤S21-S28的运算过程中,可以通过状态机的变化描述计算点乘整数非邻接值的过程:首先状态机处于空闲状态,在接收到使能信号之后进入初始状态,通过对点乘整数的奇偶性的判断,通过步骤S21-S28在得到非邻接值之后,进入计算状态。在通过步骤S27得到下一次进行循环使用的更新后的点乘整数后返回初始状态,在最后一个二进制数位取值完成后,状态机进入退出状态。
请参看图2,图2为本申请实施例提供的一种通过点加运算加速提高点乘运算速度的步骤的流程图。其中,步骤S3中包括的各个分步骤可以如下:
步骤S31:根据当前的点乘中间运算值进行倍点运算得到倍点运算值。
步骤S32:基于当前的二进制数位取值、倍点运算值以及待乘点,通过低阶分解因子相乘的方式计算进行点加运算得到更新的点乘中间运算值,其中,点乘中间运算值的初始值预先设定;在针对最后一个二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果。
可以通过状态机来描述步骤S3的各个步骤,在未开启点乘运算时,状态机处于空闲状态,在接收到有效的使能信号之后进入倍点计算状态,在完成步骤S31后状态机进入点加计算状态,在完成步骤S32后当非邻接值的各个二进制数位上的取值未结束时,状态机继续进入倍点计算状态。在完成步骤S32后当非邻接值的取值结束时,状态机恢复空闲状态。
作为一种实施方式,点乘中间运算值的初始值可以设置为0,在点乘中间运算值的初始值为0时,进行倍点运算时,不要通过步骤S31进行运算,基于点乘运算的初始值进行倍点运算的结果倍点运算值仍然为0。
举例来说,基于倍点运算值、当前的二进制数位取值以及待乘点进行点加运算时,设点乘中间运算值表示为(x0,y0,z0),倍点运算值表示为Q(x1,y1,z1),由现有的倍点计算方法可知
Figure BDA0003143484990000151
Figure BDA0003143484990000152
z1=2y0×z0,可见倍点运算过程中调用最高8次方的高阶乘法运算,因此计算量较大。
可选地,步骤S31包括以下分步骤:
步骤S310:在当前的点乘中间运算值不为0时,通过第一计算公式对当前的点乘中间运算值(x0,y0,z0)进行运算,得到第一中间计算结果,第一中间计算结果包括A1、A2以及A3
步骤S311:第一计算公式包括:A1=z0 2、A2=y0 2以及A3=x0 2
步骤S312:通过第二计算公式对,第二中间计算结果包括B1、B2、B3以及B4
步骤S313:第二计算公式包括:B1=A1 2、B2=x0A2、B3=A2 2以及B4=3A3
步骤S314:通过第三计算公式对当前的点乘中间运算值(x0,y0,z0)、第一中间计算结果、第二中间计算结果进行运算得到第三中间计算结果,第三中间计算结果包括C1、C2、C3以及C4
步骤S315:所述第三计算公式包括:C1=aB1、C2=8B2、C3=B4+C1以及C4=4B2
步骤S316:通过第四计算公式对当前的点乘中间运算值(x0,y0,z0)、第二中间计算结果、第三中间计算结果得到第四中间计算结果,第四中间计算结果包括D1、D2、D3、D4以及D5
步骤S317:第四计算公式包括:
D1=C3 2、D2=y0z0、D3=C3 2-C2、D4=C4-D3以及D5=8B3
步骤S318:通过第五计算公式对当前的点乘中间运算值(x0,y0,z0)、第三中间计算结果、第四中间计算结果进行计算得到第五中间计算结果,第五中间计算结果包括E1、E2以及E3
步骤S319:第五计算公式包括:
E1=C3D4、E2=E1-D5、E3=2y0Z0,其中,倍点运算值Q(x1,y1,z1)的取值分别为x1=D3,y1=E2,z1=E3
在步骤S310-S311中,通过当前的点乘中间运算值(x0,y0,z0)进行平方运算得带较为低阶的分解因子即第一中间计算。在基于步骤S312-S313中,通过当前的点乘中间运算值(x0,y0,z0)、第一中间计算结果进行运算得到第二中间计算结果,这个过程中最高阶的运算为二次方,依次类推,在步骤S314-S315、步骤S316-S317、步骤S318-S319中分别是基于上一次的中间计算结果进行二阶乘法运算,即通过分多个步骤通过低阶分解因子逐步作二阶乘法最终得到高阶的Q(x1,y1,z1)。
在步骤S310-S319中,计算最终的点乘运算结果调用倍点运算时,通过低阶分解因子相乘的方式逐步得到倍点运算值,能够避免高阶相乘运算,提高倍点运算的运算效率。
作为一种实施方式,椭圆曲线上的待乘点表示为P(x2,y2,z2),倍点运算值为步骤S320-S329中得到的Q(x1,y1,z1),更新的点乘中间运算值表示为(x3,y3,z3),由现有的点加计算方法可知
Figure BDA0003143484990000161
Figure BDA0003143484990000162
Figure BDA0003143484990000171
可见点加运算过程中调用最高8次方的高阶乘法运算,因此计算量较大。
可选地,步骤S32包括以下分步骤:
步骤S320:在当前的二进制数位取值为1时,通过第六计算公式对待乘点P(x2,y2,z2)以及倍点运算值Q(x1,y1,z1)进行运算得到第一点加中间值,第一点加中间值包括M1以及M2
步骤S321:第六计算公式包括:M1=z2 2以及M2=y1z2
步骤S322:通过第七计算公式对待乘点P(x2,y2,z2)、倍点运算值Q(x1,y1,z1)、第一点加中间值运算得到第二点加中间值,第二点加中间值包括N1、N2、N3以及N4
步骤S323:第七计算公式包括:N1=M1M2、N2=x1M1、N3=N2-x2以及N4=N1-y2
步骤S324:通过第八计算公式基于待乘点P(x2,y2,z2)以及第二点加中间值运算得到第三点加中间值,第三点加中间值包括R1、R2以及R3
步骤S325:第八计算公式包括:R1=N3z2、R2=N3 2以及R3=N4 2
步骤S326:通过第九计算公式对待乘点P(x2,y2,z2)、第二点加中间值以及第三点加中间值运算得到第四点加中间值,第四点加中间值包括S1、S2、S3、S4、S5、S6以及S7
步骤S327:第九计算公式包括:
S1=x2R2、S2=N3R2、S3=R1 2、S4=R3-R2、S5=2S1、S6=R3-S2-2S1以及S7=S1-S6
步骤S328:通过第十计算公式对待乘点P(x2,y2,z2)、第二点加中间值、第三点加中间值以及第四点加中间值运算得到第五点加中间值,第五点加中间值包括T1、T2、T3以及T4
步骤S329:第十计算公式包括:T1=N4S7、T2=y2S2、T3=R1S3以及T4=T1-T2;其中,更新的点乘中间运算值表示为(x3,y3,z3),x3=S6,y3=T4,z3=R1
在步骤S320-S321中,通过待乘点P(x2,y2,z2)以及倍点运算值Q(x1,y1,z1)进行平方运算得到较为低阶的分解因子即第一点加中间值,在步骤S322-S323中,通过待乘点P(x2,y2,z2)、倍点运算值Q(x1,y1,z1)、第一点加中间值进行运算得到第二中间计算结果,这个过程中最高阶的运算为二次方,依次类推,在步骤S324-S325、步骤S326-S327、步骤S328-S329中分别是基于上一次的中间计算结果进行二阶乘法运算,即通过分多个步骤通过低阶分解因子逐步作二阶乘法最终得到高阶的更新的点乘中间运算值表示为(x3,y3,z3)。
在步骤S320-S329,在计算点乘运算结果调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,能够避免高阶相乘运算,提高点加运算的运算效率。
请参看图3,图3为本申请实施例提供的一种通过倍点运算加速提高获取密文速度的方法的流程图。所述生成密文的方法包括以下分步骤:
步骤S5:获取用于点乘运算的椭圆曲线,选取椭圆曲线上的预设点作为待乘点,并确定作用于待乘点的点乘整数。
步骤S6:计算点乘整数的非邻接值。
步骤S7:基于待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,倍点运算初值预先设定。
步骤S8:基于排序第一的所述非邻接值的二进制数位取值、倍点运算值以及待乘点进行点加运算得到点乘中间运算值。
步骤S9:按照非邻接值非邻接值中各个二进制数位取值的排序,针对位于排序第一的二进制数位取值之后的各个二进制数位取值进行点乘中间运算,点乘中间运算的过程包括:基于点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的二进制数位取值、更新的倍点运算值以及待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果。
步骤S10:利用点乘运算结果和明文得到明文对应的密文。
在步骤S5-S10中,按照排序对点乘整数的非邻接值的二进制数位取值通过循环得到点乘运算结果,在循环的过程中调用倍点运算时,通过低阶分解因子相乘的方式逐步得到更新的倍点运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
请参看图4,图4为本申请实施例提供的一种通过倍点运算加速提高点乘运算速度的步骤的流程图。步骤S9中的步骤可以如下表示:
步骤S91:基于倍点运算值通过低阶分解因子相乘的方式得到更新的倍点运算值。
步骤S92:基于当前的二进制数位取值、更新的倍点运算值以及待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果。
在步骤S91-步骤S92中,通过低阶分解因子相乘的方式得到更新的倍点运算值的计算过程与步骤S310-S319中通过低阶分解因子相乘的方式得到倍点运算值Q(x1,y1,z1)的计算过程类似,这里不再赘述。
本申请的实施例还提供了一种生成密文的装置,请参看图5,图5为本申请实施例提供的一种通过点加运算加速提高获取密文速度的装置示意图。通过点加运算加速提高获取密文速度的装置50包括:
第一获取模块501,用于获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于待乘点的点乘整数;
第一计算模块502,用于计算点乘整数的非邻接值;
第一点乘运算模块503,用于按照非邻接值中各个二进制数位取值的排序,针对非邻接值进行点乘运算,点乘运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的二进制数位取值、倍点运算值以及待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值;其中,点乘中间运算值的初始值预先设定;在针对最后一个二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
第一加密模块504,基于点乘运算结果和明文得到明文对应的密文。
可选地,第一点乘运算模块503用于:
在当前的点乘中间运算值不为0时,通过第一计算公式对当前的点乘中间运算值(x0,y0,z0)进行运算,得到第一中间计算结果,第一中间计算结果包括A1、A2以及A3
第一计算公式包括:A1=z0 2、A2=y0 2以及A3=x0 2
通过第二计算公式对当前的点乘中间运算值(x0,y0,z0)、第一中间计算结果进行运算得到第二中间计算结果,第二中间计算结果包括B1、B2、B3以及B4
第二计算公式包括:B1=A1 2、B2=x0A2、B3=A2 2以及B4=3A3
通过第三计算公式对当前的点乘中间运算值(x0,y0,z0)、第一中间计算结果、第二中间计算结果进行运算得到第三中间计算结果,第三中间计算结果包括C1、C2、C3以及C4;其中,所述第三计算公式包括:C1=aB1、C2=8B2、C3=B4+C1以及C4=4B2
通过第四计算公式对当前的点乘中间运算值(x0,y0,z0)、第二中间计算结果、第三中间计算结果得到第四中间计算结果,第四中间计算结果包括D1、D2、D3、D4以及D5
第四计算公式包括:
D1=C3 2、D2=y0z0、D3=C3 2-C2、D4=C4-D3以及D5=8B3
通过第五计算公式对当前的点乘中间运算值(x0,y0,z0)、第三中间计算结果、第四中间计算结果进行计算得到第五中间计算结果,第五中间计算结果包括E1、E2以及E3
第五计算公式包括:
E1=C3D4、E2=E1-D5、E3=2y0z0
其中,倍点运算值Q(x1,y1,z1)的取值分别为x1=D3,y1=E2,z1=E3
可选地,第一点乘运算模块503用于:
在当前的二进制数位取值为1时,通过第六计算公式对待乘点P(x2,y2,z2)以及倍点运算值Q(x1,y1,z1)进行运算得到第一点加中间值,第一点加中间值包括M1以及M2
第六计算公式包括:
M1=z2 2以及M2=y1z2
通过第七计算公式对待乘点P(x2,y2,z2)、倍点运算值Q(x1,y1,z1)、第一点加中间值运算得到第二点加中间值,第二点加中间值包括N1、N2、N3以及N4
第七计算公式包括:
N1=M1M2、N2=x1M1、N3=N2-x2以及N4=N1-y2
通过第八计算公式基于待乘点P(x2,y2,z2)以及第二点加中间值运算得到第三点加中间值,第三点加中间值包括R1、R2以及R3
第八计算公式包括:
R1=N3z2、R2=N3 2以及R3=N4 2
通过第九计算公式对待乘点P(x2,y2,z2)、第二点加中间值以及第三点加中间值运算得到第四点加中间值,第四点加中间值包括S1、S2、S3、S4、S5、S6以及S7
第九计算公式包括:
S1=x2R2、S2=N3R2、S3=R1 2、S4=R3-R2、S5=2S1、S6=R3-S2-2S1以及S7=S1-S6
通过第十计算公式对待乘点P(x2,y2,z2)、第二点加中间值、第三点加中间值以及第四点加中间值运算得到第五点加中间值,第五点加中间值包括T1、T2、T3以及T4
第十计算公式包括:
T1=N4S7、T2=y2S2、T3=R1S3以及T4=T1-T2
其中,更新的点乘中间运算值表示为(x3,y3,z3),x3=S6,y3=T4,z3=R1
可选地,第一点乘运算模块503用于:
判断当前的点乘整数的奇偶性;
在当前的点乘整数为奇数时,通过第十一计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
第十一计算公式包括:ki=2-(kmod4);
在当前的点乘整数为偶数时,通过第十二计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
第十二计算公式包括:ki=0;
计算得到更新后的点乘整数为(k-ki)/2;
重复执行步骤判断当前的点乘整数的奇偶性至步骤计算得到更新后的点乘整数为(k-ki)/2,直到二进制数位取值结束,各个二进制数位上的二进制数位取值按照顺序组合得到非邻接值;其中,i表示非邻接值的第i个二进制数位的位置,ki表示非邻接值在第i个二进制数位上的二进制数位取值,k表示点乘整数。
本申请的实施例还提供了另一种生成密文的装置,请参看图6,图6为本申请实施例提供的一种通过倍点运算加速提高获取密文速度的装置示意图。通过倍点运算加速提高获取密文速度的装置60包括:
第二获取模块601,用于获取用于点乘运算的椭圆曲线,选取椭圆曲线上的预设点作为待乘点,并确定作用于待乘点的点乘整数;
第二计算模块602,用于计算点乘整数的非邻接值;
初始循环模块603,用于基于待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,倍点运算初值预先设定;基于排序第一的非邻接值的二进制数位取值、倍点运算值以及待乘点进行点加运算得到点乘中间运算值;
第二循环模块604,用于按照非邻接值中各个二进制数位取值的排序,针对位于排序第一的二进制数位取值之后的各个二进制数位取值进行点乘中间运算,点乘中间运算的过程包括:基于点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的二进制数位取值、更新的倍点运算值以及待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
第二加密模块605,用于利用点乘运算结果和明文得到明文对应的密文。
本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行上述任意方法中的步骤。本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。
综上所述,本申请的实施例提供了一种生成密文的方法、装置、电子设备及存储介质,涉及数据处理技术领域,所述生成密文的方法包括:获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;计算所述点乘整数的非邻接值;按照所述非邻接值中各个二进制数位取值的排序,针对所述非邻接值进行点乘运算,所述点乘运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值;其中,所述点乘中间运算值的初始值预先设定;在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;基于所述点乘运算结果和明文得到所述明文对应的密文。
在上述实现过程中,按照所述排序对所述点乘整数的非邻接值中各个二进制数位取值进行循环运算得到点乘运算结果,在循环的过程中调用点加运算时,通过低阶分解因子相乘的方式逐步得到更新的点乘中间运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
本申请的实施例提供了一种生成密文的方法、装置、电子设备及存储介质,涉及数据处理技术领域,所述生成密文的方法包括:获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;计算所述点乘整数的非邻接值;基于所述待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,所述倍点运算初值预先设定;基于排序第一的所述非邻接值的二进制数位取值、所述倍点运算值以及所述待乘点进行点加运算得到点乘中间运算值;按照所述非邻接值中各个二进制数位取值的排序,针对位于排序第一的所述二进制数位取值之后的各个所述二进制数位取值进行点乘中间运算,所述点乘中间运算的过程包括:基于所述点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的所述二进制数位取值、所述更新的倍点运算值以及所述待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;基于所述点乘运算结果和明文得到所述明文对应的密文。
在上述实现过程中,按照所述排序对所述点乘整数的非邻接值中各个二进制数位取值进行循环运算得到点乘运算结果,在循环的过程中调用倍点运算时,通过低阶分解因子相乘的方式逐步得到更新的倍点运算值,能够避免高阶相乘运算,提高点乘运算的运算效率,以提高得到密文的运算效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种生成密文的方法,其特征在于,所述方法包括:
获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
计算所述点乘整数的非邻接值;
按照所述非邻接值中各个二进制数位取值的排序,针对所述非邻接值进行点乘运算,所述点乘运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值;其中,所述点乘中间运算值的初始值预先设定;在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
基于所述点乘运算结果和明文得到所述明文对应的密文。
2.根据权利要求1所述的方法,其特征在于,所述根据当前的点乘中间运算值进行倍点运算得到倍点运算值,包括:
在当前的所述点乘中间运算值不为0时,通过第一计算公式对当前的所述点乘中间运算值(x0,y0,z0)进行运算,得到第一中间计算结果,所述第一中间计算结果包括A1、A2以及A3
所述第一计算公式包括:A1=z0 2、A2=y0 2以及A3=x0 2
通过第二计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第一中间计算结果进行运算得到第二中间计算结果,所述第二中间计算结果包括B1、B2、B3以及B4
所述第二计算公式包括:B1=A1 2、B2=x0A2、B3=A2 2以及B4=3A3
通过第三计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第一中间计算结果、所述第二中间计算结果进行运算得到第三中间计算结果,所述第三中间计算结果包括C1、C2、C3以及C4
所述第三计算公式包括:C1=aB1、C2=8B2、C3=B4+C1以及C4=4B2
通过第四计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第二中间计算结果、所述第三中间计算结果得到第四中间计算结果,所述第四中间计算结果包括D1、D2、D3、D4以及D5
所述第四计算公式包括:
D1=C3 2、D2=y0z0、D3=C3 2-C2、D4=C4-D3以及D5=8B3
通过第五计算公式对当前的所述点乘中间运算值(x0,y0,z0)、所述第三中间计算结果、所述第四中间计算结果进行计算得到第五中间计算结果,所述第五中间计算结果包括E1、E2以及E3
所述第五计算公式包括:
E1=C3D4、E2=E1-D5、E3=2y0z0
其中,所述倍点运算值Q(x1,y1,z1)的取值分别为x1=D3,y1=E2,z1=E3
3.根据权利要求1所述的方法,其特征在于,所述基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值,包括:
在当前的所述二进制数位取值为1时,通过第六计算公式对所述待乘点P(x2,y2,z2)以及倍点运算值Q(x1,y1,z1)进行运算得到第一点加中间值,所述第一点加中间值包括M1以及M2
所述第六计算公式包括:
M1=z2 2以及M2=y1z2
通过第七计算公式对所述待乘点P(x2,y2,z2)、所述倍点运算值Q(x1,y1,z1)、所述第一点加中间值运算得到第二点加中间值,所述第二点加中间值包括N1、N2、N3以及N4
所述第七计算公式包括:
N1=M1M2、N2=x1M1、N3=N2-x2以及N4=N1-y2
通过第八计算公式基于所述待乘点P(x2,y2,z2)以及所述第二点加中间值运算得到第三点加中间值,所述第三点加中间值包括R1、R2以及R3
所述第八计算公式包括:
R1=N3z2、R2=N3 2以及R3=N4 2
通过第九计算公式对所述待乘点P(x2,y2,z2)、所述第二点加中间值以及所述第三点加中间值运算得到第四点加中间值,所述第四点加中间值包括S1、S2、S3、S4、S5、S6以及S7
所述第九计算公式包括:
S1=x2R2、S2=N3R2、S3=R1 2、S4=R3-R2、S5=2S1、S6=R3-S2-2S1以及S7=S1-S6
通过第十计算公式对所述待乘点P(x2,y2,z2)、所述第二点加中间值、所述第三点加中间值以及所述第四点加中间值运算得到第五点加中间值,所述第五点加中间值包括T1、T2、T3以及T4
所述第十计算公式包括:
T1=N4S7、T2=y2S2、T3=R1S3以及T4=T1-T2
其中,所述更新的点乘中间运算值表示为(x3,y3,z3),x3=S6,y3=T4,z3=R1
4.根据权利要求1所述的方法,其特征在于,所述计算所述点乘整数的非邻接值,包括:
判断当前的所述点乘整数的奇偶性;
在当前的所述点乘整数为奇数时,通过第十一计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
所述第十一计算公式包括:ki=2-(kmod4);
在当前的所述点乘整数为偶数时,通过第十二计算公式按照从低位到高位的顺序计算得到当前的二进制数位取值;
所述第十二计算公式包括:ki=0;
计算得到更新后的点乘整数为(k-ki)/2;
重复执行步骤判断当前的所述点乘整数的奇偶性至步骤计算得到更新后的点乘整数为(k-ki)/2,直到所述二进制数位取值结束,各个二进制数位上的二进制数位取值按照顺序组合得到所述非邻接值;其中,i表示所述非邻接值的第i个二进制数位的位置,ki表示所述非邻接值在第i个二进制数位上的二进制数位取值,k表示所述点乘整数。
5.一种生成密文的方法,其特征在于,所述方法包括:
获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
计算所述点乘整数的非邻接值;
基于所述待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,所述倍点运算初值预先设定;
基于排序第一的所述非邻接值的二进制数位取值、所述倍点运算值以及所述待乘点进行点加运算得到点乘中间运算值;
按照所述非邻接值中各个二进制数位取值的排序,针对位于排序第一的所述二进制数位取值之后的各个所述二进制数位取值进行点乘中间运算,所述点乘中间运算的过程包括:基于所述点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的所述二进制数位取值、所述更新的倍点运算值以及所述待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
基于所述点乘运算结果和明文得到所述明文对应的密文。
6.一种生成密文的装置,其特征在于,所述装置包括:
第一获取模块,用于获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
第一计算模块,用于计算所述点乘整数的非邻接值;
第一点乘运算模块,用于按照所述非邻接值中各个二进制数位取值的排序,针对所述非邻接值进行点乘运算,所述点乘运算的过程包括:根据当前的点乘中间运算值进行倍点运算得到倍点运算值;基于当前的所述二进制数位取值、所述倍点运算值以及所述待乘点,通过低阶分解因子相乘的方式进行点加运算得到更新的点乘中间运算值;其中,所述点乘中间运算值的初始值预先设定;在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
第一加密模块,用于基于所述点乘运算结果和明文得到所述明文对应的密文。
7.一种生成密文的装置,其特征在于,所述装置包括:
第二获取模块,用于获取用于点乘运算的椭圆曲线,选取所述椭圆曲线上的预设点作为待乘点,并确定作用于所述待乘点的点乘整数;
第二计算模块,用于计算所述点乘整数的非邻接值;
初始循环模块,用于基于所述待乘点的倍点运算初值进行倍点运算得到倍点运算值,其中,所述倍点运算初值预先设定;基于排序第一的所述非邻接值的二进制数位取值、所述倍点运算值以及所述待乘点进行点加运算得到点乘中间运算值;
第二循环模块,用于按照所述非邻接值的二进制数位取值的排序,针对位于排序第一的所述二进制数位取值之后的各个所述二进制数位取值进行点乘中间运算,所述点乘中间运算的过程包括:基于所述点乘中间运算值通过低阶分解因子相乘的方式进行倍点运算得到更新的倍点运算值;基于当前的所述二进制数位取值、所述更新的倍点运算值以及所述待乘点计算得到更新的点乘中间运算值;其中,在针对最后一个所述二进制数位取值进行点乘中间运算后,获得最终的点乘中间运算值即点乘运算结果;
第二加密模块,用于基于所述点乘运算结果和明文得到所述明文对应的密文。
8.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-4或5中任一项所述方法中的步骤。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-4或5中任一项所述方法中的步骤。
CN202110743361.5A 2021-07-01 2021-07-01 生成密文的方法、装置、电子设备及存储介质 Active CN113472540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110743361.5A CN113472540B (zh) 2021-07-01 2021-07-01 生成密文的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110743361.5A CN113472540B (zh) 2021-07-01 2021-07-01 生成密文的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113472540A true CN113472540A (zh) 2021-10-01
CN113472540B CN113472540B (zh) 2023-05-09

Family

ID=77877053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110743361.5A Active CN113472540B (zh) 2021-07-01 2021-07-01 生成密文的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113472540B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102186170A (zh) * 2010-11-24 2011-09-14 北京天融信科技有限公司 一种无线传感器网络的密钥管理方法及装置
CN103078732A (zh) * 2013-01-08 2013-05-01 武汉大学 一种素域椭圆曲线加密的点乘加速电路
CN104579651A (zh) * 2013-10-28 2015-04-29 上海复旦微电子集团股份有限公司 椭圆曲线密码点乘运算的方法和装置
US20160134417A1 (en) * 2014-11-10 2016-05-12 Umm Al-Qura University Method for efficiently protecting elliptic curve cryptography against simple power analysis attacks
EP3125145A1 (en) * 2015-07-31 2017-02-01 Nxp B.V. White-box elliptic curve point multiplication
CN108650087A (zh) * 2018-05-16 2018-10-12 广东工业大学 一种二进制域F2m下的SM2椭圆曲线签名点乘加密方法
CN110460443A (zh) * 2019-08-09 2019-11-15 南京秉速科技有限公司 椭圆曲线密码的高速点加运算方法和装置
CN111538480A (zh) * 2020-03-26 2020-08-14 郑州信大捷安信息技术股份有限公司 一种用于椭圆曲线密码的倍点运算方法及系统
CN112099760A (zh) * 2020-08-24 2020-12-18 清华大学 国密sm2算法中点加与倍点的单乘法器无缝调度方法
CN112685758A (zh) * 2020-12-31 2021-04-20 南方电网科学研究院有限责任公司 基于椭圆曲线加密算法的数据加密系统
CN113010142A (zh) * 2021-03-23 2021-06-22 广州万协通信息技术有限公司 一种新型脉动结点式标量点乘的双域实现系统及方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102186170A (zh) * 2010-11-24 2011-09-14 北京天融信科技有限公司 一种无线传感器网络的密钥管理方法及装置
CN103078732A (zh) * 2013-01-08 2013-05-01 武汉大学 一种素域椭圆曲线加密的点乘加速电路
CN104579651A (zh) * 2013-10-28 2015-04-29 上海复旦微电子集团股份有限公司 椭圆曲线密码点乘运算的方法和装置
US20160134417A1 (en) * 2014-11-10 2016-05-12 Umm Al-Qura University Method for efficiently protecting elliptic curve cryptography against simple power analysis attacks
EP3125145A1 (en) * 2015-07-31 2017-02-01 Nxp B.V. White-box elliptic curve point multiplication
CN108650087A (zh) * 2018-05-16 2018-10-12 广东工业大学 一种二进制域F2m下的SM2椭圆曲线签名点乘加密方法
CN110460443A (zh) * 2019-08-09 2019-11-15 南京秉速科技有限公司 椭圆曲线密码的高速点加运算方法和装置
CN111538480A (zh) * 2020-03-26 2020-08-14 郑州信大捷安信息技术股份有限公司 一种用于椭圆曲线密码的倍点运算方法及系统
CN112099760A (zh) * 2020-08-24 2020-12-18 清华大学 国密sm2算法中点加与倍点的单乘法器无缝调度方法
CN112685758A (zh) * 2020-12-31 2021-04-20 南方电网科学研究院有限责任公司 基于椭圆曲线加密算法的数据加密系统
CN113010142A (zh) * 2021-03-23 2021-06-22 广州万协通信息技术有限公司 一种新型脉动结点式标量点乘的双域实现系统及方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
URBANO-MOLANO F A 等: "Design of an elliptic curve crypto processor using optimal normal basis over GF(2233)", 2013IEEE FOURTH LATIN AMERICAN SYMPOSIUM ON CIRCUITS AND SYSTEMS *
陈俊杰等: "基于FPGA的ECC快速算法研究及设计", 《微电子学与计算机》 *
陈光化等: "基于GF(2~m)上椭圆曲线点乘的实现", 《微电子学与计算机》 *
陶然等: "椭圆曲线密码体制中点乘的快速算法", 《北京理工大学学报》 *
龚亮;: "基于GF(p)椭圆曲线加密的点乘实现方案", 大众科技 *

Also Published As

Publication number Publication date
CN113472540B (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
CN112199707B (zh) 一种同态加密中的数据处理方法、装置以及设备
CN110768785B (zh) 一种编、解码方法、相关装置及计算机设备
CN112075050A (zh) 在完全同态加密的自举中启用恒定明文空间
CN110519058A (zh) 一种对于基于格的公钥加密算法的加速方法
JP2008293034A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
CN107154851A (zh) 一种数据加密和解密的方法及装置
CN103761068A (zh) 优化的蒙哥马利模乘方法、模平方方法和模乘硬件
CN108875416B (zh) 椭圆曲线多倍点运算方法和装置
CN106330424B (zh) 基于sm3算法的密码模块的防攻击方法及装置
CN117972761B (zh) 基于国密sm2算法的数据处理方法以及装置
Chen et al. Integer arithmetic over ciphertext and homomorphic data aggregation
CN117692126A (zh) 一种基于低复杂度模乘算法的Paillier同态加密方法及系统
WO2001076131A1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
CN113472540A (zh) 生成密文的方法、装置、电子设备及存储介质
CN112737778A (zh) 数字签名生成、验证方法及装置、电子设备及存储介质
CN116225369A (zh) Sm2算法标量乘运算优化方法及系统
CN109559269A (zh) 一种图像加密的方法及终端
CN104579651A (zh) 椭圆曲线密码点乘运算的方法和装置
JP2001285277A (ja) 暗号生成装置、暗号生成プログラムを使用する電子機器、記憶媒体、暗号文復号装置
CN110071927B (zh) 一种信息加密方法、系统及相关组件
CN110233727A (zh) 一种sm2运算方法、系统、设备及计算机存储介质
CN106330443B (zh) 一种基于sm3算法的密码模块的防攻击方法及装置
CN118233081B (zh) 一种基于neon指令集的国密sm2底层模乘优化方法
CN114363658B (zh) 一种音视频流加密传输的方法和装置

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