关于最近GEMALTO爆发的SIM卡安全事件所想到的…


150220085726-sim-cards-hacked-780x439

         近几天业内讨论的最热的一件事情就是全球最大卡商Gemalto公司因内部网络被美国NSA和英国GCHQ成功渗透,导致大量的SIM卡最关键的安全数据Ki泄漏(量级或许是数以千万计),然后美英情报部门依靠这些密钥就可以在运营商和手机用户完全不知情的情况下进行语音和数据的监听。

目前网上也已经有了很多相关的大讨论,一般都认为是运营商或卡商安全意识不足,存在薄弱的防范意识,才导致数据泄漏。很多人也比较了SIM卡和银行卡,认为SIM卡理应达到银行卡一样的安全级别,但要达到这个目标对SIM卡来说依然还有很长的路要走云云。但笔者认为其实这次爆发的SIM卡安全事件虽然直接原因是因为该公司内部若干薄弱环节被攻击导致最终数据泄漏,但实际上根本原因是在于移动通信系统的系统性结构问题导致,所以即便这次不是Gemalto公司出了问题,也迟早会有其他公司出现类似的或更大的安全事件。我们只以GSM(2G)为例来说,SIM卡的功能其实一直都是作为用户身份识别的载体使用,为了确保只有合法用户使用运营商提供的移动通讯服务,这个功能等价于一把大门钥匙或者口令,只有拥有钥匙或口令的合法用户才能进入屋子,合法使用这间屋子,仅此而已,至于钥匙是否在真正的用户手里,或者这间屋子的锁是否伪造的而只是为了套取用户钥匙的印模可能都不重要。这也是该系统最初设计的出发点,即便设计者想实施更好、更复杂的安全防护机制,但因为移动通信的高实时性要求,同时三十年前半导体技术的制约,最终也不得不做出妥协,所以GSM系统从来也没有过一套更完善、更复杂的安全保护机制,因为移动通信系统的核心是始终围绕确保为用户提供高质量的话音和数据服务。但银行卡的设计理念就不一样,银行卡本身是围绕钱在运转的,而从古至今凡是涉及到运营管理资金的地方,运营者都会不计代价的使用各种安全机制和防护措施,就好比一个金库,通常会用现有技术条件下所能达到的最高水平加以防护,而且随着技术水平的进步,安全防护还会不间断的改进和升级,安全在金融领域始终是最核心的问题,围绕安全所做的任何工作都是最基础性的工作。

再来说说涉及到话音和数据加密的算法,仍然以GSM系统为例,这里使用的是A5系列算法,之所以叫系列算法,是因为为了不同的目的曾经先后衍生出A5/1 – A5/7的多个算法,最初的A5/1算法由法国人发明(这也完美诠释了什么叫“搬起石头砸自己脚”),算法本身并不复杂,核心是使用了三个不同长度的LFSR寄存器,经过多轮次的变换输出两个114位的流密钥,分别给上行和下行数据的加解密使用。实际的加解密过程只发生在UE(终端)和BSS(基站子系统)之间的空口传输上,使用时将相应的密钥与原始明文数据异或后就实现了对数据的加密,另一方使用同样的密钥将数据再次异或后就得到了原始明文。在空口上传输的每一帧数据的加解密密钥根据帧号不同都会变化,同时还会使用由SIM卡A8算法生成的Kc,但Kc在每次鉴权中只会变化一次,而通常终端只在位置更新时才会发起新的鉴权。但对于国内手机用户来说,实际上A5算法是不使用的,也就是说在空口上传输的都是完全的明文,笔者之前在开发电信SIM卡COS时也曾经做过实验,对于任意修改的Kc,只要确保4字节SRES正确,用户就可以正常的使用语音和数据服务。A5算法在十多年前就已经被证明有安全隐患,网上也可以查到有很多攻击A5算法的方法,但奇怪的是即便如此,运营商仍然在继续使用,这里面的具体原因就不甚明了了。

从这次的安全事件来看,厂商所能做的无非是一些事后补救性工作,完善内部网络系统的安全机制,将有问题的SIM卡进行重新发卡,这些手段也只能解一时之需,给公众一个说的过去的交代。但无论如何移动通信系统的结构性安全问题和风险都不是短时间、低成本方式可以轻易解决的。

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>