APP下载

GSM的安全性分析

2009-09-24

移动通信 2009年12期
关键词:认证加密

鲁 骏

【摘要】文章介绍GSM系统的安全体系,详细分析了系统中用户鉴权的过程及TMSI对该过程的影响,阐述了GSM的保密体制及其安全漏洞和可能受到的攻击。

【关键词】GSM 认证 TMSI 加密 攻击

GSM移动通信系统在2G系统中占主导地位,是3G系统的基础。GSM移动通信系统的安全机制包括:通过对用户的认证来防止未授权的接入,保证用户身份不被假冒;通过对空中接口传输加密以防止在无线信道上用户信息被窃听,保护用户的隐私;以独立于终端的硬件设备(SIM卡)作为安全模块,管理用户的各种信息,增强安全性;在空中接口上以临时身份标识代替用户永久身份,使第三方无法在无线信道上跟踪GSM用户。但是,GSM系统在安全设计上不够完善,随着技术的发展,其安全缺陷逐渐暴露出来,针对GSM系统的安全攻击越来越多。

1 GSM网络的安全体系结构

GSM系统是第一个具有安全特征的移动通信系统,其安全目标是使系统和PSTN网络一样安全。由于GSM系统和PSTN的主要不同点在于无线接口,其安全特征也主要集中在无线信道连接。为防止对网络的欺骗性接入并保证用户的隐私,GSM引入了以下安全功能:

通过个人化的SIM卡和PIN码实现对SIM卡的访问控制;

通过网络对用户的身份认证和会话密钥管理来防止非授权接入;

无线链路的加密,如移动台和基站间通信的加密;

在无线链路上隐藏用户的身份,如使用临时识别号(TMSI)来代替用户身份识别号(IMSI)。

由于GSM系统使用无线信道进行连接的特点,它所使用的加密和认证算法都是经过专门设计的。GSM系统的安全特征能够保护运营商的网络资源,通过认证阻止非授权用户使用网络资源,从而为合法用户使用网络资源提供保证,通过加密为用户数据和信令信息提供机密性保护。GSM系统的安全体系结构由三层组成,第一层是认证层,采用“挑战-响应”机制,用A3生成用户认证码;第二层是会话密钥生成层,用A8算法为A5加密算法提供会话密钥;第三层为加密层,用序列密码算法A5实现对用户数据和信令数据的加密。

在GSM系统中,涉及用户鉴权和加密的主要安全算法有A3、A5、A8:A3算法用于产生认证码SRES, A8算法用于产生会话密钥Kc,A5算法主要用于加密用户数据和信令数据。依据系统各个模块的功能,其保存的主要安全参数和算法也各不相同,GSM系统主要安全参数和算法分布如下:

SIM卡:IMSI、Ki、TMSI/LAI、PIN、PUK、K、Kc、A3、A8

ME:IMEI、A5

HLR/AUC:IMSI、K、RAND、SRES、Ki、A3、A8

MSC/VLR:TMSI/LAI、IMSI、K、认证向量(RAND、SRES、Ki)

BSC:A5

EIR:IMEI

2 GSM认证

在GSM系统中,用户身份认证的目的一方面在于防止网络的非授权访问,另一方面在于避免假冒攻击者接入到网络中。通常将GSM系统中的用户身份认证称为用户鉴权。

GSM02.09中定义了GSM PLMN的用户鉴权可以被以下几种情况激活:

VLR/HLR中用户相关的信息被修改;

用户请求网络服务;

在MSC/VLR重启动后的第一次访问网络。

2.1 GSM系统的用户接入身份认证

GSM系统的用户鉴权过程如图1所示(“挑战-响应”认证):

整个鉴权过程可以分为两步:

(1)用户识别

用户识别的目的在于找出发起鉴权请求的用户的身份,从而在鉴权过程中能够提取关于该用户的秘密参数,如Ki等。GSM系统采用多种方式对系统内部的用户进行识别。每个移动用户有3种识别号码,即国际移动设备号(IMEI)、国际移动用户号(IMSI)、临时移动用户号(TMSI)。其中IMSI和TMSI用于识别发起鉴权请求的用户身份。

当移动用户首次启用或进入一个新的位置区域时,当地的交换机会给予一个随机号码作为临时用户号(TMSI),并通过地面网络从该用户归属地区的HLR中取得其IMSI,把IMSI和TMSI一起保存在VLR中。TMSI只在此位置地区有效,移动用户如果离开该区域进入一个新的区域,会启动位置登记并获得一个新的TMSI。MS端会把TMSI存入SIM卡的EEPROM中,电源关闭后仍能保持TMSI。

在MS端发起一个鉴权请求时,首先将TMSI或IMSI发送给基站,基站据此在AUC保存的数据中找出该用户身份号对应的用户密钥Ki。

(2)用户鉴权

当网络端从AUC中获取到用户的Ki以后,利用随机数发生器产生一个128bits的随机数RAND并经由无线信道发送到MS端。同时,AUC根据RAND和Ki利用认证码生成算法A3产生认证码SRES,并和A8算法产生的Kc、RAND组成一个认证向量vector=(SRES,Kc,RAND),该认证向量通过有线信道送往基站保存。在MS端,SIM卡在接收到挑战RAND后提取内部存储的Ki和算法A3计算出应答信号SRES,随后将SRES通过无线信道发送给基站。基站在接收到SRES后与从AUC传来的认证向量中的SRES比较,如果二者一致,则判明用户合法,鉴权通过;否则鉴权失败,中止二者通信过程。鉴权通过的用户可以用A8算法计算出会话密钥Kc,并使用A5算法进行加密通信。

由于A3算法具有单向函数的功能,由Ki和RAND经A3计算出SRES很容易,而由SRES和RAND反向推导Ki却比较困难。

作为GSM系统的认证算法,算法的接口已经标准化,但算法本身没有标准化,运营商可以选择自己的认证算法。当移动台开机、位置更新和享受网络服务时,都要对用户进行认证。

从GSM系统的用户鉴权过程可以看出,网络认证的其实是SIM卡的身份,而并非用户本身,因此合法用户必须保证SIM卡不丢失。SIM卡则通过PIN和PUK来鉴别其持有者身份的合法性。

2.2 TMSI对鉴权过程的影响

由于MS需要将TMSI发送给网络端作为鉴权请求,因此TMSI会对鉴权过程造成一定的影响,GSM系统必须解决用户第一次接入网络、漫游等情况下的用户鉴权问题。GSM02.30中规定了各种情况下鉴权的过程:

(1)用户第一次使用移动台时

(a)MS读取存储在SIM卡中缺省的TMSI;

(b)MS发送缺省的TMSI到固定网络端的MSC/VLR;

(c)由于MSC/VLR不知道此TMSI,因此请求MS发送IMSI;

(d)MS发送IMSI到MSC/VLR;

(e)MSC/VLR给MS分配一个新的TMSI/LAI;

(f)MS根据新的TMSI/LAI重新发起认证请求,按上述方式进行认证。

(2)MS在新的VLR使用TMSI进行位置更新时

当MS进入新的VLR时,通过监听在广播信道中进行广播的位置区域标识LAI信息,发现以前存储在SIM卡中的LAI(o)(表示旧的位置区域标识)和现在接收到的LAI(n)(表示新的位置区域标识)不相同,移动台必须进行新的认证。

(a)接入SDCCH信道,在SDCCH信道上MS和MSC/VLR相互通信,MS先发送LAC(o)/TMSI(o)给新的VLR(n);

(b)VLR(n)根据收到的TMSI(o),发送TMSI(o)到MSC/VLR(o);

(c)MSC/VLR(o)发送未使用过的认证3向量组给VLR(n);

(d)VLR(n)选择一个认证向量组中的随机数发送给MS,从而完成对用户的认证。

(3)MS在新的VLR使用IMSI进行IMSI位置更换时

(a)在第(2)种情形中,当原来的MSC/VLR(o)不可达时,必须使用IMSI进行认证,首先MS发送IMSI给VLR(n);

(b)VLR(n)根据IMSI确定MS的归属MSC/AUC,并发送请求认证3向量组;

(c)归属MSC/AUC接收到请求后,产生认证3向量组,并发送至MSC/VLR(n);

(d)MSC/VLR(n)选择一个认证向量组中的随机数发给MS,完成对用户的认证。

(4)MS在新的VLR使用TMSI进行位置更新,但TMSI在VLR(o)没有时

(a)当MS进入VLR(n)时,发送认证LAC(o)/TMSI(o)至VLR(n);

(b)VLR(n)根据收到的LAC(o)/TMSI(o),发送TMSI(o)给MSC/VLR(o);

(c)MSC/VLR(o)不知道此TMSI(o),发送此TMSI(o)不可知给VLR(n);

(d)VLR(n)请求MS发送IMSI;

(e)MS发送IMSI;

(f)VLR(n)请求归属MSC/AUC发送认证3向量组;

(g)VLR(n)根据(3)中的步骤(c)、(d),完成对用户的认证。

2.3 GSM系统增值业务中的身份认证

GSM系统的增值业务包括语音信道上的增值业务(如IP电话等)和短消息信道上的增值业务(如点播类、金融业务)。目前并没有一个统一的增值业务的安全规范,对于短消息信道上的增值业务,GSM标准制定组织制定了GSM03.48,在其中给出了一个作为参考的协议标准;对于语音信道上的增值业务,主要依赖用户鉴权过程中产生的秘密会话密钥Kc来保障业务的安全。

3 GSM保密机制

3.1 GSM系统的加密

在GSM系统中,用户数据和信令信息的加密是通过加密算法A5进行的。GSM标准制定组织设计了A5算法,但是关于该算法的内容和详细描述一直没有公开。A5算法有两个版本:A5/1和A5/2算法,其中A5/1是强加密算法,严格受密码产品出口限制,只能在CEPT成员国内使用;而A5/2是A5/1的弱版本,可以在任何国家使用,在亚洲地区的GSM系统中采用的是强度较弱的A5/2算法。除了这两种版本外,A5算法还有另外一种实现方式,称为A5/0,即采用非加密的方式。

此外,在GSM03.20中规定GSM系统最多可定义7个A5算法,当MS与网络建立连接时,MS应向网络端指示通信过程使用的A5算法的版本。如果MS与网络端支持至少一个相同的A5加密算法,则从中选择一个;否则,如果网络端希望以非加密方式进行连接,则可建立非加密方式的通信。

A5算法是一个序列密码算法,通过密钥流与明文异或来产生密文。在通信的另一端,通过同样的方式与密文异或得到明文。加密过程是由固定网络端控制的,为了使两端同步,解密首先在BSS上开始,然后BSS/MSC/VLR发送一特殊的明文给MS;当MS正确地收到这个明文后,MS开始加密和解密。最后只有在BSS端正确解密从MS发送过来的信息和帧后,BSS端的解密才开始。

A5有两个输入参数:一个是初始密钥Kc;另一个是TDMA序列号Fn,长度为22bits。A5产生一组114bits的密钥流K。在每个时隙,即4.615ms内,在MS端,A5算法在移动设备中实现,产生的第一个114bits的分组用于解密,第二个114bits的分组用于加密。而在BSS端,A5算法在BTS实现,产生的第一个114bits的分组用于加密,第二个114bits的分组用于解密。

A5/1和A5/2算法一直没有被公开,因而算法的安全性受到质疑,GSM标准制定组织迫于压力公开了算法的部分内容。

3.2 GSM系统的会话密钥生成

在GSM系统中,会话密钥Kc是在用户认证时产生的,产生Kc的算法被称为A8算法。A8算法的入口参数是用户的秘密认证密钥Ki和随机数RAND,出口参数是会话密钥Kc,即Kc=A8(Ki,RAND)。

在MS端,Kc的计算在SIM卡中进行;在固定网络端,Kc的计算在Auc中进行。Kc将一直被存放在SIM卡和Auc中直到下一次认证产生的新认证结果代替原来的会话密钥。GSM标准制定组织只规定了A8算法的入口和出口参数,并没有规定具体的实现方式,运营商可以选择自己的认证算法。大部分的GSM网络运营商都选用COMP128作为A3和A8算法的实现。

4 GSM网络存在的安全缺陷及相关的攻击方法

4.1 GSM网络的主要安全缺陷

GSM系统的主要业务为语音通信,因此其安全服务主要针对语音数据的保护,在GSM系统中主要存在以下安全性缺陷:

单向身份认证:网络认证用户,用户不认证网络,无法防止假基站和中间人攻击;

用户身份认证密钥不可变更,无法抗击重放攻击;

Kc和SRES在网络中明文传输,易被窃取,为窃听带来便利;

基站和基站之间均是明文,无加密和认证措施;

算法设计过程不公开,安全性得不到评价;

用户数据和信令数据缺乏完整性保护机制;

用户处于漫游状态时,服务网络采用的认证参数与归属网络之间没有有效的联系;

无法防止来自内部的攻击(位置信息、消息内容等),对于位置信息缺乏必要的保护(对外部而言);

用户鉴权过程中IMSI可能以明文方式在无线信道上传送;

对系统的安全升级及安全功能的更改没有详细考虑,导致系统缺乏升级能力。

4.2 对GSM的身份认证攻击

GSM系统中的身份认证的主要目的是防止未授权的访问网络服务。身份认证采用的是单向认证,即只是网络认证终端,终端无法认证网络。这样就会有入侵者通过假冒网络获得用户的认证响应,假冒用户通过网络认证。

正常认证流程如图4所示:

4.3 SIM卡克隆

GSM系统使用了“挑战-应答”方式进行用户鉴权,关于用户身份的重要秘密信息(如IMSI、Ki等)都存放在SIM卡中,因此SIM卡自然也容易成为黑客攻击GSM系统的重点。SIM卡克隆就是一种典型的对SIM卡的攻击,其目的是获取合法SIM卡上的用户密钥Ki和用户身份识别码IMSI。IMSI可以通过多种方式获取,如基站攻击或者直接从SIM卡上读取,因此Ki是SIM卡克隆攻击的关键点。

SIM卡克隆攻击主要利用了GSM系统单向认证的弱点,由于SIM卡在鉴权过程中处于被动地位,无法认证挑战方的身份,因此黑客可以使用读卡器向SIM卡发送大量的假挑战,通过分析输入和输出数据之间的关系从而分析出Ki。计算出Ki(最长128bits)大概需要150000次计算,由于SIM卡本身的设计原理,每秒最多进行650次攻击。

最早的攻击始于1998年4月,当时加州伯克利分校的研究者们首次公布了对GSM的攻击。伯克利研究小组的攻击途径相当简单:研究者使用给定的SIM卡,有选择地向SIM卡发起询问,然后分析SIM的响应并确定响应的密钥Ki。攻击利用简单的硬件进行,包括GSM电话/SIM卡组合、标准的智能卡阅读器以及一台PC。提取Ki的过程在仅仅不到8小时内就完成了。一旦攻击成功,将允许利用同一Ki生成SIM卡,并在网络上进行欺诈呼叫。尽管最初需要对GSM手机和SIM卡进行一段时间的物理接触,以完成一次成功的克隆,不过研究人员后来注意到通过空中接口进行克隆越来越有可能。

SIM卡克隆攻击实现的难度取决于关键的鉴权算法A3的强度,GSM标准中建议运营商使用自己的A3算法。由于A3和A8都是单向散列算法,因此通常可以统一实现,称为A3A8算法,GSM标准制定组织也提出了COMP128算法作为A3A8算法的参考算法。COMP128是一个带密钥的散列函数。由于没有设计密码算法的能力,大多数的运营商都采用了COMP128算法作为鉴权算法。不幸的是,COMP128算法的设计过程是保密的,算法的实现方式和结构也没有公布,这使得该算法的安全性被打上了问号。在20世纪90年代中期,这些算法的有关信息慢慢泄漏给了公众领域。意外得到的关于这些算法的信息与GSM体系轮廓相结合,导致这些算法成为业余和专业密码学家尝试的目标,而更大范围的详细研究很快暴露了算法中一些相当严重的安全缺陷。

目前在国内已有SIM卡克隆设备出售。这种方式主要目的一般不是为窃听,而是为窃取话费或亲人朋友间共享话费。

4.4 对A5算法的攻击

SIM卡攻击并未涉及语音加密算法(A5),因此GSM通话不易于窃听。只要A5是安全的,就没有空中窃听的风险。

对于业界而言,A5的缺陷于1999年被发现,对其存在比蛮力攻击更为可行的攻击方法, “划分-征服”攻击法。这种攻击减少了蛮力攻击的时间复杂度,比蛮力攻击快29~512倍甚至更多。

2000年一个安全专家小组对A5/1算法进行密码分析后,证实能够在几分钟之内从截取的2秒钟通信流量里破解密钥。,A5/1算法提供的安全层次只能防止偶尔的窃听,而A5/2则是完全不安全的。

2003年8月,Elad Barkan、Eli Biham和Nathan Keller宣布攻破A5/2,并且能够利用GSM协议的安全缺陷对GSM系统进行主动攻击。这种针对A5/2的唯密文攻击只需要几十毫秒的空中链路加密数据,就可以利用PC机在一秒内获得会话密钥Kc,然后利用GSM网络系统的协议漏洞,对使用A5/1的网络进行攻击。这些攻击主要利用了GSM网络协议的安全缺陷:首先,终端与网络之间发送的信令数据并没有完整性保护和数据源认证;其次,终端中有不同安全强度的密码算法,但这些密码算法用的密钥是相同的,一个算法被攻破意味着其他算法的密钥可以获得。

以前对GSM的攻击需要一些不太现实的前提条件,如比较多的已知明文,而这种攻击却非常实用,不需要明文信息,并且需要的密文比较少。这些攻击可以使攻击者窃听和解密GSM用户的通话,也可以挟持会话,更改空中传输的信息及假冒合法用户盗打电话等。

4.5 对信令网络的攻击

GSM系统的加密只在MS和BTS间进行,在BTS之后,通信以明文形式在网络上传输。如果攻击者可以访问运营商的信令网络,就可以侦听网络上传输的任意数据,包括实际的通话、RAND、SRES和Kc值。访问信令网络并不很困难,尽管BTS通常通过PCM与BSC相连,但还是有一部分是通过微波或卫星链路连接的,使用特定设备访问这种链路相对容易。市场上可以买到的GSM窃听设备就是利用了这个弱点。

另外,攻击者可以攻击特定网络的HLR。如果攻击者可以访问HLR,他将可以获得所有用户的Ki。幸运的是,一般来说HLR比网络的其他部分安全。

参考文献

[1]杨义先, 钮心忻. 无线通信安全技术[M]. 北京: 北京邮电大学出版社, 2005.

猜你喜欢

认证加密
一种基于熵的混沌加密小波变换水印算法
中职校园网络安全管理系统设计
ASME钢印锅炉安全阀PE认证实践
认证加密的研究进展
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密