[0004] 针对现有技术中的上述不足,本发明提供的一种基于证书的无线体域网群组认证与密钥协商方法解决了现有技术中无线体域网环境下无法同时满足用户在应用服务提供商AP处匿名性、条件隐私保护以及系统效率高的问题。
[0005] 为了达到上述发明目的,本发明采用的技术方案为:一种基于证书的无线体域网群组认证与密钥协商方法,包括以下步骤:
[0006] S1、构建无线体域网的网络管理NM的长期私钥skn和公钥pkn;
[0007] S2、根据网络管理NM的长期私钥skn和公钥pkn,通过网络管理NM向群管理员GM颁发证书certGM,构建无线体域网的群管理员GM;
[0008] S3、根据网络管理NM的长期私钥skn和公钥pkn,通过网络管理NM向用户颁发证书certi,构建无线体域网的用户;
[0009] S4、根据群管理员GM的证书certGM、长期私钥xGM和公钥XGM,向构建了群管理员GM和用户的无线体域网加入应用服务提供商AP;
[0010] S5、根据用户的证书certi、群管理员GM的长期私钥xGM和群管理员GM的公钥XGM,向构建了应用服务提供商AP的无线体域网加入用户;
[0011] S6、根据用户证书certi,对引入的随机参数进行签名,得到用户签名σi,向应用服务提供商AP申请服务,并请求会话密钥;
[0012] S7、根据用户签名σi和与用户通信的用户会话密钥服务值k′i,对用户进行认证以及密钥协商;
[0013] S8、对应用服务提供商AP进行认证。
[0014] 进一步地:所述步骤S1包括以下步骤:
[0015] S101、将网络管理NM选取的随机数skn作为长期私钥;
[0016] S102、将长期私钥skn与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到网络管理NM的公钥pkn。
[0017] 进一步地:所述步骤S2包括以下步骤:
[0018] S201、将群管理员GM选取的随机参数xGM作为长期私钥;
[0019] S202、将长期私钥xGM与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到群管理员GM的公钥XGM;
[0020] S203、将网络管理NM选取的随机数rGM与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到群管理员GM证书承诺值RGM;
[0021] S204、将群管理员GM公钥XGM、群管理员GM证书承诺值RGM和群管理员GM的身份标识IDGM进行哈希运算,得到哈希值hGM;
[0022] S205、将哈希值hGM与网络管理NM的长期私钥skn做乘法运算,得到乘法值PGM;
[0023] S206、将乘法值PGM与随机数rGM做加法运算,得到群管理员GM证书certGM;
[0024] S207、通过网络管理NM将群管理员GM证书certGM和证书承诺值RGM发给群管理员GM,同时将群管理员GM证书certGM、证书承诺值RGM、公钥XGM和身份标识IDGM添加到网络管理NM的数据库中;
[0025] S208、利用网络管理NM的公钥pkn、群管理员GM的证书承诺值RGM、群管理员GM的公钥XGM和身份标识IDGM对证书certGM进行验证,若验证通过,则群管理员GM存储证书certGM、证书承诺值RGM、公钥XGM和身份标识IDGM,完成群管理员GM的构建,若验证未通过,则跳转至步骤S201。
[0026] 进一步地:所述步骤S3包括以下步骤:
[0027] S301、将用户选取随机参数xi作为长期私钥;
[0028] S302、将长期私钥xi与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到用户公钥Xi,将用户公钥Xi和身份标识IDi发给网络管理NM;
[0029] S303、将网络管理NM选取的随机数ri与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到用户证书承诺值Ri;
[0030] S304、将用户公钥Xi、用户证书承诺值Ri和用户身份标识IDi进行哈希运算,得到哈希值hi;
[0031] S305、将哈希值hi与网络管理NM的长期私钥skn做乘法运算,得到乘法值pi;
[0032] S306、将乘法值pi与随机数ri做加法运算,得到用户证书certi;
[0033] S307、将网络管理NM的长期私钥skn与用户公钥Xi进行基于椭圆曲线的倍点运算,得到共享密钥值sknXi;
[0034] S308、将共享密钥值sknXi与用户身份标识IDi做哈希运算,得到临时身份初始值Pid0;
[0035] S309、将临时身份初始值Pid0和共享密钥值sknXi做哈希运算,得到用户临时身份值Pid1;
[0036] S310、将通过网络管理NM将用户证书承诺值Ri和用户证书certi发给用户,同时将用户的公钥Xi、证书certi、用户临时身份值Pid1、证书承诺值Ri和用户身份标识IDi添加到网络管理NM的数据库中;
[0037] S311、利用网络管理NM的公钥pkn、用户公钥Xi、用户临时身份值Pid1、证书承诺值Ri和用户身份标识IDi对证书certi进行验证,若验证通过,则用户存储公钥Xi、临时身份值Pid1、证书certi、证书承诺值Ri和身份标识IDi,完成无线体域网用户的构建,若验证未通过,则跳转至步骤S301。
[0038] 进一步地:所述步骤S4包括以下步骤:
[0039] S401、将应用服务提供商AP选取的随机数xj作为长期私钥;
[0040] S402、将长期私钥xj与椭圆曲线的生成元P进行基于椭圆曲线的倍点运算,得到应用服务提供商AP公钥Xj;
[0041] S403、通过应用服务提供商AP将应用服务提供商AP公钥Xj和应用服务提供商AP的身份标识IDj发给群管理员GM;
[0042] S404、将群管理员GM选择的随机数rj与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到应用服务提供商AP的证书承诺值Rj;
[0043] S405、将应用服务提供商AP的公钥Xj、应用服务提供商AP的证书承诺值Rj和应用服务提供商AP的身份标识IDj做哈希运算,得到哈希值hj1;
[0044] S406、将哈希值hj1与群管理员GM私钥xGM做乘法运算,得到乘法值pj1[0045] S407、将应用服务提供商AP的公钥Xj、群管理员GM的公钥XGM和应用服务提供商AP的身份标识IDj做哈希运算,得到哈希值hj2;
[0046] S408、将哈希值hj2与随机数rj做乘法运算,得到乘法值pj2;
[0047] S409、将群管理员GM证书certGM、乘法值pj1和乘法值pj2做加法运算,得到应用服务提供商AP证书certj;
[0048] S410、通过群管理员GM将应用服务提供商AP证书certj和应用服务提供商AP的证书承诺值Rj发送给应用服务提供商AP,同时将应用服务提供商AP的证书certj、公钥Xj和证书承诺值Rj添加到群管理员GM的数据库中;
[0049] S411、将应用服务提供商AP的证书承诺值Rj、公钥Xj、群管理员GM的公钥XGM和网络管理NM公钥pkn用于验证应用服务提供商AP的证书certj,若验证通过,应用服务提供商AP存储证书承诺值Rj、公钥Xj和证书certj,完成应用服务提供商AP加入无线体域网,若验证未通过,则跳转至步骤S401。
[0050] 进一步地:所述步骤S5包括以下步骤:
[0051] S501、将用户选择的随机数yi作为临时私钥;
[0052] S502、将临时私钥yi与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到用户临时公钥Yi;
[0053] S503、将用户证书certi与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到部分零知识证明值c1;
[0054] S504、将用户临时身份值Pid1与用户公钥Xi进行基于椭圆曲线的倍点运算,得到部分零知识证明值c2;
[0055] S505、将部分零知识证明值c1和c2进行加法运算,得到零知识证明值veri;
[0056] S506、将用户临时私钥yi与群管理员GM公钥XGM进行基于椭圆曲线的倍点运算,得到用户临时公钥验证值Y′i;
[0057] S507、将用户临时公钥验证值Y′i和零知识证明值veri进行哈希运算,得到哈希值h′i;
[0058] S508、将哈希值h′i与用户临时身份值Pid1进行异或运算,得到用户身份隐藏值mi;
[0059] S509、将零知识证明值veri、用户身份隐藏值mi和用户临时公钥Yi发送给群管理员GM;
[0060] S510、将群管理员GM长期私钥xGM与用户临时公钥Yi进行基于椭圆曲线的倍点运算,得到用户临时公钥验证值Y’′i,Y’′i=Y′i;
[0061] S511、通过群管理员GM将零知识证明值veri发给网络管理NM;
[0062] S512、通过网络管理NM将网络管理NM的长期私钥skn和群管理员GM的公钥XGM进行基于椭圆曲线的倍点运算,得到群管理员GM的公钥验证值p1;
[0063] S513、将公钥验证值p1和零知识证明值veri进行哈希运算,得到哈希值hpidi;
[0064] S514、将哈希值hpidi与用户临时身份值Pid1进行异或运算,得到用户身份验证值mpidi;
[0065] S515、通过网络管理NM将用户身份验证值mpidi发送给群管理员GM;
[0066] S516、利用长期私钥xGM、公钥pkn和零知识证明值veri对用户临时身份值Pid1进行验证,若通过验证,群管理员GM选择随机数c作为零知识证明挑战值,若未通过验证,则跳转至步骤S501;
[0067] S517、将用户临时公钥验证值Y’′i和用户零知识证明值veri进行哈希运算,得到哈希值h″i;
[0068] S518、将哈希值h″i与零知识证明挑战值c进行异或运算,得到隐藏值mveri;
[0069] S519、将用户临时公钥验证值Y’′i、零知识证明挑战值c和零知识证明值veri进行哈希运算,得到哈希值hc;
[0070] S520、通过群管理员GM将隐藏值mveri、哈希值hc和用户临时身份值Pid1发给用户;
[0071] S521、根据接收到哈希值hc和用户临时身份值Pid1,利用临时公钥验证值Y’′i、零知识证明挑战值c和零知识证明值veri对哈希值hc进行验证,若未通过验证,则跳转至步骤S501,若通过验证,将用户临时身份值Pid1和长期私钥xi进行乘法运算,得到乘法值pj3;
[0072] S522、将乘法值pj3与用户证书certi进行加法运算,得到加法值k1;
[0073] S523、将加法值k1与零知识证明挑战值c进行乘法运算,得到乘法值pk1;
[0074] S524、将乘法值pk1与用户临时私钥yi进行加法运算,得到零知识证明应答值zi;
[0075] S525、将零知识证明应答值zi和哈希值hi进行异或运算,得到应答隐藏值mc;
[0076] S526、将应答隐藏值mc和零知识证明挑战值c发送给群管理员GM;
[0077] S527、通过群管理员GM将哈希值h′i与应答隐藏值mc进行异或运算,得到零知识证明应答值z′i;
[0078] S528、通过用户临时公钥验证值Y’′i、零知识证明挑战值c和零知识证明值veri对零知识证明应答值z′i进行验证,若未通过验证,则跳转至步骤S501,若通过验证,将群管理员GM选择的随机数rgi与椭圆曲线生成的元P进行基于椭圆曲线的倍点运算,得到用户证书承诺值Rgi;
[0079] S529、根据群管理员GM选择的时间戳tgi,将用户公钥Xi、用户证书承诺值Rgi和时间戳tgi做哈希运算,得到哈希值hi1;
[0080] S530、将哈希值hi1与群管理员GM私钥xGM做乘法运算,得到乘法值pi1;
[0081] S531、将用户公钥Xi、群管理员GM公钥XGM和时间戳tgi做哈希运算,得到哈希值hi2;
[0082] S532、将哈希值hi2与随机数rgi做乘法运算,得到乘法值pi2;
[0083] S533、将群管理员GM的证书certGM、乘法值pi1和乘法值pi2做加法运算,得到用户证书certgi;
[0084] S534、通过群管理员GM将用户证书certgi、用户证书承诺值Rgi和时间戳tgi发给用户,同时将用户证书certgi、临时公钥Yi、证书承诺值Rgi和时间戳tgi添加到群管理员GM的数据库中;
[0085] S535、通过用户证书承诺值Rgi、时间戳tgi、群管理员GM公钥XGM和用户临时公钥Yi对用户证书certgi进行验证,若未通过验证,则跳转至步骤S501,若验证通过,则用户存储用户证书承诺值Rgi、时间戳tgi、用户证书certgi和临时公钥Yi,完成用户加入无线体域网。
[0086] 进一步地:所述步骤S6包括以下步骤:
[0087] S601、将用户选择的随机数rij作为用户临时秘密值;
[0088] S602、将用户临时秘密值rij与用户临时公钥Yi进行基于椭圆曲线的倍点运算,得到用户会话密钥承诺值Rij;
[0089] S603、将用户选择的随机数di与椭圆曲线的生成元P进行基于椭圆曲线的倍点运算,得到签名隐藏值Di;
[0090] S604、将用户临时秘密值rij和临时私钥yi做乘法运算,得到乘法值pj4;
[0091] S605、将乘法值pj4与应用服务提供商AP公钥Xj进行基于椭圆曲线的倍点运算,得到用户会话密钥服务值ki;
[0092] S606、采用用户会话密钥服务值ki对用户证书承诺值Rgi、用户临时公钥Yi和时间戳tgi进行加密,得到加密值Ei;
[0093] S607、将用户选择的时间戳tij、用户会话密钥服务值ki和签名隐藏值Di进行哈希运算,得到哈希值hi3;
[0094] S608、将哈希值hi3与用户临时私钥yi进行乘法运算,得到乘法值pyi;
[0095] S609、将用户临时公钥Yi、用户会话密钥承诺值Rij和时间戳tij进行哈希运算,得到哈希值hi4;
[0096] S610、将哈希值hi4与随机数di进行乘法运算,得到乘法值pdi;
[0097] S611、将用户证书certgi、乘法值pyi和乘法值pdi进行加法运算,得到用户签名σi;
[0098] S612、将加密值Ei、签名隐藏值Di、用户会话密钥承诺值Rij、用户签名σi和时间戳tij发给应用服务提供商AP,向应用服务提供商AP申请服务,并请求会话密钥。
[0099] 进一步地:所述步骤S7包括以下步骤:
[0100] S701、根据应用服务提供商AP收到的加密值Ei、签名隐藏值Di、用户会话密钥承诺值Rij、用户签名σi和时间戳tij,通过应用服务提供商AP将长期私钥xj与用户会话密钥承诺值Rij进行基于椭圆曲线的倍点运算,得到用户会话密钥服务值k′i;
[0101] S702、通过用户会话密钥服务值k′i解密加密值Ei,得到用户的证书承诺值Rgi、用户临时公钥Yi和时间戳tgi;
[0102] S703、通过用户的证书承诺值Rgi、用户临时公钥Yi、时间戳tgi、签名隐藏值Di和用户会话密钥承诺值Rij对用户签名σi进行验证,若验证未通过,则跳转至步骤S6,若验证通过,则将应用服务提供商AP选择的随机数rji作为临时秘密值,并将临时秘密值rji与应用服务提供商AP长期公钥Xj进行基于椭圆曲线的倍点运算,得到应用服务提供商AP会话密钥承诺值Rji;
[0103] S704、将应用服务提供商AP临时秘密值rji与临时私钥xj做乘法运算,得到乘法值pji1;
[0104] S705、将乘法值pji1与用户会话密钥承诺值Rij进行基于椭圆曲线的倍点运算,得到应用服务提供商AP的会话密钥kji;
[0105] S706、将应用服务提供商AP会话密钥承诺值Rji、会话密钥kji和时间戳tij进行哈希运算,得到会话密钥验证值macji;应用服务提供商AP将会话密钥验证值macji和会话密钥承诺值Rji发给用户,同时存储用户证书承诺值Rgi、用户临时公钥Yi、用户签名σi、签名隐藏值Di、时间戳tgi以及会话密钥kji,完成对用户的认证以及密钥协商。
[0106] 进一步地:所述步骤S8包括以下步骤:
[0107] S801、根据用户收到的会话密钥验证值macji和会话密钥承诺值Rji,通过用户将临时秘密值rij和临时私钥yi做乘法运算,得到乘法值pji2;
[0108] S802、将乘法值pji2与应用服务提供商AP会话密钥承诺值Rji进行基于椭圆曲线的倍点运算,得到用户的会话密钥kij;
[0109] S803、利用会话密钥kij、应用服务提供商AP会话密钥承诺值Rji和时间戳tij对会话密钥验证值macji进行验证,若未通过验证,则跳转至步骤S6,若验证通过,则实现用户对应用服务提供商AP的认证。
[0110] 本发明的有益效果为:一种基于证书的无线体域网群组认证与密钥协商方法,该方案采用将应用服务提供商AP组群的方式,将网络管理NM部分证书分发权限下放给群管理员GM,有效的减轻了网络管理NM计算负担和应用服务提供商AP撤销代价,提高了系统效率,在认证阶段,通过引入零知识证明协议,在网络管理NM处证书的条件下无需更新用户,使该方案同时实现用户和群管理员GM认证以及在应用服务提供商AP处匿名性,利用群管理员GM中用户的零知识证明值和用户的临时身份实现对用户身份的追踪,实现对用户的条件隐私保护。