发明内容
本发明的目的在于针对上述已有技术的不足,提出云应用中基于第三方的无证书远程匿名认证方法,以解决提高安全强度,实现远程匿名双向认证。
本发明的技术方案是这样实现的:
本发明涉及三个使用云服务的实体:网络管理者M、用户U、服务提供商S。这三个实体在匿名认证***中充当不同的角色:网络管理者M,负责认证***的初始化和注册;用户U,负责向认证***中的服务提供商发送服务请求并接收反馈回来的信息;服务提供商S,负责接收用户请求,收集相关信息并提供相应服务给合法用户。其具体的认证过程包括如下:
(1)网络管理者M对***进行初始化:
1a)网络管理者M公布***参数system={G1,G2,e,l,q,P,Qc,H1,H2},其中,G1是一个阶为素数q的循环加法群,G2是一个阶为素数q的循环乘法群,e是一个双线性对映射,l是安全系数,P是G1的生成元,Qc是网络管理者M的公钥,H1和H2是两个无碰撞安全杂凑函数,H1是将长度不等的0/1序列映射到G1上的元素的杂凑函数,H2是将长度不等的0/1序列和G1中的元素映射到整数乘法群上的一个元素的杂凑函数;
1b)网络管理者M从modq的整数乘法群中随机的选择一个整数s作为它的私钥,并计算它的公钥Qc=sP,得到自己的公私钥对(s,Qc),其中私钥s必须对外保密,公钥Qc对外公开;
(2)用户U和服务提供商S进行***注册:
2a)用户U生成自己的公私钥对,并把它的身份和公钥信息发送给网络管理者M,网络管理者M为用户U颁发***账号作为用户U在***中的身份标识;
2b)服务提供商S将自己的身份信息发送给网络管理者M,网络管理者M计算服务提供商S的第一部分私钥并将这个私钥通过安全信道发送给服务提供商S,服务提供商S收到第一部分私钥后计算自己的第二部分私钥并计算公钥对,得到自己的公私钥对;
2c)网络管理者M给服务提供商S颁发合法用户U的***账号;
(3)远程匿名认证:
3a)用户U生成服务请求消息,并发送给服务提供商S;
3b)服务提供商S收到服务请求消息后,检测服务请求时间和用户的有效性,如果有效,则计算会话密钥和消息认证码,并发送应答消息给用户U,如果无效,则拒绝服务;
3c)用户U收到应答消息后,验证服务提供商S的合法性,如果不合法,验证失败,如果合法,则计算会话密钥并验证消息认证码,如果验证成功,则认证结束,否则,认证失败。
本发明与现有技术相比具有如下优点:
(1)实现了匿名性:本发明通过***账号Acn代替用户U的真实身份完成***认证,使得用户U在不暴露身份的情况下享受服务,个人信息得到了保护,实现了匿名性,提高了安全性。
(2)实现了双向认证:本发明在注册阶段实现了用户U和网络管理者M、服务提供商S和网络管理者M之间的双向认证;在远程匿名认证阶段实现了用户U和服务提供商S之间的双向认证。
(3)安全性高:本发明中用户U和服务提供商S是利用用户U的***账号Acn和双方的公私钥对进行身份认证,而网络管理者M只知道用户U的***账号Acn和用户U身份之间的对应关系并没有用户U的私钥,所以网络管理者M不能冒充用户U同服务提供商S完成认证过程,避免了网络管理者M冒充用户U与服务提供商S进行认证。
具体实施方式
参照图1,本发明的实现步骤如下:
步骤1,网络管理者M对***进行初始化:
(1a)网络管理者M根据安全需要,确定安全系数l和素数q的大小,利用椭圆曲线选择合适的循环加法群G1和循环乘法群G2构造双线性对映射e(G1,G2)→G2;
(1b)网络管理者M选择两个无碰撞杂凑函数H1:{0,1}*→G1和其中,H1是将长度不等的0/1序列映射到循环加法群G1上的一个元素的杂凑函数,H2是将长度不等的0/1和循环加法群G1中的元素映射到modq的整数乘法群上的一个元素的杂凑函数;
(1c)网络管理者M从modq的整数乘法群中随机选择一个整数s作为它的私钥,计算Qc=sP作为它的公钥,P是循环加法群G1的生成元;
(1d)网络管理者M公布***参数system={G1,G2,e,l,q,P,Qc,H1,H2},其中,q是一个素数,G1是一个阶为素数q的循环加法群,G2是一个阶为素数q的循环乘法群,e是一个双线性对映射,l是安全系数,P是循环加法群G1的生成元,Qc是网络管理者M的公钥。
步骤2,网络管理者M对用户U进行身份注册:
参照图2,本步骤的具体实现如下:
(2a)用户U从modq的整数乘法群中随机选取一个整数sU作为自己的私钥,计算公钥QU=sUP,得到自己的公私钥对(sU,QU),用户U把它的身份idU和它的公钥QU发送给网络管理者M,其中,P是循环加法群G1的生成元;
(2b)网络管理者M收到用户U的身份idU和公钥QU,从modq的整数乘法群中随机选取一个整数r1,计算用户U的***账号Acn=r1P,并生成一个签名σ1=r1-sH2(idU,QU),网络管理者M将账号管理信息(σ1,Acn)发送给用户U,其中,P是循环加法群G1的生成元,s是网络管理者M的私钥;
(2c)用户U收到账号管理信息(σ1,Acn)后,判断等式Acn=σ1P+QcH2(idU,QU)是否成立,如果成立,则存储账号管理信息(σ1,Acn),并将***账号Acn作为自己在认证***中的身份标识,如果不成立,则放弃本次注册,其中,P是循环加法群G1的生成元,Qc是网络管理者M的公钥,idU是用户U的身份信息,QU是用户U的公钥。
步骤3,网络管理者M对服务提供商S进行身份注册:
参照图3,本步骤的具体实现如下:
(3a)服务提供商S将自己的身份idS发送给网络管理者M,网络管理者M计算服务提供商S的第一部分私钥并将第一部分私钥S1通过安全信道发送给服务提供商,其中,s是网络管理者M的私钥,身份消息摘要idS是服务提供商S的身份信息;
(3b)服务提供商S收到网络管理者M发送过来的第一部分私钥S1,判断等式是否成立:如果成立,则服务提供商S验证网络管理者M合法,服务提供商S从modq的整数乘法群中随机选取一个整数s2作为自己的第二部分私钥,得到自己的完整私钥对(S1,s2),并计算公钥对如果不成立,则服务提供商S验证网络管理者M不合法,放弃本次注册过程,其中,P是循环加法群G1的生成元,身份消息摘要idS是服务提供商S的身份信息,Qc网络管理者M的公钥;
(3c)网络管理者M给服务提供商S发送用户U的部分身份信息(σ1,Acn,QU,h),其中,σ1是网络管理者M的签名,Acn是用户U的***账号,QU是用户U的公钥,h=H2(idU,QU)是用户U的身份idU和公钥QU的消息摘要;
(3d)服务提供商S收到网络管理者M发送的用户U的部分身份信息(σ1,Acn,QU,h)后,检测等式Acn=σ1P+Qch是否成立:如果成立,则服务提供商S存储用户U的部分身份信息(σ1,Acn,QU,h),并将***账号Acn作为合法用户U的身份标识;如果不成立,则服务提供商S放弃存储,其中,P是循环加法群G1的生成元。
步骤4,用户U与服务提供商S进行远程匿名认证:
参照图4,本步骤的具体实现如下:
(4a)用户U从modq的整数乘法群中随机选择r2,计算自己的一次性消息R1=r2P和一次性保护消息R2=r2Q1,其中,P是循环加法群G1的生成元,Q1为服务提供商S的公钥;
(4b)用户U根据自己的一次性消息R1计算自己的消息摘要h=H2(σ1||tC,R1),其中,σ1是网络管理者M的签名,tC是请求服务的时间;
(4c)用户U根据随机选取的整数r2、自己的私钥sU和消息摘要h计算信息签名σ2=sU-r2h;
(4d)用户U计算账号保护消息R3=R1+R2+Acn,其中,R1是用户U的一次性消息,R2是用户U的一次性保护消息,Acn是用户U的***账号;
(4e)用户U用上述得到的一次性保护消息R2、信息签名σ2、请求服务的时间tC和账号保护消息R3构成服务请求消息M2={R2,σ2,tC,R3},并将该服务请求消息M2发送给服务提供商S;
(4f)服务提供商S收到服务请求信息M2后,检测服务请求时间tC与本地时间差是否在***允许范围内,如果在,则服务提供商S用自己的私钥s2计算自己的一次性消息如果不在,则服务提供商S放弃本次认证,其中,R2是用户U的一次性保护消息;
(4g)服务提供商S根据自己的一次性消息R′1、用户U的一次性保护消息R2和账号保护消息R3计算用户U的***账号Acn=R3-R′1-R2,并根据***账号Acn找到用户U的公钥QU;
(4h)服务提供商S根据自己的一次性消息R′1计算自己的消息摘要h'=H2(σ1||tC,R′1),其中,σ1是网络管理者M的签名,tC是请求服务的时间;
(4i)服务提供商S根据自己的一次性消息R′1和消息摘要h'验证等式σ2P+R′1h'=QU是否成立:如果成立,则认为用户U合法,服务提供商S用是网络管理者M的签名σ1计算自己的消息摘要h1=H2(σ1||tC||idS,R2);如果不成立,则服务提供商S放弃本次认证,其中,σ2是用户U的签名,P是循环加法群G1的生成元,QU是用户U的公钥,tC是请求服务的时间,idS是服务提供商的身份信息,R2是用户U的一次性保护消息;
(4j)服务提供商S用自己的私钥对(S1,s2)计算签名其中,h1是服务提供商S的消息摘要,R1是用户U的一次性消息;
(4k)服务提供商S计算自己的会话密钥key=H2(h1,R′1),并用会话密钥key加密自己的消息摘要h1得到消息认证码MACkey(h1),其中,h1是服务提供商S的消息摘要,R′1是服务提供商S的一次性消息;
(4l)服务提供商S用上述生成的签名σ3和消息认证码MACkey(h1)构成回复消息M3={MACkey(h1),σ3},并将该回复消息M3发送给用户U作为对用户U服务请求的回复;
(4m)用户U收到服务提供商S发送的回复消息M3={MACkey(h1),σ3},计算自己的消息摘要h′1=H2(σ1||tC||idS,R2),其中,σ1是网络管理者M的签名,tC是请求服务的时间,idS是服务提供商S的身份信息,R2是用户U的一次性保护消息;
(4n)用户U根据自己的消息摘要h′1验证等式是否成立:如果成立,则用户U计算自己的会话密钥key'=H2(h′1,R1);如果不成立,则认为服务提供商S是非法的,放弃本次认证,其中,σ3是服务提供商S的签名,Q1、Q3是服务提供商S的公钥,R1是用户U的一次性消息;
(4o)用户U用自己的会话密钥key'解密消息认证码MACkey(h1),得到服务提供商S的消息摘要h1,并验证服务提供商S的消息摘要h1和自己的消息摘要h′1是否相等,如果相等,则认为验证成功,否则,验证失败。
以上描述仅是本发明的一个具体实例,并不构成对本发明的任何限制。显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。