技术领域
[0001] 本
发明属于密码技术领域,具体涉及到椭圆曲线
密码学或无证书公钥密码学或盲签密。
背景技术
[0002] 为了能够同时达到保密并认证的效果,1997年郑玉良教授提出了签密的概念。签密具有设计灵活、运算效率高等优点,是公钥密码系统的最主要应用之一。2003年Al-RiyamiandPaterson给出了无证书公钥密码系统,克服了传统公钥
基础设施中的证书管理问题和身份密码系统中的密钥托管问题。集成无证书密码和盲签密技术形成的无证书环境下盲签密,由于其突出的优势目前已经成为实现加密并认证的重要手段而且安全性越来越完善。然而,绝大多数无证书环境下盲签密方法都是使用双线性对设计的,计算代价较大。
[0003] 无证书盲签密被广泛应用在
电子支付、电子选举、电子合同等方面,
现有技术中绝大多数是基于双线性对的,如何采用椭圆曲线密码技术来构造低计算复杂度的无证书环境下椭圆曲线盲签密是当前需解决的一个技术问题。
发明内容
[0004] 本发明所要解决的技术问题在于克服上述现有技术的不足,提供一种安全性强、计算复杂度低的无证书环境下椭圆曲线盲签密方法。
[0005] 解决上述技术问题所采用的技术方案由下述步骤组成:
[0006] A、系统初始化
[0007] (A1)密钥生成中心定义有限域Fp上的椭圆曲线E,选取阶为n的椭圆曲线E上的一个基点G,G是加法循环群Gp的一个生成元,其中p是一个大素数为有限的正整数,n是素数为有限的正整数。
[0008] (A2)密钥生成中心选取密码学安全的Hash函数h1、Hash函数h2、Hash函数h3:Hash函数h1是{0,1}t×Gp→Zp,Hash函数h2是{0,1}l×Gp→Zp,Hash函数h3是Gp×Gp→{0,1}l,其中Zp是{0,1,...,p-1},l是消息长度、t是身份长度。
[0009] (A3)密钥生成中心选取一个随机数s∈[1,n)作为主密钥。
[0010] (A4)密钥生成中心确定系统公钥y:
[0011] y=sG。
[0012] (A5)密钥生成中心保密主密钥s,公布系统参数γ:
[0013] γ=(p,Fp,E,Gp,G,y,l,h1,h2,h3)。
[0014] B、生成用户公私钥
[0015] (B1)拥有身份Ia的盲签密方随机选取私钥Xa∈[1,n)并确定其公钥Ya:
[0016] Ya=XaG。
[0017] (B2)拥有身份Ib的接收方随机选取私钥Xb∈[1,n)并确定其公钥Yb:
[0018] Yb=XbG。
[0019] C、生成用户部分公私钥
[0020] (C1)密钥生成中心确定拥有身份Ia的盲签密方的部分公钥Ua、部分私钥Sa。
[0021] (C2)密钥生成中心确定拥有身份Ib的接收方的部分公钥Ub、部分私钥Sb。
[0022] D、盲签密
[0023] (D1)盲签密方选取一个随机数f∈[1,n)并确定β:
[0024] β=fG。
[0025] (D2)盲签密方发送β给消息拥有者。
[0026] (D3)消息拥有者选取一个盲因子ω∈[1,n)并确定r和μ:
[0027] r=ωβ
[0028] μ=ω·h2(m,r)
[0029] 式中m是长度为l的消息。
[0030] (D4)消息拥有者发送μ给盲签密方。
[0031] (D5)盲签密方收到μ并确定V和W:
[0032] V=f(Ub+h1(Ib,Yb)y+Yb)
[0033] W=μ-1(Xa+Sa)+f;
[0034] (D5)盲签密方发送V和W给消息拥有者。
[0035] (D6)消息拥有者收到V和W,确定J、c、s:
[0036] J=ωV
[0037]
[0038] s=ωW。
[0039] (D7)消息拥有者输出密文σ:
[0040] σ=(r,c,s)
[0041] 给接收方。
[0042] E、解密
[0043] (E1)接收方收到密文σ后,确定J:
[0044] J=(Sb+Xb)r。
[0045] (E2)接收方恢复出m:
[0046]
[0047] F、验证
[0048] 按下式进行验证:
[0049] sG=h2(m,r)-1·(Ua+h1(Ia,Ya)y+Ya)+r
[0050] 成立,接收方接受恢复的消息;否则,接收方不接受恢复的消息。
[0051] 在本发明的生成用户部分公私钥步骤C的步骤C1中,密钥生成中心确定拥有身份Ia的盲签密方的部分公钥Ua、部分私钥Sa的生成方法如下:
[0052] (1)密钥生成中心选取一个随机数υa∈[1,n)并确定盲签密方的部分公钥Ua、部分私钥Sa:
[0053] Ua=υaG
[0054] Sa=υa+s·h1(Ia,Ya)modn。
[0055] (2)密钥生成中心确定Ra:
[0056] Ra=SaG+υaYa
[0057] (3)密钥生成中心发送Sa、Ra、Ua给盲签密方。
[0058] (4)盲签密方收到Sa、Ra、Ua,下面两式:
[0059] SaG=Ua+h1(Ia,Ya)y
[0060] SaG=Ra-XaUa
[0061] 同时成立,部分公钥Ua、部分私钥Sa具有真实性。
[0062] 在本发明的生成用户部分公私钥步骤C的步骤C2中,密钥生成中心确定拥有身份Ia的接收方的部分公钥Ub、部分私钥Sb的生成方法如下:
[0063] (1)密钥生成中心选取一个随机数υb∈[1,n)并确定接收方的部分公钥Ub、部分私钥Sb:
[0064] Ub=υbG
[0065] Sb=υb+s·h1(Ib,Yb)modn。
[0066] (2)密钥生成中心确定Rb:
[0067] Rb=SbG+υbYb。
[0068] (3)密钥生成中心发送Sb、Rb、Ub给接收方。
[0069] (4)接收方收到Sb、Rb、Ub,下面两式:
[0070] SbG=Ub+h1(Ib,Yb)y
[0071] SbG=Rb-XbUb
[0072] 同时成立,部分公钥Ub、部分私钥Sb具有真实性。
[0073] 本发明将盲签密技术扩展到无证书密码系统和椭圆曲线密码系统,提出了一种无证书环境下椭圆曲线盲签密方法,消除了传统的公钥基础设施中的证书管理问题和身份密码系统中的密钥托管问题,克服了现有技术中网络必须有可信中心为用户生成公钥、需要安全信道传送秘密信息、计算复杂度比较高、密钥需要托管给可信中心的缺点,使盲签密方和消息拥有者通过交互为接收方生成消息m的密文,除接收方之外的其他人看不到真实消息,接收方能够确信消息的来源。本发明具有安全性强、计算和通信成本低等优点,适合用于电子投票、电子支付、电子合同等技术领域。
附图说明
具体实施方式
[0075] 下面结合附图和实施例对本发明进一步详细说明,但本发明不限于这些实施例。
[0076] 实施例1
[0077] 本实施例以椭圆曲线y2≡x3+ax+bmodp、大素数p为2192-264-1为例,无证书环境下椭圆曲线盲签密方法由下述步骤组成:
[0078] A、系统初始化
[0079] (A1)密钥生成中心选择一个大素数p,p为2192-264-1,定义有限域Fp上的椭圆曲线E:y2≡x3+ax+b,其中a,b∈Fp是满足4a3+27b2≠0的常量,选取阶为n的椭圆曲线E上的一个基点G,E(a,b)和无穷远点O组成一个加法循环群Gp,G是加法循环群Gp的一个生成元,n是素数为有限的正整数。
[0080] (A2)密钥生成中心选取密码学安全的Hash函数h1、Hash函数h2、Hash函数h3:Hash函数h1是{0,1}t×Gp→Zp,Hash函数h2是{0,1}l×Gp→Zp,Hash函数h3是Gp×Gp→{0,1}l,其中Zp是{0,1,...,2192-264-2},l是消息长度、t是身份长度。
[0081] (A3)密钥生成中心选取一个随机数s∈[1,n)作为主密钥。
[0082] (A4)密钥生成中心确定系统公钥y:
[0083] y=sG。
[0084] (A4)密钥生成中心保密主密钥s,公布系统参数γ:
[0085] γ=(2192-264-1,Fp,E,Gp,G,y,l,h1,h2,h3)。
[0086] B、生成用户公私钥
[0087] (B1)拥有身份Ia的盲签密方随机选取私钥Xa∈[1,n)并确定其公钥Ya:
[0088] Ya=XaG。
[0089] (B2)拥有身份Ib的接收方随机选取私钥Xb∈[1,n)并确定其公钥Yb:
[0090] Yb=XbG。
[0091] C、生成用户部分公私钥
[0092] (C1)密钥生成中心确定拥有身份Ia的盲签密方的部分公钥Ua、部分私钥Sa如下:
[0093] (C1.1)密钥生成中心选取一个随机数υa∈[1,n)并确定盲签密方的部分公钥Ua、部分私钥Sa:
[0094] Ua=υaG
[0095] Sa=υa+s·h1(Ia,Ya)modn。
[0096] (C1.2)密钥生成中心确定Ra:
[0097] Ra=SaG+υaYa。
[0098] (C1.3)密钥生成中心发送Sa、Ra、Ua给盲签密方。
[0099] (C1.4)盲签密方收到Sa、Ra、Ua,下面两式:
[0100] SaG=Ua+h1(Ia,Ya)y
[0101] SaG=Ra-XaUa
[0102] 同时成立,部分公钥Ua、部分私钥Sa具有真实性。
[0103] (C2)密钥生成中心确定拥有身份Ib的接收方的部分公钥Ub、部分私钥Sb如下:
[0104] (C2.1)密钥生成中心选取一个随机数υb∈[1,n)并确定接收方的部分公钥Ub、部分私钥Sb:
[0105] Ub=υbG
[0106] Sb=υb+s·h1(Ib,Yb)modn。
[0107] (C2.2)密钥生成中心确定Rb:
[0108] Rb=SbG+υbYb。
[0109] (C2.3)密钥生成中心发送Sb、Rb、Ub给接收方。
[0110] (C2.4)接收方收到Sb、Rb、Ub,下面两式:
[0111] SbG=Ub+h1(Ib,Yb)y
[0112] SbG=Rb-XbUb
[0113] 同时成立,部分公钥Ub、部分私钥Sb具有真实性。
[0114] D、盲签密
[0115] (D1)盲签密方选取一个随机数f∈[1,n)并确定β:
[0116] β=fG。
[0117] (D2)盲签密方发送β给消息拥有者。
[0118] (D3)消息拥有者选取一个盲因子ω∈[1,n)并确定r和μ:
[0119] r=ωβ
[0120] μ=ω·h2(m,r)
[0121] 式中m是长度为l的消息。
[0122] (D4)消息拥有者发送μ给盲签密方。
[0123] (D5)盲签密方收到μ并确定V和W:
[0124] V=f(Ub+h1(Ib,Yb)y+Yb)
[0125] W=μ-1(Xa+Sa)+f。
[0126] (D5)盲签密方发送V和W给消息拥有者。
[0127] (D6)消息拥有者收到V和W,确定J、c、s:
[0128] J=ωV
[0129]
[0130] s=ωW。
[0131] (D7)消息拥有者输出密文σ:
[0132] σ=(r,c,s)
[0133] 给接收方。
[0134] 由于本实施例采用了无证书盲签密方法,消除了传统的公钥基础设施中的证书管理问题和身份密码系统中的密钥托管问题,克服了现有技术中网络必须有可信中心为用户生成公钥、需要安全信道传送秘密信息、计算复杂度比较高、密钥需要托管给可信中心的缺点,使盲签密方和消息拥有者通过交互为接收方生成消息m的密文,除接收方之外的其他人看不到真实消息,接收方能够确信消息的来源。本发明具有安全性强、计算和通信成本低等优点,适合用于电子投票、电子支付、电子合同等技术领域。
[0135] E、解密
[0136] (E1)接收方收到密文σ后,确定J:
[0137] J=(Sb+Xb)r。
[0138] (E2)接收方恢复出m:
[0139]
[0140] F、验证
[0141] 按下式进行验证:
[0142] sG=h2(m,r)-1·(Ua+h1(Ia,Ya)y+Ya)+r
[0143] 成立,接收方接受恢复的消息;否则,接收方不接受恢复的消息。
[0144] 实施例2
[0145] 本实施例以椭圆曲线y2≡x3+ax+bmodp、大素数p为2224-296+1为例,无证书环境下椭圆曲线盲签密方法由下述步骤组成:
[0146] A、系统初始化
[0147] (A1)密钥生成中心选择一个大素数p,p为2224-296+1,定义有限域Fp上的椭圆曲线E:y2≡x3+ax+b,其中a,b∈Fp是满足4a3+27b2≠0的常量,选取阶为n的椭圆曲线E上的一个基点G,E(a,b)和无穷远点O组成一个加法循环群Gp,G是加法循环群Gp的一个生成元,n是素数为有限的正整数。
[0148] (A2)密钥生成中心选取密码学安全的Hash函数h1、Hash函数h2、Hash函数h3:Hasht l l函数h1是{0,1}×Gp→Zp,Hash函数h2是{0,1}×Gp→Zp,Hash函数h3是Gp×Gp→{0,1} ,其中Zp是{0,1,...,2224-296},l是消息长度、t是身份长度。
[0149] (A3)密钥生成中心选取一个随机数s∈[1,n)作为主密钥。
[0150] (A4)密钥生成中心确定系统公钥y:
[0151] y=sG。
[0152] (A4)密钥生成中心保密主密钥s,公布系统参数γ:
[0153] γ=(2224-296+1,Fp,E,Gp,G,y,l,h1,h2,h3)。
[0154] 其它步骤与实施例1相同。
[0155] 实施例3
[0156] 本实施例以椭圆曲线y2≡x3+ax+bmodp、大素数p为2256-2224+2192+296+1为例,无证书环境下椭圆曲线盲签密方法由下述步骤组成:
[0157] A、系统初始化
[0158] (A1)密钥生成中心选择一个大素数p,p为2256-2224+2192+296+1,定义有限域Fp上的椭圆曲线E:y2≡x3+ax+b,其中a,b∈Fp是满足4a3+27b2≠0的常量,选取阶为n的椭圆曲线E上的一个基点G,E(a,b)和无穷远点O组成一个加法循环群Gp,G是加法循环群Gp的一个生成元,n是素数为有限的正整数。
[0159] (A2)密钥生成中心选取密码学安全的Hash函数h1、Hash函数h2、Hash函数h3:Hash函数h1是{0,1}t×Gp→Zp,Hash函数h2是{0,1}l×Gp→Zp,Hash函数h3是Gp×Gp→{0,1}l,其中Zp是{0,1,...,2256-2224+2192+296},l是消息长度、t是身份长度。
[0160] (A3)密钥生成中心选取一个随机数s∈[1,n)作为主密钥。
[0161] (A4)密钥生成中心确定系统公钥y:
[0162] y=sG。
[0163] (A4)密钥生成中心保密主密钥s,公布系统参数γ:
[0164] γ=(2256-2224+2192+296+1,Fp,E,Gp,G,y,l,h1,h2,h3)。
[0165] 其它步骤与实施例1相同。
[0166] 实施例4
[0167] 本实施例以椭圆曲线y2≡x3+ax+bmodp、大素数p为2384-2128-296+232-1为例,无证书环境下椭圆曲线盲签密方法由下述步骤组成:
[0168] A、系统初始化
[0169] (A1)密钥生成中心选择一个大素数p,p为2384-2128-296+232-1,定义有限域Fp上的椭圆曲线E:y2≡x3+ax+b,其中a,b∈Fp是满足4a3+27b2≠0的常量,选取阶为n的椭圆曲线E上的一个基点G,E(a,b)和无穷远点O组成一个加法循环群Gp,G是加法循环群Gp的一个生成元,n是素数为有限的正整数。
[0170] (A2)密钥生成中心选取密码学安全的Hash函数h1、Hash函数h2、Hash函数h3:Hash函数h1是{0,1}t×Gp→Zp,Hash函数h2是{0,1}l×Gp→Zp,Hash函数h3是Gp×Gp→{0,1}l,其中Zp是{0,1,...,2384-2128-296+232-2},l是消息长度、t是身份长度;
[0171] (A3)密钥生成中心选取一个随机数s∈[1,n)作为主密钥。
[0172] (A4)密钥生成中心确定系统公钥y:
[0173] y=sG。
[0174] (A4)密钥生成中心保密主密钥s,公布系统参数γ:
[0175] γ=(2384-2128-296+232-1,Fp,E,Gp,G,y,l,h1,h2,h3)。
[0176] 其它步骤与实施例1相同。
[0177] 实施例5
[0178] 本实施例以椭圆曲线y2≡x3+ax+bmodp、大素数p为2521-1为例,无证书环境下椭圆曲线盲签密方法由下述步骤组成:
[0179] A、系统初始化
[0180] (A1)密钥生成中心选择一个大素数p,p为2521-1,定义有限域Fp上的椭圆曲线E:y23 3 2
≡x+ax+b,其中a,b∈Fp是满足4a +27b≠0的常量,选取阶为n的椭圆曲线E上的一个基点G,E(a,b)和无穷远点O组成一个加法循环群Gp,G是加法循环群Gp的一个生成元,n是素数为有限的正整数。
[0181] (A2)密钥生成中心选取密码学安全的Hash函数h1、Hash函数h2、Hash函数h3:Hash函数h1是{0,1}t×Gp→Zp,Hash函数h2是{0,1}l×Gp→Zp,Hash函数h3是Gp×Gp→{0,1}l,其中Zp是{0,1,...,2521-2},l是消息长度、t是身份长度;
[0182] (A3)密钥生成中心选取一个随机数s∈[1,n)作为主密钥。
[0183] (A4)密钥生成中心确定系统公钥y:
[0184] y=sG。
[0185] (A4)密钥生成中心保密主密钥s,公布系统参数γ:
[0186] γ=(2521-1,Fp,E,Gp,G,y,l,h1,h2,h3)。
[0187] 其它步骤与实施例1相同。
[0188] 根据上述原理,取不同的大素数q的值,可以得出不同的通用可复合的身份代理签密方法,均在本发明的保护范围之内。