冯旭杭:手机银行安全风险研究与应对

03.06.2015  19:07

  一、手机银行概述

  手机银行是利用移动通信网络及终端办理相关银行业务的简称,作为一种结合了货币电子化与移动通信的崭新服务,手机银行业务不仅可以使人们在任何时间、任何地点处理多种金融业务,而且极大地丰富了银行服务的内涵,使银行能以便利、高效而的方式为客户提供传统和创新的服务。而移动终端所独具的贴身特性,使之成为继ATM、互联网、POS之后银行开展业务的强有力工具,越来越受到国际银行业者的关注。在中国,随着智能手机的普及和手机上网速度的提高,手机银行已经被越来越多的人所认可。

  然而在便利、高效的背后,制约手机银行发展的最大因素就是信息安全,而实现手机银行普及的最核心因素也正是信息安全问题。如何切实保障手机银行的信息安全,并让广大使用者接受手机银行是安全的重要理念,是摆在各家银行以及各大监管机机构面前的一项重课题。

  二、手机银行普遍采用的安全控制措施分析

  通过调研分析,我们总结了手机银行现有的安全控制措施可以分为以下几种方式:1、签约机制,如果客户持本人有效证件原件及账户凭证(卡或存折)到账户所在地的银行营业网点进行身份认证,签署相关协议,并经银行认证后,此类客户才成为手机银行的签约客户,签约客户可享受手机银行提供的全部服务,包括转账、汇款等业务。2、手机号码与账号绑定,用户使用手机银行服务时,必须使用其开通手机银行服务时所指定的手机号码,也就是说只有客户本人的手机才能以该客户的身份登录手机银行,他人是无法通过其它手机登录。3、密码控制,以及验证码、密码尝试次数锁定机制,手机银行系统在采用安全通道进行信息交互的基础上,在客户登录前将由服务器产生图形附加码传至手机上便可有效地防止自动尝试密码、避免黑客的试探性攻击,从而保证手机银行交易平台的安全。登录手机银行系统时需要输入的登录密码。客户号和登录密码是手机银行进行客户身份验证的一个重要环节,银行先进行用户密码的验证,若密码错误,交易终止。为防止有人恶意试探别人密码,系统设置了密码错误次数日累计限制,当达到限制时,将设置该客户手机银行服务为暂停状态。另外,客户每次退出手机银行之后,交易信息和账户密码等内容只保存在银行核心主机里,不会因为手机丢失而影响客户的资金安全。4、认证和加密技术,为确保手机银行的安全,多数银行在技术层面采用了多种先进的加密手段和方法来建立安全通道,从而使手机银行整个数据交互全程采用端对端的加密数据传送方式。5、使用动态密码,动态口令是一连串定期变化着的银行密码,动态口令卡是动态口令的载体,口令卡上以矩阵的形式印有若干字符串,只有拥有口令卡的用户才能拥有最新更换后的密码。

  三、手机银行现有安全控制措施的不足

  手机银行业务是一项系统性的业务,虽然多数银行已经采用了上述安全控制措施,但仍然存在着以下风险。

  1、业务组件本身的安全:如手机银行APP的安全是非常重要的,应用本身的安全性应该得到切实的保障,现有的安全控制措施多数未提及。

  2、业务过程的安全:手机银行业务是动态的,数据的传输经过很多环节,安全的核心是敏感数据的传输和存储以及身份验证,现有的加密算法大多数是公开的,身份验证机制基本上没有采用硬件方式,不能满足高安全性的需要。

  3、异常场景的使用:手机银行运行的介质是智能手机,智能手机相当于一台电脑,智能手机可能会中病毒和木马,手机也可能更换、丢失或维修,在这样的异常场景发生时,现有的安全控制措施显然做的不够。

  4、安全技术的发展:信息安全技术日新月异,针对手机银行的攻击手段也发展的很快,如重放攻击、截屏攻击、钓鱼攻击、中间人攻击等方式可能对现有的安全控制措施造成威胁。

  全面的分析手机银行的安全风险是保障手机银行安全的基础,针对上述的情况,以下提出几种手机银行安全风险分析的方法。

  四、手机银行安全需求分析

  1、基于业务组件的分析

  简单来说,手机银行的组件包括客户端APP、服务端和通讯线路,基于业务组件的分析就是分别对这三部分进行安全需求分析。

  (1)从生命周期角度控制客户端APP安全

  任何软件开发都会经历开发、测试、上线、更新和消亡的过程,手机银行APP也不例外,开发阶段可能存在编码安全风险,需要建立开发规范;测试阶段需要进行严格的安全测试;上线前需要经过专业的安全检测机构进行测试,手段包括代码审计、渗透测试等;软件更新需要遵循更变规范,分发使用时需要确保应用的完整性,在用户删除软件时不能留存敏感信息。

  (2)确保服务端的安全

  手机银行在重视客户端安全的同时,不能疏忽服务端的安全,服务端通常需要确保逻辑安全、会话控制和防攻击,其中对于暴露在互联网上的服务器要做到防止利用接口的攻击、拒绝服务攻击以及SQL注入等攻击。

  (3)采用硬件认证和安全加密算法保障通讯安全

  基于互联网的不安全性,必须采用安全的加密算法和密钥管理体系,软件本身的数字签名技术也存在着一定的风险,基于安全控制模块等硬件的数字签名技术会安全许多,另外公开的加密算法或多或少存在被破译的风险,建议采用商密级的未公开加密技术。

  2、基于业务过程的安全分析

  我们可以把手机银行的业务流程归为两个过程,分别是初始化过程和交易过程。

  在初始化过程中,可能存在下载了不安全的客户端APP的风险,造成钓鱼攻击或窃取信息,需要对客户端APP进行完整性校验或客户风险提示;同时手机的运行环境安全也是非常重要的环节,在下载应用前或使用后手机可能被植入病毒木马。这就需要做到对手机环境的扫描检测或告警,尤其是手机系统是否被Root,以及客户端APP的防逆向和防篡改。

  在交易过程中考虑到手机环境的不安全,需要对输入法进行控制,宜用自带的随机干扰的输入法,通过规避按键的屏幕显示效果,使得黑客无法自动获得相关数据,建议使用数据干扰等防御模式,可以有效的使得黑客的内存攻击无效化,在内存中不存储明文的敏感数据,任何针对内存的攻击都无法获得敏感信息的明文。

  3、基于场景分析的安全分析

  既然手机银行安全事件的发生都是伴随着非正常因素,那么针对可能的异常场景的分析就能有助于发现一些潜在的安全隐患。例如场景一:下载非可信APP:安全风险主要体现在钓鱼,信息窃取,攻击的本质是针对业务的攻击。场景二:手机病毒木马,安全风险的主要体现是信息被窃听,或者信息被篡改,以及保存的信息被窃取泄露,本质风险在于存储安全,客户端APP自身安全和数据安全。场景三:手机遗失,安全风险主要体现在身份的冒用,认证风险等。场景四:不安全的网络环境,例如公共wifi下,传输数据可能会被窃听和篡改,所以需要相应的加密手段来解决。场景五:恶意补卡:可能会面临恶意补卡的攻击,实质上也是基于业务层面的安全风险。

  4、基于技术攻击的安全分析

  手机操作系统以Android为例,生产出的手机在出厂后都是不具备root权限,虽然用户在使用时会有诸多限制,但也带来了安全。手机root后会带来很多安全隐患,例如很多用户在root手机这个过程中很可能误删系统重要文件,导致系统运行不稳定或损坏。系统不稳定会对包括手机支付在内的应用程序和功能造成较大影响,再者手机root后所有软件都能够获取root权限,这无疑给手机病毒带来了更多“发挥空间”,恶意软件将不会直接申请需要使用的权限,所有特定的功能病毒都可以在root权限下完成。此时,恶意软件可以轻易的通过root权限获取手机支付应用私有目录下的信息,例如数据库文件、日志文件、通信内容、按键记录等,而且每个Android软件在安装后都有一个属于自己的程序目录,软件中的所有私有数据都存放在这个目录下,用户与其他软件都没有访问权限。一旦手机root后,这些数据就会全部暴露出来,例如网银账号与密码、IM类软件的聊天记录,这些数据一旦泄露,用户可能面临巨大的损失。此外,键盘监听、截屏攻击、重放攻击无不与手机被root后中了病毒或木马相关。

  五、关于手机银行信息安全保障体系

  根据上述分析结果,我们得出了手机银行安全保障的要点,主要集中在以下几个层面:移动终端层,网络层,服务层和业务层面,每个层面安全保障的关注点和安全技术措施也都不一样,所以结合我们以往做手机银行安全的经验及措施,将手机银行的信息安全解决之道进行总结如下:

  1、移动终端层

  终端环境安全角度需要对客户端环境进行检测,包括特权检测,如APP下载时检测系统是否被root,提示风险,进行病毒检测,启动APP时扫描手机病毒及木马,同时需要实现应用隔离,保护APP私有数据不被其他软件非法利用,安全控制模块方面主要从硬件合规,安全检测,访问控制及数字签名四个方面在满足金融行业各类规范的同时,避免越权访问,保障交易数据的完整性真实性和抗抵赖性。数据传输采用非公开安全的加密算法。在自身安全方面APP软件必须遵循开发规范,不应暴露任何影响自身安全性的外部接口,同时采取有效的干扰措施增加对代码静态分析的难度。

  2、网络层

  安全加密:APP应使用安全协议保证与后台服务端通信的秘密性、完整性和真实性,APP与后台服务端建立连接时应进行双向认证,同时对密钥长度进行安全性限制。目前几乎所有设备都需要连接网络,且WIFI环境越来越好,存在许多免费公共WIFI,钓鱼WIFI也隐藏在其中。针对WIFI钓鱼,在部分路由器支持的前提条件下,需验证路由器是否使用的是默认密码,以及DNS是否被篡改,DMZ服务是否开启,以判断检查路由环境是否正常,杜绝钓鱼等安全隐患。

  3、服务器层

  除传统服务器层面安全防护以外,需关注的安全重点在于1、逻辑控制:严格控制水平权限,垂直权限之间的管理,避免出现越权行为的操作。2、会话管理:确保会话表示的唯一性,随机性和不可猜测性,会话过程维持认证状态防止非授权访问,同时,对超时会话自动终止,同时对整个会话过程以及相关攻击行为可以进行审计。3、WEB攻击防范:在服务器端对提交的数据进行有效性,完整性进行安全检查,避免提交的数据被修改,并过滤其中的非法字符,并对输出的数据进行安全处理,周期性进行服务端源代码审查,通过安全加固对安全接口进行安全验证,避免未授权的接口调用。

  4、业务层

  业务层面,主要是针对用户自身账号安全以及交易安全,可采用硬件绑定,图形验证码,短信验证等方式对用户合法性进行验证,针对会话安全可通过认证超时等方式进行安全保障。结合手机支付的业务特点,需要对用户访问的网址进行检测。检测当前系统中具有网页浏览功能的软件及访问的网址,保护用户的上网安全,若发现存在欺诈、钓鱼、木马等恶意网址时,以弹窗形式提示用户并由用户自主中止或继续访问该网址。

  六、结论

  手机银行安全风险是复杂和动态的,任何一种单一的风险分析方法得出的结果一般也是片面的。我们通过四种风险分析方法综合得出的手机银行的安全风险,尤其是基于场景分析的方法是非常符合现实情况的,具有典型意义。在此基础上,以切实可行的具体方法来应对手机银行的安全风险。