1.一种安全的PKI与IBC之间的双向异构数字签名方法,其特征在于,包括以下步骤:步骤1:私钥生成中心选择阶为素数的循环加法群以及循环乘法群以生成双线性对,定义两个无碰撞哈希函数,从阶为素数的整数群中随机选取一个数字作为主密钥并设置主公钥,公开系统参数;
步骤2:公钥基础设施环境中的用户向证书权威机构提交身份以颁发证书,从阶数为素数的整数群中随机选择一个数字作为公钥基础设施环境中用户的私钥,计算公钥基础设施环境中用户的公钥,基于身份加密环境中用户向私钥生成中心提交用户身份,计算基于身份加密环境中用户的私钥,再回传至基于身份加密环境中用户从而得到公钥;
步骤3:若公钥基础设施环境中的用户作为签名者用于生成签名,且基于身份加密环境中的用户作为验证者用于验证签名,签名者从阶数为素数的整数群中随机选择两个数字分别用于计算签名者生成签名的第一部分签名以及第二部分签名,签名者计算双线性对的值,签名者利用其私钥以及给定的消息,通过哈希函数、点乘运算,计算签名者生成签名的第三部分签名,签名者通过签名者生成签名、给定的消息构建组合消息发送给验证者,验证者通过组合消息中签名者生成签名的第二部分签名计算验证者双线性对的值,验证者通过组合消息计算验证者的签名验证,验证者将验证者的签名验证与签名者生成签名的第一部分签名进行比较,判断是否接收给定的消息;
步骤4:若基于身份加密环境中的用户作为签名者用于生成签名,公钥基础设施环境中的用户作为验证者用于验证签名,签名者从阶数为素数的整数群中随机选择两个数字分别用于计算签名者生成签名的第一部分签名以及第二部分签名,签名者计算签名者双线性对的值,签名者利用其公钥、私钥以及给定的消息,通过哈希函数、点乘运算,计算签名者生成签名的第三部分签名,签名者通过签名者生成签名、给定的消息构建组合消息发送给验证者,验证者通过组合消息中签名者生成签名的第二部分签名计算验证者双线性对的值,验证者通过组合消息计算验证者的签名验证,验证者将验证者的双线性对的第一个验证值与双线性对的第二个验证值进行比较,判断是否接收给定的消息;
步骤3中所述签名者从阶数为素数的整数群中随机选择两个数字分别用于计算签名者生成签名的第一部分签名以及第二部分签名为:签名者随机选择 计算R1=r1P,签名者利用自己的公钥计算R2=r2PKA:其中, 表示是从 中任意选取的一个元素,P是G1的一个生成元,G1是阶为素数q的循环加法群,PKA表示签名者的公钥,R1表示签名者生成签名的第一部分签名,R2表示签名者生成签名的第二部分签名;
步骤3所述签名者计算签名者双线性对的值为:W1=e(T,U)
T=SKAPpubP
U=r2PKB
其中,W1表示签名者双线性对的值,T表示签名者双线性对的值的第一个输入值,U表示签名者双线性对的值的第二个输入值,P是G1的一个生成元,G1是阶为素数q的循环加法群,SKA表示签名者的私钥,Ppub为私钥生成中心的主公钥,PKB表示验证者的公钥;
步骤3所述签名者利用其私钥以及给定的消息,通过哈希函数、点乘运算,计算签名者生成签名的第三部分签名为:
S=r1+SKAH2(W1,m)其中,r1为随机数,SKA表示签名者的私钥,H2表示阶为素数q的循环乘法群映射到整数群 的无碰撞哈希函数,m为给定的消息,W1表示签名者双线性对的值;
步骤3所述签名者通过签名者生成签名、给定的消息构建组合消息发送给验证者为:所述签名者生成签名为:
σ=(R1,R2,S)
所述组合消息为:
δ=(σ,m)
其中,R1表示签名者生成签名的第一部分签名,R2表示签名者生成签名的第二部分签名,S表示签名者生成签名的第三部分签名,σ表示签名者生成签名,m表示给定的消息;
步骤3所述验证者通过组合消息中签名者生成签名的第二部分签名计算验证者双线性对的值为:
W2=e(N,SKB)
N=R2P
其中,P是G1的一个生成元,G1是阶为素数q的循环加法群,N表示验证者双线性对的值的第一个输入值,R2表示签名者生成签名的第二部分签名,SKB表示验证者的私钥,是W2的第二个输入值,W2表示验证者双线性对的值;
步骤3所述验证者通过组合消息计算验证者的签名验证为:V=SP-H2(W2,m)PKA其中,S表示签名者生成签名的第三部分签名,P是G1的一个生成元,G1是阶为素数q的循环加法群,PKA表示签名者的公钥,H2表示阶为素数q的循环乘法群映射到整数群 的无碰撞哈希函数,m表示给定的消息,W2表示验证者双线性对的值;
步骤3所述验证者将验证者的签名验证与签名者生成签名的第一部分签名进行比较,判断是否接收给定的消息为:
所述验证者验证V=R1等式是否成立;
若等式成立,接受m,输出正确提示符;否则拒绝接受m,输出错误提示符;
步骤4所述签名者从阶数为素数的整数群中随机选择两个数字分别用于计算签名者生成签名的第一部分签名以及第二部分签名为:签名者随机选择 计算R1=r1P,签名者利用自己的公钥计算R2=r2PKB:其中,P是G1的一个生成元,G1是阶为素数q的循环加法群,r2表示随机数,PKB表示签名者B的公钥,R1表示签名者生成签名的第一部分签名,R2表示签名者生成签名的第二部分签名;
步骤4所述签名者计算签名者双线性对的值为:W1=e(T,U)
T=SKBP
U=r2PKA
其中,W1表示签名者双线性对的值,T表示签名者双线性对的值的第一个输入值,U表示签名者双线性对的值的第二个输入值,SKB表示签名者的私钥,P是G1的一个生成元,G1是阶为素数q的循环加法群,r2表示随机数,PKA表示验证者的公钥;
步骤4所述签名者利用其公钥、私钥以及给定的消息,通过哈希函数、点乘运算,计算签名者生成签名的第三部分签名为:S=r1PKB+SKBH2(W1,m)其中,S表示签名者生成签名的第二部分签名,r1表示随机数,PKB表示签名者的公钥,SKB表示签名者的私钥,H2表示阶为素数q的循环乘法群映射到整数群 的无碰撞哈希函数,W1表示签名者双线性对的值,m表示给定消息;
步骤4所述签名者通过签名者生成签名、给定的消息构建组合消息发送给验证者为:所述签名者生成签名为:
σ=(R1,R2,S)
所述组合消息为:
δ=(σ,m)
其中,R1表示签名者生成签名的第一部分签名,R2表示签名者生成签名的第二部分签名,S表示签名者生成签名的第三部分签名,σ表示签名者生成签名,m表示给定的消息,δ表示组合消息;
步骤4所述验证者通过组合消息中签名者生成签名的第二部分签名计算验证者双线性对的值为:
N=R2Ppub
其中,W2表示验证者双线性对的值,N表示验证者双线性对的值的第一个输入值,P是G1的一个生成元,G1是阶为素数q的循环加法群,SKA表示验证者A的私钥,R2表示签名者生成签名的第二部分签名,Ppub为私钥生成中心的主公钥;
步骤4所述验证者通过组合消息计算验证者的签名验证为:步骤4所述验证者将验证者的双线性对的第一个验证值与双线性对的第二个验证值进行比较,判断是否接收给定的消息为:双线性对的第一个验证值:
e(S,P)
其中,S表示签名者生成签名的第三部分签名,P是G1的一个生成元,G1是阶为素数q的循环加法群;
双线性对的第二个验证值:
e(R1+hPpub,PKB)h=H2(W2,m)
其中,R1表示签名者生成签名的第一部分签名,h表示哈希函数H2()的输入为验证者双线性对的值W2与给定的消息m,Ppub表示私钥生成中心的主公钥,PKB表示签名者B的公钥,H2表示阶为素数q的循环乘法群映射到整数群 的无碰撞哈希函数,W2表示签名计算验证者双线性对的值,m表示给定的消息;e为双线性对; 表示阶为素数q的整数群除去0元素,所述验证者验证e(S,P)=e(R1+hPpub,PKB)等式是否成立:若等式成立,接受m,输出正确提示符;否则拒绝接受m,输出错误提示符。
2.根据权利要求1所述的安全的PKI与IBC之间的双向异构数字签名方法,其特征在于:步骤1中所述私钥生成中心选择阶为素数的循环加法群以及循环乘法群以生成双线性对为:
选择阶为素数q的循环加法群即G1和循环乘法群即G2,双线性对e,e:G1×G1→G2;
所述定义两个无碰撞哈希函数:*
H1:{0,1}→G1、
*
其中,H1是把用户的身份信息映射到加法循环群G1上的无碰撞哈希函数,{0,1}表示长度为任意比特的二进制序列组合的集合, 表示阶为q的整数群除去0元素,H2表示阶为素数q的循环乘法群映射到整数群 的无碰撞哈希函数,{0,n
1}表示长度为n比特的二进制序列组合的集合;
所述从阶为素数的整数群中随机选取一个数字作为主密钥并设置主公钥为:随机选取一个 s为私钥生成中心的主密钥,s保密,设置私钥生成中心的主公钥Ppub=sP,P是G1的生成元,G1是阶为素数q的循环加法群;
所述公开系统参数为:
param={k,q,G1,G2,P,e,H1,H2,Ppub}其中,param为系统参数,k为输入安全参数,保留s,s为私钥生成中心的主密钥,P是G1的生成元,G1是阶为素数q的循环加法群。
3.根据权利要求1所述的安全的PKI与IBC之间的双向异构数字签名方法,其特征在于:步骤2中所述公钥基础设施环境中的用户向证书权威机构提交身份以颁发证书为:公钥基础设施环境中的用户A向证书权威机构提交IDA,IDA为用户A的身份,证书权威机构给用户A颁发证书;
所述从阶数为q的整数群 中随机选择一个数字作为公钥基础设施环境中用户的私钥为:
用户A随机选取一个随机数为 表示阶数为q的整数群除去0元素,设置x作为用户A的私钥,即SKA=x,SKA为公钥基础设施环境中用户A的私钥;
所述计算公钥基础设施环境中用户的公钥为:PKA=xP,P是G1的生成元,x作为用户A的私钥,G1为阶为素数q的循环加法群;
所述基于身份加密环境中用户向私钥生成中心提交用户身份为:基于身份加密环境中用户B向私钥生成中心提交IDB,IDB为基于身份加密环境中用户B的身份;
所述计算基于身份加密环境中用户的私钥为:私钥生成中心计算基于身份加密环境中用户B的私钥:SKB=sH1(IDB),发送给用户B;
其中,基于身份加密环境中用户B的私钥为SKB,s为私钥生成中心的主密钥,IDB为基于身份加密环境中用户B的身份,H1是把用户的身份信息映射到加法循环群G1上的无碰撞哈希函数;
所述再回传至基于身份加密环境中用户从而得到公钥为:PKB=H1(IDB)为基于身份加密环境中用户B的公钥。