利索能及
我要发布
收藏
专利号: 2018108007083
申请人: 陕西师范大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-10-14
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种安全的两方协作SM2签名方法,其特征在于它是由下述步骤组成:(1)系统初始化

第一通信方和第二通信方共享SM2签名算法的椭圆曲线参数E(Fp)、G和n,E(Fp)表示有限域Fp上椭圆曲线E的所有有理点,包括无穷远点O,组成的集合,G表示椭圆曲线E上阶为n的基点,n为有限的正整数,各参数的取值依据SM2方法预先设定,通信双方预先约定好要使用的密码杂凑方法hash、承诺协议com、零知识证明协议proof以及具有加法同态性的同态加密方法Enc;

(2)协商生成签名公钥

第一通信方生成子私钥d1和子公钥P1,第二通信方生成子私钥d2和子公钥P2,通信双方分别用对方的子公钥和自身的子私钥协商生成签名公钥P;

(3)协作签名

第一通信方产生临时子私钥k1和临时子公钥Q1,第二通信方产生临时子私钥k2和临时子公钥Q2,分别根据对方的临时子公钥、自身的子私钥和自身的临时子私钥生成部分签名r和部分签名s,通信双方协作产生完整签名;

(4)输出完整签名

第二通信方将部分签名r和部分签名s组成一个完整签名输出。

2.根据权利要求1所述的安全的两方协作SM2签名方法,其特征在于:在协商生成签名公钥步骤(2)中,所述的通信双方分别用对方的子公钥和自身的子私钥协商生成签名公钥P的方法为:

1)第一通信方产生子公私钥对

第一通信方产生一个位于[1,n-1]之间的随机数d1,将d1作为子私钥,即有:d1∈[1,n-

1],由d1[*]G得到的结果作为子公钥P1;其中,[*]表示椭圆曲线点乘运算;

2)第二通信方产生子公私钥对

第二通信方产生一个位于[1,n-1]之间的随机数d2,将d2作为子私钥,即有:d2∈[1,n-

1],由d2[*]G得到的结果作为子公钥P2;

3)通信双方相互认证

第一通信方用双方预定的零知识证明协议proof确定子私钥d1的零知识证明proof(d1),按照双方预定的承诺协议com确定子公钥P1和子私钥d1的零知识证明proof(d1)的承诺值com(P1||proof(d1)),按照双方预定的承诺协议com,将承诺值com(P1||proof(d1))和承诺信息发送给第二通信方,其中,||表示拼接;

第二通信方用预定的零知识证明协议proof确定子私钥d2的零知识证明proof(d2),生成预定的加法同态加密方法Enc的密钥对pk和sk,其中pk表示同态公钥,sk表示同态私钥,将子公钥P2,同态公钥pk和子私钥d2的零知识证明proof(d2)发送给第一通信方;

第一通信方根据预定的零知识证明协议proof验证P2=d2[*]G,根据双方预定的承诺协议com将解承诺信息子公钥P1和子私钥d1的零知识证明proof(d1)发送给第二通信方;

第二通信方收到解承诺信息,按照双方预定的承诺协议com,验证承诺值com(P1||proof(d1))的正确性,用预定的零知识证明协议proof验证P1=d1[*]G;

4)通信双方协商生成签名公钥

第一通信方由d1[*]P2[-]G得到的结果作为签名公钥P,其中,[-]表示椭圆曲线点减运算;

第二通信方由d2[*]P1[-]G得到的结果作为签名公钥P′,P′与P相等。

3.根据权利要求1所述的安全的两方协作SM2签名方法,其特征在于在协作签名步骤(3)中,所述的通信双方协作产生完整签名的方法为:

1)第一通信方处理待签名消息

第一通信方将第一通信方和第二通信方共同的身份标识Z和消息M拼接形成M′,即有:M′=Z||M,由密码杂凑方法hash确定hash(M′),得到的结果作为e;

2)第二通信方处理待签名消息

第二通信方处理待签名消息与第一通信方处理待签名消息步骤相同;

3)第一通信方产生临时子公私钥对

第一通信方产生一个位于[1,n-1]之间的随机数k1,将k1作为临时子私钥,由k1[*]G得到的结果作为临时子公钥Q1;

4)第二通信方产生临时子公私钥对

第二通信方产生一个位于[1,n-1]之间的随机数k2,将k2作为临时子私钥,由k2[*]G得到的结果作为临时子公钥Q2;

5)通信双方相互认证

第一通信方用双方预定的零知识证明协议proof确定临时子私钥k1的零知识证明proof(k1),按照双方预定的承诺协议com确定临时子公钥Q1和临时子私钥k1的零知识证明proof(k1)的承诺值com(Q1||proof(k1)),按照双方预定的承诺协议com,将承诺值com(Q1||proof(k1))和承诺信息发送给第二通信方;

第二通信方用双方预定的零知识证明协议proof确定临时子私钥k2的零知识证明proof(k2),将临时子公钥Q2和临时子私钥k2的零知识证明proof(k2)发送给第一通信方;

第一通信方用双方预定的零知识证明协议proof验证Q2=k2[*]G,发送解承诺信息临时子公钥Q1和临时子私钥k1的零知识证明proof(k1)给第二通信方;

第二通信方收到解承诺信息,按照双方预定的承诺协议com,验证承诺值com(Q1||proof(k1))的正确性,用预定的零知识证明协议proof验证Q1=k1[*]G;

6)生成时戳

通信双方分别根据第一通信方的身份信息ID1、当前时间T以及第一通信方所处位置信息S,由密码杂凑方法hash确定hash(ID1||T||S),得到的结果作为时戳t,其中,ID1、T、S为比特串;

7)通信双方协作签名

第二通信方由k2[*]Q1得到的结果作为点(x1,y1),由x1+emodn得到的结果作为部分签名2

r,其中mod表示求模运算;产生一个位于[1,n]之间的随机数η,按照同态加密方法Enc的加密运算Encpk确定 和 得到的结果分别作为同态密文c1和同态密文c2;将同态密文c1和同态密文c2发送给第一通信方,其中, 表示d2在Fp上的逆元,Encpk表示在同态公钥pk下同态加密方法Enc的加密运算;

第一通信方由k1[*]Q2得到的结果作为点(x1,y1),由x1+emodn得到的结果作为部分签名r;计算 将计算结果作为s′,发送s′给第二通信方,其中, 表示d1在Fp上的逆元,t-1表示时戳t在Fp上的逆元, 表示标量乘同态运算,即 表示b对应的明文与a做乘法运算; 表示加法同态运算,即 表示a对应的明文与b对应的明文做加法运算;

第二通信方按照同态加密方法Enc的解密运算Decsk确定Decsk(s′)-rmodn,得到的结果作为部分签名s,其中,Decsk表示在同态私钥sk下同态加密方法Enc的解密运算。

4.根据权利要求1或3所述的安全的两方协作SM2签名方法,其特征在于:所述的同态加密方法Enc为Paillier同态加密方法、Benaloh同态加密方法、NS同态加密方法中的任意一种。