基于身份的匿名双向认证方法
技术领域
本发明涉及一种匿名双向认证方法,尤其涉及基于身份的匿名双向认证方法。
背景技术
为了在安全认证的同时保护网络中敏感节点身份的机密性,匿名双向认证已成为密码学中一种重要的研究手段,其优点是能够防止攻击者利用敏感节点的身份信息发起拒绝服务(DoS)等各种攻击。
文献“Anonymous handshakes in mobile ad hoc networks.2004 IEEE MilitaryCommunications Conference,31 October--03 November 2004,Monterey,CA.p1193-1199”公开了一种利用伪名集的基于双线性映射的匿名认证方法。该方法在进行匿名认证之前为各网络节点预分配伪名集合;在认证时,每个节点从自己的伪名集中随机选取一个伪名和其它节点进行认证,通过不断变换伪名的方法来隐藏其真实身份。但是此方法使用静态的预分配的伪名集合,存在一些安全缺陷,攻击者一旦入侵某节点成功,则可根据以往通信记录发现所有通信节点的真实身份。另外,这种方法扩展性不强,需要事先手工预设置伪名集,而且,各个节点需要安全保存多个节点的伪名信息,安全存储负担大,容易引起攻击者的攻击。
发明内容
为了克服现有技术由于使用静态伪名集而导致的安全性差的不足,本发明提供一种基于身份的匿名双向认证方法,采用随机选取伪名的方法,通过所选取的伪名和其它节点进行双向认证,使得网络节点不必预分配伪名集,也无需安全保存伪名集,而且当节点被入侵之后也不能通过跟踪通信的方法获取其真实身份信息,可以提高网络使用过程中的安全性。
本发明解决其技术问题所采用的技术方案:一种基于身份的匿名双向认证方法,其特点是包括以下步骤:
(a)节点初始化:可信第三方TTP建立***参数并为认证双方节点:节点A和节点B分配私钥,该***参数包括:两个q阶的循环群(G1,+)和(G2,·);P为G1的生成元;令e为G1和G2上的双线性变换,即e:G1×G1→G2;可信第三方TTP随机选取自己的私钥 其对应公钥为QTTP=STTP·P∈G1;h(x)表示一个单向哈希函数;可信第三方TTP为节点A和节点B分配私钥的方法为:节点A和节点B的身份ID1和ID2分别为其公钥,其私钥分别为S1=STTP·ID1和S2=STTP·ID2;
(b)认证激活:由节点B发送认证激活分组给节点A;
该认证激活分组内容包括:PID2字段,
其中:
PID2字段:节点B当前的伪身份,其计算方法为:节点B首先随机选取一个仅用于本次认证及密钥协商过程的临时私钥 然后计算PID2=b·ID2;
(c)认证请求:当节点A收到认证激活分组后,构造并发送认证请求分组给节点B;
该认证请求分组内容包括:PID2字段、PID1字段、TKM1字段和MIC1字段,
其中:
PID2字段:其值与认证激活分组中的PID2字段值相同;
PID1字段:节点A当前的伪身份,其计算方法为:节点A首先随机选取一个仅用于本次认证及密钥协商过程的临时私钥 然后计算PID1=a·ID1;
TKM1字段:节点A选取的临时公钥信息,其计算方法为:TKM1=a·P;
MIC1字段:节点A对本字段之前所有字段计算的消息完整性校验码,其计算方法为:MIC1=h(PID2,PID1,TKM1,e(PID2,a·S1));
(d)认证响应:当节点B收到认证请求分组后,节点B验证PID2是否是自己选取的伪身份;如果不是,则丢弃该分组,否则,重新计算MIC1=h(PID2,PID1,TKM1,e(PID1,b·S2))并与接收到的MIC1进行比较;如果不相等,则丢弃该分组,如果相等,构造并发送认证响应分组给节点A;
该认证响应分组内容包括:PID1字段、TKM2字段和MIC2字段,
其中:
PID1字段:其值与认证请求分组中的PID1字段值相同;
TKM2字段:节点B选取的临时公钥信息,其计算方法为:TKM2=b·P;
MIC2字段:节点B对本字段之前所有字段计算的消息完整性校验码,其计算方法为:MIC2=h(PID1,TKM1,TKM2,e(PID1,b·S2),b·TKM1);
(e)密钥确认:当节点A收到认证响应分组后,节点A验证PID1是否是自己选取的伪身份,如果不是,则丢弃该分组,否则,验证TKM1是否是自己选取的临时公钥信息;如果不是,则丢弃该分组,否则,重新计算MIC2=h(PID1,TKM1,TKM2,e(PID2,a·S1),a·TKM2)并与接收到的MIC2进行比较;如果不相等,则丢弃该分组,如果相等,构造并发送密钥确认分组给节点B;节点A完成对节点B的匿名认证,并得到主密钥MK=a·TKM2=a·b·P;
该认证响应分组内容包括:PID1字段、TKM2字段和MIC2字段,
其中:
PID1字段:其值与认证请求分组中的PID1字段值相同;
TKM2字段:节点B选取的临时公钥信息,其计算方法为:TKM2=b·P;
MIC2字段:节点B对本字段之前所有字段计算的消息完整性校验码,其计算方法为:MIC2=h(PID1,TKM1,TKM2,e(PID1,b·S2),b·TKM1);
当节点B收到密钥确认分组后,节点B验证TKM2是否是自己选取的临时公钥信息;如果不是,则丢弃该分组,否则,重新计算MIC3=h(TKM2,b·TKM1)并与接收到的MIC3进行比较;如果不相等,则丢弃该分组,如果相等,匿名双向认证及密钥协商过程成功;节点B完成对节点A的匿名认证,并得到主密钥MK=b·TKM1=a·b·P。
本发明的有益效果是:由于采用动态随机选取的伪名,每个节点无需事先预分配伪名集,也无需安全保存伪名信息;根据随机选取的伪名进行认证,攻击者无法通过跟踪通信的方法获取节点真实身份信息,从而保证了认证过程中节点身份的匿名性,提高了网络使用过程中的安全性。
下面结合附图和实施例对本发明作详细说明。
附图说明
附图是本发明基于身份的匿名双向认证方法的流程图。
具体实施方式
参照附图,本实施例任意选取网络中的两个网络节点A和B,假设A和B要进行匿名双向认证。具体步骤如下:
首先,可信第三方TTP需要建立***参数并为节点A和节点B分配私钥,该***参数包括:两个q阶的循环群(G1,+)和(G2,·);P为G1的生成元;令e为G1和G2上的双线性变换,即e:G1×G1→G2;可信第三方TTP随机选取自己的私钥 其对应公钥为QTTP=STTP·P∈G1;h(x)表示一个单向哈希函数。可信第三方TTP为节点A和节点B分配私钥的方法为:节点A和节点B的身份ID1和ID2分别为其公钥,其私钥分别为S1=STTP·ID1和S2=STTP·ID2。该步骤仅在节点初始化时使用。认证过程如下:
第一步,节点B构造认证激活分组发送给节点A。认证激活分组内容包括:
其中:
PID2字段:节点B当前的伪身份,其计算方法为:B首先随机选取一个仅用于本次认证及密钥协商过程的临时私钥 然后计算PID2=b·ID2。
第二步,收到认证激活分组后,节点A构造并发送认证请求分组给节点B。认证请求分组内容包括:
其中:
PID2字段:其值与认证激活分组中的PID2字段值相同;
PID1字段:节点A当前的伪身份,其计算方法为:A首先随机选取一个仅用于本次认证及密钥协商过程的临时私钥 然后计算PID1=a·ID1;
TKM1字段:节点A选取的临时公钥信息,其计算方法为:TKM1=a·P。
MIC1字段:节点A对本字段之前所有字段计算的消息完整性校验码,其计算方法为:MIC1=h(PID2,PID1,TKM1,e(PID2,a·S1))。
第三步,收到认证请求分组后,节点B验证PID2是否是自己选取的伪身份。如果不是,则丢弃该分组,否则,重新计算MIC1=h(PID2,PID1,TKM1,e(PID1,b·S2))并与接收到的MIC1进行比较。如果不相等,则丢弃该分组,如果相等,构造并发送认证响应分组给节点A。密钥请求分组内容包括:
其中:
PID1字段:其值与认证请求分组中的PID1字段值相同;
TKM2字段:节点B选取的临时公钥信息,其计算方法为:TKM2=b·P。
MIC2字段:节点B对本字段之前所有字段计算的消息完整性校验码,其计算方法为:MIC2=h(PID1,TKM1,TKM2,e(PID1,b·S2),b·TKM1)。
第四步,收到认证响应分组后,节点A验证PID1是否是自己选取的伪身份,如果不是,则丢弃该分组,否则,验证TKM1是否是自己选取的临时公钥信息。如果不是,则丢弃该分组,否则,重新计算MIC2=h(PID1,TKM1,TKM2,e(PID2,a·S1),a·TKM2)并与接收到的MIC2进行比较。如果不相等,则丢弃该分组,如果相等,构造并发送密钥确认分组给节点B。节点A完成对B的匿名认证,并得到主密钥MK=a·TKM2=a·b·P。密钥确认分组内容包括:
其中:
TKM2字段:其值与认证响应分组中的TKM2字段值相同;
MIC3字段:节点A对本字段前所有字段计算的完整性校验码,即MIC3=h(TKM2,a·TKM2)。
第五步,收到密钥确认分组后,节点B验证TKM2是否是自己选取的临时公钥信息。如果不是,则丢弃该分组,否则,重新计算MIC3=h(TKM2,b·TKM1)并与接收到的MIC3进行比较。如果不相等,则丢弃该分组,如果相等,匿名双向认证及密钥协商过程成功。节点B完成对A的匿名认证,并得到主密钥MK=b·TKM1=a·b·P。
通过上述过程,节点A和节点B实现了匿名双向认证,并协商主密钥MK,该密钥可以被用来加密消息或进行消息完整性运算。
其中,ID1是节点A的身份;ID2是节点B的身份;PID1是节点A选取的伪身份;PID2是节点B选取的伪身份;TKM1是节点A选取的临时公钥;TKM2是节点B选取的临时公钥;MIC是消息完整性校验码。