以下结合具体的
实施例对本发明作进一步的详细说明:
在给出具体加密方案之前,首先对伪加运算给出描述:仿射平面FP 2上, x坐标不同的两个点可以唯一地确定该平面上的维尔斯特拉斯 (Weierstrass)方程Y2=X3+a4X+a6,其中X,Y是变量,a4、a6是域Fp中 的元素,p是一个大素数。如果其所确定的三次曲线是椭圆曲线的话,则 它们的加法点的坐标完全由它们自身所决定。
本发明利用该性质,定义了一种新的运算:伪加。
设P1=(x1,y1),P2=(x2,y2)是仿射平面FP 2上两个点,而且x1≠x2,如下定 义伪加运算:
1、P1+P2=P3=(x3,y3)其中x3,y3满足下式:
2、-P1=(x1,-y1)
3、P1-P2=P1+(-P2)
设P,Q是仿射平面FP 2上的两个点,而且x坐标不相同,则P和Q唯一 确定一条仿射曲线E(P,Q):Y2=X3+aX+b,使得P,Q是该仿射曲线上的点, 其中a,b为域Fp的元素,由x坐标不同的点P和Q唯一确定,FP是p个元 素的有限域,p是一个素数,而P是一个点,它的两个坐标是FP中的元素。 在此,对于曲线E(P,Q)上的所有非奇异点补充定义倍点运算,该运算公 式与椭圆曲线的倍点运算公式完全相同:
设曲线E(P,Q):Y2=X3+aX+b,P1=(x1,y1)是该曲线上的非奇异点,则 2P=(x3,y3),其中:
x3=λ2-2x1
y3=λ(x1-x3)-y1
如果4a3+27b2≠0modp,则该曲线是椭圆曲线,如上定义的伪加运算 “+”即为椭圆曲线点的加法,椭圆曲线上的所有有理点在“+”运算和 倍点运算下构成群,无穷远点0是其零点,“-”是“+”的逆运算;若 4a3+27b2=0modp,则该曲线是奇异的,而且仅有一个奇异点,其上的所有 非奇异点在“+”运算和倍点运算下也构成一个群,无穷远点0是其零点, “-”是“+”的逆运算。
由运算性质可知:当且仅当P,Q全为E(P,Q)上的非奇异点,且 R(=P+Q),P、Q的x坐标两两不同时,可在不知道P,Q所确定的曲线E(P Q的具体方程的情况下,由R(=P+Q)和P求得Q(=R-P)。注意到R,P,Q 的x坐标两两不同蕴含了P,Q全为非奇异点,所以P,Q全为非奇异点的 概率至少为1-6/(p-1),其中p是一个大素数。也就是说:两个x坐标不 相同的点P,Q,记R=P+Q,在1-6/(p-1)概率下可由其中的任意两点计算 出另一点。本发明充分利用了这个特点,得到了一个具有新的明文嵌入方 法,并得到在适应性选择密文攻击下语义安全的加密体制,该特点也是其 与传统椭圆曲线密码体制最大的区别。
设E:Y2=X3+aX+b是有限域Fp上的椭圆曲线,E(Fp)是指E的所有Fp 有理点和0组成的群。对于E(Fp)中的任意一点P,存在最小的整数n,使 得nP=0,称n为点P的阶,则点P可以生成一个n阶循环群。椭圆曲线公 钥密码体制绝大多数都构建在阶为大素数的点生成的循环群上,称该点为 基点。以下若不做特殊说明,则一律用大写字母表示曲线上的点,小写字 母表示有限域上的元素,x(P),y(P)表示点P的x坐标和y坐标,相异点 间的加法为上述的伪加,倍点运算为椭圆曲线上定义的倍点运算。
设系统参数为(p,a,b,P,n),其中p是一个大素数,由所要求的 安全强度,即安全参数λ所确定;a,b是有限域Fp中的元素,其决定一条 椭圆曲线E:Y2=X3+aX+b。P是E的Fp有理点,其阶为n,n是一个大素 数且和p的尺寸相当。每个用户A拥有自己的用户参数(SKa,PKa)=(da,Qa), 其中Qa=daP,da为小于n的正整数,da和Qa分别称为用户A的私钥和公钥, 公钥是公开的,可以被任何人知晓,而私钥是私有的,仅由用户A自己知 道。H(.)、F(.)、G(.)均是{0,1}λ→{0,1}λ的Hash函数,λ′是任意整数满足 1/2λ′是λ的可忽略函数,在此不妨令λ′=λ/4。在体制的实现中,为了减少 数据越界的可能性,强制令各Hash函数值的最高8比特为0。
如果用户B想发送消息m∈{0,1}λ-λ′给用户A,则用户B进行以下的 加密操作:
首先,随机选取一个整数k,1<k<n;再计算k的Hash函数值F(k), 椭圆曲线点P的F(k)倍点F(k)P记为C1,椭圆曲线点Qa的F(k)倍点F(k)Qa; 然后在m后添加λ′个0得到m′,即m′=m||0λ′;再计算k的Hash函数值G(k), 若F(k)Qa的x坐标值x(F(k)Qa)=m′G(k),则返回重新选取整数k;最后, 计算密文C=(C1,C2)=(C1,F(k)Qa+(m′G(k),H(m′G(k))k),若 仿射平面点C2的x坐标属于集合{m′G(k),x(F(k)Qa)},则返回重新选 取整数k;否则,输出密文C。
在用户A接收到用户B法送的密文C后,进行以下的解密操作来恢复 明文m:
1、首先,计算椭圆曲线点C1的da倍点daC1记为Q′,若x(Q′)=x(C2) 则拒绝接收;
2、再计算仿射平面上的点C2-Q′记为(M,r),M,r均为有限域Fp中的 元素,若M=x(C2)或x(Q′),则拒绝接收;
3、进一步计算H(M)r记为f;
4、若椭圆曲线点P的F(f)倍点F(f)P为椭圆曲线点C1且MG(f)的 后λ′比特为0,则接收明文m为MG(f)的前λ-λ′比特;否则拒绝接收。
以下,是采用本发明对数据进行加密而获得高安全性的数学证明:
假设椭圆曲线群的阶近似为p,并有一半的m使得m3+am+b是模p的 二次剩余,则有以下结论说明在加密过程中返回1的概率很小。
引理1.对于随机选取的k和m,x(kQa)=m的概率至多为2/p。
引理2.记R=kP+(m,Hash(m)k),其中,x(kP)≠m,则x(R)∈{m, x(kP)}的概率是可忽略的。
证明假设kP=(c,d),则d2=c3+ac+b,c,d完全由k决定。以下将 Hash(.)简记为h(.)。若x(R)=m,由伪加公式得:
利用关系式d2=c3+ac+b可以将上式中的d替换掉,得到下式:
(h(m)k)4+(h(m)k)2(6m2c-4m3+2ac+2b)-4(h(m)k)(c3+ac+b)
+4m6-12m5c-9m2c2-4m3(ac+b)+6m2(ac+b)+a2c2+b2+2abc=0
如果对于给定的k,上式成立的概率是不可忽略的,则意味着Hash函 数h(.)以不可忽略的概率满足上式,在k固定的条件下,对于满足上式的 Hash函数值e,把m当做未知数,通过求解六次方程便可以得到e的原像, 即若对于给定的k,上式成立的概率是不可忽略的,那么Hash函数h(.) 不满足单向性的要求,所以对于任意的k,上式成立的概率均是可以忽略 的,则x(R)=m的概率是可忽略的。若x(R)=c,同理可得:
(h(m)k)2+c3+ac+b-m3-2m2c+3mc2)2=4(h(m)k)2(c3+ac+b)
因为Hash函数h(.)是单向的,所以上式成立的概率也是可忽略的。 由上知x(R)∈{m,x(kP)}的概率是可忽略的。
上述引理说明:加密过程返回1的概率是可忽略的,而加密、解密均 只需要两次椭圆曲线点的倍乘和一次伪加,故可以认为:该本发明所采用 的加密方法是有效的,其合理性是显然的。参见IEEE P1363标准,如果使 用点的压缩技术,则该体制产生的密文有三倍的明文扩张,即密文尺寸是 明文尺寸的三倍。
基于两个相异点的伪加不依赖于曲线本身,上述方法对ElGamal加密 体制中的明文嵌入方式作了改变,即将m嵌入到点(m′G(k),H(m′ G(k))k)),而不是将其嵌入到系统参数所确定的椭圆曲线上的点。这 使得明文嵌入非常自然、简单。除此之外,该体制还具有以下几个特点: 它通过解密过程中的第4步可以验证密文的合法性,这使得伪造合法的密 文变得非常困难(除非通过选择明文);它使用了不同的椭圆曲线群来进 行运算。即除了系统参数所确定的椭圆曲线外,还有一条由F(k)Qa和(m′ G(k),H(m′G(k)k)确定的曲线,该曲线是随m和k而变化的,除 非知道用户A的私钥,否则不可能知道当前运算所在的椭圆曲线群。
上述加密体制的加密时间复杂度为2次标量乘法,与ElGamal体制的 效率相当;带验证的解密的时间复杂度为2次标量乘法,比ElGamal体制 多一次标量乘法。若不带验证,则效率相当。如果采用点的压缩技术,其 有3倍的明文扩张。为描述方便起见,这里仅给出了基域特征为大素数下 的体制,当特征为2时,伪加以及体制的描述是极其类似的。
该加密体制作为ElGamal体制的
变形,其安全性基于椭圆曲线计算迪 菲-赫尔曼问题(ECCDHP)。它给出了一种非常简洁的明文嵌入方式,并可 以验证密文的合法性,以此提供了更高级别的安全性。在随机谕示模型 (random oracle model)下,证明了该加密体制是适应性选择密文下语义 安全的(IND-CCA2)。
在随机谕示模型(random oracle model)下,证明了如果椭圆曲线 计算迪菲-赫尔曼问题(ECCDHP)难解,则该加密体制是适应性选择密文攻 击下语义安全的(IND-CCA2),由于该证明是基于ECCDHP的,故其安全性 可能高于PSEC-1。它不是一种混合加密体制,其运算仅包括椭圆曲线点的 倍乘、伪加运算和杂凑函数,不需要应用对称加密体制。该加密体制利用 全新的伪加运算,将明文嵌入到仿射平面中点的x坐标,给出了一种非常 简洁的明文嵌入方式,并可以验证密文的合法性。
在该密码体制的实现中,首先面临的是系统参数(p,a,b,P,n)的选 择问题。从安全
角度考虑,为抵抗一些已知的攻击算法,可以对系统参数 进行特殊的限制:
1.n>2160且
2.椭圆曲线是非超奇异的(non-supersingular),即p不整除 p+1-#E(Fp);
3.基点P的阶n不整除pk-1(1≤k≤C),实际中常取C=20;
4.椭圆曲线是非异常的(non-anomalous),即#E(Fp)≠p。
该实施方式取基域Fp为标准IEEEP1363所建议的有限域,Hash函数 G(.),F(.)和H(.)均为SHA1并强制其Hash函数值的最高8比特为0,大素 数p的比特数为λ。随机选取椭圆曲线的参数a,b,利用SEA算法计算它的 阶,然后把满足以上要求的椭圆曲线作为系统参数。在本发明的具体实施 中,需要椭圆曲线点加算法、伪加算法、椭圆曲线倍点算法以及椭圆曲线 点的标量乘法,以下逐一给出各算法。
由于伪加算法与椭圆曲线x坐标相异的两个点的点加算法相同,故不 单独列出来。
本发明一个具体的实施例中,密钥生成过程如下:
1、随机选择一个整数dA,1<dA<n,采用NAF编码和标量乘法算法计算 QA=dAP;
2、将dA作为私钥,QA作为公钥。
具体的加密步骤是:将消息数据m根据3λ/4进行分组m1m2...md,一次对 一个分组进行加密,例如:将一个分组的消息m加密后传送。
2.1找到公开密钥QA;
2.2选择一个随机数k,1<k<n;
2.3计算f=SHA1(k);
2.4采用NAF编码和标量乘法算法计算fP记为C1;
2.5将m转化为域中元素m’=m||0λ/4;
2.6采用NAF编码和标量乘法算法计fQA记为Q’,若x(Q’)等 于m’f则执行2.2;
2.7利用点加算法计算Q’+(m’f,SHA1(m’f)k)记为C2,若 x(C2),x(Q’)和m’f两两不同,则发送加密数据(C1,C2),否则,返 回2.2。
解密过程:收到加密数据(C1,C2)后,实施如下解密过程:
3.1采用NAF编码和标量乘法算法计算点Q’=dAC1,若x(Q’)等于x(C2) 则拒绝接收;
3.2采用点加算法计算(M,r)=C2-Q’,若M等于x(C2)或x(Q’)则拒绝 接收;
3.3计算k=SHA1(M)r;
3.4计算f=SHA1(k);
3.5计算m’=Mf
3.6采用NAF编码和标量乘法算法计算,若fP等于C1且m’的后λ/4比 特为0,则接收明文m为m’的前3/4比特;否则拒绝接收。
上述的点加算法如下:
当对于一个数据进行加密时,对于输入的椭圆曲线y2=x3+ax+b,和 该曲线上的点P0=(x0,y0)和点P1=(x1,y1);
A1、如果P0=0,则输出点P2即为P1
A2、如果P1=0,则输出点P2即为P0
A3、如果x0≠x1
A3.1计算λ←(y0-y1)/(x0-x1)mod p;是指将(y0-y1)/(x0-x1) mod p赋值给λ;
A3.2执行第A7步
A4、如果y0≠y1,输出P2←O
A5、如果y0=0,输出P2←O
A6、计算λ←(3x2+a)/(2y1)mod p
A7、计算x2←λ2-x0-x1 mod p
A8、计算y2←(x1-x2)λ-y1 mod p
A9、输出P2←(x2,y2)
注:若要减点P=(x,y),只要加点-P=(x,-y)。
上述的椭圆曲线上倍点算法如下:
输入:椭圆曲线E,E上点P(X1,Y1,Z1),P≠O
输出:(X3,,Y3,Z3)=2P
B1、计算λ1←3X1 2+aZ1 4;
B2、计算Z3←2Y1Z1
B3、计算λ2,←4X1Y1 2;
B4、计算X3←λ1 2-2λ2;
B5、计算λ3←8Y1 4;
B6、计算Y3←λ1(λ2-X3)-λ3;
B7、输出(X3,Y3,Z3)
上述的NAF编码算法如下:
输入:整数
输出:NAF
C1、c0←0,kl←0,kl+1←0;
C2、j←0
C3.如果j≠l+1
C3.1计算
C3.2计算sj←kj+cj-2cj+1
C3.3计算j=j+1
C3.4转入第3步
C4、输出(slsl-1,...,s1,s0)2
上述的NAF标量乘法算法如下:
输入:椭圆曲线上一点P,整数k的NAF(slsl-1,...,s1,s0)2,sl=1;
输出:Q=kP;
D1、Q←O;
D2、j←l;
D3、如果j≠-1
D3.1计算Q←2Q
D3.2如果sj=1计算Q←Q+P
D3.3如果sj=-1计算Q←Q+P
D3.4计算j=j-1
D3.5转入第3步
D4、输出Q.
以上各算法给出了本发明所描述的椭圆曲线加密体制的具体实施方 式,以下给出在该方式下运行获得的一组试验数据,其中各个数据均以十 六进制述表达。
系统参数:
λ:192
p:fffffffffffffffffffffffffffffffeffffffffffffffff
a:fffffffffffffffffffffffffffffffefffffffffffffffc
b:02d5134233c1f7f4f50706f02882d85e767294c7230612c2
P.x:df00000129200001db000001ffbe800169ea40011de3ec01
P.y:46b19ab9a84501afc6c94ce6fb9ae8f21a93fedb9ec6881f
n:fffffffffffffffffffffffe75432f994b9b16ef54c39393
dA:83cedad356f4f6cf573ff873b789add938df2ec7d5d2753b
QA.x:1f18bcacb74087835ae629a87968f0d57adb39110ec1fd70
QA.Y:53b96505a207de2442510c7f01c80c4cffcdaf40099fa0a1 加密时:
m:00000000000000000313233343536373839
m’:00000000000000000313233343536373839000000000000
k:9296decb12fc6d896ffd58ade5b03a3f1e235d0556e3f57d
f:09cf3ae17aad817332dd1e4fe8d41c50d8b7ee7152ac5b6
C1.x:362b32f9f9b3c21c1df13631ea7155f23d04d4853ce048db
C1.y:f7cbaa643bccce14f252660b0104542f86a8a5f89f7c1c5
fQA.x:fa529d8354bbb6bd3289b906f1b3337914628f6cf75a354c
fQA.y:91f142b803c9ba20ece5012f02bc9511cb4412b881bbbd7a
m’f:09cf3ae17aad817331ce3d7cab877f235b27ee7152ac5b6
SHA1(m’f)k:
92d183184e2365cc9b2673ddc3f49bf2a3c57cb6b5c3ea36
C2.x:6edaa4c686f938464514b379720f10dd4ba8a353e1a9e6de
C2.y:2f47f3be8875cc0417fbfacf87993ea4893595ddf610b43 解密后:
Q′.x:fa529d8354bbb6bd3289b906f1b3337914628f6cf75a354c
Q′.y:91f142b803c9ba20ece5012f02bc9511cb4412b881bbbd7a
M:09cf3ae17aad817331ce3d7cab877f235b27ee7152ac5b6
r:92d183184e2365cc9b2673ddc3f49bf2a3c57cb6b5c3ea36
SHA1(M):0475dd35cdf0845f4db2b702644a1cdbde621b3e3201f4b
k:9296decb12fc6d896ffd58ade5b03a3f1e235d0556e3f57d
f=SHA1(k):09cf3ae17aad817332dd1e4fe8d41c50d8b7ee7152ac5b6
m’f:00000000000000000313233343536373839000000000000
fP.x:362b32f9f9b3c21c1df13631ea7155f23d04d4853ce048db
fP.y:f7cbaa643bccce14f252660b0104542f86a8a5f89f7c1c5
m:00000000000000000313233343536373839;
在使用INTEL公司PentiumIV 1.7G
微处理器、256M内
存储器的计算 机,并在WINDOWS98
操作系统的环境下,用ANSIC编程语言实现特征为p 以及特征为2的的有限域上的体制,其中p=2192-264+1,F2m,m=193,生成多 项式f(x)=x193+x15+1;实现效率如下表所示: 内容 *Fp Fp *F2m F2m 密钥生成 1.21 5.43 0.67 2.48 加密 6.70 10.95 3.29 5.43 ECES 加密 6.76 10.53 3.20 5.26 解密 6.50 11.57 3.12 5.42 解密(不带验证) 5.26 5.95 2.59 2.45 ECES解密 5.51 5.48 2.62 2.53 倍乘 1.20 5.32 0.65 2.39
表中的各项指标都是在执行1000次的速度,单位为秒;*栏下的指 标是允许的预处理速度。
若Fp上的运算采用汇编语言编写,192比特的点的倍乘速度为1.81秒 (1000次),下表列出了p=2256下执行1000次的速度,单位为秒: 内容 ANSI C 汇编 密钥生成 2.25 0.93 加密 18.93 6.35 解密 18.64 6.35 解密(不带验证) 16.2 5.43
用型号为MCS51的
单片机实现的加/解密效率见下表,其中MCS51主要 存贮器配置:256B的内部RAM,64KB的外部RAM,64KB的程序区ROM.时钟
频率:1M时钟周期/秒(晶振频率:12MHZ)。取Fp,p=2192-264-1和F2m,m=193, 其生成多项式为x193+x15+1。 功能 Fp(秒/次) F2m(秒/次) 密钥生成 4.89 4.34 加密 25.32 20.84 ECES加密 25.19 20.74 解密(不带验证) 20.43 16.21 ECES解密 20.42 16.21 解密(带存储) 25.33 20.10 倍乘(带预存储) 4.77 4.32 倍乘(不带预存储) 19.96 16.4
注:Fp的外部RAM占用1.5K,ROM占用9K程序,6K预存储值;F2m的 外部RAM占用:2K(带预存储)/1.2K(不带预存储),ROM占用:7K程序,6K 预存储值。
以下,给出了该加密体制是在适应性选择密文下语义安全的详细证明。
一、安全的定义
假设U是一个概率算法,则A(x1,x2,...;r)表示输入为x1,x2,..., 随机数为r时算法A的输出;y←A(x1,x2,...)表示随机选择r,令y等 于A(x1,x2,...;r);若存在r使得A(x1,x2,...;r)=y,则称y是A(x1, x2,...)的输出;如果S是一个有限集合,则x←S表示从集合S中依据均 匀分布随机地选取x,若a既不是一个集合也不是一个算法,则x←a表示 将a的值赋给x。
定义1.公钥加密体制是由算法组成的三元组:PE=(KG,Enc,Dec), 其中
KG:密钥生成算法,是一个概率算法,输入为安全参数1λ(λ∈N), 输出为一对公私钥(pk,sk);
Enc:加密算法,是一个概率算法,输入为公钥pk和明文x∈{0,1}*,输 出为密文y;
Dec:解密算法,是一个确定型算法,输入为私钥sk和密文y,输出 为明文x∈{0,1}*或特殊字符,该字符表示输入的密文不是有效密文,即不 存在x∈{0,1}*使得其密文为y。
对于由密钥生成算法得到的任意的公私钥对(pk,sk)和任意的明文 x∈{0,1}*,若y是Encpk(x)的输出,则一定有Decsk(y)=x。因为公钥加密体 制需要保证现实传输的信息的安全,所以,以上的三个算法(KG,Enc,Dec) 均是以安全参数为尺度的多项式时间算法。
公钥加密体制的安全性的定义可以首先分别考虑攻击者可能的攻击目 标(goals)和可能的攻击模型(attack model),然后通过组合攻击模型 和攻击目标给出各种级别的安全性的定义。
依据攻击目标的不同,体制的安全性分析主要考虑单向性(OW, oneway)、语义安全(SS,semantic security)、密文的不可区分性(IND, indistinguishability of encryptions)和非扩展性(non-malleability, NM)。简单的说,单向性就是指由目标密文y求得相应的明文x=Decsk(y) 非常困难;语义安全的就是指从目标密文y获得相应明文x的任何信息均 是计算不可行的;密文的不可区分性是指已知两个明文和某个明文所对应 的一个密文,无法判断该密文相应的明文是哪一个。可以认为密文的不可 区分性和语义安全均是单向性概念的提升,它们都涵盖在传统的
保密性要 求中,单向性是加密体制安全的最低要求,如果体制是密文不可区分的或 语义安全的,则该体制一定是单向的,所以本文不讨论任何单向性的性质。 非扩展性就是指从目标密文y求得另外一个不同的密文y′,使得其相应的 密文x,x′间存在“有意义的联系”(如x′=x+1),它提升了现实中的密 文防篡改的思想。
攻击模型表述了攻击者所具有的能
力,可以分为选择明文攻击 (chosen-plaintextattack,CPA)、非适应性选择密文攻击(non-adaptive chosen-ciphertext attack,CCA1)和适应性选择密文攻击(adaptive chosen-ciphertext attack,CCA2)。CPA赋予攻击者自由选择明文并获 得相应密文的权利,对于公钥加密体制而言,攻击者知道公钥即具有了选 择明文攻击的能力;CCA1的形式化定义是由两位学者Naor和Yung给出的, 其中攻击者除了知道公钥外,还可以
访问解密谕示(该外部装置是解密算 法),但攻击者只在得到目标密文之前具有访问解密谕示的权利(非适应 性是指对解密谕示的访问不依赖于目标密文),依据其特点,非适应性选 择密文攻击也被称为午夜攻击(midnight attack)或午餐攻击(lunchtime attack,Lunch-breakattack);CCA2是由两位学者Rackoff和Simon提 出的,其中攻击者既知道公钥也可以访问解密谕示,而且其对解密谕示的 访问是没有限制的,即使在获得目标密文之后攻击者仍然可以访问解密谕 示,但是他不能将目标密文自身作为解密谕示的输入(适应性的是指对解 密谕示的访问依赖于目标密文)。
组合上述的攻击目标和攻击模型,可以得到各种不同的安全性的定义, 下面仅给出不可区分性的形式化定义,其包括了最高级别的安全性--适应 性选择密文下语义安全的IND-CCA2。
根据攻击者U在不同阶段具有不同的输入,可以将其看做两个概率算 法(U1,U2),其中U1和U2的作用依赖于攻击者的目标。在密文的不可区分 性的定义中,算法U1的输入为pk,输出为(x0,x2,s),前两项是两个相同 长度的明文,s是攻击者想要保留的信息;从x0,x1中随机选择一个记为 xb,挑战密文y为xb的密文,算法U2的输入为(x0,x1,s)和挑战密文y 它试图输出正确的b。
定义2(IND-CPA,IND-CCA1,IND-CCA2).假设PE=(KG,Enc,Dec)是 一个公钥加密体制,A=(A1,A2)是一个攻击者,H(.)是随机谕示,对于任意 的atk∈{cpa,cca1,cca2}和任意的λ∈N,令
其中取b∈{0,1},定义实验ExpPE,A ind-atk-d(λ)为
y←Encpk(xb);
Return d。
如果atk=cpa,则O1(.)=,O2(.)=;如果atk=cca1,则O1(.)=Decsk(.), O2(.)=;如果atk=cca2,则O1(.)=Desk(.),O2(.)=Decsk(.);还要求 |x0|=|x1|,算法A2不能利用解密谕示获得y的明文。如果对于任意多项式 时间的攻击者A,均有ExpPE,A ind-atk(·)是可忽略的函数,则称公钥加密体制PE是 IND-ATK意义下安全的。
二、安全性分析
从体制本身来看,由于本发明的运算基于不同的椭圆曲线群,而且“+” 几乎没有结合律(例如:仿射平面R2上三点P=(1,2),Q=(2,3),R=(3,1), 由伪加公式得(P+Q)+R=(-2,1)+(3,1)=(-1,-1),而P+(Q+R)=(1,2)+(-1, -9)=(121/4,-1303/8)。),所以由m的密文得到R(m)的密文是非常困 难的,其中R是一个非平凡的关系,即直观上该体制具有非扩展的性质, 这是与ElGamal体制的最明显的区别,也是安全性提高的一个原因。Hash 函数的使用进一步加强了该体制的安全性。本节将证明该体制是IND-CCA2 安全的。为方便起见,以下简记该加密体制为∏。
定理1.在ECCDHP难解的条件下,∏是IND-CCA2安全的。
证明 设∏存在IND-CCA2意义下的攻击者A=(A1,A2),A访问随机谕 示G(.),H(.)和F(.)所得的相应记录分别被称为G-表、H-表和F-表,记 做τG={(gi,Gi)},τH={(hi,Hi)},τF={(fi,Fi)}其长度(访问的次数) 分别用qG,qH,qF表示。则可以如下构造ECCDHP的求解算法B。设B的输 入为P,Q=aP,Y=bP,其目的是计算R=abP。
B将P,Q作为A1的输入调用A1,由于A1可以访问随机谕示和解密谕 示,所以B需要模拟随机谕示和解密谕示。设A1向随机谕示G(.)查询g, 若g在查询记录中,则将记录中相应的输出值作为对A的应答;否则,随 机选取其值域中的数作为对A1的应答,同时将k和该随机数作为一对输入、 输出添加在记录中。B模拟随机谕示H(.)和F(.)的动作与模拟G(.)的方式 相同。设A1向解密谕示访问y=(C1,C2),如果分别在G-表、F-表和H-表存 在(gi,Gi),(f1,F1),(hj,Hj),满足f1=gi,F1P=C1,C2=F1Q+(hj,Hj f1),计算M=hjGi,若M的低λ′比特为0,则输出M的高λ-λ′比特作为 明文输出,其它情况均输出空串。在A1中止时,不妨设A1的输出为(m0,m1, s)。
B随机选择C2 *∈{0,1}2λ,令y*=(C1 *=Y,C2 *),B将(m0,m1,s,y*)作为 A2的输入,调用A2,其模拟解密谕示和随机谕示的过程均同上。
在A中止后,B从H-表中随机挑选(h,H),如果存在t使得R=C2 *-(h, t)∈E,则输出R;否则,重新从H-表中选取(h,H);若在H-表中不存在 上述关系式,则随机输出E的点作为R。
以下记F*=logPY,(s*,t*)=C2 *-F*Q,h*=s*,k*=t*H(h*)。利 用E的方程和伪加公式,可知C2 *-(h,t)∈E是关于t的六次方程,其至 多有六个解,令AskH表示事件:A向H(.)访问了h*,则B输出正确的ECDH 解的概率
为保证A的正确调用,首先B必须正确模拟解密谕示,其次B还要保 证目标密文y*合法。Bad表示解密谕示的应答有误或y*不是合法密文。设 A成功的概率为(1+ε)/2,如果B正确地调用了A,因为y*与m0,m1完全无 关,故A输出正确结果的概率为1/2,则
(1+ε)/2≤1/2(1-Pr[Bad])+Pr[Bad],
可得Pr[Bad]≥ε。显然
Pr[AskH]≥Pr[AskH∧Bad]=Pr[Bad]-Pr[Bad∧﹁AskH]≥ε-Pr[Bad|﹁AskH]
在没有向H(.)访问h*的前提下,仅当A向G(.)或F(.)访问了k*(记 为AskK)或解密谕示的应答有误(记为DBad)时,Bad才可能发生,即
Pr[Bad|﹁AskH]≤Pr[AskK|﹁AskH]+Pr[DBad|﹁AskH∧﹁AskK]
如果h*没有被访问,则H(h*)完全随机,所以k*=t*H(h*)完全随机, 故k*被访问的概率不大于(qG+qF)/2λ,即
以下的讨论均基于k*,h*没有被访问的前提条件。
假设A向解密谕示的输入为y(C1,C1),记F=logPC1,(s,t)=C2-FQ, k=H(s)t,h=s,Pr′[.]=Pr[·|﹁AskH∧﹁AskK]。
如果h,k均被查询,则输出结果一定正确;如果h被查询但k没有向 G(.)或F(.)查询,则输出结果为空串,如果结果不真,那么y一定是合法 密文,以下分情况讨论:因为h被查询,所以k确定,而k*随机,故k=k* 的概率不大于2-λ,在k=k*的条件下y是合法密文的概率至多为1,则k=k* 时,模拟应答出错的概率不大于2-λ;如果k≠k*且k没有向G(.)访问,y 是合法密文意味着sG(k)的低λ′比特为0,因为k≠k*且k没有向G(.) 访问,所以y是合法密文的概率不大于2-λ′;如果k≠k*且k没有向F(.) 访问,y是合法密文意味着F(k)=logpC1,因为k≠k*且k没有向F(.)访 问,所以y是合法密文的概率不大于2-λ;如果h没有被查询,则输出结果 为空串,如果结果不真,那么y一定是合法密文,即F(k)=logPC1且sG(k) 的低λ′比特为0,如果h=h*,因为h*也没有被查询,所以H(h)完全随机; 如果k≠k*,因为h没有被查询,所以H(h)完全随机;故在h没有被查 询的条件下,H(h)是完全随机的,则k=tH(h)是完全随机的,故F(k)= logPC1的概率不大于2-2,sG(k)的低λ′比特为0的概率不大于2-λ′则在 h没有被访问的条件下,模拟应答出错的概率不大于2-λ。
综合以上分析,可知Pr[DBad|﹁AskK∧﹁AskH]≤3qD/2λ+qD/2λ,则
故B输出正确的ECDH解的概率
从上式知,如果ε是不可忽略的,则ε′一定是不可忽略的,设A的运 行时间为t,则B的运行时间t′=t+qHtf,其中tf表示在Fp上求解六次方程 所需的时间,显然如果A是多项式时间的,则B一定也是多项式时间的, 由上知若∏不是IND-CCA2安全的,则ECCDHP可解,这是矛盾的,故在ECCDHP 难解的条件下,∏是IND-CCA2安全的。
最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所 描述的技术方案;因此,尽管本
说明书参照上述的各个实施例对本发明已 进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对 本发明进行
修改或者等同替换;而一切不脱离本发明的精神和范围的技术 方案及其改进,其均应涵盖在本发明的
权利要求范围当中。