一个改进的无证书跨域认证密钥协商协议
2022-09-13李慧敏梁红梅张金辉
李慧敏, 梁红梅, 张金辉
( 1.莆田学院 数学与金融学院, 福建 莆田 351100; 2.应用数学福建省高校重点实验室(莆田学院),福建 莆田 351100; 3.闽南师范大学 数学与统计学院, 福建 漳州 363000 )
0 引言
随着无线网络的快速发展及其应用的日益普及,无线通信安全(特别是跨域通信安全)问题越来越受到人们的关注.认证密钥协商(AKA)协议是一种基于公钥密码系统的密码学原语,它不仅能够使用户在开放的网络环境下通过协商生成会话密钥,还可以使用户彼此认证双方身份.公钥密码系统主要包括基于目录公钥密码系统[1]、基于身份公钥密码系统[2]、基于证书公钥密码系统[3]和无证书公钥密码系统[4].由于无证书公钥密码系统能够克服传统公钥密码系统的证书管理问题和基于身份公钥密码系统的密钥托管问题,因此一些无证书密钥协商协议相继被一些学者提出[5-10],并被应用于一些需要跨域通信的场景中,如无线网状网络(WMN)、铁路运输管理信息系统、车联网VANETs、Ad Hoc网络和5G网络等[11-15].2016年, Li等[11]基于无证书公钥密码系统建立了一种应用于无线网状网络的无证书跨域密钥协商(CAKA)协议,该协议不仅具备无证书公钥密码系统的优点,而且能降低Internet服务提供者(ISP)的计算和通信开销;但本文对文献[11]中的密钥协商协议进行安全性分析后发现,其存在无法认证对方身份及易被替换公钥攻击的安全性问题,对此本文给出了原协议无法认证对方身份的具体原因和对原协议进行替换公钥攻击的具体步骤,并在文献[11]中的协议基础上给出了一种改进的密钥协商协议,同时通过实验验证了该协议的有效性.
1 相关理论
1.1 双线性对的定义
假设q是一个素数,G1是q阶加法群,G2是q阶乘法群,P是G1的生成元,则双线性对为如下映射e:G1×G1→G2, 且满足下列关系:
2)非退化性.对于任意的P,Q∈G1, 存在e(P,Q)≠1G2.
3)可计算性.对于任意的P,Q∈G1, 都有一个有效算法来计算e(P,Q)∈G2.
1.2 困难性问题
本文协议的安全性主要涉及以下3类困难性问题[16]:
1.3 认证密钥协商协议的安全属性
假设A和B是执行AKA协议的两个已完成相互认证,并已建立用于安全通信会话的密钥网格实体(如网状客户端、网状路由器等),则AKA协议必备的安全属性为[17]:
1)已知会话密钥安全.AKA协议的每个执行过程都应生成一个唯一、独立的秘密会话密钥,这样即使一个密钥泄漏也不会影响其他会话密钥的安全性,从而避免会话密钥被攻击者用以冒充其他实体.
2)前向安全性.A和B之间的长期密钥如果被泄露,则不会对之前的会话密钥产生威胁.前向安全性通常分为完全前向安全性和主密钥前向安全性两类.完全前向安全性是指即使攻击者拥有A和B的私钥,也无法知道A和B之间以前使用的会话密钥;主密前向安全性是指即使攻击者获得了系统主密钥,也无法获得A和B之间以前的会话密钥.
3)抗密钥泄露伪装.如果协议参与方A的长期密钥被泄露,则攻击者虽可以伪装成A参与会话,但无法伪装成其他人,即其他用户不会因为A的密钥被破解而受到影响.
4)未知密钥共享安全.协议参与方如果要进行会话,需要先对双方的身份进行认证.
5)抗密钥控制.当A和B需要建立会话密钥时,任何一方都不能生成和自己期望值一样的会话密钥.
2 文献[11]中的无证书跨域认证密钥协商协议及其安全性分析
2.1 文献[11]中的无证书跨域认证密钥协商协议
文献[11]中提出的无证书跨域认证密钥协商协议(简称CAKA协议)中规定, A和B之间需通过一轮消息交换完成A和B的相互认证,并由此建立一个会话密钥k.CAKA协议的具体执行步骤如下:
用户U的私钥将由U和它的ISP通过以下两个步骤生成:
① 提取部分私钥.首先计算EU=sDQU(其中QU=H1(IU‖XU)∈G1), 然后通过一个安全的途径将EU发给U.
② 设置私钥.用户U收到EU后,判断e(EU,P)=e(QU,pD)是否成立.如果等式成立,则EU是正确的,并将用户U的私钥设置为sU=〈kU,EU〉.
系统完成上述的初始化后,用户A和用户B即可建立会话密钥并相互认证,其过程如图1所示.
2.2 文献[11]中的无证书跨域认证密钥协商协议的安全性问题
对CAKA协议进行安全性分析可得如下结果:
1)无法验证另一方的身份.在CAKA协议中,任何人可以通过发送者发送的消息来获取发送者的身份信息,冒充者可以假装为消息的原始发送者与另一方通信,进而使得该协议存在另一方身份无法认证的安全问题.其原因是该协议在执行过程中要求按式(1)进行身份认证,并以此建立密钥.
KA=e(EA+kAQA,PA)=e(sDAQA+kAQA,aP)=e((sDA+kA)QA,aP)=
e((sDA+kA)P,aQA)=e(RA,PDA+XA).
(1)
由式(1)可知KA=e(RA,PDA+XA), 但由于PDA和XA是公开的,所以只要获得RA就可以计算出KA.另外,由于RA在协议执行过程的第1步中是以明文传输的,即任何人通过发送的信息均可获得RA, 因此协议中的第1步无法实现认证对方身份的目的.
2)替换公钥攻击.由于CAKA协议是基于无证书公钥密码系统建立的,因此需要考虑对该协议的替换公钥攻击.本文对CAKA协议进行替换公钥攻击的具体步骤如下:
由以上可知,攻击者按上述操作即可成功冒充用户A, 然后与用户B进行交互并获取会话密钥.用户B是通过式(2)对消息发送者进行身份验证并建立会话密钥的,由式(2)可知上述攻击是可以实现的.
3 改进的跨域认证密钥协商协议及其安全性分析
3.1 改进的跨域认证密钥协商协议
原协议之所以无法实现双方认证的目的和会受到替换公钥攻击是因为验证式(1)中没有用到用户的全部私钥(密钥生成中心生成的部分私钥和用户自己选的秘密值),攻击者可以通过发送的消息获取到发送者的身份信息.本文改进的协议中用户公私钥产生的方式与文献[11]一样,但对文献[11]协议中的交互认证和密钥协商的过程(3个步骤)进行了改进.改进方法为:用户A和B在执行协议的过程中必须使用全部私钥,且在用户A和B发送的消息中分别加入各自的身份信息,同时攻击者无法通过发送的消息获取发送者的身份信息.本文提出的跨域认证密钥协商协议中的系统初始化与文献[11]中的系统初始化相同,认证和会话密钥的建立过程如图2所示.
本文改进协议的交互认证和密钥协商过程的具体步骤如下:
注:该步骤将原协议步骤1中的KA=e(EA+kAQA,PA)改为KA=e(RB,pDB), 并还需计算C1=Enc(T1‖NA‖A‖B,k1).另外,用户A发送给用户B的消息也由原方案中的M1=(FlagA,B,RAP′A,{T1,NA}k1)改为M1=(FlagA,FlagB,P′A,C1).
注:该步骤将原协议步骤2中的KA=e(RA,pDA+XA)改为KA=e(EB,PA), 将KB=e(EB+kBQB,PB)改为KB=e(RA,pDA), 这里的KA=e(EB,PA)与步骤1中的KA=e(RB,pDB)是相等的.另外,还需计算h=H2(A‖B‖T1‖T2‖N‖k),C2=Enc(T1‖T2‖NA‖N‖NB‖A‖B‖h,k), 同时用户B发送给用户A的消息也由原协议中的M2=(FlagB,A,RB,P′B,{T1,T2,N,NA,NB,h}k)改为M2=(FlagB,FlagA,P′B,C2).
注:该步骤将原协议步骤3中的KB=e(RB,pDB+XB)改为KB=e(EA,PB), 这里的KB和步骤2中的KB=e(RA,pDA)是相等的.
3.2 改进CAKA协议的正确性和安全性分析
3.2.1协议的正确性分析
协议的正确性可由下式验证:
KA=e(RB,pDB)=e(aQB,sDBP)=e(aP,sDBQB)=e(PA,EB)=e(EB,PA),
KB=e(RA,pDA)=e(bQA,sDAP)=e(bP,sDAQA)=e(PB,EA)=e(EA,PB),
K=bPA=baP=abP=aPB.
由上式易知,本文提出的协议是正确的.
3.2.2协议的安全性分析
2)前向安全性.假设用户A的长期私钥sA=〈kA,EA〉被敌手A′得到,此时可能出现当一个用户伪装成一个CAKA请求者或一个跨域AKA接收者时(如图2中的用户A),A′可以截取之前的对话信息并计算KA(KA=e(EB,PA))和KB(KB=e(EA,PB)), 但无法计算得到密钥k(k=H2(KA‖KB‖K)).因为根据G1中的DLP和CDHP假设,敌手无法从PA获得a或从PB获得b, 从而无法计算K=abP.因此,即使用户A或用户B的私钥被泄露,先前会话密钥也不会被泄露,由此可知前向安全性是可靠的.
3) 抗密钥泄露伪装.假设敌手获得了用户A的长期私钥sA(sA=〈kA,EA〉), 这时敌手虽然可以模拟用户A发起CAKA请求或伪装AKA接收者,但无法从交互中获取其他用户的长期私钥,即即使用户A的私钥被泄露,其他用户私钥的安全性也不会受到影响.
4) 未知密钥共享安全.在改进的CAKA协议中由于使用了指定验证者的技术,会话密钥只能由CAKA请求者和接收者计算,任何其他第三方都不能强迫用户A与其他用户共享密钥,除非双方都执行图2中的CAKA协议.这是因为只有指定的接收者B才能获得PA(PA=aP)、k1(k1=H2(KA‖PA))、 会话密钥k(k=H2(KA‖KB‖K))和对消息M1的解密,而M1的解密需要隐式身份验证.文献[18]已证明隐式认证特性隐含未知密钥共享的弹性.
在无证书公钥系统下,由于替换公钥攻击是针对无证书方案的一种基本攻击,所以MITM攻击也有可能由ISP或获得ISP主密钥的敌手A1或A2发起,其中敌手A1可以随意更改客户端的公钥,但不能访问系统主密钥;敌手A2可以掌控系统主密钥,但不能替换客户端的公钥[19].如文献[18]所述,抵抗替换公钥攻击的一种方法是绑定用户的公钥和私钥,本文采用的方法是将用户A的身份IA和固定公钥XA与部分私钥绑定,即EA=sDAH1(IA‖XA).因此,敌手在不知道私钥的情况下不能从替换的公钥中获得部分私钥EA, 即使敌手A1可以替换公钥X′A=k′AP,Q′A=H1(IA‖X′A),RA=a′Q′A并成功假扮用户A, 但在CDHP的假设下,他仍然无法根据a′bP、P′B计算出正确的PB.对于敌手A2,他可以访问域主密钥sD, 但不能替换客户端的公钥,所以即使敌手A2知道部分私钥EA, 他仍然不能在不知道sA的情况下伪装用户A来计算KA.因此,两种类型的敌手都无法在不知道两个客户端完整私钥的情况下计算出会话密钥,从而说明本文改进的CAKA协议可以抵御MITM攻击.
3.3 改进CAKA协议的效率分析
本文通过计算协议涉及的主要密码运算[20]的个数对本文改进的协议与文献[11]中的协议进行对比分析,计算中分别用Tm、Tp和Ta表示G1中的点乘运算、双线性对运算和加法运算,用Te表示AES(Advanced Encryption Standard)对称加密运算,用Th表示哈希运算H2, 计算结果见表1.使用PBC库(版本0.5.14)在64位、2.4 GHz基于Intel Core i7 - 5500U处理器、4 GB主内存、Windows 7系统的电脑上测试所有这些计算,各运算的执行时间见表2.
表1 两个协议涉及的主要密码运算个数
表2 运算执行时间ms
为了更好的比较两种协议的性能,根据表1和表2计算出了两个协议中用户A和用户B的执行时间及协议总的执行时间,见图3.由图3可以看出,本文改进的协议不仅解决了文献[11]中存在的安全问题,而且还提高了效率.其中用户A的执行时间提高了7.23%,用户B的执行时间提高了6.73%,协议总执行时间提高了6.98%.
图3 两种协议的执行时间
4 结论
对本文提出的改进的无证书跨域密钥协商协议进行实验表明,该协议不仅解决了文献[11]中存在的无法验证双方身份问题和容易受到替换公钥攻击的安全问题,而且还提高了协议的执行效率.本文的改进方法还可为同类跨域密钥协商协议的设计提供良好的参考价值.本文在研究中仅考虑了两个用户在跨域情景下的密钥协商协议,今后我们将对跨域环境下的多方密钥协商协议进行研究,从而实现跨域环境下的多方安全通信.