在商场,挑选完商品后的下一个动作是什么?“付钱啦!”没错!在挑选完商品后,我们需要拿出钱包、打开、掏钱、支付,或者拿出钱包、打开、取出信用卡、刷卡支付,再或者拿出手机、刷手机支付。
美好的移动支付!美好的移动支付?
等下,手机?刷手机支付?没错,确切的说,是刷具有NFC功能的智能移动设备——智能手机、智能手环、智能手表等等。NFC,Near Field Communication,也就是所谓的“近场通信”,是一种短距高频的无线电技术。百度百科上对NFC的解读是“由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。”
其实,使用拥有NFC功能的手机进行移动支付早已不是什么新鲜事儿了。在日本,NFC移动支付产业就获得了很大的成功,对于很多日本人来说,手机就是他们的钱包。去商场,刷手机买衣服;到影院,刷手机买门票;在餐厅,刷手机来买单……刷、我刷、刷刷刷——没钱了!这意味着你的手机钱包被刷爆了,但也可能是你手机钱包里的钱被人给偷光了。
移动支付很美好,移动支付的安全更头疼。
实现进场支付的软硬双模式
如今的移动支付(近场支付)主要通过两种不同的卡模拟方式来实现支付,即SE方式和HCE方式。
安全模块SE(Secure Element)是一种基于硬件的卡模拟方式,能够提供对敏感信息的安全存储,并为交易事务提供一个安全的执行环境。NFC芯片将从外部读写器接收到的命令转发到SE,SE进行处理后,再通过NFC控制器回复。
HCE(Host-based Card Emulation),即基于主机的卡模拟方式。HCE方式不需要SE安全模块,由在手机中运行的一个应用或云端的服务器完成SE的功能,也就是说NFC芯片所接收到的数据会由操作系统发送至手机应用里,或者通过移动网络发送至云端服务器中来完成交互。无论是本机应用还是云端服务器都绕过了手机内置SE的限制。
基于硬件的SE方式具有很高的安全性,不过从SE发卡、使用、管理等角度来看,其应用复杂,推广较慢。实际上,正是由于各个相关机构对SE控制权的争夺,导致了NFC移动支付的发展缓慢。
基于软件的HCE方式,很明显拥有较易实现,易于推广的优势。但同时,其也面临着来自各个方面的安全威胁。
面临重重安全危机的HCE
HCE方式之所以面临重重安全问题,与其实现机制有着很大的关系。例如HCE的云端实现模式,在其云中发卡过程里,用户的卡数据等信息会被保存在云端,NFC手机开启HCE服务,并安装电子钱包(由HCE发行者提供,如银行等),而替代个人银行主账号信息的支付令牌Token则保存在本地,云端实现Token与主账号的对应。在进行交易验证过程里,用户在电子钱包中选择支付账户后,将手机靠近POS机实现支付,此时通常会要求用户输入PIN码确认,Token及交易信息会传递给POS机,再由POS机提交信息给后台系统进行认证和交易授权。另外,HCE方式还需要安卓4.4以上手机操作系统的支持。
看看,问题来了!从数据安全、代码安全到传输安全,基于HCE的支付业务所面临的安全挑战实在是够多。
如果模拟卡数据是保存在手机本地,那么脆弱的安卓系统很容易被黑客利用其弱点和漏洞进行攻击获得Root权限,进而轻松获取支付凭证、交易密码、加密密钥等敏感信息,劫持交易,将用户银行里的钱划到黑客的腰包里。如果手机丢失,那就更惨啦,由于不具备SE的抗攻击特性,手机里的敏感数据存在“被看到、被拿走”的安全风险。
而且,支付流程本身的业务逻辑代码也面临着被反编译和逆向分析的威胁。近期爆发的Xcode事件,更让人们惊讶的发现,其实在软件应用诞生之初就可能已经感染病毒。
如果模拟卡数据保存在了云端服务器,那么云端自身的可用性、安全性,以及第三方的可信性问题就不得不需要提前考虑了。在本地与云端进行数据通讯时所使用的加密密钥更要极好的予以保管。
保卫HCE需要从“始”到“终”
现在许多的HCE支付方案会采用Token、一次一密、多重认证等安全机制来实现对业务的安全保护,但很显然,这还远远不够。在梆梆安全看来,既然HCE是基于软件的方式,那么自然需要基于软件生命周期维度的全方位安全防护:从应用规划阶段即开始,到应用设计、应用开发、应用发布,甚至是应用运维都需要将不同的安全能力融入其中。
具体到HCE实现的关键组件和环节,首先需要对Token、LUK、报文秘钥、通讯证书等关键数据实施梆梆白盒加密,在身份认证方面加入设备、应用、用户等多维度认证环节。通过对涉及支付核心逻辑的SO库的源代码进行一重加固,防止源码在内存运行中被窃取后进行逆向分析;然后对编译后产生的支付SDK进行二重加固,防止SDK被反编译和非法调用;最后对电子钱包APP进行三重加固,防止APP被非法破解和篡改。而且为了在安全的前提下保证用户体验,还要对应用本身的静态数据及运行过程中产生的动态数据进行透明加密,对运行环境进行安全检测,例如检查系统安全、TEE安全、存储安全、运行安全等等。
采取这些安全措施就够了么?当然……还不够,除此之外,HCE的健康运行还需要相应的安全服务支撑。比如,对HCE客户端进行安全测评,规范Visa云端支付。还要对NFC手机进行适配测试,包括适用主流NFC机型、系统版本及CPU架构等。
考虑到“人”这个安全体系里最为薄弱的环节,梆梆安全还提供安全框架、安全设计、安全开发、漏洞监测及响应等安全咨询服务。
移动支付极大的便利了人们的生活,而为了让人们能够快乐的享受移动支付,需要为其提供从“始”至“终”的安全防护。威胁无孔不入,安全更要无处不在。