使用RAND劫持对GSM进行相互认证的改造
1 引言
本文提出了一种向全球移动通信系统(GSM)移动电话系统添加网络到手机的认证的方法,该方法对现有网络基础设施完全透明。目前,GSM仅支持手机到网络的认证,导致系统面临多种安全威胁(例如,参见[21])。尽管已引入并部署了第三代移动通信系统(通用移动通信系统)和第四代移动通信系统(长期演进技术)等移动电话系统,通过提供手机与网络之间的双向认证解决了GSM的安全缺陷,但GSM在全球范围内仍具有巨大的实际重要性,且在今后几十年内不太可能被取代。因此,研究如何在无需更改已部署的手机和接入网络的前提下提升GSM所提供的安全性,显然具有重要的实际意义。这一观察结果推动了本文所描述的研究工作。
2 全球移动通信系统
2.1 术语
我们首先简要介绍移动系统中的关键术语。我们特别关注全球移动通信系统网络,但大部分描述经过稍作修改后也适用于第三代移动通信技术和第四代移动通信技术网络。有关全球移动通信系统安全性的更详细描述,例如可参见Pagliusi [22]。
一部完整的手机被称为用户设备(UE),该术语不仅包含移动设备(ME)(即手机本身),还包含其中的用户身份模块(SIM),其中SIM以微型智能卡的形式存在。SIM体现了人类用户与发卡归属网络之间的关系,包括该用户设备的国际移动用户识别码(IMSI)、电话号码以及其他用户(订阅者)数据,同时还包含一个与发卡网络共享的密钥,该密钥构成了所有空中接口安全特性的基础。
用户设备(UE)通过其无线接口连接到基站以接入移动网络。多个基站由单个无线网络控制器(RNC)控制,该控制器连接到一个移动交换中心/访问位置寄存器(MSC/VLR)。MSC/VLR负责控制呼叫的建立和路由。每个MSC/VLR还连接到运营商网络的归属位置寄存器(HLR),其中可找到相应的用户信息。HLR与一个鉴权中心(AuC)相关联,该鉴权中心存储了与SIM通信所需加密凭证;具体而言,鉴权中心(AuC)与该网络发行的每个SIM共享一个唯一的密钥Ki。RNC和MSC/VLR属于拜访/服务网络,而HLR和鉴权中心(AuC)则属于归属网络的组成部分。
2.2 GSM认证协议
为了防止未经授权的移动设备接入网络服务,全球移动通信系统采用了一种认证程序,使网络能够验证用户设备中的SIM是否为 genuine。该认证程序的操作如下。更多详细信息可参见技术规范GSM 03.20[10]和GSM 04.08[12]。
- 用户设备(UE)访问一个网络,并使用其国际移动用户识别码(IMSI)进行初始识别。
- 拜访网络根据提供的IMSI识别出该用户设备的归属网络,并向归属网络请求鉴权信息。
- 归属网络的鉴权中心(AuC)生成一个或多个认证三元组(RAND、XRES、Kc),并将它们发送至拜访网络,其中RAND是一个128位随机“挑战值”,XRES是64位“预期响应”,而Kc是一个64位的短期会话密钥,用于加密用户设备与网络之间空中接口传输的数据。
- 拜访网络将RAND作为鉴权挑战发送给用户设备。
- 移动设备(ME)接收到RAND后,将其传递给SIM卡。
- SIM卡计算SRES= A3Ki(RAND) 和 Kc= A8Ki(RAND),其中A3和A8是网络特定的加密函数;A3为MAC函数,A8为密钥派生函数。请注意,这与步骤3中鉴权中心(AuC)为生成XRES和Kc所执行的计算完全相同。
- SIM卡将SRES和Kc传递给移动设备(ME)。
- 移动设备(ME)保留会话密钥Kc用于数据加密,并将SRES转发至服务网络。
- 服务网络比较SRES与XRES;若两者相同,则认为用户设备通过鉴权,随后Kc可被用于通信加密,加密算法采用服务网络选定的标准算法之一(即A5/1、A5/2或A5/3)。
2.3 漏洞
GSMAKA协议显然仅提供单向认证。正如广泛记载的那样(例如,参见[21]),这使得“虚假”基站可以冒充合法网络并与用户设备(UE)进行交互。这进而引发了一系列安全弱点。我们尤其关注以下类型的攻击。
– 由于网络始终决定是否启用加密,恶意方可能在用户设备和真实网络之间充当中间人,向用户设备冒充网络,并使用其自身的合法SIM与网络通信。通过中间人传输的所有流量都只是被转发。虚假网络不会在与用户设备的链路上启用加密,因此即使它不知道加密密钥也无关紧要。如果真实网络选择启用加密,则中间人可以与其成功通信,因为它使用的是自己的SIM用于此通信链路。因此,中间人可以无缝监听发送到受害用户设备及从其发出的所有语音流量,代价是需要支付通话费用。
– 网络决定是否启用数据加密这一事实,也导致了众所周知的巴尔坎‐比哈姆‐凯勒攻击得以实施,[2]。该攻击旨在恢复加密密钥Kc,从而实现对电话通话的无限次窃听。该攻击利用了三个关键事实:A5/2加密算法非常薄弱、网络决定使用哪种算法,以及所有三种加密算法都使用相同的密钥Kc。该攻击的一种可能场景如下。
假设一个窃听者截获了网络与用户设备(UE)之间的认证密钥协商交换过程(特别是其中包含的RAND),以及此后涉及该用户设备的部分加密语音通信。再假设该用户设备随后在攻击者所控制的伪基站覆盖范围内开机。该伪基站向用户设备发起认证与密钥协商协议,并发送先前截获的RAND,导致用户设备中的SIM生成与之前加密被截获数据时相同的Kc。用户设备返回SRES(伪基站忽略此值),随后伪基站启用A5/2加密算法。此时用户设备将使用A5/2加密算法及密钥Kc向网络发送数据;由于GSM协议的某些具体细节,明文数据中将包含可预测的冗余信息。伪基站现在利用A5/2加密算法的弱点,结合密文和对应明文中已知的冗余信息,恢复出Kc。该密钥Kc现在可用于解密所有先前截获的数据,而这些数据可能曾使用A5/3等强加密算法进行加密。
缺乏双向认证的问题已在第三代移动通信技术及后续网络中得到解决。因此,人们可能会认为修复全球移动通信系统已不再具有现实意义。然而,全球移动通信系统至今仍在世界范围内被广泛使用,并将在未来多年内继续如此;因此,寻找部署后升级全球移动通信系统的方法显得十分有价值。但是,任何此类解决方案都必须能够与现有基础设施(即现有的服务网络系统)协同工作。
因此,我们关注的是一种仅需升级SIM和归属网络的解决方案。这种方案可以分阶段实施,且不会对现有的全球基础设施造成影响,这也是本文其余部分的重点所在。
2.4 主动式SIM
在继续之前,我们需要简要回顾一下全球移动通信系统中的一项关键技术,该技术使SIM能够向移动设备发送指令。主动式SIM 是一项在SIM‐移动设备接口上运行的服务,提供了一种机制,使SIM可以主动发起由移动设备执行的操作。
它是SIM应用工具包(STK) 的一部分,该工具包在GSM 11.14技术规范[11]中引入。移动设备与SIM之间的通信是基于命令/响应的。
STK提供了一组命令,允许SIM与任何支持这些命令的移动设备进行交互和操作。GSM技术规范 [13]规定,移动设备必须使用T = 0或T = 1协议与SIM进行通信,这些协议在ISO/IEC 7816‐3[16]中定义。在这两种情况下,移动设备始终是主设备,因此由其发起对SIM的命令;结果导致SIM无法主动发起与移动设备的通信。这限制了引入需要移动设备支持的新SIM功能的可能性,因为移动设备必须提前知道应采取的操作。主动式SIM服务提供了一种机制,允许SIM在响应移动设备发出的命令时,向移动设备表明其有信息需要发送。SIM通过在响应的应用协议数据单元中包含一个特殊的状态字节(‘91’后跟要发送指令的长度)来实现这一点。随后,移动设备必须发出FETCH命令以获取该信息 [14]。移动设备现在必须执行由SIM发起的命令,并通过TERMINAL RESPONSE 命令返回结果。为了避免跨阶段兼容性问题,此服务仅允许在支持STK命令的SIM和移动设备之间使用。移动设备是否支持特定STK命令的信息会在其SIM初始化期间发送TERMINAL PROFILE命令时显露。
SIM可以使用主动式SIM服务发出多种请求。例如:请求移动设备显示SIM提供的文本、发起按需信道的建立,以及从移动设备向SIM提供本地信息。
此处关注的命令是GET CHANNEL STATUS,该命令请求移动设备返回所有可用数据信道的当前状态;以及CLOSE CHANNEL,该命令请求移动设备关闭指定的数据信道。这两个STK命令均被标记为“e类”,这意味着支持“e类”STK命令的移动设备能够执行这两个相关命令[9]。尽管移动设备对STK的支持是可选的,但如果移动设备声明符合某个特定的全球移动通信系统版本,则必须支持该版本的所有功能。自1998年以来,几乎所有生产的手机都启用了STK,如今市场上每部手机都支持STK[1]。
3 RAND劫持
我们使用术语 RAND劫持 来指代这样一种想法:利用在网络向用户设备发起AKA过程中从网络发送给UE的RAND,作为鉴权中心向SIM传递信息的一种方式。也就是说,RAND并非随机生成,而是被构造以包含特定信息;这些信息通常以加密形式发送,因此对于窃听者而言,它与随机值无法区分。
这一想法最初似乎是在杜普雷的一项专利中提出的。然而,杜普雷对该想法的应用与本文所提出的方案有很大不同。后来,沃达丰在3GPP技术规范组引入了特殊RAND [23]的概念。
文档S3‐030463。至于Dupré,该特殊RAND的目的与本文提出的完全不同。其他关于此概念的公开文献出现在一些论文中[4,5,18],这些论文独立提出了使用RAND劫持来改善GSM、第三代移动通信技术和第四代移动通信技术网络的隐私特性。据作者所知,此前尚无作者提出将此技术用于明确实现GSM网络中的双向认证。
4 服务器到SIM的身份认证
我们现在提出一种利用RAND劫持实现网络对SIM鉴权的方法。为此,SIM必须被编程以支持该方案,并具备某些(适度的)额外数据,具体如下所述。发行“特殊”SIM的网络中的<鉴权中心>也必须为每个此类SIM存储某些额外的数据项,并且必须以特殊方式为这些SIM生成其RAND值。现有系统无需其他更改。需要注意的是,该系统可以逐步部署,例如,在所有新发行的SIM中包含附加功能,而现有的SIM继续按当前方式运行。
4.1 前提条件
除了共享Ki、A3算法和A8密钥派生函数(执行标准GSM认证与密钥协商协议所需)外,SIM和鉴权中心还必须配备以下信息和功能:
– 函数 f1 和 f5,其中 f1 是一个 MAC 函数,f5 是一个密码掩码生成函数,两者均能生成 64 位输出;
– 一个密钥 Ka,用于与函数 f1 和 f5 配合使用,该密钥应不同于 Ki——为最小化内存需求,Ka 和 Ki 可例如均从一个特定于 SIM 的主密钥派生;
– 一个 48位计数器,用于生成和验证序列号 1。
这些功能可以与其在第三代移动通信系统(通用移动通信系统)中使用的对应功能完全相同。实际上,函数名称和字符串长度已被有意设计成与3G系统中使用的相同,以使实现和迁移尽可能简单。
4.2 协议操作
该新型AKA协议与第2.2节所述的“标准”GSM认证与密钥协商协议仅在步骤3和步骤6上有所不同。因此,由于这些步骤仅涉及鉴权中心和SIM,显然该方案对服务网络和移动设备是固有透明的。我们将在下方描述这些步骤的修改方式。
4.3 修订后的步骤
步骤3 更改为以下的 步骤3* 。鉴权中心生成新的鉴权三元组时,操作如下(见图1,其中虚线框表示鉴权中心的常规操作)。
3.1 鉴权中心使用其计数器值生成一个48位的序列号 SQN,该值必须大于为此用户账户先前生成的任何值。
3.2 还会生成一个16位的值 AMF,该值可设置为全零,也可用于类似于 3G网络 中 AMF值的用途。
3.3 使用函数 f1 生成一个 64 位的标签值 MAC,其中
MAC= f1Ka(AMF||SQN),
并且,如全文所述, || 表示数据项的连接。
3.4 使用函数 f5 生成一个64位加密掩码 AK,其中
AK= f5Ka(MAC).
3.5 128位RAND的计算方式如下
RAND=((AMF||SQN)⊕ AK)||MAC,
其中, ⊕ 表示按位异或操作,全文中均如此。
3.6 XRES和Kc值以标准方式计算,即XRES=A3Ki (RAND) 和 Kc= A8Ki (RAND)。
步骤6 更改为 步骤6* ,如下所示(见图2,其中虚线框表示SIM的常规操作)。
6.1 在收到128位RAND值后,SIM首先将其拆分为两个64位字符串 X和MAC*,其中 X||MAC*= RAND。
6.2 使用函数 f5 生成一个 64 位解密掩码 AK*,其中
AK*= f5Ka(MAC*).
6.3 计算一个16位字符串AMF*和一个48位字符串SQN*,其计算方式如下:
AMF*||SQN*= X ⊕ AK*.
6.4 计算一个 64 位的标签XMAC:
XMAC= f1Ka(AMF*||SQN*).
6.5 将恢复的序列号SQN*与SIM卡存储的计数器值进行比较,并将XMAC与MAC*进行比较:
– 如果SQN*大于当前计数器值且XMAC= MAC*,则:
• 网络被视为成功通过身份验证;
• SIM的计数器值更新为等于SQN*;并且
• SRES和 Kc 按照当前步骤6中的规定进行计算;
– 如果上述任一检查失败,则:
• 网络认证被视为失败;
• SIM的计数器值保持不变;并且
• SRES和 Kc被设置为随机值。
显然,在步骤6*中,AK*、AMF*、MAC*和SQN*应分别等于鉴权中心在步骤3*中最初计算的AK、AMF、MAC和SQN值。
4.4 设计原理
上述方案中RAND值的构成已尽可能类似于第3代移动通信技术AKA协议中用于实现服务器到用户设备认证的128位值AUTN。这主要出于两个原因:首先,如上所述,采用这种方法旨在使网络运营商实施和迁移到这一新方案尽可能简单;其次,第3代移动通信技术AKA协议在提供认证方面被广泛信任,因此通过采用相同的方法,有望最大程度地提升对该新型方案的信任度。
第三代移动通信技术 AUTN与上述RAND构造之间的唯一区别相对较小,具体如下。
– 在第三代移动通信技术中,AK值是作为RAND的函数计算得出的,而在此处,它只能作为RAND的最后64位的函数进行计算。然而,这最后64位是根据每次鉴权三元组都会变化的数据计算得出的,因此AK仍然能够有效地隐藏其用于掩码的内容。
– 在第三代移动通信技术中,AK长度仅为48位,且仅用于加密(掩码)SQN。在此我们用它来掩码SQN和AMF,以确保对于任何无密钥的一方而言,一种“新样式”的RAND与一种“旧样式”的随机生成的RAND无法区分。
– 在第三代移动通信技术中,MAC是作为RAND、SQN和AMF的函数计算得出的,而在上述方案中,它仅作为SQN和AMF的函数进行计算,原因显而易见。从网络向用户设备进行认证的角度来看,这是唯一的显著差异,但我们将在第6.2节中论证,此变更不会影响协议的安全性。
这里提出的AUTN检查过程与第三代移动通信技术中使用的过程基本相同。
另一个值得注意的问题是,建议在认证失败时由SIM输出随机值。由于这是现有SIM‐移动设备协议的一部分,因此SIM必须输出某种类型的值,即需要占位符值。出于下文讨论的原因,SIM不应输出正确的会话密钥 Kc。其他“明显”的占位符值可能是使用固定字符串,但如果这些值在网络中传输(对于 SRES值的情况)或用于加密目的(对于Kc),使用随机值似乎更不容易被察觉。这样做的好处是,可以避免向普通的窃听者暴露认证已失败的事实。
5 使用认证结果
在上一节中,我们展示了 SIM 如何对网络进行认证;也就是说,由于步骤6*,SIM 将知道RAND 是否真正来自鉴权中心且是新鲜的。然而,我们并未描述移动设备无法得知认证是失败还是成功——实际上,移动设备不会理解这一概念,因为我们假设它是一个“标准”的全球移动通信系统设备。
5 使用认证结果(续)
我们建议使用第2.4节中描述的主动式SIM功能来实现预期目标。也就是说,在发生网络认证失败的情况下,当将SRES和Kc(此处为随机值)发回给移动设备时,SIM应向手机发出信号,表明其有信息需要发送。当移动设备因此向SIM发送FETCH命令时,SIM应回复获取信道状态命令,以了解当前连接中已建立的信道情况。在收到终端响应命令中的信道信息后,SIM在其响应中使用状态字节,请求移动设备发送进一步的FETCH命令。一旦收到FETCH命令,SIM便回复关闭信道命令,并指明其先前通过CHANNEL STATUS命令从移动设备接收到的信道信息。图3总结了SIM与移动设备之间的交互过程。SIM发出的STK命令应导致手机断开连接,并(理想情况下)阻止对SRES或密钥Kc的任何尝试性使用。图3中所示的数值90和91代表SIM在响应前一条命令时返回的状态字节的值,其中值90表示正常,值91指示移动设备发出FETCH命令以从SIM获取数据。“长度”字段与状态字节91一起出现,表示SIM希望发送的数据长度(以字节为单位)。
6 分析
6.1 部署问题
接下来,我们考虑在使用第4.3节提出的方案时可能遇到的某些实际问题。
似乎至少有一些GSM网络会批量下发认证三元组(参见GSM 03.20[10]的第3.3.1.1节),从而降低网络间通信开销。目前,GSM认证三元组的使用顺序无关紧要。然而,在上述方案中,必须按照SQN的升序使用三元组。这可能看似存在问题;但鉴于在第三代移动通信技术中已要求按正确顺序使用相应的五元组,服务网络几乎肯定已经具备了处理此问题的能力。
在现有的全球移动通信系统网络中,服务网络“重用”鉴权三元组(即多次向用户设备发送相同的 RAND 值)虽然是技术规范 [10] 所禁止的,但仍 是可能的。然而,在新方案中这将不再可行,因为 SIM 会检测到 RAND 值的 重用。这可以说是一件好事,因为重用 RAND 值存在严重的安全隐患:这种 行为将允许拦截者通过截获 RAND/SRES 对来冒充合法的用户设备,甚至可能 以该用户设备的代价窃取服务,这种攻击在未启用加密的服务网络中尤为有效。
最后请注意,为了完全实现第4节中描述的方案,移动设备(ME)需要支持 e类STK命令,尽管如上所述,支持这一功能的比例似乎可能非常高。目前尚不清楚现役手机中有多少比例支持这些STK命令。
6.2 安全性
我们将安全性讨论分为三个部分:机密性和隐私问题、网络对SIM的认证,以及SIM对网络的认证。
机密性与隐私问题。 在“标准”全球移动通信系统中,RAND值是随机选择的,因此不会向接收它的手机泄露任何身份信息。在第4.3节提出的新方案中,RAND是依赖于SIM特定密钥以及可能为SIM特定的SQN值的函数。然而,SQN是加密传输的,并且假设函数 f1和 f5设计良好,则拦截者将无法区分根据新方案计算出的RAND与随机值。因此,该方案不会引入对身份机密性的新威胁。
新方案未改变数据机密性密钥 Kc的生成方式,因此数据机密性的强度不受影响。
网络到SIM的认证。 用于网络到SIM的认证的新协议与第三代移动通信技术的相应协议具有很强的相似性。它还符合 ISO/IEC 9798-4 第5.1.1条中规定的单向一次性认证机制。该标准中的所有协议均已由 Basin 等人进行形式化分析(并证明是安全的)。尽管这些论证并未为该协议的安全性提供完全无懈可击的论据,但显然比完全不进行认证已有显著改进。
从新方案中得出的一个有趣的附带观察是,第三代移动通信技术和第四代移动通信技术的AKA协议似乎过于复杂。网络发送给SIM的用于认证SIM响应的随机生成RAND值实际上是不必要的,AUTN值完全可以像当前使用RAND一样发挥作用。尽管这种更改在实践中不可行,但它本可以避免鉴权中心生成随机值的需求,并节省AKA协议中传输16字节的需要。
有趣的是,可以推测这种设计冗余存在的原因。似乎网络到SIM的认证是作为一个完全独立的协议添加的,用以补充全球移动通信系统类型的SIM到网络认证机制,而没有人考虑过如何将这两种机制结合起来并加以简化(正如我们所提出的机制那样)。
SIM到网络认证。 该新方案不影响现有SIM到网络认证协议的运行方式,只是将随机的RAND替换为一个基于序列号的密码函数。这种新型RAND对于任何不具备密钥Ka的人来说仍然是不可预测的,并且能够确定性地保证不重复(而随机的RAND仅能以概率方式满足这一特性)。要理解为何该RAND不会重复,假设发送给同一USIM的两个不同的RAND值包含了相同的MAC值(如果它们要相同,则这是必要的)。由此可知,用于掩码嵌入在RAND值中的SQN的AK值也将相同;因此,由于SQN值本身不同,这两个RAND值也必然不同。也就是说,它具备现有协议所需的确切特性,因此SIM到网络认证的安全性不受影响。
6.3 对已知攻击的影响
我们通过分析该协议如何影响对GSM网络的可能攻击,来结束对协议的分析。
伪基站攻击。 如第2.3节所述,如果一部手机连接到一个伪造的GSM服务网络,该伪基站可以作为AKA协议的一部分发送任意的RAND值,而用户设备将成功完成该过程。如果网络未启用加密,则用户设备与网络之间的通信将正常进行,这可能使该网络能够通过从被劫持的用户设备经由真实网络转发呼叫,充当窃听的中间人。但如果实施了新方案,这种情况将不再成立,因为当SIM接收到非真实的RAND值时,会指示移动设备断开连接。
当然,伪基站有可能完全避开AKA协议,直接与新接入的用户设备启动通信。目前作者尚不清楚移动设备(ME)是否会接受未经认证的通信。
巴尔坎‐比哈姆‐凯勒攻击。 接下来我们考虑一种特定类型的伪基站攻击,即第2.3节中概述的巴尔坎‐比哈姆‐凯勒攻击。该新方案显然能够防止此类攻击,也就是说,至少在大多数实际场景中,巴尔坎‐比哈姆‐凯勒攻击将被阻止。
7 与现有技术的关系
这绝不是首次提出增强GSM以实现双向认证的实用方案。事实上,本文广泛讨论的3G AKA协议就可以被视为正是实现了这一点。尽管若干3GPP TSG文档 [7,8]曾提议将网络认证引入GSM网络,但这些提案均未被采纳,可能是因为成本或可行性问题。爱立信提案[8]建议通过在软件中完全实现UMTS AKA协议的核心,将认证责任转移至终端,但这又引发了其他安全威胁。此外还有其他提案,例如库马尔等人提出的[19]。然而,所有先前的提案都完全不切实际,因为它们都需要替换全部GSM基础设施。对于一个已广泛部署的现有系统而言,如此重大的改变根本不可能发生。
与本文提出的方案最相似的是其他一些使用RAND劫持的方案,这些方案总结在第3节中。特别是范登布罗克等人 [4]提出了被劫持GSM RAND的类似结构,在他们的情况下包括一个序列号、SIM的新临时身份以及一个MAC,全部以未指明的方式加密。然而,他们的目标并非向SIM提供网络认证,而是提供一种从鉴权中心可靠地向SIM传输新身份的方法。
8 结论
我们提出了一种增强GSM认证与密钥协商协议的方法,以实现网络对用户设备(UE)的认证,从而补充现有用户设备到网络的认证功能。该方法能够防范对全球移动通信系统网络安全性的部分最严重威胁。此方案在不改变现有服务网络基础设施的前提下实现,并且也不需要对现有的移动设备(手机)进行任何修改。也就是说,与以往同类提案不同,该方案具有实际可实现性。
一些实际问题仍有待解答,包括支持“e类”STK命令的移动设备(ME)比例、在从不执行AKA协议的网络中移动设备(ME)的行为,以及服务网络是否可被依赖以按预期顺序使用GSM认证三元组。这些问题的答案仍有待未来研究。

被折叠的 条评论
为什么被折叠?



