一、背景知识:
手机网银客户端安全性的评估,主要围绕“窃取用户的账户和密码”进行。常见的窃取网银账户和密码的手段有:网络窃听传输的账户和密码、从客户端窃取用户输入、破译客户端保存的账户和密码。由于目前的手机网银客户端都没有保存密码,所以可能的手段主要集中在前两种。本文主要从这两种情况进行评估。
防范网络窃听的主要手段是传输内容加密。目前的加密方式有很多种,从安全性上从弱到强,有简单字符串变换、对称密钥加密、非对称密钥加密等。网络协议的安全性对传输安全性的影响也很大,不恰当设计的网络协议,极有可能留下安全漏洞,给犯罪分子可乘之机。目前业内广泛采用的SSL 加密协议是公认的安全性最高的商用加密协议。除此之外,也有其它较为简单的加密协议。这部分的评估,本文采用直接评分,采用业内公认可靠性最高的SSL 加密的为5 分,自定义加密协议的为3 分,明文传输账户和密码属于严重的安全隐患,为0 分。
防范客户端窃取密码的主要手段是防键盘钩子、防内存读取。和PC 不同的是,Android 和iOS 客户端程序的输入都必须通过输入法完成,所以如果密码输入调用第三方输入法,极有可能给某些恶意输入法(或者是被篡改过的输入法)机会来窃取用户输入。这种窃取方法不需要特殊的权限,犯罪分子只要包装一个“输入法”即可达到目的,迷惑性强,难度低。目前有部分手机网银客户端已经通过提供自定义键盘来输入密码的手段对此进行了防范,对于提供了此类手段的客户端,我们评分中加2 分。在root 过的Android 手机和越狱过的iOS 手机上,恶意程序还可以通过内存读取直接窃取用户输入的密码。在PC 上常用的防范手段有通过安全驱动底层防注入、通过内存加密增加窃取难度等,但遗憾的是,目前还没有手机网银客户端采取类似措施。在部分手机网银客户端上,采用了自定义的输入框来输入密码,此方法有一定的作用,可以对付通用的密码窃取程序(因为通用的密码窃取程序一般通过控件的类名来判断该控件是否是密码框,对于自定义的密码框,因为类名与通用控件不同,有可能不被窃取程序识别,所以能起到一定的作用)。但如果有专门针对该网银客户端的木马,仍然能读取到内存中的密码,所以这种手段我们只加1 分。我们在中国银行日本版的iOS 客户端上发现,它还提供了越狱检测的功能,发现用户手机已经越狱的话,会给出警告,这个有一定的提醒作用。遗憾的是中国银行在国内的版本反而没有这个功能。
防范网络窃听的安全级别:
1. SSL 加密:最高级别,5 分
2. 自定义加密协议:3 分
3. 未加密:不合格,0 分
防范客户端窃取密码的技术手段:
用自定义键盘输入密码,可以防范键盘钩子:+2 分
自定义密码输入控件,可以防范通用的密码窃取:+1 分