有关SIM卡的历史演变我们已在上一篇博文中做了详细阐述。今天我们将讨论有关”SIM卡安全性”的话题。说到SIM卡的安全漏洞问题,首先想到的应该是”SIM卡克隆”。在这里,所谓”克隆”就是将一张SIM卡的内容读取,然后重新写到另一张SIM卡的内存中。这其实很容易理解,毕竟从硬件的角度看,SIM卡只是一张普通的智能卡,和其它所处可见的廉价普通芯片并无太大区别。
远在手机内同时插入多张SIM卡仍停留在科学幻想层面的时候,当时的克隆技术已被用作”手机内同时使用多张SIM卡”的解决方案。为省去频繁换卡的麻烦,被称为”MultiSIM”的格式应运而生。MultiSIM从本质来说就是一张普通的智能卡,只是通过扩展内存能同时存储多张SIM卡的数据。
使用MultiSIM智能卡后,用户可以很方便地在不同SIM卡之间切换,再也不用每次都插进、拔出。该方法基于一个简单的原理:每次手机重启后,与下一张SIM卡数据对应的存储格都会被自动选中。当然,所有写入数据的SIM卡无法同时工作:一旦切换,手机即认定SIM卡已拔出,因此会自动重启。
The evolution of the SIM card – what has changed, what has not? https://t.co/VUa9NdEWiY #mobile #cell pic.twitter.com/w3Ef9jVqzl
— Kaspersky (@kaspersky) January 5, 2016
事实证明,这一解决方案并无特别用处(即使现在,宁愿再买部便宜手机也比用双卡手机方便得多)。但在10年前,multiSIM却风靡一时。令人好奇的是,当时市面上的整套DIY用具几乎一应俱全;包括:multiSIM智能卡、PC电脑适配器(用于读写智能卡)以及相应的软件。
然而,克隆SIM卡有时候却可能演变成”恶意攻击”。例如,不法分子一旦有机会得到受害人的SIM卡,只需短短一会就能完成克隆并作为合法的SIM卡使用。如克隆卡激活时,合法用户在移动网络是入网状态,那后者将直接从移动网络中断开,尽管用户对此一无所知。一旦如此,所有进入电话和短信都将直接转到不法分子的手机,反过来,他们也能以受害人SIM卡的名义拨打电话、发送短信和上网冲浪。
Weak Link: How to lose everything having lost your #SIM-card https://t.co/wha5ECQP6A #security pic.twitter.com/ykU4j1mbvI
— Kaspersky (@kaspersky) November 18, 2014
被蒙在鼓里的受害人甚至还能在手机屏幕上看到正常移动网络图标和运营商名称,这会让人产生错觉以为还在网内,但受害人却无法拨打电话直到重启手机,或者移动网络自动更新入网状态—通常每几个小时更新一次。
起初,克隆SIM卡几乎能在任何地方入网,即使跨越几个大洲也能成功。此后,各国移动网络运营商才不得不开始采用一些简单的安全措施:一旦发现用户的入网位置突然与最近一次入网位置的距离相差甚远,网络管理员则会立即收到通知:有人可能使用了克隆SIM卡。
Voice as a threat: VoLTE, a new tool to compromise #mobile networks – https://t.co/fliFYkDb90 pic.twitter.com/vr4gfGQvRb
— Kaspersky (@kaspersky) November 4, 2015
但如果不法分子的入网位置距离受害人很近的话,上述安全措施将”无用武之地”。
那么问题来了:为什么”SIM卡克隆”一直到现在还存在呢?这样的功能是不是该被禁用或撤销呢?
Ki码(密钥识别)主要用来认证移动网络内用户的身份,但通常不会从SIM卡内读取信息。SIM卡处理器会在’内部’呼叫Ki码,因此密钥不会通过无线共享。Ki码保存在SIM卡内受保护的内存段中,因此不存在能对其进行读取的API。
但这里却可以用到某些不为人知的分析方法。一旦不法分子采用能在SIM卡上反复运行A3算法的软件,就能处理RAND(自动)密码并生成SRES(符号相应),如此便能发现某些关联性从而计算出Ki码。
How easy is it to hack a cellular network? https://t.co/FEH3kcVjp9 #mobile pic.twitter.com/T52mFaeXgg
— Kaspersky (@kaspersky) November 24, 2015
即使是10年前的PC电脑,其性能水平也足以在几分钟内完成任务。但事实上绝不简单。任何一张SIM卡均拥有某种”自毁”定时器,触发取决于算法的运行次数。比如,某张SIM卡的触发上限是65536次。一旦达到这一上限,SIM卡处理器就停止计算SRES。
一旦在限制次数内无法成功计算出Ki码,SIM卡将无法再进行使用。有时现实中合法SIM卡也会遇到这样的情况,比如使用了很长时间且限制次数一开始就很低。
但也有例外,对于那些仍然支持年代最久远的A3算法版本(COMP128v1)的SIM卡,就能用此种分析法获取Ki码。鉴于有些运营商仍在使用,因此这些SIM卡就能轻而易举被克隆。但更高级的运营商已从COMP128v2切换到COMP128v3算法,增加了RAND-SRES集数量使得Ki码无法通过上述方法计算而得。
一旦不法分子成功获得运营商SIM卡数据库,或由SIM卡生产商发送给运营商的特殊查找表,他们就能立即得到大量SIM卡的一套密钥。但要想获得这些重要数据,不法分子需要在运营商或SIM卡供应商有内应,前提是对方有权限访问这些信息。
但据传闻说可以通过无线拦截密钥,且如今的PC完全能够通过无线进行破解。但我们之前不是提到Ki码无法通过无线传输并本地保存在SIM卡内吗。那到底是什么数据能被拦截呢?这里先买个关子,我们将在下一篇博文中再予以讨论。