5G二次认证协议的分析与设计*
2019-09-04李长隆
李长隆 ,古 毅 ,王 俊
(1.中国人民武装警察部队参谋部,北京 100089;2.中国电子科技集团公司第三十研究所,四川 成都 610041)
0 引 言
移动通信技术的发展迈入了5G新时代,垂直行业也迎来了新的发展机遇。
一方面,由于不同的行业具有不同的服务需求,为了满足不同行业的差异化需求,5G中引入了网络切片。所谓网络切片[1],就是根据不同的服务需求把运营商的物理网络切分成多个虚拟网络,这就避免了为每一个服务建设一个专用的物理网络,从而大大节省了部署的成本。另一方面,由于不同行业用户有其特殊的安全需求,为了防止非授权用户访问行业的网络切片,5G中提出可对访问行业网络切片的用户进行二次认证。二次认证是指终端用户与运营商域外的数据网络之间进行身份认证,从而使合法用户能够安全地访问数据网络。
1 关键技术介绍
根据3GPP标准TS 33.501[2],应使用RFC3748[3]中规定的EAP框架在终端(User Equipment,UE)和位于外部数据网络(Data Network,DN)中的DN-AAA服务器之间进行二次认证。
1.1 EAP框架
EAP(Extensible Authentication Protocol, 可 扩展的身份认证协议)是一种支持多种认证方法的身份认证框架。EAP框架由三部分组成:Client(客户端)、Authenticator(认证方)和Authentication Server(身份认证服务器)。客户端是被认证的实体,通常是网络用户;认证服务器用于验证用户身份,通常是一个AAA服务器;认证者在用户和认证服务器之间转发EAP消息。图1给出了典型的EAP框架。
图1 典型的EAP框架
EAP框架具有很强的灵活性:认证方通常向客户端请求足够多的信息以确定要使用的身份认证方法。EAP框架中允许使用一个后端的身份认证服务器,可以使用该认证服务器来实现各种认证方法,而认证方只需在客户端和后端认证服务器之间透传消息即可。
1.2 AAA
AAA(Authentication,Authorization,Accounting,即认证、授权、计费)提供了一个对用户进行认证、授权和计费的安全模型。具体为:
Authentication(认证):对用户身份的合法性进行认证。
Authorization(授权):控制合法用户可以访问的网络资源。
Accounting(计费):对合法用户访问的网络资源采用一定的策略进行计费。
AAA服务器(AAA Server)是一个能够处理用户访问请求,并提供授权以及计费服务的服务器程序。
2 AAA认证协议及安全性分析
AAA认证协议包括EAP认证协议,而EAP支持多种认证协议以保证认证过程中的信息安全。本章将主要对基于EAP的一些常用认证协议(包括基于口令的EAP认证协议、基于TLS(隧道)的EAP认证协议和基于SIM卡的认证协议)进行介绍,并对协议的安全性进行分析。
2.1 基于口令的EAP认证协议
基于口令的EAP认证协议是利用用户名和口令作为用户凭证的一种EAP认证协议。包括EAPMD5、EAP-LEAP等。
2.1.1 EAP-MD5
2.1.1.1 协议简介
EAP-MD5协 议(Message Digest 5, 消 息 摘要认证协议)是一种EAP支持的最基本的认证方法。该协议通过MD5哈希函数实现其认证功能,但该协议无法为每个会话生成动态的WEP(Wired Equivalent Privacy,有线对等保密)密钥,安全性较弱。
2.1.1.2 安全性分析
用户身份信息泄露:EAP-MD5认证协议中,用户名是以明文形式进行传递的,这就不可避免的泄漏了用户的身份信息。
双向认证:EAP-MD5认证协议中,用户在认证时,只需输入用户名和口令,服务器将用户的输入信息和认证数据库中的认证信息进行比对,若信息匹配则认证通过。但协议中并没有实现客户端对服务器端的认证。因此,EAP- MD5协议没有实现双向认证。
字典攻击:EAP-MD5协议是基于MD5实现对客户端的认证,而MD5算法的抗碰撞性较弱,可以通过字典攻击来对口令进行猜测从而破解口令,因此该协议易受到字典攻击。
2.1.2 EAP-LEAP
2.1.2.1 协议简介
EAP-LEAP协 议(Lightweight Extensible Authentication Protocol,轻量级可扩展身份认证协议),是由Cisco提出的一种支持双向认证功能的认证协议。该协议采用用户名和口令作为用户的凭证,协议的安全性随口令强度的增强而增强。
2.1.2.2 安全性分析
用户身份信息泄露:在EAP-LEAP认证协议中,用户名是以明文形式发送的,这就容易造成用户身份信息的泄漏。
双向认证:EAP-LEAP认证协议中,服务器和客户端均通过将接收到的质询消息和本地的口令进行HASH运算得到的散列值与接收到的散列值相比较,从而对对方的身份进行验证。因此,该协议能够实现双向认证。
字典攻击:EAP-LEAP协议是基于MS-CHAP实现相互认证,而MS-CHAP容易遭受离线的字典攻击[4],因此EAP-LEAP协议易受到离线的字典攻击。
2.2 基于TLS/隧道的EAP认证协议
基于TLS/隧道的EAP认证协议是基于TLS或TLS隧道化身份认证的一种EAP认证协议。包括EAP-TLS、EAP-TTLS、EAP-PEAPv0(EAP-MSCHAPv2)、EAP-FAST等。
2.2.1 EAP-TLS
2.2.1.1 协议简介
EAP-TLS 协 议[5](EAP-Transport Layer Security,传输层安全协议)是基于证书的双向认证协议,是一种传输层安全协议。该协议需要在客户端和认证服务器端同时安装安全证书:在客户端,EAP-TLS协议采用X.509数字证书取代用户名和密码的认证。当客户端与认证服务器端进行身份认证时,双方会交换数字证书并且通过会话密钥的协商产生一个动态的WEP会话密钥。在完成相互认证之后,双方就会使用该会话密钥来对信息进行加密,从而保障之后访问网络的信息安全。
2.2.1.2 安全性分析
用户身份信息泄露:EAP-TLS认证中,证书交换以前的所有消息都是明文传输的,在这段时间,用户的身份信息容易泄露。
双向认证:EAP-TLS认证协议中,客户端和服务器之间通过交换数字证书实现用户和服务器之间的相互认证。因此,EAP-TLS协议实现了双向认证。
重放攻击:EAP-TLS认证协议中,公钥证书借助随机数来确保传输数据的实时性。因此。EAPTLS认证协议能够抵抗重放攻击。
字典攻击:EAP-TLS协议不是以口令作为用户凭证,因此,该协议不易受到字典攻击。
中间人攻击:EAP-TLS协议中,在客户端还未通过认证以前,客户端与认证系统之间还没有一条可靠的通道,此时消息都是以明文传输的。攻击者可以监测并解析EAP成功的数据帧,同时向客户端发送以攻击者MAC地址(Media Access Control Address,物理地址)构造的EAP注销消息,客户端在收到该消息后,会主动断开与认证系统的连接并重新发起认证。攻击者将客户端的认证消息转发给合法认证系统,再将从合法认证系统收到的消息转发给客户端,这样就可以实现对中转数据的篡改、伪造和丢弃,从而实现中间人攻击。且当攻击者多次以相同的方式对客户端进行攻击后,认证服务器对客户端设置的认证次数达到阈值,控制端口被关闭,服务器拒绝向该客户端提供服务,从而实现拒绝服务攻击。
2.2.2 EAP-TTLS
2.2.2.1 协议简介
EAP-TTLS 协 议[6](Tunneled Transport Layer Security,隧道化的传输层安全协议)是EAP-TLS协议的扩展,它改进了EAP-TLS协议中客户端和服务器之间的双向认证。在EAP-TLS协议中,需要同时在客户端和服务器端安装证书以进行相互认证;而EAP-TTLS协议中,只需在服务器端安装证书以实现客户端进行对服务器的认证,而服务器端可使用用户名和密码对客户端进行认证。EAPTTLS协议包含两个阶段:
第一阶段:握手阶段。在该阶段,客户端通对服务器的数字证书对其进行认证、交换认证信息、生成共享密钥、并确定TLS记录层加密机制。
第二阶段:数据阶段。在该阶段,使用第一阶段中产生的安全TLS记录层通道作为隧道交换封装信息,完成服务器对客户端的认证并分配密钥。服务器对客户端的认证方法可以是PAP(Password Authentication Protocol,口令认证协议)、CHAP(Challenge Handshake Authentication Protocol,挑战握手认证协议)、MS-CHAP(The Microsoft Challenge Handshake Authentication Protocol,Microsoft版本的挑战握手认证协议)、MS-CHAPv2(The Microsoft Challenge Handshake Authentication Protocol version 2,Microsoft版本的挑战握手认证协议第2版)或者其他EAP类型的认证方法。
2.2.2.2 安全性分析
用户身份信息泄露:EAP-TTLS认证中,用户的身份信息是在安全隧道中进行传输的,这就避免了用户身份信息的泄漏。
双向认证:EAP-TTLS协议中,客户端对服务器的身份认证在第一阶段完成,而服务器对客户端的身份认证在第二阶段完成。因此,该协议实现了双向认证。
重放攻击:与EAP-TLS类似,在EAP-TTLS协议中,公钥证书借助随机数来确保传输数据的实时性。因此。EAP-TTLS认证协议能够抵抗重放攻击。
字典攻击:若EAP-TTLS协议的第二阶段采用MS-CHAP、MS-CHAPv2作为服务器端对客户端的认证方法,而MS-CHAP、MS-CHAPv2容易遭受离线的字典攻击[4,7],所以此时的EAP-TTLS协议易受到字典攻击。
2.2.3 EAP-PEAP v0(EAP-MSCHAPv2)
2.2.3.1 协议简介
EAP-PEAP协 议(Protected Extensible Authentication Protocol,受保护的可扩展身份认证协议)是由Microsoft、Cisco和RSA Security公司共同开发的基于安全密码的一种认证协议。EAP-PEAP协议包含两个阶段:
第一阶段:TLS隧道建立。客户端和服务器端通过TLS握手创建一个安全的TLS隧道。同时,客户端通过数字证书对服务器端的身份进行认证。
第二阶段:隧道认证。在TLS隧道内,进行内部方法的认证。
与EAP-TTLS协议类似,EAP-PEAP协议也是一种基于数字证书的认证机制,但它仅仅需要服务端安装证书,而对客户端的证书是可选的。此外,该协议也是基于TLS建立了一个提供加密和认证服务的隧道,并在隧道内封装了其它EAP认证机制。与EAP-TTLS协议的不同的是,EAP-TTLS协议既支持EAP协议作为内层认证方法,又支持以传统的认证方法PAP、CHAP、MS-CHAP和MS-CHAPv2作为内层认证方法,而EAP-PEAP只支持EAP协议作为内层认证方法。其中,EAP-PEAP v0(EAPMSCHAPv2)[8]使用EAP-MSCHAPv2协议作为隧道内部的认证方法,是最常用的一种PEAP类型;EAP-PEAPv0(EAP-TLS)使用EAP-TLS协议(参照2.2.1)作为隧道内部的认证方法。
2.2.3.2 安全性分析
用户身份信息泄露:在EAP-PEAPv0(EAPMSCHAPv2)认证协议中,不管是在挑战数据包还是响应数据包中包含的名称字段均是以明文形式发送的,这将不可避免的造成用户身份信息的泄漏。
重放攻击:EAP-PEAPv0(EAP-MSCHAPv2)认证协议中,客户端发送了随机数挑战给认证端且也收到了来自认证端的随机数挑战,这些随机数将提供抗重放保护。因此,该认证协议能够抵抗重放攻击。
字典攻击:由于EAP-PEAPv0(EAP-MSCHAPv2)认证协议是使用EAP-MSCHAPv2协议作为隧道内部的认证方法,而MS-CHAPv2易遭受字典攻击[7],因此EAP-PEAPv0(EAP-MSCHAPv2)协议易受到字典攻击。
2.2.4 EAP-FAST
2.2.4.1 协议简介
EAP-FAST 协 议[9](Flexible Authentication via Secure Tunneling,可扩展的安全隧道认证协议)是由Cisco提出的用于解决EAP-LEAP协议缺陷的一种认证协议。该协议兼具PEAP和LEAP协议的优点:(1)通过建立传输层安全性隧道,使用户身份信息在加密隧道的保护下进行传输,从而防止用户信息被攻击者获取;(2)利用强口令认证作为隧道内部认证方式,从而进行双方的身份认证。EAPFAST协议包含两个阶段:
第一阶段:TLS隧道建立。该隧道由基于PAC(Protected Access Credential,受保护的接入证书)的预共享密钥建立。
第二阶段:隧道认证。隧道建立之后,在隧道内进行内部方法的认证。
2.2.4.2 安全性分析
用户身份信息泄露:EAP-FAST认证协议虽然提供可选的身份隐私支持,即采用假名,但是,在客户端没有可用的假名前,是不能使用隐私机制的。此时,为了使客户端有可用的假名,用户需要首先向服务器端提供自己的身份信息,但由于此时客户端还没有可用的假名,因此,用户的身份信息是以明文形式发送的,这就不可避免的泄漏了用户的身份信息。
消息完整性保护:EAP-FAST认证协议中,通过建立安全隧道,使用基于PAC的预共享密钥实现了消息的完整性保护。
双向认证:EAP-FAST认证协议中,在第一阶段,客户端通过验证共享的密钥从而对服务器端进行了认证;而服务器端对客户端的认证在第二阶段完成。因此,EAP-FAST协议实现了双向认证。
字典攻击:由于EAP-FAST协议中的口令是在安全隧道中进行传输的,因此它不易受到字典攻击。
中间人攻击:在相互认证过程中,由于攻击者不具有基于PAC的预共享密钥,因此无法实现中间人攻击。另一方面,由于攻击者不知道通过交换内部方法产生的密钥,因此也无法冒充会话参与者。综上,EAP-FAST协议是能够抵抗中间人攻击的。
2.3 基于SIM卡的EAP认证协议
基于SIM卡的EAP认证协议是利用SIM/USIM卡作为用户凭证的一种EAP认证协议。包括EAPSIM、EAP-AKA、EAP-AKA’等。
2.3.1 EAP-SIM
2.3.1.1 协议简介
EAP-SIM 协 议[10](Subscriber Identity Modules,用户识别模块)是由IETF 组织于2006年制定。它建立在GSM(Global System for Mobile Communications,全球移动通信系统/第二代移动通信系统)认证基础之上,采用GSM-SIM卡作为EAP认证和密钥分发的机制。
由于GSM认证:(1)只能实现单向认证,即服务器对客户端的认证,无法实现客户端对服务器的认证;(2)会话密钥的长度太短仅64位,无法抵御暴力破解攻击。EAP-SIM在GSM认证基础之上:(1)采用SIM卡存储用户与网络运营商之间的共享密钥,因此,在客户端能实现对服务器的认证;(2)使用多重认证三元组生成更安全的会话密钥;(3)还提供用户匿名支持和快速重认证等可选功能,提供了更高的安全性和灵活性。
2.3.1.2 安全性分析
用户身份信息泄露:同EAP-FAST,EAP-SIM认证协议虽然提供也可选的身份隐私支持,即采用假名,但是,在客户端没有可用的假名前,是不能使用隐私机制的。此时,为了使客户端有可用的假名,用户需要首先向服务器端提供自己的身份信息,但由于此时客户端还没有可用的假名,因此,用户的身份信息是以明文形式发送的,这就不可避免的泄漏了用户的身份信息。
消息完整性保护:EAP-SIM认证协议中,客户端和服务器端均生成了消息校验码以对接收到的消息进行完整性校验。
双向认证:EAP-SIM认证协议中,客户端和服务器端共享只有双方才知道密钥,客户端和服务器端能通过验证由共享密钥推导的MAC与接收到的MAC是否相等以对对方的身份进行认证。因此,EAP-SIM认证协议实现了双向认证。
重放攻击:EAP-SIM认证协议中,由客户端发送给服务器端的EAP响应消息中包含了随机数,由服务器端发送给客户端的请求消息中也包含了随机数,这些随机数将提供抗重放保护。因此,EAPSIM认证协议能够抵抗重放攻击。
服务器假冒攻击:EAP-SIM认证协议中,使用了多重认证三元组,但是协议中并未规定随机数的使用次数,因此,认证过程中认证三元组可以无限次重用。如果泄露几组认证三元组,服务器端将被假冒。
字典攻击:由于EAP-SIM协议不是采用口令作为用户凭证,因此它不易受到字典攻击。
2.3.2 EAP-AKA
2.3.2.1 协议简介
EAP-AKA 协 议[11](Authentication and Key Agreement,认证和密钥协商协议)是使用第三代移动通信网络认证和密钥协商机制的一种EAP机制。它是一种基于USIM卡的认证协议。与第二代移动通信网络认证和密钥协商机制相比,第三代AKA提供了更长的密钥长度和相互认证。与EAP-SIM协议相比,EAP-AKA认证协议在认证过程中通过五元组为加密密钥的生成提供材料。
2.3.2.2 安全性分析
用户身份信息泄露:同EAP-SIM,EAP-AKA认证协议虽然提供也可选的身份隐私支持,即采用假名,但是,在客户端没有可用的假名前,是不能使用隐私机制的。此时,为了使客户端有可用的假名,用户需要首先向服务器端提供自己的身份信息,但由于此时客户端还没有可用的假名,因此,用户的身份信息是以明文形式发送的,这就不可避免的泄漏了用户的身份信息。
消息完整性保护:EAP-AKA认证协议中,客户端和服务器端均生成了消息校验码以提供对方对接收到的消息进行完整性校验。因此,该协议提供了消息完整性保护。
双向认证:同EAP-SIM,EAP-AKA认证协议中,客户端和服务器端共享只有双方才知道密钥,客户端通过验证由共享密钥推导的本地AUTN与接收到的AUTN是否相等以对服务器端的身份进行认证,服务器端能通过验证由共享密钥推导的本地RES与接收到的RES是否相等以对客户端的身份进行认证。因此,EAP-AKA认证协议实现了双向认证。
重放攻击:EAP-AKA认证协议中,由服务器端发送给客户端的请求消息中包含了随机数,该随机数将提供抗重放保护。因此,EAP-AKA’认证协议能够通过抵抗重放攻击。
字典攻击:由于EAP-AKA协议不是采用口令作为用户凭证,因此它不易受到字典攻击。
2.3.3 EAP-AKA'
2.3.3.1 协议简介
EAP-AKA’协议[12]是一种改进的EAP-AKA协议。与EAP-AKA协议相比,EAP-AKA’认证协议(1)使用了一个新的密钥派生函数,即在认证过程的密钥生成过程中,增加了接入网的标识;(2)将哈希函数由SHA-1替换为SHA-256。
2.3.3.2 安全性分析
消息完整性保护:同EAP-AKA,EAP-AKA’认证协议中,客户端和服务器端均生成了消息校验码以提供对方对接收到的消息进行完整性校验,且使用了更强大的哈希算法SHA-256。
双向认证:同EAP-AKA,EAP-AKA’认证协议中,客户端和服务器端享只有双方才知道的密钥,客户端通过验证由共享密钥推导的本地AUTN与接收到的AUTN是否相等以对服务器端的身份进行认证,服务器端能通过验证由共享密钥推导的本地RES与接收到的RES是否相等以对客户端的身份进行认证。因此,EAP-AKA’认证协议实现了双向认证。
重放攻击:同EAP-AKA,EAP-AKA’认证协议中,由服务器端发送给客户端的请求消息中包含了随机数,该随机数将提供抗重放保护。因此,EAP-AKA’认证协议能够通过抵抗重放攻击。
字典攻击:由于EAP-AKA’协议不是采用口令作为用户凭证,因此它不易受到字典攻击。
3 二次认证协议及安全性分析
TS 33.501里介绍了二次认证的流程,但对具体使用哪种认证方式并未做出明确的规定。结合在第二章中对常用的EAP认证协议的分析结果,在本章,我们将提出一种基于对称密码体制的二次认证协议。
3.1 一种二次认证协议
本文提出了一种基于对称密码体制的二次认证协议,该协议的流程参照图2。
图2 二次认证协议流程图
步骤一:生成随机数RANDDN,由RANDDN和IDDN计算M1,再由M1和RANDDN生成h1。
将(M1,h1)发送给UE。
步骤二:首先对接收到的M1进行解密得RANDDN和IDDN,再由RANDDN和IDDN计算h1并与接收到的h1进行比较。若不等,终止会话。否则,生成随机数RANDUE,由RANDUE和IDUE计算M2,再由M2和RANDUE生成消息验证码h2。
将(M2,h2)发送给DN-AAA。
步骤三:首先对接收到的M2进行解密得RANDUE和IDUE,再由RANDUE和IDUE计算h2并与接收到的h2进行比较。若不等,认证失败。否则,认证成功,由RANDUE计算M3,再由M3生成h3。
将(M3,h3)发送给UE。
步骤四:首先对接收到的M3进行解密得RANDUE,再由RANDUE计算h3并与接收到的h3进行比较。若不等,认证失败。否则,认证成功。
将认证成功消息发送给DN-AAA。
3.2 安全性分析
用户身份信息泄露:在该二次认证协议中,用户的身份信息是包含在M2中被传送的,而只有AAA服务器和用户才具有共享密钥,因此,攻击者即使截获了M2也无法解析出用户的身份信息,这就避免了用户身份信息的泄露。
消息完整性保护:在该二次认证协议中,DNAAA发送给UE的(M1,h1)和(M3,h3)消息会在UE端分别经过比较计算而得的h1和h3与接收的h1和h3是否相等以验证接收的消息是否完整,而UE发送给DN-AAA的(M2,h2)消息会在DN-AAA端经过比较计算而得的h2与接收的h2是否相等以验证接收的消息是否完整。因此,在该协议中,完成了消息完整性的校验。
双向认证:在该二次认证协议中,由于只有合法的双方才具有相应的共享密钥。因此,该协议通过共享密钥实现了相互认证。
重放攻击:在该二次认证协议中,UE和DNAAA均生成了随机数以提供抗重放保护,因此,该认证协议能够抵抗重放攻击。
服务器假冒攻击:在该二次认证协议中,若攻击者想要假冒DN-AAA,它必须具有与UE共享的共享密钥,而该共享密钥只有合法的双方才具有。因此,攻击者无法实现服务器假冒攻击。
字典攻击:由于该二次认证协议不是以口令作为用户凭证,因此它不易受到字典攻击。
中间人攻击:在该二次认证协议中,由于攻击者不知道只有合法的双方才具有的共享密钥,因此,攻击者是无法假冒会话参与者,从而无法实施中间人攻击。
综上,该二次认证协议提供了用户身份信息保护、消息完整性保护和双向认证,且具有较强的安全性。
4 结 语
本文首先对基于EAP的一些常用认证协议的安全性进行了分析,指出了这些协议所存在的安全漏洞。并在此基础上提出了一种基于对称密码体制的二次认证协议。该协议改进了这些协议的缺点,具有较强的安全性。因此,可将该协议用于5G中用户与数据网络之间进行的二次认证,从而为用户访问数据网络提供更高的安全性。