智能卡在尴尬中演进
(2011年10月)文/江海客
本月的安全天下事注定要从智能卡讲起。近日,智能卡芯片制造商NXP Semiconductors(恩智浦半导体)对其Mifare DESFire MF3ICD40芯片的用户发出安全警告,表示这款芯片将在年底停止使用,并建议用户升级到Mifare DESFire EV1。这是对相关研究人员采用低成本设备破解了这款芯片的一种应对。此前不久,德国的研究人员基于边信道攻击的方法,使用价值约3000美元的设备,在七小时内获取了MF3ICD40使用的112位加密密钥。它的用户中不乏敏感的部门,其中据说包括NASA。再往前回顾,2008年,该公司上一代芯片Mifare
Classic也是被研究者破解,促使大量用户转移到了MF3ICD40之上。
在国内,两个重要的桌面安全企业奇虎360和金山都在本月与公交IC卡这一智能卡的重要应用产生了关联。
首先是媒体曝出奇虎360的两名工程师因破解北京公交IC卡并进行充值而被法办的新闻。根据360的官方声明,两名工程师参与了公交卡的安全性研究,由于“法律意识淡薄,没有能够抵制住诱惑”而导致了此事的发生。360已经将两人除名。根据报道,法院分别判处了两人拘役的处罚(其中一人缓刑)。
而后,金山指出北京公交IC卡服务网站存在漏洞,凭借卡号即可查询持卡人的刷卡轨迹,这有可能暴露用户的位置信息和出行习惯等。这一事件引起了各方的争议,有一些安全研究者认为这不是一个很严重的问题。首先卡号只能用于查询、不能用于消费;公交卡也并非实名制卡,其定位信息不是实时的,因此其对隐私威胁的程度是轻微的。正如网友所说,无非是“给多疑的妻子增加了一种对老公查岗的方法而已”。站在个体安全的角度,笔者也倾向这种观点。而且对于公交卡海量发放的庞大基数来说,如果建立面向密码的安全机制,必然带来密码分发、管理和废止的机制,本身也要带来一定的成本支出。
然而,随后有应急工程师在某企业网出口上发现了批量获取公交卡信息的流量,这就提出了本问题的一个新的视角。从公共信息查询环节来说,批量地获取相关数据,显然可以从中进行时间和站点的客流分布等挖掘、可以进行群体性充值和消费习惯的研究。
如果我们把公交IC卡的卡号与查询服务进行一个原则抽象的话,可以看到它确实不是一个安全的体系:
1、 其卡号是顺序流水号,而不是符合某种认证规律的编码,即只要知道其中一个有效卡号,就能轻易地批量产生其他有效卡号;
2、 其卡号是类似查询的唯一鉴权凭证,没有其他扩展的保护信息,例如信用卡的有效期、CVV/CVC验证码等;
3、 开放的查询接口对获取相关信息的行为未做其他限制,如单一IP查询次数限制、图片验证码机制等,这种设计必然会出现有人尝试批量获取数据。
有网友提出建议,说可以凭借卡号建立初始查询密码。这肯定不是一个合适的选择,由于卡号本身是流水号,势必会有恶意攻击者对大量卡号批量修改密码。如果希望由用户自行设置密码,在没有初始分发机制的情况下,目前相对可靠的方法是凭借IC卡到指定的自助终端或者充值网点去设置。
智能卡在不断演进,智能手机系统也是如此。Google和NSA正在联合研发基于Android 3.0的安全内核。目前仍不清楚这是一个独立的系统,还是一个效仿SELinux模式的补丁。但随着IT寡头格局的演变,我们将逐渐看到强大的产业能力对美国国家安全战略的支撑能力。每每思及此,我都会想起一位老师对我的教导:“沦为用户,即意味承认着被主宰的幸福”。
作者微博:
http://www.weibo.com/seak
历史各期安全天下事:
http://blog.csdn.net/antiy_seak