D2D通信中基于无证书的组安全认证方法
技术领域
本发明涉及无线通信技术领域,特别是D2D(Device to Device)通信中基于无证书的组安全认证方法。
背景技术
近年来,D2D通信在3GPP的大力支持下,已经取得了较大发展。目前仅是少量的D2D设备进行通信,随着经济的发展和人民的需求不断的提升,D2D的应用场景和规模会越来越大,那么将会出现大量的D2D设备进行通信的情形。目前随着D2D数量快速增加,在应用方面对安全链路的需求也就更频繁,所以ProSe Function/HSS将面临更严峻的挑战,通信链路可能会出现过载的情况,如何提出有效的D2D通信方案成为摆在人们面前的关键问题。针对4G网络,3GPP已经将D2D机制标准化,并作为LTE架构的扩展来部署Proximity-basedServices(ProSe)。目前关于D2D通信的安全方案也逐渐成熟。但这些方案都不能很好地处理大量设备同时访问核心网络而产生的网络拥塞问题。而基于组的D2D通信是缓解网络拥塞的有效途径之一,近年来也受到学术界和产业界的广泛关注。
D2D通信的安全需求,UE与ProSe间通信安全,密钥分发的安全,UE间通信安全。尽管这些已经提出的方案用来解决D2D通信方案方案,但是不适合大量设备传输信息和低带宽的场景。在3GPP TS 23.303中,引入一种使用临近服务设备的新通信方案,建立在LTE直接无线链路,而且没有网络基础设施的协助。卢昊旗等人提出一种D2D中一对多通信的密钥协商协议方案,方案根据3GPP提出的一种一对多群组通信媒体业务安全的架构,但该方案仅认证方式比较复杂,而且适用的场景有限,并没有对如何形成D2D群组进行相应的说明。Emad Abd-Elrahman,等人提出一种D2D组通信方案,方案是通过基于IBE和ECC的方式,解决大量设备组通信以及存在D2D组通信中的安全性问题。方案是基于公钥加密系统,能够在3GPP中实现有效的和安全的组认证。但方案由于采用的是基于IBE的认证方式,会导致系统的计算复杂度比较高,对于D2D设备而言,一般处理能力有限,如果系统的复杂度很大,会导致D2D设备的性能严重下降。
同时,以上方法在带宽消耗性能,复杂度计算方面并不理想。综上所述,现有的基于D2D组的通信方法在大量设备访问核心网络的情况下,性能远不能满足实际应用的需求。
发明内容
本发明所要解决的技术问题是克服现有技术的不足而提供D2D(Device toDevice)通信中基于无证书的组安全认证方法,该方法使用基于ECC的无证书对称加密系统能够抵抗常见的攻击,如重定向攻击、中间人攻击;并且减少通信负载和通信次数,尤其是在大量设备同时访问核心网络时的情况下更佳;本发明较适于实际应用。
本发明为解决上述技术问题采用以下技术方案:
根据本发明提出的一种D2D通信中基于无证书的组安全认证方法,包括如下步骤:
步骤1、密钥生成中心生成认证所需的公钥、部分私钥;
步骤2、根据D2D设备的处理能力和电池容量,选取处理能力最强和电池容量最多的D2D设备,由该D2D设备发送步骤1中生成的公钥和部分私钥至其他的D2D设备,根据基于邻近服务自动搜索其他D2D设备;
步骤3、结合椭圆曲线加密和数字签名算法生成的椭圆曲线数字签名算法,对所有的D2D设备的消息进行加密,得到加密后的消息,利用HASH函数对加密后的消息产生一个摘要信息;
步骤4、其他D2D设备利用步骤2中选取的D2D设备所发送的步骤1公钥,解密步骤3中加密后的消息,然后,解密出步骤3中产生的摘要信息,解密后的摘要信息与步骤3的摘要信息进行对比;如果相同,加密后的消息是完整的,否则加密后的消息是被修改过;
步骤5、根据密钥图规则,将步骤2中搜索到的D2D设备形成多个D2D组,借助逻辑密钥等级协议将这些组分成一个个子组,并为每个子组产生对应密钥;每个子组有两个D2D设备,每个子组的D2D设备共享同一个密钥;
步骤6、每个子组利用椭圆曲线密钥交换协议算法加密计算得到自己的子组密钥;
步骤7、当新的设备加入一个子组中,立刻更新步骤5子组中的密钥,新加入的设备不能对子组中以前的数据进行解密;
步骤8、当子组中有设备离开后,原子组立刻执行步骤5中子组的密钥更新,用来保证此设备不能用原有的密钥对传输的数据进行解密。
作为本发明所述的一种D2D通信中基于无证书的组安全认证方法进一步优化方案,所述步骤1认证方式是采用无证书认证。
作为本发明所述的一种D2D通信中基于无证书的组安全认证方法进一步优化方案,所述步骤2搜索方式为广播和监视。
作为本发明所述的一种D2D通信中基于无证书的组安全认证方法进一步优化方案,所述步骤3中椭圆曲线数字签名算法为防伪造信息的签名方法。
作为本发明所述的一种D2D通信中基于无证书的组安全认证方法进一步优化方案,所述步骤5中采用社交关系的方式产生D2D组。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
(1)动态性:在设备的加入和离开过程中实现密钥的更新;
(2)隐藏性:基于无证书的交换,而不是基于身份的,避免密钥的托管问题和身份泄露的问题;
(3)该方法使用基于ECC的无证书对称加密系统能够抵抗常见的攻击,如重定向攻击、中间人攻击;并且减少通信负载和通信次数,尤其是在大量设备同时访问核心网络时的情况下更佳;本发明较适于实际应用。
附图说明
图1是本发明的方法框架图。
图2为本发明整个认证过程示意图。
图3为本发明组形成过程示意图。
图4为本发明几种密钥生成方案比较示意图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
本发明解决其技术问题所采取的技术方案是:椭圆曲线加密,基于新的技术,结合无证书和ECC(Elliptic Curves Cryptography,椭圆曲线加密)作为新的设计模型,能够提高区域发现和直接通信的安全级别。无证书公钥体制是在基于身份的公钥密码体制的基础上提出的一种新型的公钥密码体制,没有密钥的托管问题、不需要使用公钥证书。无证书加密主要有3种定义模式:Al-Riyami和Peterson定义(简称AP定义)、简化定义、Baek,Safavi-Nini和Susilo定义(简称BSS定义)。在这里采用AP定义,其加密方案由以下7个概率多项式时间算法构成:
(1)系统设置算法Setup:输入安全参数sp,输出系统私钥Kpriv和系统公开参数params;
(2)提取部分私钥算法Extract-Partial-Private-Key:输入params,Kpriv和用户身份ID,输出该用户的部分私钥PID。该算法由KGC(Key Generate Center,密钥生成中心)运行,并把通过安全信道把PID发送给用户;
(3)设置秘密值算法Set-Secret-Value:输入params和用户身份ID,输出用户ID的秘密值SID;
(4)设置私钥算法Set-Private-Key:输入params、用户ID的部分私钥PID和秘密值SID,输出用户ID的私钥SKID;
(5)设置密钥公共算法Set-Public-Key:输入params和用户ID的秘密值SID,输出该用户的公钥PKID;
(6)加密算法Encrypt:输入params、接收方身份ID、公钥PKID和消息M,输出密文C;
(7)解密算法Decrypt:输入params、接收方身份ID、私钥SKID和密文C,输出消息M。
另外,利用ECC的基本概念和基本性质以及基于椭圆曲线的密码体制和椭圆曲线密码的安全性。
基于上述理论,在基于LTE(Long Term Evolution,长期演进)的D2D(Device toDevice)通信环境下,本发明实现的基本思路是:利用无证书加密体制,结合ECC的安全优势,实现D2D组安全通信。通过ECDSA签名以及签名验证来保证数据的有效,以及组的形成和密钥的分发,D2D设备的动态加入和离开。本发明分为三个过程,初始化阶段、D2D-I阶段和D2D-II阶段。
方法流程:
步骤1:初始化阶段;
步骤2:D2D阶段I;
步骤3:D2D阶段II。
其中,本发明上述步骤1中所述的过程包括以下步骤:
步骤1:初始化阶段,系统的建立;
步骤2:区域D2D设备的发现。
本发明上述步骤2中所述的过程包括以下步骤:
步骤1:安全密钥生成阶段,利用无证书来实现公钥,部分私钥的生成;
步骤2:基于ECDSA的数字签名,在这个阶段执行ECDSA来实现快速的组发现;
步骤3:签名验证
执行完ECDSA协议后,每个设备对感兴趣的发送节点执行签名的验证;
步骤4:组形成过程
在这个阶段,形成一个组,组的形成是基于key graph协议;
步骤5:密钥生成
在这一阶段,每个子组自己计算每个子组的密钥。
本发明上述步骤3中所述的过程包括以下步骤:
步骤1:加入过程,当新的UE(User Equipment,用户设备)加入组中,需要密钥的更新来实现前向安全(Forward Secrecy,FS);
步骤2:离开过程,必须实现后向安全(Backward Secrecy,BS);
一、建立D2D组安全通信模型
认证和密钥协商就是认证用户的合法性,并与核心网络协商出为以后交互的会话密钥。
如图1所示,首先,系统初始化阶段,系统的建立。由KGC生成相应的部分私钥和公钥。接着是UE的发现。紧接着,结合ECC和DSA而形成的ECDSA签名,对发送的消息进行签名,接收方对收到的签名进行验证。若验证成功,则继续执行后续的操作。根据key graph规则,将相应的D2D设备组成一个个组,再根据LKH将这些组分成一个个子组,并为每个子组产生密钥。同时每个子组需要计算自己的密钥。当这些过程完成时,即可以进行安全的组通信了。但由于D2D设备的动态性,需要对D2D设备的动态加入和离开进行处理,如果D2D设备动态加入后,则组的密钥需要更新,新加入的设备不能解密之前的数据;如果D2D设备动态离开,则此D2D设备不能利用以前的密钥解密现有的数据,进而保证整个D2D组通信安全性和有效性。
二、具体的D2D群组认证和密钥协商方法实现
如图2所示,D2D Group-based AKA协议的具体执行过程。
(1)系统的建立,由可信任的密钥生成中心KGC运行,是概率多项式时间算法,总体描述为:{mask,params}←Setup(sp),mask是由KGC生成的系统主密钥,KGC具体实施如下:
1-1:选择一个l bit长度的素数p和椭圆曲线参数组{Fq,E(Fq),G},Fq是包含q个元素的有限域,其中q为素数p或者2m。E(Fq)是Fq上椭圆曲线E上所有有理点组成的集合;G是椭圆曲线的一个基点;
1-2:选择一个其中表示整数集模n的乘法循环群,并计算P=x·G,x作为系统的主密钥,P作为与主密钥x对应的系统公共参数;
1-3:选择两个哈希函数H1:和H2:
1-4:KGC公开发布params={Fp,E(Fp),G,P,H1,H2}作为系统的公共参数,其中H1和H2是哈希函数,KGC安全地保存系统的主密钥x。
用户密钥设定算法:由D2D设备A运行,为概率多项式时间算法,其描述为:
D2D设备A的具体实施如下:选取一个随机数作为用户A的秘密值,计算 作为D2D设备A的公开值。
部分密钥提取算法:KGC运行的概率多项式时间算法,其描述为:
KGC的具体实施如下:
1)选取随机数计算其中,表示D2D设备A关于IDA的随机数;
2)其中IDA是D2D设备A的ID;
3)KGC计算其中表示哈希函数;
4)KGC通过安全信道将发送给D2D设备A,其中作为D2D设备A的部分私钥,作为D2D设备A的部分私钥。
私钥设定算法:由D2D设备主体A运行,为概率多项式时间算法,其描述为:
D2D设备A的具体措施如下:
1)D2D设备A接收到KGC发送过来的后,验证若等式成立,则D2D设备A认为接收到的有效;若不成立,则D2D设备A终止操作;
2)若有效,则生成D2D设备A关于D2D设备A关于IDA的私钥
公钥设定算法:由D2D设备主体A运行,为概率多项式时间算法,其描述为D2D设备A的具体实施为:生成D2D设备A关于IDA的公钥
(2)D2D设备发现
区域D2D设备的发现,选取处理能力最强和电池容量最多的D2D设备,由该D2D设备发送步骤1中生成的公钥和部分私钥至其他的D2D设备,根据基于邻近服务,D2D设备自动用户搜索附近的D2D设备。发现机制:广播和监视。UE广播一定的信息,而这些信息可以用作临近用户发现(允许发现的);UE监视感兴趣的,邻近广播UE的特定信息。
(3)签名过程
执行ECDSA协议来实现快速组发现。ECDSA算法用于签名,是椭圆曲线加密(ECC)和DSA的结合,整个过程与DSA类似,所不一样的是签名中采取的算法是ECC。为了签名请求认证消息或传输消息m,具有域D=(q,FR,a,b,G,n,h)及其相关密钥对(d,Q),其中G是基点,域大小q,FR是有限域,Q是公钥,d是私钥,a和b是椭圆曲线的私有数字,h表示哈希函数。最后签名出来的值分别为r,s。以下是D2D设备A的具体操作:
3-1:选择一个随机数n(大素数),选择一个统计独特,不可预测的整数k(k<n);
3-2:计算d=SKID mod(n-2),其中SKID为用户关于ID的私钥;
3-3:计算Q=d*PKID;
3-4:计算k*PKID=(x1,y1),且r=x1mod n,其中,k表示不可预测整数,x1和y1表示有限域的元素。如果r=0,则重新从第3-4步执行;
3-5:计算k-1mod n;
3-6:计算s=k-1(h(m)+d*r)mod n,其中h(*)是安全Hash算法(SHA-1),s表示签名出的值。如果s=0,则重新从第3-1步执行;
3-7:信息的签名m是一个整数对(r,s)。
(4)签名验证ECDSA Verification(m,PKID)
验证A在消息m上的签名为(r,s),D2D设备B取得A的域参数D=(q,FR,a,b,G,n,h)的可信副本,然后B的具体操作如下:
4-1:验证r,s是整数,其中r和s表示签名值,属于[1,n-1];
4-2:计算w=s-1mod n和h(m),其中h(*)表示哈希函数;
4-3:计算u1=h(m)*w mod n和u2=r*w mod n;其中,w表示中间的变量值,便于计算u1和u2;
4-4:计算u1*PKID+u2*Q=(x0,y0)和v=x0mod n,PKID表示D2D设备ID的公钥,x0,y0表示椭圆曲线的点,v表示通过计算获取的值,Q表示公钥;
4-5:当且仅当v=r时,签名验证通过。若不相等或算法运行出错,则返回错误。
(5)组形成过程
根据key graph来发现D2D设备,并将这些密钥分成一个一个子组。利用YilingWang等人提出的改善Logical Key Hierarchy(LKH)协议来为每个组生成密钥。每个子组“i”是由D2D用户组成,共享共同的密钥Ki,作为ECDH协议的输出。
(6)密钥生成
每个子组计算自己的子组密钥Ki:Ki=a*b*p=KSD2D,其中,a和b是ECDH使用的私有数字。最终密钥服务器计算每个节点(i=1,5,9,13)的密钥:Ki,i+3=sum(Ki,Ki+1,Ki+2,Ki+3),Ki,Ki+1,Ki+2,Ki+3表示每个子组的密钥;最终的组密钥是KG=sum(Ki,i+3)。
(7)加入过程
由于将形成的组分成一个个子组,设置子组减少了加入过程和离开过程的复杂度。复杂度从O(组的大小)减少到其中,O()表示复杂度。
在这一阶段,当新的D2D设备加入组中,密钥更新必须完成,来实现前向安全的需求。在这一过程中,与服务器的认证是优先完成的,然后D2D设备和服务器共享相同的会话密钥,其中,密钥以一种安全的方式由密钥服务器发送至新加入的D2D设备。密钥服务器给每个子组分配一个ID,然后把这个ID发送至成员。图3为本发明组形成过程的示意图,例如,假设子组16有一个成员,新的用户将属于子组16,它的身份是2。同时,密钥必须更新的有K16,K13,16,KG到K′16,K′13,16,和KG',其中,K16表示子组16的密钥,K13,16表示节点密钥,KG表示最终的组密钥。
密钥服务器收到子组D2D设备发送的新密钥,S表示密钥服务器,计算需要的密钥,然后通过单向的方式发送它们。然后,通过会话密钥加密密钥,并发送至新加入的用户,其中K′13表示子组13更新后的密钥,KG'表示更新后的最终密钥。密钥服务器同时对子组13,14,15通过K13,K16加密K′13,16,对子组从1到12通过加密KG获取KG',其中K′16表示子组16更新后的子组密钥,K′13,16表示更新后的节点密钥。
(8)离开过程
在这一阶段,我们需要完成后向安全。事实上,当用户设备离开会话,此用户不能继续解密传输的数据。因此,密钥的更新需要完成,实现用户数据的安全,实现后向安全,就像加入过程一样。在这一过程,离开组的成员,发送一个离开请求至密钥服务器。组成员更新他们的密钥如下:
K″16=任意以(x*P)形式剩下的成员,其中x是随机数,K″13,16表示组成员离开后更新的节点密钥,K″16表示组成员离开后更新的子组13密钥,KG″表示表示组成员离开后更新后最终组密钥。
密钥服务器不需要在离开一个新的成员后,单独生成一个密钥,这个过程的密钥更新需要成员用户和密钥服务器协作来完成。
密钥服务器仅仅广播新的密钥至剩下的子组16的成员。
就复杂度和性能而言,针对密钥服务器和节点在加入和离开过程的密钥更新总结在表1。该表展示了在加入和离开过程不同的密钥更新方案。本方案与其他处理方案,如Simple Application方法,Logical Key Hierarchy(LKH)协议,One-way Function Tree(OFT)和Manisha等协议。Simple Approach(SA)在加入和离开过程后,最大地减少生成的密钥。与LKH,OFT,Manisha协议,提出的方案在用户设备加入或离开组后具有最小的生成密钥。提出方案最重要的是密钥服务器不需要在组成员离开后生成新的密钥。
表1密钥生成负载比较
从图4,我们可以得出,解决方案在成员加入组中,减少了密钥服务器的密钥生成。另外,其性能超过了LKH,OFT和Manisha协议(在m=2,对于我们方案,有两个D2D用户设备)。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而这些属于本发明的实质精神所引伸出的显而易见的变化或变动仍属于本发明的保护范围。