2015年指纹识别成为智能手机的重要卖点,配置率节节攀升,有媒体预测2016年将达到50%的配置率。人行在2015年末正式将金融账户细分为3个安全等级,立法层面承认了数年来的金融创新尝试,正式开闸。伴着新年钟声敲响,Apple Pay和Samsung Pay携手银联入华,为消费者提供便捷的刷手机支付。智能手机全民指纹支付的时代正稳步到来。
然,真的可以如此顺利吗?且看:
支付宝的IOS版本和Android版本都可以进行指纹支付,却有不同的待遇:在IOS设备认证一枚已注册指纹后,所有注册指纹都可用于支付;而在包括三星和华为的旗舰Android手机上认证一枚指纹后,只能用认证指纹进行支付,其余的注册指纹皆不可使用。
这要闹哪样?更有甚者,微信和百度钱包在对IOS开放指纹支付的同时,无视了绝大部分装载了指纹识别功能的Android手机。难道BAT要联手起来粉IOS踩Android?要知道IOS是纯美国范,Android阵营多的是中国智能手机,遭到歧视的到底是Google,是Qualcomm,还是国货?
BAT当然没有歧视谁的必要,都怪安全性不足惹的祸。2015年Black Hat大会上首次公开提出绕开不完全的安全体系对Android智能手机进行系统攻击的概念。其中一种攻击叫Fingerprint Backdoor,预先注册一枚指纹,并在UI中隐藏该指纹使消费者无法得知其存在,当消费者赋予自己注册的指纹某种权限时,该预置指纹就可能获得该权限。所以支付宝必须对Android手机差别对待,否则就是向Fingerprint Backdoor攻击打开大门。
那么IOS怎么防止此类系统攻击呢?请参考苹果公司在2014年2月发布的安全白皮书,提出了Secure Boot Chain、Secure Element、Secure Enclave、Touch ID、NFC Controller为支柱的硬件安全体系。这就是在Apple Pay背后支撑起终端安全的五大金刚,环环相扣。
先说Secure Boot Chain,这是基于硬件签名校验以确保操作系统和关键软件不被篡改不被回滚的技术。苹果自己开发CPU自己开发OS,软硬搭配除了干活不累,信息安全也是手到擒来。再看Android,除了原生版本由Google发布,客制版本先经AP商定制再由手机厂商修改发布,kernel里甚至植入第三方供应商编写的驱动代码。此等情形,莫说Secure Boot,有没有被插入恶意代码都说不清。
再看Secure Element,作为全球公认的金融支付标准配置,到目前为止,支持Android的硬件平台不但没有集成,连专用接口都没留。所以Google干脆推出HCE,虚拟化SE,也是迫于Android生态链刻意弱化SE这个无奈的现实。
接下来是Secure Enclave,这来自ARM的Trust Zone技术。在信息安全领域,安全技术往往被叫做Secure XXX,安全系统才可以叫做Trust XXX。苹果在2013年基于ARM于2004年发布的Trust Zone技术设计了Secure Enclave,一个命名就把苹果的实事求是和ARM的掩耳盗铃告白于天下:把Secure XXX叫做Trust XXX的,乃意淫不上税也。
最后是Touch ID和NFC Controller。IOS和Android阵营的区别在于,前者有密码部件支持,后者用明文传输。2015年三星Galaxy S5被爆Finger Spy漏洞,用恶意APP控制Fingerprint Sensor即可直接窃取指纹图像,说明其在信息安全上的幼稚程度。这并非个例,而是Android生态碎片化造就的普遍恶果。
如果假以时日Android阵营把苹果使用的技术都学会是不是就够了呢?要知道信息安全是在攻守中持续发展的技术领域,不存在一劳永逸的安全。Android产业链在信息安全建设上存在巨大的先天缺陷,正如下面这个段子:
话说瞎子背着瘸子赶路,瘸子突然大叫“沟!沟!沟!”,瞎子以为瘸子唱歌,应道“阿勒,阿勒,阿勒”,然后瞎子背着瘸子冲沟里去了。这里讲的是,虽然瞎子有腿瘸子有眼睛,但合起来也不能等同于功能健全的正常人,该掉沟就得掉沟。和苹果公司相比,Android产业链在信息安全系统的架构能力上正是这样的天残组合。
一旦发现了新的致命漏洞,苹果和Android阵营分别会做什么呢?苹果的五大金刚当然为自家的Apple Pay负责,第一时间响应,第一时间实施最优的解决策略,可以立即停止旧版本IOS的支付功能推送新版本IOS,甚至把Apple Pay、iTunes Store和App Store暂时关闭来争取时间。反观要是Android手机底层漏洞威胁到了BAT的支付平台,谁来补救,谁有能力补救,谁来组织补救呢?
平台的开放性和信息安全是一对矛盾,一方面信息安全必须依赖于软硬件深度结合和环环相扣的精细化设计,另一方面为了加速商业化需要建立以兼容性为基石的开发产业链模式。这个经典的乔布斯与比尔盖茨之争,在今天仍然是科技发展中主要论题之一。苹果公司是独一无二的,微软公司经过这么多年的积累尚解决不好传统PC的信息安全,Google推出Android才几载,能怎么样呢?只要继续兼容性优先,只要继续碎片化,Android阵营各环节之间就免不了像瞎子和瘸子的组合一样,一旦出事只能相互指责为猪队友。
幸而,支付安全和手机安全是有交叠但不等同的两件事,不见得必须啃下手机安全的硬骨头才能实现支付安全。例如网银U盾不就实现了超越PC安全的网络银行安全么?只要我们跳出终端安全的深坑,就会看到,安全支付只有两个环节:Trust UI和Trust Confirm。前者指支付平台传递给消费者的交易信息是可信的,不会出现实际交易额10000元只给你看100元让你以为捡到个便宜的事情;后者指消费者传递给支付平台的确认是可信的,既不可伪造,也不可抵赖。指纹识别具备不可伪造和不可抵赖的特性,只要保护好调度、储存、运算和传输就构成Trust Confirm;再配合以Trust UI,支付平台到人的直接互信连接就实现了。
在线下支付场景,Apple Pay提供了解决方案:用手机刷POS机,手机无须开机,由Touch ID + Secure Enclave + Secure Element + NFC提供Trust Confirm,POS机作为银行终端提供Trust UI。在线上支付领域,网银U盾的发展历程也可作为借鉴:在1代U盾基础上增加自带屏幕引入Trust UI成为2代U盾;再将指纹识别引入实现Trust Confirm,就是有完整可信回路的3代U盾系统。2015年人行发文件要求各种支付途径使用相同的技术体系避免重复建设,其意所指,正是线下和线上支付系统应具备技术统一性。在两个环节之间,Trust UI的等效替代手段多样,比如语音电话通知、短信等等,可以循序渐进,真正急迫的问题只Trust Confirm而已。
可惜,大多数国产Android智能手机在ARM为首的上游供应商的鼓动下正急着投身Trust Zone的虚影之中,甚至无暇关注BAT们的冷眼相对。ARM的Trust Zone只能提供对运算的保护和对储存的有限保护,完全无法实施对调度和传输的保护,这正是可以从调度和传输两个角度进行系统攻击的根源所在。Trust Zone的拥护者们把Trust Zone鼓吹为实现局部安全的保险箱,比完全不设防或全面壁垒高筑都更“优(中)越(庸)”,这简直是为了收License费用而编造的谬论。信息安全领域所考虑的永远是攻防双方的博弈,“部分安全”毫无价值。一个堡垒只要剩一扇门一道墙不守,就跟完全没有防御一样可以轻易攻破。仅2015年Black Hat大会上公布的系统攻击就有Confused Attack、Storage Attack、Finger Spy和Fingerprint Backdoor四类之多,经这脑洞大开的攻击思路的提示,有多少聪明的Hacker能构思出多少巧妙的攻击组合不言而喻。系统攻击一旦实施,窃贼根本不用进入堡垒,只要发号施令便使守卫乖乖奉上金钱。既如此,那窃贼还进入堡垒干嘛?是否Trust Zone技术正是通过支持监守自盗来免除自身的被攻击价值,从而使Trust Zone的供应方无技术责任之虞?
须知,“窃”的最高境界是“奴役”,使被窃者处于无知状态,可以长期割肉。可恨的不止是贼人,也有失职的守卫,不但不加辨识的执行命令将财产拱手出卖,还能使断绝失窃者追回损失的机会:通过系统攻击进行的非本人的支付行为,事后无法通过技术手段与本人的使用区分开,这就触发本人手机上经过本人指纹确认的支付行为的不可抵赖性。对支付平台来说,尽管从技术和法律的角度都可以免责,但消费者终究会用脚来投票,弃用该手机品牌的同时,也弃用该支付平台。“你作孽我一起背黑锅”,商誉受损如何能容忍?所以BAT歧视国产Android手机的现实,必须发人深省。
Copy to China终究是下策,就算“拿来”也应该拿先进而非落后。不调查研究却人云亦云自愿上当,看不懂风险就编造说法忽视风险,正是中国产业升级道路之殇。只有根除懒惰和自卑,尊崇理性基于逻辑进行分析判断,才能断绝愚昧。幸而旧路的终点往往正是新途的起点,普遍匮乏中孕育着机遇,只有慧眼独到者才能把握机遇,自创风口,迎难而上。