抱紧你的SIM卡—5G物理安全初探

抱紧你的SIM卡—5G物理安全初探

你是否曾经丢失过手机,当丢失手机后,并不需要办理新的手机号,而只需去营业厅补办手机卡(SIM卡)即可拥有丢失前的手机号。SIM卡作为用户的入网凭证,内部保存的一些秘密信息(认证信息)可使用户发起入网请求时被基站认证通过,从而在蜂窝网络中获得合法身份并进行后续的通信或数据传输。SIM卡丢失后,补办SIM卡是一件非常简单的事情,营业厅只需将这对应的认证信息重新写入新的卡中,用户即可得到一张与之前完全相同的SIM卡。然而,如果有恶意攻击者未经授权,通过一些方法获得了受害用户SIM卡中的认证信息,就可以用同样的方法复制出新的SIM卡。该复制SIM卡可通过基站认证,拥有和受害用户相同的手机号,这种情况你会担心吗?

现实中确实存在上述的攻击场景,早在2G时代,各种铺天盖地的“复制他人手机卡”小广告随处可见。这其中的根本原因是2G时代早期的SIM卡甚至没有做最基本的防护,只要一个读卡器和几条命令就可以在几分钟内找出SIM卡中的秘密信息并完成复制,有人甚至还把攻击方法做成工具在网上廉价售卖。后来,尽管2G SIM卡芯片生产厂商很快提出并实现了针对这一严重漏洞的防护技术,但由于2G网络中的认证协议采用了强度很弱的密码算法,仍可通过特定的密码分析方法得出秘密信息。此外,2G网络中的认证协议为单向认证,即基站可识别手机(SIM卡)的合法性,但手机无法验证基站的身份,导致了伪基站泛滥问题。

到了3G/4G时代,人们吸取了教训,在协议中使用了国际公认的高强度密码算法AES。从密码学角度来看,很难通过传统的密码分析方法破解AES算法从而得到SIM卡中的秘密信息,使得复制他人手机卡的可能性大大降低,提升了SIM卡的安全性。此外,3G/4G网络采用了双向认证协议,使手机有能力验证基站的合法性,从而抑制了伪基站的产生。

然而,重新设计的标准并没有对SIM卡内部密码算法的实现做出硬性要求,使得SIM卡生产厂商在实现密码算法时出现了新的安全问题。2015年,上海交通大学LoCCS实验室密码工程小组在欧洲安全领域主流国际会议ESORICS上发表了一篇文章, 给出了如何使用侧信道分析(Side-Channel Analysis)技术在15分钟内复制一张3G/4G SIM卡的研究工作,这一工作也在全球黑客大会Black Hat上做了介绍,一时间引起了轰动。其实侧信道分析早就被用于破解2G SIM卡,只不过由于2G SIM卡存在其他更严重的安全问题,使得该漏洞没有受到足够的重视。

上述的2G/3G/4G网络是指由3GPP组织维护的基于时分多址(TDMA)技术的蜂窝网络(GSM/UMTS/LTE),除TDMA外,码分多址(CMDA)技术是另一类主流的蜂窝网络技术,该类标准由3GPP2组织维护。

随后,LoCCS实验室密码工程小组继续研究了使用CDMA技术的2G/3G/4G网络(cdmaOne/CDMA2000),发现了其认证协议使用的算法同样可被侧信道分析技术破解。至此,主流2G/3G/4G网络中的认证协议都被发现存在安全隐患。

随着5G时代的来临,相同的问题再次摆在大家面前:新时代的SIM卡能否抵御侧信道攻击,彻底避免非法复制问题?从整体来看,由于核心网络端使用了新的网络安全架构,基站与核心网络之间也使用了更完善的交互协议,5G的安全性相比3G/4G是有明显提升的。不幸的是,从3GPP发布的当前版本的5G文档33.40133.501 来看,5G标准依然没有对SIM卡的实现安全性做出硬性要求,也就是说在在侧信道分析场景下,5G SIM卡是否足够安全仍然存疑。

为了解现实情况,对5G SIM卡的实际安全表现做进一步分析,我们收集了全球已经商业发行的5G SIM卡进行测试。通过分析实验,我们发现,即使到了5G时代,手机SIM卡依然可能被复制! 为了直观说明问题,我们选择了一款5G SIM卡,用一个视频为大家演示SIM卡被破解后的危害。实际上,本知乎账号就是在我们成功复制了该5G SIM卡后,使用非授权的SIM卡登陆成功的!

知乎视频www.zhihu.com图标

下面,我们将从安全分析角度讨论存在的问题。(对具体技术细节不感兴趣的同学可以直接跳过)

AKA 认证流程详解

在整个蜂窝网络的身份认证协议中,除了2G GSM及2G cdmaOne的单向认证协议外,其他网络使用的双向认证协议均基于AKA(Authentication & Key Agreement)认证协议框架。该框架包含三个对象:移动站(mobile station,MS 例如手机)、基站(base station,BS)、网络端(network station,NS)。以下我们将以3G UMTS中的认证协议为例对其做详细介绍。


Figure 3: 3G的AKA认证协议

基于AKA的双向认证大体分为两步:

第一步:MS对NS的认证( XMAC=MAC,且“新鲜值”SQN在正确范围,则成功)。

第二步:NS对MS的认证( XRES=RES,则成功)。

  • 此处的新鲜值SQN用来防御重放攻击

基于AKA架构的详细认证流程:

  1. MS对NS发送认证请求,NS利用根密钥A-key(与MS共享)和其他已知信息(如AMF),并使用密码算法f进行计算,得到 MACXRES、SQN\oplusAK、CK、IK。 其中SQN\oplusAK、AMF和MAC共同组成了发给MS的AUTH
  2. 同时将随机数RAND和AUTN发送给MS,MS利用接收的RAND、AUTN,和共享的A-key,并用相同的密码算法f进行计算,得到 XMAC 和 SQN
  3. MS比较计算得出的XMAC和NS发来的MAC是否一致,如果一致且且SQN在一个正确范围内则信任基站,继续生成RES和会话密钥(CK,IK)
  4. MS将计算出RES并发送回NS,NS比较XRES和RES是否一致,如一致则双向认证成功。

从认证流程我们可以知道,密码算法用到了根密钥A-key。为了获取A-key,我们需要进一步挖掘算法。从Figure 3可以看出,AKA用到了很多加密函数——f1,f2,f3,f4,f5,f11。 这些函数实际上可以由组网的运营商在保证安全性的前提下随意选择,不过3GPP给出了两种参考算法 MILENAGETUAK, 其中MILENAGE使用了 AES算法。

在众多加密函数中,我们需要特别关注f5函数。这是因为在f5函数中,身份认证最关键的秘密信息A-key直接参与了运算。我们下文中的分析对象就是f5函数。在此次实际分析的产品中,该函数是AES。

更多其他认证协议总结如下表:

\begin{array}[b] {|c|c|c|c|}  \hline 通信技术名称 & 认证协议  & 认证密码算法    & 侧信道攻击  \\  \hline 2G-GSM      &  单向认证 & A3A8 (COMP128) & FC 2013  \\  \hline 2G-cdmaOne  &  单向认证 & CAVE           & JCST 2019  \\  \hline 3G-UMTS     &  AKA     & AES、Keccak     & ESORICS 2015  \\  \hline 3G-CDMA2000 &  AKA     & SHA-1          & JCST 2019  \\    \hline 4G-LTE      &  AKA     & AES、Keccak     & ESORICS 2015  \\  \hline 5G          &  EAP-AKA' / 5G-AKA  & 暂未给出示例   & G  \\  \hline \end{array}

Ref.

  1. FC 2013: On the Need of Physical Security for Small Embedded Devices: A Case Study with COMP128-1 Implementations in SIM Cards
  2. ESORICS 2015: Small Tweaks Do Not Help: Differential Power Analysis of MILENAGE Implementations in 3G/4G USIM Cards
  3. JCST 2019: Side-Channel Analysis for the Authentication Protocols of CDMA Cellular Networks

SIM卡的侧信道信息泄露

SIM卡的本质就是一个嵌入式的CPU,当手机和基站进行认证时,SIM卡上会运行认证算法。在算法运行时会产生功耗(侧信道信息),这些功耗信息与SIM卡中的秘密信息相关,可通过特定的侧信道分析方法进行恢复。简单来说,侧信道分析基于这样一个事实: 硬件设备(CPU或ASIC)中的总线或寄存器等器件随着其中数字信号电平的不同会产生不同的功耗,这种功耗上的差异大到足够反映出内部数字信号的不同。以一个字节为例,0x01的功耗通常要大于0x00(0x00->0x01的功耗大于0x00->0x00),因为为了维持(或者翻转)1bit的信号需要消耗更多的能量。因此,如果SIM卡执行加密时的数据不同,那么产生的功耗也会有差异,我们可以通过特定的设备采集到这种功耗信息,通过对这些差异进行分析,就能恢复出SIM卡用到的敏感信息。如果SIM卡不加以防护,存储在其中的敏感信息会不可地被功耗信息泄露。

SIM卡分析流程

  1. 采集SIM卡运行认证算法时的功耗曲线
  2. 对曲线进行处理和分析,得到敏感信息
  3. 通过这些敏感信息复制出另一张完全相同的卡

为了方便侧信道信息的采集、处理和分析,我们自主研发了软硬件集成的侧信道分析平台用于学术研究和产品检测,同时我们对SIM卡的侧信道分析进行了定制开发,可流程化地完成分析。

采集功耗曲线

通过软件,我们可以与SIM卡通信并采集其运行时的功耗信息。

下图是我们采集到的SIM卡认证过程的功耗曲线。

对曲线进行处理及分析

采集得到的原始曲线是非常杂乱的,包含过多噪声,需要进行信号处理。

下图是经过处理后的功耗曲线,可以清晰的看到AES算法轮廓。

之后选择功耗曲线中可能泄露了敏感信息的地方,使用相关性功耗分析 (Correlation Power Analysis, CPA)方法进行分析,具体原理我们之后会专门撰文介绍。

下图展示了软件中SIM卡分析模块

通过分析模块的输出,可以看到,我们已经得到了敏感信息。

复制写卡、入网

最后将分析所得的所有秘密参数写入一张新的SIM卡,复制工作就全部完成了。随后就是大家前面看到的“验证”过程了。如果破解成功,新的SIM卡就可以成功接入5G蜂窝网络。

看到这里大家是不是有一丝慌张?是不是担心自己的卡也会被复制?实际上,这种担心并非多余,完成上述这一系列操作甚至不会引起你的警觉,只需要手机脱离你的直接控制5分钟左右,恶意攻击者就可能使用便携式的功耗采集设备收集到足够破解SIM卡的曲线信息。一旦SIM卡被破解,恶意攻击者可使用复制的SIM卡冒充你的合法身份,例如通过一个简单的验证短信就可以获得你近期的QQ聊天记录,盗取你的知乎账号等,造成严重的个人信息泄露和个人征信风险。

随着各种应用对信息安全的逐渐重视,现在一些敏感操作(如重置密码)需要双重验证或检测手机硬件环境。但在几年前这种安全威胁未被充分重视的时候,使用复制的手机SIM卡甚至可以重置支付宝的登陆密码。以下视频是我们15年对3G/4G SIM卡分析成功后拍摄的,在视频中我们使用复制的SIM卡在其他手机上接收了密码重置短信,并成功重置了密码。

知乎视频www.zhihu.com图标

此外,我们在对当下各种应用的身份认证流程的调研中发现,一些应用虽然在密码重置时会进行严格的手机环境检查,但是却依然可以使用手机号和验证码在其他手机上正常登录,如微信、QQ、淘宝、支付宝等。因此,手机SIM卡可被复制依然是需要引起足够重视的安全漏洞。

需要特别指出的是:学术界已经有多种可靠的方法,如掩码、乱序执行和随机延迟等,来防御传统侧信道分析。但是由于实现这些防护方法会增加制造成本,一定程度上降低芯片性能,且3GPP标准未做强制要求,这些防护方法是否被实际使用很大程度上只取决于SIM卡的制造厂商。我们建议卡商应该在权衡成本后及时对SIM卡加强防护措施(我们也在研究相应的低代价防护方案),进一步保护用户安全。此外,我们每个人对智能设备日常使用中的安全意识同样必不可少,在任何情况下都不应该让设备脱离自己的直接控制。

介绍实验室

我们是隶属于上海交通大学密码与计算机安全实验室(LoCCS)的密码工程小组(GoCE),我们的主要研究方向是侧信道攻防理论与技术、密码应用与实现技术及密码安全测试技术等。具体分析对象包括智能终端,嵌入式设备,MCU,FPGA、密码芯片、密码设备等。

欢迎各位老师同学和业界人士联系我们进行学术交流。

联系方式:

许森博士 : sen.xu@viewsources.com

张驰博士 : zcsjtu@sjtu.edu.cn

陆相君博士 : luxiangjun@sjtu.edu.cn

发布于 06-20

文章被以下专栏收录