4G“长期演进技术”(Long Term Evolution,LTE)无线通信网络,不像早期的“第三代移动通信合作伙伴计划”(3GPP)规范下的3G无线通信网络,在第四代网络中,特别是在安全领域,提供了一种相互认证的强有力的机制。该机制可以击败许多已知的,针对蜂窝网络的攻击。此外,“长期演进技术”无线通信网络利用“钥匙保持分离”(key holding separation)和“密钥导出函数”(key derivation function)来限制对安装密钥的访问,该密钥既用于“通用用户识别模块”(USIM)的认证,也用于“后端网络”(back-end network)的认证。这些改进不仅向“长期演进技术”无线通信网络提供了现代的安全功能,同时这些安全功能对于终端用户来说,又是透明的,而且这些改进还为攻击者捕获和窃听的“长期演进技术”无线通信网络的活动创建了一个机会。
在这一部分内容中,我们首先来看看“长期演进技术”无线通信网络的基本架构,然后在认证交换和随后的网络访问过程中,检验一下组件参与这些活动的功能。我们也会看一下“长期演进技术”无线通信网络的认证交换过程,理解一下相比于以前“第三代移动通信合作伙伴计划”规范下的3G无线通信网络,“长期演进技术”无线通信网络究竟在哪些方面有系统地提高。最后,我们来看一个攻击的可能机会,借助于这个机会,一个资深的黑客利用以前曾有的访问权限以明文的方式访问敏感蜂窝网络中的语音通话和数据通信交换的入侵过程。
一个“长期演进技术”无线网络模型的完整实现过程是一个非常复杂的过程,带有许多不同的组件,可以满足不同需求的不同实现方式。对“长期演进技术”无线网络体系模型的基本理解,可以通过一个基本的移动设备,以及支持这个网络的插图来进行掌握,如图12-18所示。我们可以检查这些组件在网络中的位置,理解它们在网络中所扮演的角色。
图12-18 4G“长期演进技术”基本网络架构
·“通用用户识别模块”/“用户设备” “通用用户识别模块”(Universal Subscriber Identity Module,USIM)存在于“用户设备”(User Equipment,UE)之内。“通用用户识别模块”对于网络的识别和提供一个密钥的保存机制来说,扮演的是一个至关重要的角色。“用户设备”就是我们平时用的,连接到“长期演进技术”无线网络的手机或其他设备。
·“进化的节点B” “进化的节点B”(Evolved Node B,eNodeB)元素和以前的“第三代移动通信合作伙伴计划”规范中“节点B”元素很相似。两者都提供了以无线访问机制,让“用户设备”连接到“长期演进技术”无线网络的能力。其中,“进化的节点B”提供了到“长期演进技术”无线网络低层次的访问,并且也不会主动地参与到高层次的数据访问和身份验证选项。
·“移动管理实体” “移动管理实体”(Mobility Management Entity,MME)接口连同“进化的节点B”,提供了访问“长期演进技术”无线网络时的主要控制节点(primary control node)。“移动管理实体”是在认证交换完成以后,最终负责加密和解密的网络通信数据包的模块,并选择承担“用户设备”连接的“服务网关”任务。
·“家庭用户服务器” “家庭用户服务器”(HSS)是用户信息的中心数据库(central database)。“家庭用户服务器”与“移动管理实体”进行交互,从而验证“通用用户识别模块”网络的访问授权,向“移动管理实体”提供必要的信息来验证网络对“通用用户识别模块”身份的有效性。
·“服务网关” “服务网关”(SGW)负责通过网络对数据包进行路由操作。“服务网关”与“移动管理实体”进行交互,最终根据认证状态,授予或拒绝其对“用户设备”的访问权限。
·“分组数据网网关” “分组数据网网关”(Packet Data Network Gateway,PDN-GW)的作用就是接收来自于“服务网关”的数据包,而该网关的另一侧则是“分组数据网”,是外部的,非“长期演进技术”的无线网络,比如说互联网。
这个模型提供了一种结构化的访问机制,该机制是专门针对“长期演进技术”的无线网络和外部提供网络认证和加密功能网络之间的交互操作。虽然这个模型可以明显地变得更复杂(特别是处于两协议塔之间进行对等漫游的时候 [1] ),该模型提供了了解“长期演进技术”认证功能所需要的必要特征。
“长期演进技术”网络提供了将要通信的两个手机之间相互认证的机制和网络基础设施所使用的协议“演进的分组系统的认证和密钥协商”(Evolved Packet System Authentication and Key Agreement,EPS-AKA)协议。就像第二代的“全球移动通信”网络和“第三代移动通信合作伙伴计划”规范网络一样,第四代的“长期演进技术”网络依靠的认证功能和共享内容是由“国际移动用户标识符”(International Mobile Subscriber Identity,IMSI)提供的。这个“国际移动用户标识符”码由三个部分组成。
·“移动设备国家代码” “移动设备国家代码”(Mobile Country Code,MCC)指的是终端用户所在的国家编码。
·“移动设备网络代码” “移动设备网络代码”(Mobile Network Code,MNC)在这里指的是家庭网络(home network)。
·“移动设备用户识别代码” “移动设备用户识别代码”(Mobile Subscriber Identification Number,MSIN)指的是在“移动设备用户识别代码”和“移动设备网络代码”相结合后,所对应的那个上下文网络中每一个用户的代码。
“国际移动用户标识符”值存储在“通用用户识别模块”上,是一个固定的值;只要“通用用户识别模块”不更换,那么“国际移动用户标识符”的值就不会改变。“国际移动用户标识符”值对于“用户设备”来说,是一个共享的标识符。例如作为“长期演进技术”手机来说,“家庭用户服务器”关联了认证主键“K”,那么无论是“用户设备”,还是“家庭用户服务器”都会使用这个“K”的值,进行二者之间的相互认证。
注意
在“长期演进技术”无线通信网络中,基本安全组件就是“共享密钥K”(shared secret K),它的作用是用于认证过程和动态密钥派生。“共享密钥K”保存在“通用用户识别模块”和“家庭用户服务器”中。对比一下前面第4章中曾提到过的“Wi-Fi保护访问下的预共享密钥”认证方式,我们发现“Wi-Fi保护访问下的预共享密钥”认证方式虽然也依赖于一个共享的密钥,但是无论是“个人版”还是“企业版”,所用的“共享密钥”都是预先定义的,并且保存在认证服务器上的,并且“个人版”的“共享密钥”是全网只有一个,“企业版”的“共享密钥”是每一个认证服务器一个;而在“长期演进技术”无线通信网络中就不一样,这里的“共享密钥K”对于每一个终端用户就有一个,并且在连到网上时都是唯一的。
认证交换过程是在终端用户和“长期演进技术”网络基础设施之间进行的。交换的数据至少有:“通用用户识别模块”,“用户设备”,“移动管理实体”和“家庭用户服务器”四个数据。一个简化的“长期演进技术”认证交换过程如图12-19所示。
图12-19 4G“长期演进技术”网络的认证交换过程
1)“通用用户识别模块”与“用户设备”之间共享了“国际移动用户标识符”值。请注意,“通用用户识别模块”从未向“用户设备”透露过“共享密钥K”的值,也没有通过任何网络接口传输过该值。
2)“用户设备”会转发“国际移动用户标识符”值给“移动管理实体”。
3)“移动管理实体”再将“国际移动用户标识符”值转发给“家庭用户服务器”。有了“国际移动用户标识符”值,“家庭用户服务器”就可以识别出其中的“共享密钥K”。注意这个密钥值从不会与“移动管理实体”进行共享的。有了“共享密钥K”,“家庭用户服务器”就会选择一个随机数,假设这个随机数用RAND表示,然后就可以派生出一个“访问安全管理实体密钥”(Access Secure Management Entity Key,KASME)、一个“认证值”(Authentication Value,AUTN)、一个“预期响应值”XRES(Expected Response Value,XRES)。
4)“家庭用户服务器”会与“移动管理实体”共享“访问安全管理实体密钥”、“认证值”、“预期响应值”,以及随机数RAND。至此,“家庭用户服务器”就基本完成了认证交换过程,剩下的就是“移动管理实体”再进行身份的验证工作。
5)“移动管理实体”保留“访问安全管理实体密钥”和“预期响应”作为本地的密钥,然后和“用户设备”共享“认证值”和随机数RAND。
6)“用户设备”与“通用用户识别模块”共享“认证值”和随机数RAND。
7)“通用用户识别模块”,就像“家庭用户服务器”一样,是知道“共享密钥K”的,所以它会计算自己的“认证值”,并将自己计算的值与从“家庭用户服务器”接收到的原始“认证值”进行一下对比,如果两个“认证值”是相互匹配的,那么“通用用户识别模块”就会认为“家庭用户服务器”也有一个相同的“共享密钥K”,下一步,“通用用户识别模块”会计算它自己的“响应值”(Response Value,RES)以及一个“中间密钥值”(intermediate key value),这个“中间密钥值”最终会用于派生出“访问安全管理实体密钥”,但不会发送给“用户设备”,不过“访问安全管理实体密钥”倒是会发送给“用户设备”的。
8)“用户设备”保存“访问安全管理实体密钥”,为以后使用作准备,然后转发其中的“响应值”到“移动管理实体”上。
9)“移动管理实体”会用收到的“响应值”,与之前从“家庭用户服务器”接收到的“预期响应值”进行比较。通过这两个值的比较,“移动管理实体”就知道“通用用户识别模块”有一个正确的“共享密钥K”。这时,“用户设备”和“移动管理实体”这两个实体之间,也就完成了相互的认证过程。
10)在认证之后的正常数据交换过程中,“用户设备”和“移动管理实体”通过使用“访问安全管理实体密钥”值就可以对数据进行加密和解密,二者之间通过无线介质进行传输的通信数据包。
图12-19中有一个最坏的情况,那就是“国际移动用户标识符”在发送的时候,是以明文方式通过“长期演进技术”的无线网络接口发送的。这种情况的发生,一般是在“用户设备”和“移动管理实体”之间进行初始连接的交换过程中最容易发生的。但随后的连接就不再使用“国际移动用户标识符”,而是使用“全球唯一临时身份标识”(Globally Unique Temporary Identity,GUTI)来代替。在认证交换的过程中,“全球唯一临时身份标识”并不会发生动态的改变,而只是在“移动管理实体”向“家庭用户服务器”发送“国际移动用户标识符”之前,多加了一次“国际移动用户标识符”对“全球唯一临时身份标识”的查找过程而已。查找的目的自然不言而喻,是为了在以后的通信中,由后者取代前者。
尽管使用“全球唯一临时身份标识”的目的是为了身份认证,但是在“长期演进技术”无线通信网络中,仍然存在针对“‘国际移动用户标识符’捕获器”攻击(IMSI catcher attack)的漏洞存在。那就是当“用户设备”在第一次连接到“移动管理实体”所在的网络时,必然会暴露“国际移动用户标识符”至少一次,而一旦“国际移动用户标识符”被黑客捕获到,那么黑客同样也可以由该值派出生“全球唯一临时身份标识”。我们再来想想,为什么网络的认证要发生在“国际移动用户标识符”出现之后呢?这是因为“国际移动用户标识符”需要确定“共享密钥K”,而“共享密钥K”又是派生出“认证值”、“预期响应值”、“访问安全管理实体密钥”等值的不二人选。所以我们很容易就会想到,如果黑客只要在“用户设备”第一次连接“移动管理实体”的时候拿到“国际移动用户标识符”,那么用同样的方法,黑客也能推算出后面各个重要的值,那么随后的加密的通信数据自然会土崩瓦解。怎样拿到“用户设备”在第一次连接“移动管理实体”时的“国际移动用户标识符”呢?办法就是攻击者越俎代庖,建立一个“流氓”的“长期演进技术”无线通信网站,然后吸引终端设备过来进行连接,一旦这个方法奏效,该网站上的“移动管理实体”就会初始化一个连接,向对方的“用户设备”发送一个“身份请求消息” (identity request message),强制对方的“用户设备”乖乖地将“国际移动用户标识符”发送过来。
尽管存在“‘国际移动用户标识符’捕获器”攻击的隐私威胁,“长期演进技术”的认证交换仍然还是提供了一个强有力的,基于“密钥值分别持有”的相互认证机制。在基础设施方面,“长期演进技术”网络可以通过“共享密钥K”尽可能少地向“家庭用户服务器”暴露的方式限制黑客对“共享密钥K”攻击的可能性,也从整体上减少黑客的攻击面。同样,“通用用户识别模块”从不向“用户设备”公开“共享密钥K”,也防止了恶意程序窃取的“共享密钥K”值,直接限制了攻击者将该值克隆到另一个“通用用户识别模块”卡上,然后以冒充者的身份继续使用的能力。
接下来,我们来看看在“长期演进技术”网络中,用来提供数据保密的加密机制以及随后进行的认证交换。
就像现代很多加密系统一样,“长期演进技术”网络也支持加密算法的灵活性。而早期的“第三代移动通信合作伙伴计划”规范网络系统仅限于极少数的加密算法,并且如果没有网络基础设备和“用户设备”设备的重大变化,这些加密算法是轻易不会更换的。而在“长期演进技术”网络中,这一现象得到了较大的改观。在“长期演进技术”网络中,只要协议认为有必要,那就可以随时加入一个新的加密算法。假如明天有人发现在“高级加密标准”算法中存在毁灭性缺陷,那么“长期演进技术”网络就能通过加入一个新的算法选项,或者是切换到一个已经支持的不同的算法上,系统中的设备就可以很快适应新的算法,从而减轻由该缺陷所带来的威胁。
在无线网络服务提供商提供的运营网络上,为其提供的服务是非常复杂的。在某些情况下,实际需要提供的服务比“长期演进技术”网络对安全所渴望的服务还多。这包括了对“空算法”(Null Algorithm)的使用。
“长期演进技术”网络的“紧急呼叫系统”(emergency calling system),在美国,该系统的号码是911电话,必须支持发自任何终端设备的主动连接,甚至包括那些没有“通用用户识别模块”卡的终端设备的主动呼叫。在这种情况下,虽然提供紧急服务的需求超过了对安全的需求,虽然“共享密钥K”就保存在“通用用户识别模块”卡里,但是我们还缺乏用于派生密钥的必要信息,要知道,这个派生密钥是用来加密和解密来往的通信数据包的。为了满足这种特殊需求,“长期演进技术”网络的解决是支持“空算法”。该算法并不提供网络通信数据包的保密性。这种认证机制或加密算法的缺失,使得攻击者获得了入侵系统的机会,只要通过冒充合法运营商的网络,那么不需要密码,黑客就可以发动一个攻击过程,从而简化攻击的难度。
除了上面提到的“空算法”,“长期演进技术”网络还支持128位的“演进的分组系统加密算法第1版”(Evolved Packet System Encryption Algorithms 1,EEA1)算法,该算法的别名是“SNOW 3G”算法,以及128位的“演进的分组系统加密算法第2版”(EEA2),该算法的别名为“AES-CTR-128”算法。其中“SNOW 3G”算法是从3G网络中提出的,这个算法其实在3G网络中已经使用了很多年,但当时它只是作为一个无线网络服务提供商提供的运营网络上一个可选的算法,如今改头换面,变成了现在的“SNOW 3G”算法。采用“SNOW 3G”算法有助于稳定“长期演进技术”网络的安全控制,能起到该效果的原因是这个算法重新使用了一个已被大众很好地理解的算法,并且该算法已经成功地部署了多年。
然而,在第一次使用时,“长期演进技术”网络的运营商也在“计数模式”(Counter mode,CTR mode)下使用了一个128位密钥长度的“高级加密标准”加密算法。在“计数模式”中,“高级加密标准”加密算法可以采用并行硬件进行加速,并且算法本身的安全性已经在其他知名的部署方案(如IEEE 802.11的“Wi-Fi保护访问版本2”安全)得到证明。“高级加密标准”提供了一条前进的道路,那就是用现成的算法(off-the-shelf algorithm)为“长期演进技术”网络提供安全,而不是为了提供安全而重新设计新的加密算法。这样做可以很大程度上减少协议设计的复杂度,并且由于采用的是成熟的算法,所以也可以加速被用户采纳的速度。
通过力度很强的相互认证算法,加上高强的保密性和完整性机制,使得“长期演进技术”网络得以提供强大的抵抗力,相比于其前身的3G网络,“长期演进技术”网络可以抵御许多应用于3G网络的攻击。即使是利用网络,通过“家庭基站”的硬件发动一次“3G的攻击向量”,从而操纵接收到的数据,最终该方式取得了显著的关注,有关这部分内容将在下一节中进行介绍。
按“长期演进技术”网络的说法,“家庭扩展基站”单元对“获得许可的射频服务”进行了扩展,当然,该服务也是在所安装家庭的许可条件下安装的,所以这种网络更多地被称为“家庭扩展基站”网络(Home eNodeB,HeNB)。“家庭扩展基站”网络提供了与其3G对手“家庭基站”网络相似的功能,是利用用户的“宽带互联网”连接到IPSec隧道上的数据服务,然后再连接到无线网络服务提供商提供的“安全网关”(Security Gateway,SeGW)上,如图12-20所示。
图12-20 家庭扩展基站网络示意图
“安全网关”设备同时担任了几个角色,包括安全协商、加密、网络数据包的解密。其中解密的数据有些是发往“家庭扩展基站”的,有些是来自于“家庭扩展基站”的。网络运营商使用IPSec协议,结合IKEv2加密算法,用于“家庭扩展基站”和“安全网关”之间的认证,二者相互之间的认证证书使用的是X.509数字证书。当一个“用户设备”连接到“家庭扩展基站”设备的时候,它的工作方式类似于一个“扩展的节点B”基站,考虑到之前“移动管理实体”和“家庭用户服务器”都分别曾对“服务网关”和“分组网关”进行过访问,所以都获得过二者的授权,尽管这样,通过对“通用用户识别模块”的使用,运营商还是提供了“用户设备”和“家庭扩展基站”设备相互间的认证。
在传统“长期演进技术”设备的部署中,“移动管理实体”并不负责使用“访问安全管理实体密钥”对数据包进行加密和解密。而“家庭扩展基站”设备则不同于上面的方式,相反,“家庭扩展基站”设备在接收到由“用户设备”发送过来的数据包时,会在将数据通过IPsec隧道连接转发到互联网之前,主动将数据解密。这就意味着,对于入侵者来说,在这里的“家庭扩展基站”设备处有一个攻击的入口点可以为来自网络的攻击者提供一些进攻的机会:
·一个捕获器,一个小的、轻量级的、便携式的“国际移动用户标识符”捕获器。
·一个入口点,一个无线网络服务提供商提供的运营网络上的一个入口点(entry point),通过该入口点就可以攻击目标设施。
·一个机会,一个诱骗“长期演进技术”网络被攻击移动设备通过该设备上网的机会,只要这个移动设备连接上网,那么随后通过侦听和操纵网络的活动,就可以完成其该网络设备上游或下游数据之间的传送。
认识到这些问题,并针对之前3G“家庭基站”网络的各种攻击,“第三代移动通信合作伙伴计划”规范网络对“家庭扩展基站”设备的要求提出了几点看法:
·物理安全的需求 (physical security requirement) “第三代移动通信合作伙伴计划”规范要求“通用用户识别模块”必须是物理安全的,以便缓解系统遭到“篡改攻击”(tampering attack)或“未经授权访问攻击”(unauthorized access attack)的威胁。尽管有这样的要求,但“第三代移动通信合作伙伴计划”规范并没有测试方案和合规判断细则。所以为了达到这一目标,只能允许制造商“既当运动员,又当裁判”,自己制定自己的判断标准,然后自己判定自己的安全控制是否符合无线网络服务提供商所应提供的安全需求的。
·仅限信任的根结点,以及可信运算的环境 (root of trust and trusted execution environment) “家庭扩展基站”设备必须使用一个信任的“根结点”(root),随后该权限会被用来验证“可信运行环境”(Trusted Execution Environment,TEE)。通过这种机制,所有代码必须通过签名的方式得到验证,只有基于信任的“根结点”才能运行,通过这种方式可以阻止“恶意代码攻击”。具体来说,“可信运行环境”必须延伸到启动过程,涵盖所有的操作系统以及在“家庭扩展基站”上运行的其他可执行文件的管理。
·内部数据的分割 (segmentation of internal data) “家庭扩展基站”必须将操作系统和“长期演进技术”数据包之间的数据分割,以便减轻“网络窃听攻击”对“家庭扩展基站”网络的影响。
·设备和数据整合检查 (device and data integrity check) 家庭基站必须提供设备和数据完整性检查功能,以便识别“篡改攻击”,避免威胁到“家庭扩展基站”、用户数据、无线通信网络运营商网络的安全。
·地理位置信息 (geolocation) 确保“家庭扩展基站”网络在某些频率不允许发送的区域内,不发即使是在其他区域内许可的频率。“家庭扩展基站”使用“全球导航卫星系统”(Global Navigation Satellite System,GNSS),通常会通过使用GPS接收器进行定位。
·时钟同步 (time synchronization) “家庭扩展基站”设备必须保持一个精确的时钟系统,以确保可以通过IPSec验证证书期限的有效性。
同时符合上述要求的产品尚未公开审查,所以上述规则将大大提高“家庭扩展基站”设备的安全,减少一些较早对3G网上“家庭基站”设备平台的攻击,也还是完全有可能的。然而,对于“第三代移动通信合作伙伴计划”规范网络设备和第四代的“家庭扩展基站”设备,缺乏对认证和符合性的测试方法和判断细则,这可能导致设备的加工制造商为了降低设备生产成本,而“缺斤少两”走“捷径”,从而做出带有隐患,但他却能自圆其说,最终仍然存在漏洞的产品。最后,对一个“家庭扩展基站”设备,在未经授权情况下进行访问,最终会给攻击者提供机会,使攻击者可以像侦听类似3G网络的设备一样,偷听到4G“长期演进技术”网络的数据传输,最终仍然可以造成入侵攻击。
[1] 大概的意思是:要进行数据交换,双方就必须具有同样多,且对等的协议,如果把每个协议的各层竖放比喻成一个协议塔的话,那么对等的通信双方,二者协议塔不仅要等高,每一层之间还具有一一对应关系。——译者注