H04L9/32(2006.01)I H04L9/30(2006.01)I H04L9/08(2006.01)I
1.组密钥初始分配中的隐私保护方法,其特征在于,整个程序包括组密钥签发,组密钥验证和第三方证明三个阶段;
1.)组密钥签发包括以下具体步骤:
1.1组密钥的签发者随机选择两个整数k 1和k 2,满足1≤k 1<n,1≤k 2<n,k 1和n互素,k 2和n互素;
n是椭圆曲线E(F p)上的生成元P的一个素数阶;有限域F p上的椭圆曲线E(F p)是定义在仿射平面上的3次方程E:y 2≡x 3+ax+b(mod p)的所有解与无穷远点O的并集,记作E(F p)={(x,y)|y 2=x 3+ax+b,(x,y)∈F p*F p}U{O},其中p为大于3的素数,参数a,b∈有限域F p={0,1,2,...,p-1},满足 生成元P的阶数n是满足nP=0的最小整数;
1.2组密钥的签发者计算点G=(k 1-k 2)·P,点R 1=(k 1-k 2)·B=(x 1,y 1),点R 2=k 1·B=(x 2,y 2),参数r 1=x 1(mod n),参数r 2=x 2(mod n);如果r 1=0或者r 2=0,则返回步骤1.1;
B是首次加入组的申请者的公钥,满足B=d B·P(mod p),d B是首次加入组的申请者的私钥,满足d B∈[1,n-1],mod是数学模运算;有限域F p上的椭圆曲线E(F p)的运算包括点的加法和点的数乘:
点的加法:令P 1,P 2∈E(F p),P 1=(x 1,y 1),P 2=(x 2,y 2),则R=P 1+P 2=(x 3,y 3)∈E(F p),其中x 3=λ 2=x 1-x 2,y 3=λ(x 1-x 3)-y 1;当P 1≠P 2时,λ=(y 2-y 1)/(x 2-x 1);当P 1=P 2时,λ=(3x 1 2+a)/(2y 2);
点的数乘:令P=(x,y)≠0,k是整数,则kP=(x,y)+(x,y)+...+(x,y)的k-1次加法;
1.3组密钥的签发者计算组密钥消息密文c=m·r 1和组密钥消息签名s≡k 2 -1(m-d A·r 2)(mod n);如果s=0,则返回步骤1.1;
m是组密钥消息,d A是组密钥签发者的私钥,满足d A∈[1,n-1],A是组密钥签发者的公钥,满足A=d A·P(mod p);
1.4组密钥的签发者发送{c,G,R 2,s}给首次加入组的申请者;
2.)组密钥验证阶段包括以下具体步骤:
2.1首次加入组的申请者验证点G和点R 2=(x 2,y 2)是否是椭圆曲线E(F p)上的点;如果G和R 2不是椭圆曲线E(F p)上的点,则拒绝接收组密钥消息;否则,计算参数r 2=x 2(mod n),验证参数r 2和签名s是否满足r 2∈[1,n-1],s∈[1,n-1];如果不满足,则终止该程序;否则,继续执行步骤2.2;
2.2首次加入组的申请者计算点R 1=d B·G=(x 1,y 1),参数r 1=x 1(modn);
2.3首次加入组的申请者解密组密钥消息密文m=c·r 1 -1;
2.4首次加入组的申请者计算点V 1=r 2·A+d B -1·s·R 2-s·G和点V 2=m·P;
2.5首次加入组的申请者验证是否满足V 1=V 2;如果不满足,则拒绝接收组密钥消息;否则,接收组密钥消息;
3.)第三方证明阶段包括以下具体步骤:
3.1首次加入组的申请者计算点V=d B -1·s·R 2和点U=d B·V,发送{m,G,R 2,s, V}给第三方;
如果使用的是可信的通信信道,首次加入组的申请者明文传送组密钥消息m;如果使用的是不可信的通信信道,首次加入组的申请者与第三方协商加密传送组密钥消息m;
3.2第三方计算点V 1=r 2·A+V-s·G和点V 2=m·P,其中参数r 2=x 2(mod n),点R 2=(x 2,y 2),验证是否满足V 1=V 2;如果不满足,则终止该程序;否则,计算点U=s·R 2;
3.3首次加入组的申请者随机选择一个整数k,k∈[1,n-1],计算点E 1=k·V和点E 2=k·P,发送E 1和E 2给第三方;
3.4第三方随机选择一个整数ω发送给首次加入组的申请者;
3.5首次加入组的申请者计算v=k-d B·ω,发送v给第三方;
3.6第三方验证是否满足E 1=v·V+ω·U和E 2=v·P+ω·B;如果满足,则第三方验证成功;如果不满足,则第三方验证失败。
组密钥初始分配中的隐私保护方法
技术领域
本发明涉及一种组密钥初始分配中的隐私保护方法,具体是一种基于椭圆曲线ElGamal密码体制、有向签名机制和零知识证明机制的,针对组密钥的签发者和首次加入组的申请者的隐私信息进行有效保护的方法,使得除了首次加入组的申请者以外,任何组密钥消息的接收者无法获知组密钥的签发者和组密钥的签发对象,可用于网络组通信环境下组密钥初始分配过程中存在一个或者多个组密钥签发者的情景,属于信息安全领域。
背景技术
在网络组通信环境下,现已部署实施的基于椭圆曲线ElGamal密码体制的组密钥初始分配方法是通过数字签名机制验证组密钥消息的有效性。首先,组密钥的签发者用首次加入组的申请者的公钥对组密钥消息进行加密,用组密钥的签发者的私钥对组密钥消息进行数字签名,将消息密文和数字签名一起发送首次加入组的申请者。然后,首次加入组的申请者用首次加入组的申请者的私钥解密消息密文获得组密钥消息,用组密钥的签发者的公钥验证组密钥消息签名的有效性。目前现有的组密钥初始分配方法中没有考虑对组密钥的签发者和首次加入组的申请者的隐私信息进行有效的保护,使得除了首次加入组的申请者以外,任何组密钥消息的接收者只要拥有组密钥的签发者的公钥就可以验证组密钥消息签名的有效性,从而获知谁是组密钥的签发者和谁是组密钥的签发对象。
本发明在组密钥初始分配中引入有向签名机制,使得除了首次加入组的申请者以外,任何组密钥消息的接收者无法获知组密钥的签发者和组密钥的签发对象。
发明内容
本发明的目的在于提供一种组密钥初始分配过程中对组密钥的签发者和首次加入组的申请者的隐私信息进行有效保护的方法。该方法充分利用椭圆曲线ElGamal密码体制安全性高和资源消耗少的特点,通过关联随机数绑定加密和签名的方法增加安全的复杂性,通过引入有向签名机制确保只有首次加入组的申请者才可以验证组密钥消息签名的有效性,从而有效地保护组密钥的签发者和首次加入组的申请者的隐私信息,使得除了首次加入组的申请者以外,任何组密钥消息的接收者无法获知组密钥的签发者和组密钥的签发对象,资源消耗小,方便部署实现。
为实现上述目的,本发明采取以下技术方案。整个技术方案包括组密钥签发、组密钥验证和第三方证明三个阶段。首先,在组密钥签发阶段,组密钥的签发者用首次加入组的申请者的公钥对组密钥消息进行加密,用组密钥的签发者的私钥和首次加入组的申请者的公钥对组密钥消息进行有向签名,将消息密文和签名一起发送首次加入组的申请者。然后,在组密钥验证阶段,首次加入组的申请者用首次加入组的申请者的私钥对消息密文进行解密,用组密钥的签发者的公钥和首次加入组的申请者的私钥对组密钥消息签名进行验证。最后,在第三方证明阶段,首次加入组的申请者用零知识证明机制在任何 需要的时候向第三方证明组密钥消息签名的有效性,同时不向第三方透漏任何隐私信息。
本发明技术方案描述中使用的基础标识符包括:
Fp:有限域,满足Fp={0,1,2,...,p-1},p为大于3的素数;
E(Fp):定义在仿射平面上的3次方程E:y2≡x3+ax+b(mod p)的所有解与无穷远点O的并集,记作E(Fp)={(x,y)|y2=x3+ax+b,(x,y)∈Fp*Fp}U{O};
a,b:椭圆曲线方程的参数,满足a,b∈Fp,
n:椭圆曲线E(Fp)上的生成元P的一个素数阶,是满足nP=0的最小整数;
P:椭圆曲线E(Fp)上的生成元;
dA:组密钥签发者的私钥,满足dA∈[1,n-1];
A:组密钥签发者的公钥,满足A=dA·P(mod p);
dB:首次加入组的申请者的私钥,满足dB∈[1,n-1];
B:首次加入组的申请者的公钥,满足B=dB·P(mod p);
k1,k2,k,ω:随机数;
m:组密钥消息。
整个技术方案包括组密钥签发、组密钥验证和第三方证明三个阶段。
1.组密钥签发阶段
组密钥签发阶段包括以下具体步骤:
1.1组密钥的签发者随机选择两个整数k1和k2,满足1≤k1<n,1≤k2<n,k1和n互素,k2和n互素;
n是椭圆曲线E(Fp)上的生成元P的一个素数阶,是满足nP=0的最小整数;有限域Fp上的椭圆曲线E(Fp)是定义在仿射平面上的3次方程E:y2≡x3+ax+b(mod p)的所有解与无穷远点O的并集,记作E(Fp)={(x,y)|y2=x3+ax+b,(x,y)∈Fp*Fp}U{O},其中p为大于3的素数,参数a,b∈有限域Fp={0,1,2,...,p-1},满足
1.2组密钥的签发者计算点G=(k1-k2)·P,点R1=(k1-k2)·B=(x1,y1),点R2=k1·B=(x2,y2),参数r1=x1(mod n),参数r2=x2(mod n);如果r1=0或者r2=0,则返回步骤1.1;
B是首次加入组的申请者的公钥,满足B=dB·P(mod p),dB是首次加入组的申请者的私钥,满足dB∈[1,n-1],mod是数学模运算;有限域Fp上的椭圆曲线E(Fp)的运算包括点的加法和点的数乘:
点的加法:令P1,P2∈E(Fp),P1=(x1,y1),P2=(x2,y2),则R=P1+P2=(x3,y3)∈E(Fp),其中x3=λ2=x1-x2,y3=λ(x1-x3)-y1;当P1≠P2时,λ=(y2-y1)/(x2-x1);当P1=P2时,λ=(3x12+a)/(2y2);
点的数乘:令P=(x,y)≠0,k是整数,则kP=(x,y)+(x,y)+...+(x,y)的k-1次加法;
1.3组密钥的签发者计算组密钥消息密文c=m·r1和组密钥消息签名s≡k2-1(m-dA·r2)(mod n);如果s=0,则返回步骤1.1;
m是组密钥消息,dA是组密钥签发者的私钥,满足dA∈[1,n-1],A是组密钥签发者的公钥,满足A=dA·P(mod p);
1.4组密钥的签发者发送{c,G,R2,s}给首次加入组的申请者。
2.组密钥验证阶段
组密钥验证阶段包括以下具体步骤:
2.1首次加入组的申请者验证点G和点R2=(x2,y2)是否是椭圆曲线E(Fp)上的点;如果点G或者点R2不是椭圆曲线E(Fp)上的点,则终止本程序执行;计算参数r2=x2(mod n),验证参数r2和签名s是否满足r2∈[1,n-1],s∈[1,n-1];如果不满足,则终止本程序执行;
2.2首次加入组的申请者计算点R1=dB·G=(x1,y1),参数r1=x1(modn);
2.3首次加入组的申请者解密组密钥消息密文m=c·r1-1;
2.4首次加入组的申请者计算点V1=r2·A+dB-1·s·R2-s·G和点V2=m·P;
2.5首次加入组的申请者验证是否满足V1=V2;如果满足,则接收组密钥消息;如果不满足,则终止本程序执行。
3.第三方证明阶段
第三方证明阶段包括以下具体步骤:
3.1首次加入组的申请者计算点V=dB-1·s·R2和点U=dB·V,发送{m,G,R2,s,V}给第三方;
如果使用的是可信的通信信道,首次加入组的申请者明文传送组密钥消息m;如果使用的是不可信的通信信道,首次加入组的申请者与第三方协商加密传送组密钥消息m;
3.2第三方计算点V1=r2·A+V-s·G和点V2=m·P,其中参数r2=x2(mod n),点R2=(x2,y2),验证是否满足V1=V2;如果不满足,终止本程序执行;如果满足,则计算点U=s·R2;
3.3首次加入组的申请者随机选择一个整数k,k∈[1,n-1],计算点E1=k·V和点E2=k·P,发送E1和E2给第三方;
3.4第三方随机选择一个整数ω发送给首次加入组的申请者;
3.5首次加入组的申请者计算v=k-dB·ω,发送v给第三方;
3.6第三方验证是否满足E1=v·V+ω·U和E2=v·P+ω·B;如果满足,则第三方验证成功;如果不满足,则第三方验证失败。
本发明方法的整个程序存在于网络组通信的整个过程中,可以不断重复执行。
本发明提出的一种组密钥初始分配中的隐私保护方法,充分利用了椭圆曲线ElGamal密码体制安全性高和资源消耗少的特点,通过关联随机数绑定加密和签名的方法增加安全的复杂性,通过引入有向签名机制确保只有首次加入组的申请者才可以验证组密钥消息签名的有效性,从而有效地保护组密钥的签发者和首次加入组的申请者的隐私信息,使得除了首次加入组的申请者以外,任何组密钥消息的接收者无法获知组密钥的签发者和组密钥的签发对象,资源消耗小,方便部署实现,达到了隐私保护的目的。
具体实施方式
本发明以一个小尺寸的具体实施为例展示本发明的具体实施方式,尺寸选择越大则安全性越高。
系统参数选择:
椭圆曲线:E:y2≡x3+2x+24(mod 97),其中a=2,b=24,p=97
椭圆曲线的生成元:P=(2,6)
生成元P的阶数:n=103
组密钥消息:m=5
组密钥签发者的私钥:dA=3
组密钥签发者的公钥:A=dA·P(mod p)=3(2,6)(mod 97)=(69,61)
首次加入组的申请者的私钥:dB=4
首次加入组的申请者的公钥:B=dB·P(mod p)=4(2,6)(mod 97)=(59,50)
本发明具体实施时包括组密钥签发、组密钥验证和第三方证明三个阶段。
s1.组密钥签发阶段
组密钥签发阶段包括以下具体步骤:
s1.1组密钥的签发者随机选择两个整数k1=7和k2=8,满足1≤k1=7<n=103,1≤k2=8<n=103,k1和n的最大公约数gcd(k1,n)=gcd(7,103)=1,k2和n的最大公约数gcd(k2,n)=gcd(8,103)=1,表明k1和n互素,k2和n互素;
s1.2组密钥的签发者计算
G=(k1-k2)·P
=(mod((k1-k2),n))·P
=(mod((7-8),103))·(2,6)
=102(2,6)
=(2,91)
R1=(k1-k2)·B
=(mod((k1-k2),n))·B
=(mod((7-8),103))·(59,50)
=102(59,50)
=(59,47)
=(x1,y1)
R2=k1·B=7(59,50)=(13,93)=(x2,y2)
r1=x1(mod n)=59(mod 103)=59
r2=x2(mod n)=13(mod 103)=13
mod((k1-k2),n)是(k1-k2)模n运算;
s1.3组密钥的签发者计算组密钥消息密文c=m·r1=5·59=295和组密钥消息签名s≡k2-1(m-dA·r2)(mod n);
s=mod((invmodn(k2,n)·(m-dA·r2)),n)
=mod((invmodn(8,103)·(5-3·13)),103)
=mod(13(5-3·13),103)
=73
invmodn(k2,n)是k2模n求逆运算,运算结果为k2-1;
s1.4组密钥的签发者发送{c,G,R2,s}={295,(2,91),(13,93),73}给首次加入 组的申请者。
s2.组密钥验证阶段
组密钥验证阶段包括以下具体步骤:
s2.1首次加入组的申请者验证点G=(2,91)和点R2=(13,93)=(x2,y2)是否是椭圆曲线E(Fp)上的点;如果点G或者点R2不是椭圆曲线E(Fp)上的点,则终止本程序执行;计算参数r2=x2(mod n),验证参数r2和签名s是否满足r2∈[1,n-1],s∈[1,n-1];如果不满足,则终止本程序执行;
将点G=(2,91)代入椭圆曲线方程E:y2≡x3+2x+24(mod 97)进行验证:
y2(mod p)=912(mod 97)=36
x3+2x+24(mod p)=23+2·2+24(mod 97)=36(mod 97)=36
将点R2=(13,93)代入椭圆曲线方程E:y2≡x3+2x+24(mod 97)进行验证:
y2(mod p)=932(mod 97)=16
x3+2x+24(mod p)=133+2·13+24(mod 97)=2247(mod 97)=16
验证结果表明点G=(2,91)和点R2=(13,93)是椭圆曲线E(Fp)上的点;计算参数r2=x2(mod n)=13(mod 103)=13,验证结果表明r2=13∈[1,n-1],s=73∈[1,n-1];
s2.2首次加入组的申请者计算
R1=dB·G=4(2,91)=(59,47)=(x1,y1)
r1=x1(mod n)=59(mod 103)=59;
s2.3首次加入组的申请者解密组密钥消息密文
m=c.r1-1=295·59-1=5;
s2.4首次加入组的申请者计算
V1=r2·A+dB-1·s·R2-s·G
=r2·A+invmodn(dB,n)·s·R2-s·G
=13(69,61)+invmodn(4,103)·73·(13,93)-73·(2,91)
=13(69,61)+26·73·(13,93)-73·(2,91)
=13(69,61)+73·(26·(13,93)-(2,91))
=(64,28)+73·((74,79)-(2,91))
=(64,28)+73·(74,83)
=(64,28)+(62,27)
=(44,79)
V2=m·P=5(2,6)=(44,79);
s2.5首次加入组的申请者验证是否满足V1=V2;如果满足,则接收组密钥消息;如果不满足,则终止本程序执行;
验证结果表明V1=V2,接收组密钥消息。
s3.第三方证明阶段
第三方证明阶段包括以下具体步骤:
s3.1首次加入组的申请者计算
V=dB-1·s·R2
=invmodn(dB,n)·s·R2
=invmodn(4,103)·73·(13,93)
=26·73·(13,93)
=mod(26·73,103)·(13,93)
=44(13,93)
=(59,47)
U=dB·V=4(59,47)=(32,78)
发送{m,G,R2,s,V}={5,(2,91),(13,93),73,(59,47)}给第三方;
26·73·(13,93)=mod(26·73,103)·(13,93)是因为运算是在有限域Fp内进行,n=103是椭圆曲线E(Fp)的生成元P的阶数;
s3.2第三方计算点V1=r2·A+V-s·G和点V2=m·P,验证是否满足V1=V2;如果不满足,则终止本程序执行;如果满足,则计算点U=s·R2;
V1=r2·A+V-s·G
=13(69,61)+(59,47)-73(2,91)
=(64,28)+(59,47)-(24,92)
=(44,79)
V2=m·P
=5(2,6)
=(44,79)
验证结果表明V1=V2,计算点U=s·R2=73(13,93)=(32,78);
s3.3首次加入组的申请者随机选择一个整数k=9∈[1,n-1],计算点E1=k·V=9(59,47)=(17,11)和点E2=k·P=9(2,6)=(18,13),发送E1=(17,11)和E2=(18,13)给第三方;
s3.4第三方随机选择一个整数ω=11发送给首次加入组的申请者;
s3.5首次加入组的申请者计算
v=k-dB·ω(mod n)
=9-4·11(mod 103)
=9-44(mod 103)
=68(mod 103)
=68
发送v=68给第三方;
s3.6第三方验证是否满足E1=v·V+ω·U和E2=v·P+ω·B;如果满足,则第三方验证成功;如果不满足,则第三方验证失败;
E1=(17,11)
v·V+ω·U=68·(59,47)+11·(32,78)=(31,1)+(24,92)=(17,11)
E2=(18,13)
v·P+ω·B=68·(2,6)+11·(59,50)=(35,80)+(36,17)=(18,13)
验证结果表明E1=v·V+ω·U和E2=v·P+ω·B,第三方验证成功。
本发明具体实施与方法I(基于椭圆曲线ElGamal密码体制和数字签名机制的加 密和签名分离的组密钥初始分配方法)和方法II(基于椭圆曲线ElGamal密码体制和数字签名机制的加密和签名绑定的组密钥初始分配方法)进行比较,见表1和表2,实验环境为MATLAB 7.8.0.347(R2009a)32-bit(win32),Microsoft windows XP professional 2002 service pack 2,Intel Pentium 4CPU 3.00GHz 512MB,具体实施效果表明,本发明方法以较少的资源消耗达到对组密钥签发者和首次加入组的申请者进行隐私保护的目的。
表1组密钥签发阶段时间消耗(时间/秒)
表2组密钥验证阶段时间消耗(时间/秒)
本文发布于:2023-04-13 09:31:43,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/85937.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |