CN112202568A - 软硬件协同设计sm9数字签名通信方法和系统 - Google Patents

软硬件协同设计sm9数字签名通信方法和系统 Download PDF

Info

Publication number
CN112202568A
CN112202568A CN202011072252.7A CN202011072252A CN112202568A CN 112202568 A CN112202568 A CN 112202568A CN 202011072252 A CN202011072252 A CN 202011072252A CN 112202568 A CN112202568 A CN 112202568A
Authority
CN
China
Prior art keywords
digital signature
signature
order
hardware
domain
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
CN202011072252.7A
Other languages
English (en)
Other versions
CN112202568B (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.)
Tianjin University
Original Assignee
Tianjin University
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 Tianjin University filed Critical Tianjin University
Priority to CN202011072252.7A priority Critical patent/CN112202568B/zh
Publication of CN112202568A publication Critical patent/CN112202568A/zh
Application granted granted Critical
Publication of CN112202568B publication Critical patent/CN112202568B/zh
Expired - Fee Related 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
    • H04L9/3252Cryptographic 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
    • 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/3026Public 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 details relating to polynomials generation, e.g. generation of irreducible polynomials
    • 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
    • H04L9/3073Public 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 involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing

Landscapes

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

Abstract

本发明涉及通信安全技术领域,为在遵循国密SM9数字签名标准的前提下,提出一种实用高效的基于嵌入式片上系统(SOC)的软硬件协同实现的数字签名系统,本发明软硬件协同设计SM9数字签名通信系统和方法,包括软件实现模块和硬件实现模块,用以实现基于椭圆曲线建立的SM9数字签名协议,其中,硬件实现模块中,设置一个双线性对运算硬件加速模块实现双线性对的运算,设置一阶标量乘硬件加速模块实现签名过程中的标量乘运算;软件实现模块中,设置密码函数H1()H2()用于实现签名算法中的密码函数部分,设置十二阶扩域下幂运算实现幂的运算。软硬件协同设计SM9数字签名通信方法。本发明主要应用于设计制造场合。

Description

软硬件协同设计SM9数字签名通信方法和系统
技术领域
本发明涉及通信安全技术领域,具体涉及软硬件协同设计SM9数字签名通信方法和装置。
背景技术
长久以来,我国都极度依赖从国外引进的加密方案,直接从国外采购相关产品,这无疑存在很多不可控的安全隐患。SM9数字签名方案是在2016年由我国国家密码管理局发布的一种标识密码标准,其技术方案完全自主可控具有极高的研究价值。SM9数字签名方案是一种非对称密码协议,是目前保障信息安全的主要手段之一,在当前密码研究领域中具有十分重要的地位。
非对称密码体系又称公钥密码体系,采用设置一对不同的密钥的方案,这一对密钥分别被称为公钥和私钥。其中公钥公开,私钥由接受信息方保存,发送方利用公开的公钥进行加密,接受方用自己持有的私钥进行解密。SM9密码协议是基于椭圆曲线建立,其安全性基于椭圆曲线的离散对数问题。SM9数字签名算法中包含双线性对(pairing)、
Figure BDA0002715462280000011
次扩域下幂运算、
Figure BDA0002715462280000012
次扩域下的标量乘运算等一系列运算流程。基于上述计算,相较于以往的公钥密码协议具有更强的安全性保证。
非对称密码协议虽然算法复杂度高、计算难度大,但省去了在安全信道进行协商密钥的过程。但是传统的公钥密码体系往往需要借助证书颁发机构(CA)作为可信第三方,负责用户公钥证书的生成、保管、维护、撤销等环节。这将耗费大量的计算和存储资源,同时也带来了密钥托管和用户私钥的可信性问题。2001年,Boneh和Franklin利用双线性对成功地设计了一个基于身份的加密方案(IBE),基于双线性对的公钥密码协议摆脱了需要借助第三方可信机构进行密钥托管的问题。SM9密码协议同样采用了这种基于身份的加密方案,因此其是一种具有极强优越性的加密方案。
SM9公钥密码协议虽然具有以上的优点,但是其计算量相较于以往的公钥密码协议更大,且涉及到有限域和椭圆曲线等多个数学领域的研究内容,这些极大的制约着双线性对加密技术进一步发展和应用。2004年Miller算法的应用使得双线性对的计算复杂度大幅度降低,此后很多研究人员基于Miller算法进行了大量的研究和优化,使得基于双线性对的公钥加密方案可以应用到实际的领域内。
SM9密码协议的提出弥补了我国密码安全领域的空缺,是一款真正的由我国完全自主可控加密方案并且具有极其强大的抗攻击能力。可以预见其必将会在智能终端、物联网、大数据和云存储等安全领域大显身手,并逐渐成为我国信息安全保护的核心手段。因此,针对SM9密码协议进行研究,对相关算法进行优化,设计高效可靠的系统,提出相应的抗攻击手段,具有重要的价值和广阔的发展前景。
发明内容
为克服现有技术的不足,本发明旨在在遵循国密SM9数字签名标准的前提下,针对BN曲线设计一种实用高效的基于嵌入式片上系统(SOC)的软硬件协同实现的数字签名系统,为高效快速地执行SM9数字签名算法提供一种有效的解决方案。本发明采取的技术方案是,软硬件协同设计SM9数字签名通信方法,步骤如下:
(1)密码生成中心产生公钥、私钥
密码生成中心产生随机数ks∈[1,N-1]作为签名主私钥,计算
Figure BDA0002715462280000021
中的元素Ppub-s作为签名主公钥,则签名主密钥对为(ks,Ppub-s),密码生成中心保存ks,公开Ppub-s
密码生成中心选择并公开用一个字节表示的签名私钥并生成函数识别符hid;
用户A的标识为IDA,为产生用户A的签名私钥dsA,密码生成中心首先在有限域FN上计算t1=H1(IDA||hid,N)+ks,若t1=0则需重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则计算t2=ks·t1 -1,然后计算dsA=[t2]P1;签名主私钥对为(ks,dsA);
(2)数字签名生成算法
待签名的消息为比特串M,为了得到消息M的数字签名(h,S),作为签名者的用户A要实现的计算步骤如下:
步骤1):通过双线性对运算计算群
Figure BDA0002715462280000022
中的元素g=e(P1,Ppub-s);
步骤2):产生随机数r∈[1,N-1];
步骤3):十二阶域模幂运算计算群
Figure BDA00027154622800000210
中的元素w=gr,将w转换为比特串;
步骤4):计算整数h=H2(M||w,N),H2()为定义好的辅助密码函数;
步骤5):计算整数l=(r-h)mod N,若l=0则返回第二步;
步骤6):一阶标量乘运算调用设计的专用硬件加速器计算群
Figure BDA0002715462280000023
中的元素S=[l]dsA
步骤7):将h和S转换为字节串,得到消息M的签名(h,S);
(3)数字签名验证算法
为了检验收到的消息M′及其数字签名(h′,S′),作为验证者的用户B应实现以下的运算步骤:
步骤1):按一定规则将h′的数据类型转换为整数,检验h′∈[1,N-1]是否成立,若不成立则验证不通过;
步骤2):将S′的数据类型转换为椭圆曲线上的点,按照规则检验
Figure BDA0002715462280000024
是否成立,若不成立则验证不通过;
步骤3):双线性对运算调用设计的专用硬件加速器计算群
Figure BDA0002715462280000025
中的元素g=e(P1,Ppub-s)
步骤4):十二阶域模幂运算计算群
Figure BDA0002715462280000026
中的元素t=gh′
步骤5):计算整数h1=H1(IDA||hid,N)
步骤6):计算群
Figure BDA0002715462280000027
中的元素P=[h1]P2+Ppub-s
步骤7):双线性对运算调用设计的专用硬件加速器计算群
Figure BDA0002715462280000028
中的元素u=e(S′,P)
步骤8):计算群
Figure BDA0002715462280000029
中的元素w′=u·t,按照一定的规则将w′的数据类型转换为比特串
步骤9):计算整数h2=H2(M′||w′,N),检验h2=h′是否成立,若成立则验证通过;否则验证不通过。
参数选择如下:
SM9数字签名是基于256位BN曲线上的运算完成完整的数字签名方案,保证签名过程中所有的运算都在有限域下进行,选择的BN曲线为以下方程所示的一组椭圆曲线:
E:y2=x3+b(b≠0);
其中,x,y分别代表椭圆曲线的横纵坐标,b为自定义的参数。构造BN曲线的主要参数包括有限域的特征p(t),r次扰点群的阶r(t)以及frobenius映射的迹(trace)tr(t),这些都可以表示为参数t的函数:
q(t)=36t4+36t3+24t2+6t+1
N(t)=36t4+36t3+18t2+6t+1
tr(t)=6t2+1
该族椭圆曲线的嵌入次数k=12,因此在数字签名中使用的R-ate pairing算法需要在十二阶扩域中运算,通过三次有限域的扩展完成从素域到十二阶扩域的塔式扩张,α、ξ、v为对应的扩张系数,其有限域的扩展方式为:
Figure BDA0002715462280000031
Figure BDA0002715462280000032
Figure BDA0002715462280000033
(a)将素域扩展为二次扩域,约化多项式为:x2-α,α=-2;
(b)将二次扩域扩展为四次扩域,约化多项式为:x2-u,u2=α;
(c)将四次扩域扩展为十二次扩域,约化多项式为:x3-v,v2=u;
通过上述扩域方式,得到不同域下的值的表示方式,而不同域下的值又形成坐落于不同坐标系下的点,主体部分通过仿射坐标系实现椭圆曲线上点的表示,在双线性对运算模块使用雅各比坐标系表示,并通过转换函数进行数值的换算,所有在SM9数字签名算法运算中的点必须坐落于已经构造出的BN曲线上。
其中,密码函数H1的运算过程均按照SM9密码行业标准中定义进行运算,密码函数H1中需要使用密码杂凑函数选用由国家密码管理局批准的密码杂凑函数:SM3密码杂凑函数,该函数将输入的长度小于264的消息比特串进行运算输出一个长度为256比特的杂凑值,密码函数H1调用SM3密码杂凑函数实现将输入的比特串Z和整数n进行运算输出一个整数h参与后续的运算;
一阶标量乘算法一级标量乘模块的运算过程在映射坐标系中由点加和点倍运算实现:
点倍的计算公式为:设
Figure BDA0002715462280000034
且y1≠0,P3=(x3,y3)=P1+P1,则
Figure BDA0002715462280000035
其中,λ=(3x1 2+a)/(2y1);
点加的计算公式为:设
Figure BDA0002715462280000036
且x1≠x2,设P3=(x3,y3)=P1+P2,则
Figure BDA0002715462280000041
其中,λ=(y2-y1)/(x2-x1);
通过SM9密码行业标准中定义多倍点公式实现一级标量乘运算;
由此,密码生成中心生成签名主公钥Ppub-s并将其公开,生成签名主私钥dsA将其保存以便进行验证。
数字签名生成过程中,步骤中1)的双线性对为设计的专用硬件加速模块,双线性对的计算时选用R-ate对完成相应的计算,使用R-ate对进行双线性对计算的完整算法参照SM9密码行业标准中的定义,其加密公钥P=(Px,Py)为BN曲线上素域有理点群G1中的点,私钥Q=(X1,Y1,Z1)属于BN曲线上二阶有限域有理点群G2中的点;
整个pairing运算过程在雅各比坐标系中由以下运算构成:点倍与直线函数、点加与直线函数、Frobenius映射到p次幂、Frobenius映射到p2次幂、Frobenius映射到p3次幂,其中,点倍与直线函数计算公式为
Figure BDA0002715462280000042
Figure BDA0002715462280000043
LT,T(P)坐标用(X2,Y2,Z2)。
点倍与直线函数计算公式为
Figure BDA0002715462280000044
Figure BDA0002715462280000045
LT,T(P)坐标用(X3,Y3,Z3)。
Frobenius映射到p次幂计算公式为
Figure BDA0002715462280000046
Frobenius映射到p2次幂计算公式为
Figure BDA0002715462280000047
Frobenius映射到p3次幂计算公式为
Figure BDA0002715462280000048
Figure BDA0002715462280000049
为对应扩域下素数的共轭值,δ1,5、δ1,2、δ1,4、δ1,1、δ1,3等为提前定义好的参数。
软硬件协同设计SM9数字签名通信装置,包括软件实现模块和硬件实现模块,用以实现基于椭圆曲线建立的SM9数字签名协议,进行双线性对运算、
Figure BDA00027154622800000410
次扩域下幂运算、一阶以及二阶扩域下的标量乘运算、密码函数运算;其中,硬件实现模块中,设置一个双线性对运算硬件加速模块实现双线性对的运算,设置一阶标量乘硬件加速模块实现签名过程中的标量乘运算;软件实现模块中,设置密码函数H1()H2()用于实现签名算法中的密码函数部分,设置十二阶扩域下幂运算实现幂的运算。
模加减模块:设
Figure BDA0002715462280000051
模加/减即计算C=(A±B)mod P的值,共有四种情况:如果是模加,则C=A+B或C=A+B-P;如果是模减,则C=A-B或C=A-B+P,利用一个3-2压缩器,将三个操作数压缩为两个操作数输入加法器;
模乘模块:为了避免除法,
Figure BDA0002715462280000052
上的模乘运算采用蒙哥马利模乘来代替,Montgomery模乘即:Mont(X,Y)=X*Y*R-1mod P,其中R=2k,k为P的位数,其核心思想是将对P的取模运算转化为对R的取模和除法运算,这样在执行的过程中就只需要简单的截取和移位操作,具体使用两个计算单元计算通用表达式(c,z)=z+xy+c,取m=4,n=64,则将操作数分成4段,计算单元完成64位乘加运算,总共需要29个时钟周期;
Figure BDA0002715462280000053
运算模块由模加/减计算单元和模乘计算单元组成,由上述两个模块组成素域运算单元,有了底层
Figure BDA0002715462280000054
计算单元之后,以之为基础设计
Figure BDA0002715462280000055
计算单元,
Figure BDA0002715462280000056
上的基本运算同样包括模加/减,模乘和模逆,与
Figure BDA0002715462280000057
上不同的是,这些运算都是基于多项式规则来定义的,
Figure BDA0002715462280000058
上的模加/减运算由两个独立的
Figure BDA0002715462280000059
上的模加/减运算组成,即
A±B=(a1±b1)u+(a0±b0)
是由两个
Figure BDA00027154622800000510
单元并行完成;
Figure BDA00027154622800000511
上的模乘运算公式为
A*B=(a1u+a0)(b1u+b0)
=(a1b0+a0b1)u+(αa1b1+a0b0)
这里的a0、b0、a1、b1均为一阶素域
Figure BDA00027154622800000512
上的值,根据SM9中的塔式扩张机制,这里的α=-2,将αa1b1替换成-(a1b1+a1b1),于是模乘运算包含4个独立的
Figure BDA00027154622800000513
乘法和3个
Figure BDA00027154622800000514
加减法,也可由两个独立的
Figure BDA00027154622800000515
单元并行完成,因此其底层封装了两个
Figure BDA00027154622800000516
模块;
双线性对的硬件模块采用并行化设计,因此下含两个相同的
Figure BDA00027154622800000517
计算单元。模逆运算使用扩展欧几里得算法转换成一系列模加/减和模乘运算。
软硬件协同设计SM9数字签名通信系统,包括密码生成中心、FPGA及其内存,密码生成中心产生公钥、私钥;所述内存中存储并在FPGA中运行数字签名生成算法程序、数字签名验证算法,程序步骤如下:
(1)数字签名生成算法
待签名的消息为比特串M,为了得到消息M的数字签名(h,S),作为签名者的用户A要实现的计算步骤如下:
步骤1):通过双线性对运算计算群
Figure BDA00027154622800000518
中的元素g=e(P1,Ppub-s);
步骤2):产生随机数r∈[1,N-1];
步骤3):十二阶域模幂运算计算群
Figure BDA00027154622800000519
中的元素w=gr,将w转换为比特串;
步骤4):计算整数h=H2(M||w,N),H2()为定义好的辅助密码函数;
步骤5):计算整数l=(r-h)mod N,若l=0则返回第二步;
步骤6):一阶标量乘运算调用设计的专用硬件加速器计算群
Figure BDA0002715462280000061
中的元素S=[l]dsA
步骤7):将h和S转换为字节串,得到消息M的签名(h,S);
(2)数字签名验证算法
为了检验收到的消息M′及其数字签名(h′,S′),作为验证者的用户B应实现以下的运算步骤:
步骤1):按一定规则将h′的数据类型转换为整数,检验h′∈[1,N-1]是否成立,若不成立则验证不通过;
步骤2):将S′的数据类型转换为椭圆曲线上的点,按照规则检验
Figure BDA0002715462280000062
是否成立,若不成立则验证不通过;
步骤3):双线性对运算调用设计的专用硬件加速器计算群
Figure BDA0002715462280000063
中的元素g=e(P1,Ppub-s)
步骤4):十二阶域模幂运算计算群
Figure BDA0002715462280000064
中的元素t=gh′
步骤5):计算整数h1=H1(IDA||hid,N)
步骤6):计算群
Figure BDA0002715462280000065
中的元素P=[h1]P2+Ppub-s
步骤7):双线性对运算调用设计的专用硬件加速器计算群
Figure BDA0002715462280000066
中的元素u=e(S′,P)
步骤8):计算群
Figure BDA0002715462280000067
中的元素w′=u·t,按照一定的规则将w′的数据类型转换为比特串
步骤9):计算整数h2=H2(M′||w′,N),检验h2=h′是否成立,若成立则验证通过;否则验证不通过。
本发明的特点及有益效果是:
本发明遵循国密SM9数字签名协议,在现场可编程门阵列(FPGA)平台上实现了SM9数字签名系统的签名和认证过程,均达到较好的实验结果。本发明采用了软硬件协同设计的方法,所述双线性对实现装置采用并行化设计,极大提高了提高运算速度;所述一阶素域下标量乘采用了并行化设计和防御措施,提高运算速度的同时具有一定的抗侧信道攻击的作用。采用软件进行硬件模块的调用的同时完成整体签名算法。操作简单,易于实现,有很大的实用价值。
附图说明:
图1SM9数字签名算法签名过程。
图2模加减运算模块架构
图3模乘运算模块架构。
图4
Figure BDA0002715462280000068
运算模块架构。
图5双线性对运算模块架构。
图6一阶素域标量乘运算模块架构
图7SM9数字签名算法认证过程。
图8基于Microblaze的片上系统。
具体实施方式
为克服现有技术的不足,本发明旨在在遵循国密SM9数字签名标准的前提下,针对BN曲线设计一种实用高效的基于SOC嵌入式的软硬件协同实现的数字签名系统。程序整体运行在FPGA开发板上,软件部分存储在FPGA开发板的板上内存中,硬件部分由FPGA开发板中逻辑单元构建,利用JTAG接口与主机相连,主机将需要签名或者认证信息通过接口传送给FPGA,FPGA进行运算并将结果返回给PC。用硬件模块能显著提高计算效率,降低功耗,增加密码模块的抗攻击性能。软件部分完成对硬件模块的调用,并对算法其他部分进行实现。两者结合,为高效快速地执行SM9数字签名算法提供了一种有效的解决方案。
本发明设计了一种基于软硬件协同设计实现的SM9数字签名方案。方案遵循国密SM9数字签名算法的标准,使用了Barreto–Naehrig(BN)曲线作为参数曲线,数据位宽采用256比特,双线性对采用R-ate pairing加密算法。在该装置中,1)提出了一种基于软硬件协同实现SM9数字签名方案的运算系统,按协议要求完成签名的生成和验证过程2)设计了一种双线性对的并行实现装置,完成数字签名协议中的双线性对运算。3)设计一种基于蒙哥马利阶梯算法的一阶标量乘并行实现装置,完成数字签名协议中的双线性对运算。所述实现装置的软件部分,完成对硬件部分的调度并完成其余运算,针对其中部分算法进行相关优化。所述实现装置的硬件部分设计了双线性对运算和标量乘运算设计了高效的专用硬件加速器。
下面结合附图及实例,对本发明进行进一步详细说明。应该指出,此处所描述的具体实施实例仅仅用以解释本发明,并不用于限定本发明。为了使本发明的目的、技术方案和优点更加清晰,本实例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。
(1)参数选择
本发明是基于256位BN曲线上的运算完成完整的数字签名方案,保证签名过程中所有的运算都在有限域下进行。参数的选择对整个SM9数字签名算法的计算效率和安全性具有十分重要的影响。本发明选择的BN曲线为以下方程所示的一组椭圆曲线:
E:y2=x3+b(b≠0);
构造BN曲线的主要参数包括有限域的特征p(t),r次扰点群的阶r(t)以及frobenius映射的迹(trace)tr(t),这些都可以表示为参数t的函数:
q(t)=36t4+36t3+24t2+6t+1
N(t)=36t4+36t3+18t2+6t+1
tr(t)=6t2+1
该族椭圆曲线的嵌入次数k=12,因此在数字签名中使用的R-ate pairing算法需要在十二阶扩域中运算。本发明所选算法通过三次有限域的扩展完成从素域到十二阶扩域的塔式扩张,其有限域的扩展方式为:
Figure BDA0002715462280000071
Figure BDA0002715462280000072
Figure BDA0002715462280000073
(a)将素域扩展为二次扩域,约化多项式为:x2-α,α=-2;
(b)将二次扩域扩展为四次扩域,约化多项式为:x2-u,u2=α;
(c)将四次扩域扩展为十二次扩域,约化多项式为:x3-v,v2=u;
通过上述扩域方式,可以得到不同域下的值的表示方式,而不同域下的值又可以形成坐落于不同坐标系下的点。本发明主体部分通过仿射坐标系实现椭圆曲线上点的表示,在双线性对运算模块使用雅各比坐标系表示,并通过转换函数进行数值的换算。所有在SM9数字签名算法运算中的点必须坐落于已经构造出的BN曲线上。
此外,还运算时需要给定方程参数b,群
Figure BDA0002715462280000081
的生成元
Figure BDA0002715462280000088
Figure BDA0002715462280000082
的生成元
Figure BDA0002715462280000089
等初始参数来进行运算。
(2)密码生成中心生成公钥、私钥
密码生成中心(KGC)通过随机数生成器产生随机数ks∈[1,N-1]作为签名主私钥,计算
Figure BDA0002715462280000083
中的元素Ppub-s作为签名主公钥,则签名主密钥对为(ks,Ppub-s)。密码生成中心保存ks,公开Ppub-s
密码生成中心选择并公开用一个字节表示的签名私钥并生成函数识别符hid。
用户A的标识为IDA,为产生用户A的签名私钥dsA,密码生成中心首先在有限域FN上通过计算t1=H1(IDA||hid,N)+ks,若t1=0则需重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则计算t2=ks·t1 -1,然后通过软件实现一阶标量乘算法计算dsA=[t2]P1作为私钥保存。
其中,密码函数H1的运算过程均按照SM9密码行业标准中定义进行运算。密码函数H1中需要使用密码杂凑函数选用由国家密码管理局批准的密码杂凑函数:SM3密码杂凑函数。该函数将输入的长度小于264的消息比特串进行运算输出一个长度为256比特的杂凑值。密码函数H1调用SM3密码杂凑函数实现将输入的比特串Z和整数n进行运算输出一个整数h参与后续的运算。
一阶标量乘算法一级标量乘模块的运算过程在映射坐标系中由点加和点倍运算实现。
点倍的计算公式为:设
Figure BDA0002715462280000084
且y1≠0,P3=(x3,y3)=P1+P1,则
Figure BDA0002715462280000085
其中,λ=(3x1 2+a)/(2y1);
点加的计算公式为:设
Figure BDA0002715462280000086
且x1≠x2,设P3=(x3,y3)=P1+P2,则
Figure BDA0002715462280000087
其中,λ=(y2-y1)/(x2-x1);
通过SM9密码行业标准中定义多倍点公式实现一级标量乘运算。
由此,密码生成中心生成签名主公钥Ppub-s并将其公开,生成签名主私钥dsA将其保存以便进行验证。
(3)数字签名生成过程
SM9数字签名生成(图1)运算过程如下:
待签名的消息为比特串M,为了得到消息M的数字签名(h,S),作为签名者的用户A要实现的计算步骤如下:
步骤1):双线性对运算采用硬件加速器计算群
Figure BDA0002715462280000091
中的元素g=e(P1,Ppub-s);
步骤2):产生随机数r∈[1,N-1];
步骤3):十二阶域模幂运算计算群
Figure BDA0002715462280000092
中的元素w=gr,将w转换为比特串;
步骤4):计算整数h=H2(M||w,N),H2()为定义好的辅助密码函数;
步骤5):计算整数l=(r-h)mod N,若l=0则返回第二步;
步骤6):一阶标量乘运算采用硬件加速器计算群
Figure BDA0002715462280000093
中的元素S=[l]dsA
步骤7):将h和S转换为字节串,得到消息M的签名(h,S);
其中,步骤中1)的双线性对为设计的专用硬件加速模块,双线性对的计算时选用R-ate对完成相应的计算。使用R-ate对进行双线性对计算的完整算法参照SM9密码行业标准中的定义,其加密公钥P为BN曲线上素域有理点群G1中的点,私钥Q属于BN曲线上二阶有限域有理点群G2中的点。
整个pairing运算过程在雅各比坐标系中由以下运算构成:点倍与直线函数、点加与直线函数、Frobenius映射到p次幂、Frobenius映射到p2次幂、Frobenius映射到p3次幂。其中,点倍与直线函数计算公式为
Figure BDA0002715462280000094
Figure BDA0002715462280000095
点倍与直线函数计算公式为
Figure BDA0002715462280000096
Figure BDA0002715462280000097
Frobenius映射到p次幂计算公式为
Figure BDA0002715462280000101
Frobenius映射到p2次幂计算公式为
Figure BDA0002715462280000102
Frobenius映射到p3次幂计算公式为
Figure BDA0002715462280000103
以上公式是基于二阶有限域
Figure BDA0002715462280000104
下的运算进行,因此我们按照以下方式设计
Figure BDA0002715462280000105
的运算来实现双线性对的运算过程:
模加减模块:设
Figure BDA0002715462280000106
模加(减)即计算C=(A±B)mod P的值,共有四种情况:如果是模加,则C=A+B或C=A+B-P;如果是模减,则C=A-B或C=A-B+P。加了一个3-2压缩器,将三个操作数压缩为两个操作数输入加法器。
Figure BDA0002715462280000107
上的模加(减)计算单元的硬件架构如图2所示。
模乘模块:为了避免除法,
Figure BDA0002715462280000108
上的模乘运算采用蒙哥马利(Montgomery)模乘来代替。Montgomery模乘即:Mont(X,Y)=X*Y*R-1mod P,其中R=2k,k为P的位数,其核心思想是将对P的取模运算转化为对R的取模和除法运算,这样在执行的过程中就只需要简单的截取和移位操作,非常适合硬件实现。使用两个计算单元计算通用表达式(c,z)=z+xy+c,取m=4,n=64,则将操作数分成4段,计算单元完成64位乘加运算,总共需要29个时钟周期。
Figure BDA0002715462280000109
上的模乘计算单元的硬件架构如图3所示。
Figure BDA00027154622800001010
运算模块由模加(减)计算单元和模乘计算单元组成。由上述两个模块组成素域运算单元,有了底层
Figure BDA00027154622800001011
计算单元之后,就可以以此为基础设计
Figure BDA00027154622800001012
计算单元。
Figure BDA00027154622800001013
上的基本运算同样包括模加(减),模乘和模逆,与
Figure BDA00027154622800001014
上不同的是,这些运算都是基于多项式规则来定义的。
Figure BDA00027154622800001015
上的模加(减)运算由两个独立的
Figure BDA00027154622800001016
上的模加(减)运算组成,即
A±B=(a1±b1)u+(a0±b0)
可以很容易地由两个
Figure BDA00027154622800001017
单元并行完成。
Figure BDA00027154622800001018
上的模乘运算公式为
A*B=(a1u+a0)(b1u+b0)
=(a1b0+a0b1)u+(αa1b1+a0b0)
这里的a0、b0、a1、b1均为一阶素域
Figure BDA00027154622800001019
上的值。根据SM9中的塔式扩张机制,这里的α=-2,可以将αa1b1替换成-(a1b1+a1b1),于是模乘运算包含4个独立的
Figure BDA00027154622800001020
乘法和3个
Figure BDA00027154622800001021
加减法,也可由两个独立的
Figure BDA00027154622800001022
单元并行完成。因此其底层封装了两个
Figure BDA00027154622800001023
模块,硬件架构如图4所示。
双线性对的硬件模块采用并行化设计,因此下含两个相同的
Figure BDA00027154622800001024
计算单元。模逆运算可以使用扩展欧几里得算法转换成一系列模加(减)和模乘运算。以上计算公式均设计为专用硬件模块进行实现,双线性对的硬件模块架构如图5所示。
步骤2)中的随机数r由专门的随机数生成器产生。
步骤3)中十二阶域模幂运算由软件按照塔式扩域方式实现,按照上文提到的
Figure BDA0002715462280000111
运算公式继续进行拓展,
Figure BDA0002715462280000112
上的模加(减)运算公式为
A±B=(a1±b1)v+(a0±b0)
Figure BDA0002715462280000113
上的模乘运算公式为
A*B=(a1v+a0)(b1v+b0)
=(a1b0+a0b1)v+(βa1b1+a0b0)
这里的a0、b0、a1、b1均为二阶有限域
Figure BDA0002715462280000114
上的值。根据SM9中的塔式扩张机制,这里的
Figure BDA0002715462280000115
然后
Figure BDA0002715462280000116
运算公式继续进行拓展,
Figure BDA0002715462280000117
上的模加(减)运算公式为
A±B=(a2±b2)w2+(a1±b1)w+(a0±b0)
Figure BDA0002715462280000118
上的模乘运算公式为
A*B=(a0+a1w+a2w2)(b0+b1w+b2w2)
=[(a1+a2)*(b1+b2)-a1*b1-a2*b2]*γ+a0*b0
+[(a0+a1)(b0+b1)-a0*b0-a1*b1+γ*a2*b2]w
+[(a0+a2)(b0+b2)-a0*b0-a2*b2+a1*b1]w2
这里的a0、b0、a1、b1、a2、b2均为二阶有限域
Figure BDA0002715462280000119
上的值。根据SM9中的塔式扩张机制,这里的
Figure BDA00027154622800001110
Figure BDA00027154622800001111
上的模加(减)、模乘运算公式按照SM9密码行业标准中的定义通过软件实现十二阶有限域
Figure BDA00027154622800001112
下的模幂运算过程。将w转换为比特串按照SM9密码行业标准中定义进行运算。
步骤4)密码函数H2的运算过程均按照SM9密码行业标准定义进行运算。密码函数H2中需要使用密码杂凑函数选用由国家密码管理局批准的密码杂凑函数:SM3密码杂凑函数。该函数将输入的长度小于264的消息比特串进行运算输出一个长度为256比特的杂凑值。密码函数H2调用SM3密码杂凑函数实现将输入的比特串Z和整数n进行运算输出一个整数h参与后续的运算。
步骤5)通过一阶素域
Figure BDA00027154622800001113
模加(减)计算方式实现模减操作,并利用软件判断l是否为0;
步骤6)实现的一阶标量乘运算通过专门设计的硬件加速模块实现,该一级标量乘模块采用了蒙哥马利阶梯算法来进行防御侧信道攻击。本设计利用标量位在二级制下0、1的不同但采取相同的赋值操作的行为,防止标量位被能耗检测等手段分析出密钥位的方案。
一级标量乘模块的硬件模块同样采用并行化设计,因此下含两个相同的
Figure BDA0002715462280000121
计算单元。模逆运算可以使用扩展欧几里得算法转换成一系列模加(减)和模乘运算,由于在一级标量乘模块计算过程中只使用一次,所以没有将其单独做成一个硬件计算单元。一级标量乘模块的运算过程在映射坐标系中由点加和点倍运算实现。
点倍的计算公式为:设
Figure BDA0002715462280000122
且y1≠0,P3=(x3,y3)=P1+P1,则
Figure BDA0002715462280000123
其中,λ=(3x1 2+a)/(2y1);
点加的计算公式为:设
Figure BDA0002715462280000124
且x1≠x2,设P3=(x3,y3)=P1+P2,则
Figure BDA0002715462280000125
其中,λ=(y2-y1)/(x2-x1);
以上计算公式均设计为专用硬件模块进行实现,采用并行化设计,底层使用两个上文提到的一阶素域
Figure BDA0002715462280000126
下的运算模块,一阶标量乘的硬件模块架构如图6所示。
步骤7)中转换为字节串的方式按照SM9密码行业标准中的定义进行。
(4)数字签名验证过程
SM9数字签名验证(图2)运算过程如下:
为了检验收到的消息M′及其数字签名(h′,S′),作为验证者的用户B应实现以下的运算步骤:
步骤1):按一定规则将h′的数据类型转换为整数,检验h′∈[1,N-1]是否成立,若不成立则验证不通过;
步骤2):将S′的数据类型转换为椭圆曲线上的点,按照规则检验
Figure BDA0002715462280000127
是否成立,若不成立则验证不通过;
步骤3):双线性对运算采用硬件加速器计算群
Figure BDA0002715462280000128
中的元素g=e(P1,Ppub-s)
步骤4):十二阶有限域模幂运算计算群
Figure BDA0002715462280000129
中的元素t=gh′
步骤5):计算整数h1=H1(IDA||hid,N)
步骤6):计算群
Figure BDA00027154622800001210
中的元素P=[h1]P2+Ppub-s
步骤7):双线性对运算计算群
Figure BDA00027154622800001211
中的元素u=e(S′,P)
步骤8):计算群
Figure BDA00027154622800001212
中的元素w′=u·t,按照一定的规则将w′的数据类型转换为比特串
步骤9):计算整数h2=H2(M′||w′,N),检验h2=h′是否成立,若成立则验证通过;否则验证不通过;
其中,步骤1)中将h′的数据类型转换为整数的方式按照SM9密码行业标准中的定义进行。
使用函数方式判断h′是否位于规定的区间内,若条件符合则继续下面步骤;若不符合则验证不通过,验证过程结束。
步骤2)中S′的数据类型转换为椭圆曲线上的点的方式按照SM9密码行业标准中的定义进行。椭圆曲线为我们定义的BN曲线,若经判断
Figure BDA0002715462280000135
成立则继续下面步骤,若不符合则验证不通过,验证过程结束。
步骤3)中使用的双线性对硬件加速器与数字签名生成算法中所使用的完全相同,该硬件加速器完成该部分的运算。
步骤4)中十二阶有限域模幂运算同样与数字签名生成算法中所使用的完全相同,也在软件部分实现。
步骤5)中的密码函数H1与密码生成中心中使用的算法完全相同,也在软件部分实现。
步骤6)中涉及为二阶有限域下的标量乘运算和点加运算,而标量乘运算也是由点加点倍运算组成。一级标量乘模块的运算过程在映射坐标系中由点加和点倍运算实现。
点倍的计算公式为:设
Figure BDA0002715462280000131
且y1≠0,P3=(x3,y3)=P1+P1,则
Figure BDA0002715462280000132
其中,λ=(3x1 2+a)/(2y1);
点加的计算公式为:设
Figure BDA0002715462280000133
且x1≠x2,设P3=(x3,y3)=P1+P2,则
Figure BDA0002715462280000134
其中,λ=(y2-y1)/(x2-x1);
二阶有限域下的标量乘运算按照SM9密码行业标准中的定义进行。该部分不涉及敏感数据的运算,因此不需要采取相应保护措施防止侧信道攻击,使用软件实现。
步骤7)中的双线性对运算与步骤3),重复调用相应的硬件加速模块即可。
步骤8)十二阶有限域下的模乘运算方式参照数字签名生成算法中的定义,将w′的数据类型转换为比特串照照SM9密码行业标准中的定义进行。
步骤9)中的密码函数H2与数字签名生成过程中使用的算法完全相同,也在软件部分实现。对产生的结果进行比对,若相同则通过验证,否则验证失败。
(5)实现方式
本发明硬件部分使用Verilog HDL实现,软件部分使用C语言实现。根据SM9标准中的第五部分中提供测试用例的参数进行计算,并将输出的结果与测试用例进行对比。测试结果表明,FPGA加密系统的运行结果和SM9标准中的第五部分中提供测试用例一致,验证本发明的功能正确性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种软硬件协同设计SM9数字签名通信方法,其特征是,步骤如下:
(1)密码生成中心产生公钥、私钥
密码生成中心产生随机数ks∈[1,N-1]作为签名主私钥,计算
Figure FDA0002715462270000011
中的元素Ppub-s作为签名主公钥,则签名主密钥对为(ks,Ppub-s),密码生成中心保存ks,公开Ppub-s
密码生成中心选择并公开用一个字节表示的签名私钥并生成函数识别符hid;
用户A的标识为IDA,为产生用户A的签名私钥dsA,密码生成中心首先在有限域FN上计算t1=H1(IDA||hid,N)+ks,若t1=0则需重新产生签名主私钥,计算和公开签名主公钥,并更新已有用户的签名私钥;否则计算t2=ks·t1 -1,然后计算dsA=[t2]P1;签名主私钥对为(ks,dsA);
(2)数字签名生成算法
待签名的消息为比特串M,为了得到消息M的数字签名(h,S),作为签名者的用户A要实现的计算步骤如下:
步骤1):通过双线性对运算计算群
Figure FDA0002715462270000012
中的元素g=e(P1,Ppub-s);
步骤2):产生随机数r∈[1,N-1];
步骤3):十二阶域模幂运算计算群
Figure FDA0002715462270000013
中的元素w=gr,将w转换为比特串;
步骤4):计算整数h=H2(M||w,N),H2()为定义好的辅助密码函数;
步骤5):计算整数l=(r-h)mod N,若l=0则返回第二步;
步骤6):一阶标量乘运算调用设计的专用硬件加速器计算群
Figure FDA0002715462270000014
中的元素S=[l]dsA
步骤7):将h和S转换为字节串,得到消息M的签名(h,S);
(3)数字签名验证算法
为了检验收到的消息M′及其数字签名(h′,S′),作为验证者的用户B应实现以下的运算步骤:
步骤1):按一定规则将h′的数据类型转换为整数,检验h′∈[1,N-1]是否成立,若不成立则验证不通过;
步骤2):将S′的数据类型转换为椭圆曲线上的点,按照规则检验
Figure FDA0002715462270000015
是否成立,若不成立则验证不通过;
步骤3):双线性对运算调用设计的专用硬件加速器计算群
Figure FDA0002715462270000016
中的元素g=e(P1,Ppub-s)
步骤4):十二阶域模幂运算计算群
Figure FDA0002715462270000017
中的元素t=gh′
步骤5):计算整数h1=H1(IDA||hid,N)
步骤6):计算群
Figure FDA0002715462270000018
中的元素P=[h1]P2+Ppub-s
步骤7):双线性对运算调用设计的专用硬件加速器计算群
Figure FDA0002715462270000019
中的元素u=e(S′,P)
步骤8):计算群
Figure FDA00027154622700000110
中的元素w′=u·t,按照一定的规则将w′的数据类型转换为比特串
步骤9):计算整数h2=H2(M′||w′,N),检验h2=h′是否成立,若成立则验证通过;否则验证不通过。
2.如权利要求1所述的软硬件协同设计SM9数字签名通信方法,其特征是,参数选择如下:
SM9数字签名是基于256位BN曲线上的运算完成完整的数字签名方案,保证签名过程中所有的运算都在有限域下进行,选择的BN曲线为以下方程所示的一组椭圆曲线:
E:y2=x3+b(b≠0);
其中,x,y分别代表椭圆曲线的横纵坐标,b为自定义的参数。构造BN曲线的主要参数包括有限域的特征p(t),r次扰点群的阶r(t)以及frobenius映射的迹(trace)tr(t),这些都可以表示为参数t的函数:
q(t)=36t4+36t3+24t2+6t+1
N(t)=36t4+36t3+18t2+6t+1
tr(t)=6t2+1
该族椭圆曲线的嵌入次数k=12,因此在数字签名中使用的R-ate pairing算法需要在十二阶扩域中运算,通过三次有限域的扩展完成从素域到十二阶扩域的塔式扩张,α、ξ、v为对应的扩张系数,其有限域的扩展方式为:
(a)
Figure FDA0002715462270000021
(b)
Figure FDA0002715462270000022
(c)
Figure FDA0002715462270000023
(a)将素域扩展为二次扩域,约化多项式为:x2-α,α=-2;
(b)将二次扩域扩展为四次扩域,约化多项式为:x2-u,u2=α;
(c)将四次扩域扩展为十二次扩域,约化多项式为:x3-v,v2=u;
通过上述扩域方式,得到不同域下的值的表示方式,而不同域下的值又形成坐落于不同坐标系下的点,主体部分通过仿射坐标系实现椭圆曲线上点的表示,在双线性对运算模块使用雅各比坐标系表示,并通过转换函数进行数值的换算,所有在SM9数字签名算法运算中的点必须坐落于已经构造出的BN曲线上。
3.如权利要求1所述的软硬件协同设计SM9数字签名通信方法,其特征是,其中,密码函数H1的运算过程均按照SM9密码行业标准中定义进行运算,密码函数H1中需要使用密码杂凑函数选用由国家密码管理局批准的密码杂凑函数:SM3密码杂凑函数,该函数将输入的长度小于264的消息比特串进行运算输出一个长度为256比特的杂凑值,密码函数H1调用SM3密码杂凑函数实现将输入的比特串Z和整数n进行运算输出一个整数h参与后续的运算;
一阶标量乘算法一级标量乘模块的运算过程在映射坐标系中由点加和点倍运算实现:
点倍的计算公式为:设
Figure FDA0002715462270000024
且y1≠0,P3=(x3,y3)=P1+P1,则
Figure FDA0002715462270000025
其中,λ=(3x1 2+a)/(2y1);
点加的计算公式为:设
Figure FDA0002715462270000026
且x1≠x2,设P3=(x3,y3)=P1+P2,则
Figure FDA0002715462270000027
其中,λ=(y2-y1)/(x2-x1);
通过SM9密码行业标准中定义多倍点公式实现一级标量乘运算;
由此,密码生成中心生成签名主公钥Ppub-s并将其公开,生成签名主私钥dsA将其保存以便进行验证。
4.如权利要求3所述的软硬件协同设计SM9数字签名通信方法,其特征是,数字签名生成过程中,步骤中1)的双线性对为设计的专用硬件加速模块,双线性对的计算时选用R-ate对完成相应的计算,使用R-ate对进行双线性对计算的完整算法参照SM9密码行业标准中的定义,其加密公钥P=(Px,Py)为BN曲线上素域有理点群G1中的点,私钥Q=(X1,Y1,Z1)属于BN曲线上二阶有限域有理点群G2中的点;
整个pairing运算过程在雅各比坐标系中由以下运算构成:点倍与直线函数、点加与直线函数、Frobenius映射到p次幂、Frobenius映射到p2次幂、Frobenius映射到p3次幂,其中,点倍与直线函数计算公式为
Figure FDA0002715462270000031
Figure FDA0002715462270000032
LT,T(P)坐标用(X2,Y2,Z2)。
点倍与直线函数计算公式为
Figure FDA0002715462270000033
Figure FDA0002715462270000034
LT,T(P)坐标用(X3,Y3,Z3)。
Frobenius映射到p次幂计算公式为
Figure FDA0002715462270000035
Frobenius映射到p2次幂计算公式为
Figure FDA0002715462270000036
Frobenius映射到p3次幂计算公式为
Figure FDA0002715462270000037
Figure FDA0002715462270000038
为对应扩域下素数的共轭值,δ1,5、δ1,2、δ1,4、δ1,1、δ1,3等为提前定义好的参数。
5.一种软硬件协同设计SM9数字签名通信系统,其特征是,包括软件实现模块和硬件实现模块,用以实现基于椭圆曲线建立的SM9数字签名协议,进行双线性对运算、
Figure FDA0002715462270000039
次扩域下幂运算、一阶以及二阶扩域下的标量乘运算、密码函数运算;其中,硬件实现模块中,设置一个双线性对运算硬件加速模块实现双线性对的运算,设置一阶标量乘硬件加速模块实现签名过程中的标量乘运算;软件实现模块中,设置密码函数H1()H2()用于实现签名算法中的密码函数部分,设置十二阶扩域下幂运算实现幂的运算。
6.如权利要求5所述的软硬件协同设计SM9数字签名通信系统,其特征是,包模加减模块:设
Figure FDA0002715462270000041
模加/减即计算C=(A±B)mod P的值,共有四种情况:如果是模加,则C=A+B或C=A+B-P;如果是模减,则C=A-B或C=A-B+P,利用一个3-2压缩器,将三个操作数压缩为两个操作数输入加法器;
模乘模块:为了避免除法,
Figure FDA0002715462270000042
上的模乘运算采用蒙哥马利模乘来代替,Montgomery模乘即:Mont(X,Y)=X*Y*R-1mod P,其中R=2k,k为P的位数,其核心思想是将对P的取模运算转化为对R的取模和除法运算,这样在执行的过程中就只需要简单的截取和移位操作,具体使用两个计算单元计算通用表达式(c,z)=z+xy+c,取m=4,n=64,则将操作数分成4段,计算单元完成64位乘加运算,总共需要29个时钟周期;
Figure FDA0002715462270000043
运算模块由模加/减计算单元和模乘计算单元组成,由上述两个模块组成素域运算单元,有了底层
Figure FDA0002715462270000044
计算单元之后,以之为基础设计
Figure FDA0002715462270000045
计算单元,
Figure FDA0002715462270000046
上的基本运算同样包括模加/减,模乘和模逆,与
Figure FDA0002715462270000047
上不同的是,这些运算都是基于多项式规则来定义的,
Figure FDA0002715462270000048
上的模加/减运算由两个独立的
Figure FDA0002715462270000049
上的模加/减运算组成,即
A±B=(a1±b1)u+(a0±b0)
是由两个
Figure FDA00027154622700000410
单元并行完成;
Figure FDA00027154622700000411
上的模乘运算公式为
A*B=(a1u+a0)(b1u+b0)
=(a1b0+a0b1)u+(αa1b1+a0b0)
这里的a0、b0、a1、b1均为一阶素域
Figure FDA00027154622700000412
上的值,根据SM9中的塔式扩张机制,这里的α=-2,将αa1b1替换成-(a1b1+a1b1),于是模乘运算包含4个独立的
Figure FDA00027154622700000413
乘法和3个
Figure FDA00027154622700000414
加减法,也可由两个独立的
Figure FDA00027154622700000415
单元并行完成,因此其底层封装了两个
Figure FDA00027154622700000416
模块;
双线性对的硬件模块采用并行化设计,因此下含两个相同的
Figure FDA00027154622700000417
计算单元。模逆运算使用扩展欧几里得算法转换成一系列模加/减和模乘运算。
7.如权利要求5所述的软硬件协同设计SM9数字签名通信系统,其特征是,包括密码生成中心、FPGA及其内存,密码生成中心产生公钥、私钥;所述内存中存储并在FPGA中运行数字签名生成算法程序、数字签名验证算法,程序步骤如下:
(1)数字签名生成算法
待签名的消息为比特串M,为了得到消息M的数字签名(h,S),作为签名者的用户A要实现的计算步骤如下:
步骤1):通过双线性对运算计算群
Figure FDA00027154622700000418
中的元素g=e(P1,Ppub-s);
步骤2):产生随机数r∈[1,N-1];
步骤3):十二阶域模幂运算计算群
Figure FDA00027154622700000419
中的元素w=gr,将w转换为比特串;
步骤4):计算整数h=H2(M||w,N),H2()为定义好的辅助密码函数;
步骤5):计算整数l=(r-h)mod N,若l=0则返回第二步;
步骤6):一阶标量乘运算调用设计的专用硬件加速器计算群
Figure FDA00027154622700000420
中的元素S=[l]dsA
步骤7):将h和S转换为字节串,得到消息M的签名(h,S);
(2)数字签名验证算法
为了检验收到的消息M′及其数字签名(h′,S′),作为验证者的用户B应实现以下的运算步骤:
步骤1):按一定规则将h′的数据类型转换为整数,检验h′∈[1,N-1]是否成立,若不成立则验证不通过;
步骤2):将S′的数据类型转换为椭圆曲线上的点,按照规则检验
Figure FDA0002715462270000051
是否成立,若不成立则验证不通过;
步骤3):双线性对运算调用设计的专用硬件加速器计算群
Figure FDA0002715462270000052
中的元素g=e(P1,Ppub-s)
步骤4):十二阶域模幂运算计算群
Figure FDA0002715462270000053
中的元素t=gh′
步骤5):计算整数h1=H1(IDA||hid,N)
步骤6):计算群
Figure FDA0002715462270000054
中的元素P=[h1]P2+Ppub-s
步骤7):双线性对运算调用设计的专用硬件加速器计算群
Figure FDA0002715462270000055
中的元素u=e(S′,P)
步骤8):计算群
Figure FDA0002715462270000056
中的元素w′=u·t,按照一定的规则将w′的数据类型转换为比特串
步骤9):计算整数h2=H2(M′||w′,N),检验h2=h′是否成立,若成立则验证通过;否则验证不通过。
CN202011072252.7A 2020-10-09 2020-10-09 软硬件协同设计sm9数字签名通信方法和系统 Expired - Fee Related CN112202568B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011072252.7A CN112202568B (zh) 2020-10-09 2020-10-09 软硬件协同设计sm9数字签名通信方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011072252.7A CN112202568B (zh) 2020-10-09 2020-10-09 软硬件协同设计sm9数字签名通信方法和系统

Publications (2)

Publication Number Publication Date
CN112202568A true CN112202568A (zh) 2021-01-08
CN112202568B CN112202568B (zh) 2022-05-20

Family

ID=74014391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011072252.7A Expired - Fee Related CN112202568B (zh) 2020-10-09 2020-10-09 软硬件协同设计sm9数字签名通信方法和系统

Country Status (1)

Country Link
CN (1) CN112202568B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112398652A (zh) * 2021-01-20 2021-02-23 北京信安世纪科技股份有限公司 确定R-ate对的方法、装置、设备和存储介质
CN113660087A (zh) * 2021-07-06 2021-11-16 浙江传媒学院 一种基于有限域的sm9标识密码算法硬件实现系统
CN114143005A (zh) * 2021-11-15 2022-03-04 武汉大学 一种Tate双线性对及其变体的加速方法
CN114301585A (zh) * 2021-11-17 2022-04-08 北京智芯微电子科技有限公司 标识私钥的使用方法、生成方法和管理系统
CN114650135A (zh) * 2022-04-01 2022-06-21 浙江大学 一种软硬件协同的sm2椭圆曲线密码算法实现方法
CN115102700A (zh) * 2022-08-25 2022-09-23 北京智芯微电子科技有限公司 安全通信方法、装置、芯片、电子设备及可读存储介质
CN115208571A (zh) * 2022-09-14 2022-10-18 中安网脉(北京)技术股份有限公司 一种基于高速混合加密算法的并行多路硬件实现方法
CN115834086A (zh) * 2023-02-15 2023-03-21 山东大学 数字签名中多重指数幂和多标量乘的高效实现方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107040385A (zh) * 2017-05-23 2017-08-11 广东工业大学 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统
US20170250819A1 (en) * 2016-02-25 2017-08-31 Security Innovation Inc. Digital signature method and apparatus
CN107395368A (zh) * 2017-08-18 2017-11-24 北京无字天书科技有限公司 无介质环境中的数字签名方法及解密封方法与解密方法
US20180026798A1 (en) * 2016-07-20 2018-01-25 Stmicroelectronics S.R.L. Method for the generation of a digital signature of a message, corresponding generation unit, electronic apparatus and computer program product
CN108650078A (zh) * 2018-03-22 2018-10-12 北京中电华大电子设计有限责任公司 一种sm9标识密码算法的加速方法
CN109951288A (zh) * 2019-01-22 2019-06-28 中国科学院信息工程研究所 一种基于sm9数字签名算法的分级签名方法和系统
CN110011802A (zh) * 2019-02-27 2019-07-12 武汉大学 一种高效的sm9两方协同生成数字签名的方法及系统
CN110505061A (zh) * 2019-09-06 2019-11-26 北京天诚安信科技股份有限公司 一种数字签名算法及系统
CN110896351A (zh) * 2019-11-14 2020-03-20 湖南盾神科技有限公司 基于全域哈希的身份基数字签名方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170250819A1 (en) * 2016-02-25 2017-08-31 Security Innovation Inc. Digital signature method and apparatus
US20180026798A1 (en) * 2016-07-20 2018-01-25 Stmicroelectronics S.R.L. Method for the generation of a digital signature of a message, corresponding generation unit, electronic apparatus and computer program product
CN107040385A (zh) * 2017-05-23 2017-08-11 广东工业大学 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统
CN107395368A (zh) * 2017-08-18 2017-11-24 北京无字天书科技有限公司 无介质环境中的数字签名方法及解密封方法与解密方法
CN108650078A (zh) * 2018-03-22 2018-10-12 北京中电华大电子设计有限责任公司 一种sm9标识密码算法的加速方法
CN109951288A (zh) * 2019-01-22 2019-06-28 中国科学院信息工程研究所 一种基于sm9数字签名算法的分级签名方法和系统
CN110011802A (zh) * 2019-02-27 2019-07-12 武汉大学 一种高效的sm9两方协同生成数字签名的方法及系统
CN110505061A (zh) * 2019-09-06 2019-11-26 北京天诚安信科技股份有限公司 一种数字签名算法及系统
CN110896351A (zh) * 2019-11-14 2020-03-20 湖南盾神科技有限公司 基于全域哈希的身份基数字签名方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
甘植旺等: "国密SM9中R-ate双线性对快速计算", 《计算机工程》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112398652B (zh) * 2021-01-20 2021-06-08 北京信安世纪科技股份有限公司 信息传输方法、装置、设备和存储介质
CN112398652A (zh) * 2021-01-20 2021-02-23 北京信安世纪科技股份有限公司 确定R-ate对的方法、装置、设备和存储介质
CN113660087B (zh) * 2021-07-06 2023-09-26 浙江传媒学院 一种基于有限域的sm9标识密码算法硬件实现系统
CN113660087A (zh) * 2021-07-06 2021-11-16 浙江传媒学院 一种基于有限域的sm9标识密码算法硬件实现系统
CN114143005A (zh) * 2021-11-15 2022-03-04 武汉大学 一种Tate双线性对及其变体的加速方法
CN114143005B (zh) * 2021-11-15 2023-12-08 武汉大学 一种Tate双线性对及其变体的加速方法
CN114301585A (zh) * 2021-11-17 2022-04-08 北京智芯微电子科技有限公司 标识私钥的使用方法、生成方法和管理系统
CN114301585B (zh) * 2021-11-17 2024-01-05 北京智芯微电子科技有限公司 标识私钥的使用方法、生成方法和管理系统
CN114650135A (zh) * 2022-04-01 2022-06-21 浙江大学 一种软硬件协同的sm2椭圆曲线密码算法实现方法
CN114650135B (zh) * 2022-04-01 2024-01-02 浙江大学 一种软硬件协同的sm2椭圆曲线密码算法实现方法
CN115102700A (zh) * 2022-08-25 2022-09-23 北京智芯微电子科技有限公司 安全通信方法、装置、芯片、电子设备及可读存储介质
CN115208571A (zh) * 2022-09-14 2022-10-18 中安网脉(北京)技术股份有限公司 一种基于高速混合加密算法的并行多路硬件实现方法
CN115834086A (zh) * 2023-02-15 2023-03-21 山东大学 数字签名中多重指数幂和多标量乘的高效实现方法及系统

Also Published As

Publication number Publication date
CN112202568B (zh) 2022-05-20

Similar Documents

Publication Publication Date Title
CN112202568B (zh) 软硬件协同设计sm9数字签名通信方法和系统
CN103259643B (zh) 一种矩阵全同态加密方法
CN106100844B (zh) 基于点盲化方法的优化自动双线性对加密方法及装置
CN103259662A (zh) 一种新的基于整数分解问题的代理签名及验证方法
Zheng et al. The software/hardware co-design and implementation of SM2/3/4 encryption/decryption and digital signature system
CN105635135A (zh) 一种基于属性集及关系谓词的加密系统及访问控制方法
CN107171788B (zh) 一种基于身份且签名长度恒定的在线离线聚合签名方法
Ch et al. Efficient signcryption schemes based on hyperelliptic curve cryptosystem
Wu et al. A lightweight SM2-based security authentication scheme for smart grids
Tian et al. Multidimensional Data Aggregation Scheme For Smart Grid with Differential Privacy.
Zhu et al. A privacy-preserving data aggregation scheme based on chinese remainder theorem in mobile Crowdsensing system
Vijayakumar et al. Comparative study of hyperelliptic curve cryptosystem over prime field and its survey
CN111147240B (zh) 一种有追溯能力的隐私保护方法及系统
CN102291240B (zh) Sm2签名的认证方法及系统
CN107920352A (zh) 一种基于混沌的无线传感器网络广播身份认证方法
Zhang et al. An Improved Public Key Cryptographic Algorithm Based on Chebyshev Polynomials and RSA
Petzoldt et al. Linear recurring sequences for the UOV key generation revisited
Bedoui et al. A Secure Hardware Implementation for Elliptic Curve Digital Signature Algorithm.
Ma et al. Efficient pairing-free attribute-based blind signature scheme based on ordered binary decision diagram
CN114024684A (zh) 一种基于双线性ElGamal密码体制的多维数据聚合方法
Li et al. [Retracted] Hardware Optimization and System Design of Elliptic Curve Encryption Algorithm Based on FPGA
Li et al. A novel algorithm for scalar multiplication in ECDSA
CN113904777B (zh) 一种基于sm2数字签名算法的签密方法
Reddy et al. Implementation of Data Security with Wallace Tree Approach Using Elliptical Curve Cryptography on FPGA
Kamaraj Secured V2X communication using optimized prime field ECC architecture

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220520