“吉祥生活”项目
商业新知 07/09

中国经济增速逐渐放缓,从投资驱动、要素驱动逐渐转变为创新驱动,随着 信息技术的发展,跨界竞争层出不穷,新型互联网金融产品、服务与机构的出现 对银行造成了较大冲击,银行利润不断下降、运营成本不断攀升、不良贷款反弹 压力加剧。各行将电子银行业务作为银行对抗互联网金融的创新主阵地,纷纷投 入大量资源,丰富和完善电子银行业务,但传统电子银行业务需要依靠柜台签约 开通,在发展范围上受限于实体网点,而直销银行基本限于购买基金、理财等传 统手机银行已有的金融产品,且同质化严重,发展陷于瓶颈。随着互联网环境的 完善及智能手机的推广,我国网民数量迅速增长,截至 2016 年末,我国网民数量已达 7.31 亿人,手机网民规模达 6.95 亿,较 2015 年底增加了 550 万人,网民中使用手机上网人群占比由 2015 年的 90.1% 提升至 95.1%,以招商银行“掌上生活” 为代表的银行生活应用类App 逐渐成为银行服务的新趋势。在提供基础金融服务 的同时,整合各方资源及应用场景,全方位覆盖生活、娱乐、健康、购物的方方 面面,从而实现全生态的服务模式,实现客户与银行的紧密绑定。

农民是“普惠金融”的重点服务对象,随着农村这片“蓝海”被越来越多的 银行所看重,农商银行扎根农村的传统优势将逐渐消失,作为区域性银行,如果 不能打破地域限制,将很难在发展上取得突破。如何在加快自身发展的同时推动 农村金融的大变革、大发展,成为摆在农商银行面前的重要课题。

一、“吉祥生活”App

天津农商银行为应对互联网金融的冲击,于2015年启动直销银行业务的调研,经过深入思考,为适应互联网金融发展形势的需要,提升综合金融服务能力, 2016年初进行“吉祥生活”App的立项工作,并于2016年5月完成系统建设, 上线运行。目前,“吉祥生活”已完成第三次改版工作,页面布局更加合理,操作 更加人性化,天津农商银行配合改版工作启动多项营销活动,进一步扩大了“吉 祥生活”的影响力。

图3—1为“吉祥生活”App的界面截图。

 “吉祥生 活”采用标准的 MVC 结 构,使用成熟框架 springMVC+myba- tis+spring,构建系统平台。目前针对不同的场景提供了三套平台,其中 lla 提供吉 祥生活内容上的管理,lmp 提供吉祥生活后台功能的管理,lop 提供对接第三方的 支付方案。

系统架构如图3—2

二、系统运行安全保障

整个系统搭建之后,首先要从以下几个方面对系统运行安全进行充分的考虑 和验证。

(一)短信劫持的防御或对抗措施

引入动态密码保护方案,结合生物指纹、设备指纹等多维度信息,可在账户、密码及动态密码被盗取时,有效保障客户资金的安全,通过集成设备认证控件在 用户手机上生成密钥,成为“用户数字凭证”,这可以理解成一个唯一的身份 ID, 是根据设备、SIM 卡、账号、App、时间、生物等多维度生成。密钥的生成、更 新、失效等与相关要素有关。认证过程中结合了多种不同的因素,可以提供安全 级别更高的认证结果,同时对安全环境进行清场、有效识别模拟器、调试修改器、 攻击框架,抵御目前常见的攻击手段。设备认证控件 SE技术,在手机终端内创 建可信安全邮箱,综合使用内存保护、存储保护、访问控制、防读取复制等技术模拟硬件 SE 的安全运行,确保静态存储及动态运行时的安全性。即使用户银行 卡信息已经泄露、短信验证码被不法分子截获,该产品也能够有效识别,确保其 无法进行盗转盗刷。所有安全验证的过程是在后端进行的,无须用户在前端进行 额外的操作,不影响用户使用习惯,真正实现安全与便捷的平衡。

(二)集成移动端密码控件

移动端密码安全输入控件是以保障手机 App 密码输入安全为目的而设计的高 强度安全产品,针对账户密码从 App 端虚拟键盘输入、App 数据提交处理,再到 服务器处理的整个环节,移动端密码安全输入控件提供三重安全防护保障,实现 账户密码全程安全防护,彻底切断黑客对密码的窃取途径。移动端密码安全输入 控件分为 iOS 和 Android 两个客户端版本。

(三)防反编译

反编译是将目标代码转换成源代码的过程,手机 App Android 客户端存在反 编译的风险,不法分子可以通过反编译安装包,研究手机 App 采用的安全策略和 通信报文,进而发布修改后的安装程序供客户下载安装,或者伪造交易报文,以 达到窃取客户资金和个人信息的目的。为防反编译我们采取了以下几种措施。

1. 代码混淆

代码混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与 处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也 很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指 令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的 名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的情况下,即使 被反编译,也将难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正 常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。

代码混淆不能阻止 XML 文件被反编译,混淆的只是代码。这种技术并不能 真正阻止反向工程和保护源代码的安全,只是增加反编译的难度。混淆后的代码 经过有丰富经验的程序员分析还是可以得到一些信息的。

代码混淆技术可以有效地提高反编译的技术门槛,尤其是手机 App 这种规模 较大的应用程序,经过代码混淆后不法分子要分析理解程序是比较困难的,通过 其他一些安全手段的综合使用,可以有效地防范客户端风险。

1. Android 加壳

加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制 权,做一些额外的工作。加壳的程序可以有效阻止对程序的反汇编分析,这种技 术也常用来保护软件版权,防止被软件破解。

加壳是一种 DEX 文件(Android 平台上可执行文件的类型)的保护方法及装 置,弥补了代码混淆的缺陷,加壳思路如下。

(1)将待保护的 DEX 文件进行反汇编处理,得到中间文件即 smali 文件,使 用已知的第三方反汇编工具(如 Baksmali 反汇编器)对待保护的 DEX 文件进行 反汇编处理,从而在反编译工程目录下生成一个 smali 文件夹,里面存放着所有 反编译出的 smali 文件,这些文件会根据程序包的层次结构生成相应的目录,源 码中的类都会在相应的目录下生成对应的 smali 文件。

(2)将 smali 文件中待保护的指令进行隐藏处理,得到受保护的 smali 文件。 隐藏处理是一个概称,目前包含三种有效的隐藏手段:一是代码乱序处理,即将 原始程序的执行流程进行乱序排列;二是指令虚拟处理,即将关键指令的功能提 取到二进制文件中执行;三是代码抽取处理,即将代码进行分层存储。

(3)使用已知的第三方汇编工具(如 Smali 汇编器)将受保护的 smali 文件进 行汇编处理,得到受保护的 DEX 文件。

经过处理的 DEX 文件不论从指令及代码逻辑方面都变得更加难以识别,极大 地增加了 APK 程序逻辑的分析时间成本以及分析难度,进一步提高了程序代码的 安全性,有效地满足了 Android 应用程序对抗静态以及动态逆向破解的需求。

(四)客户端自校验
自校验的目的是防止程序被恶意病毒篡改,或者被别有用心的人对原有程序稍做修改后重新打包上传分发给他人使用。手机App 应用服务系统支持客户端自 校验。以下是几个系统自校验的具体说明。

1. 安全证书支持

为提高信息传输的保密性,保证数据交换的完整性、发送信息的不可否认性、交易者身份的确定性,移动应用平台的手机客户端软件支持 X.509 证书。证书的 生成与发放可以通过以下的流程来实现。

(1)服务器认证与加密通道的建立。首先将银行公钥证书打包在客户端中, 内置的这个公钥证书可以用来认证银行服务器,这样就可以支持用户下载银行公 钥证书,客户端也可以直接使用这个公钥证书和服务器协商密钥,协商后的密钥 用来加密信道和动态加密信道中的敏感信息。

(2)具体过程。客户端在向服务器申请建立会话前,将生成客户端的随机数 A,然后用银行公钥对随机数 A 执行加密,这样加密后的随机数 A 只能被银行服 务器的私钥来进行解密,确保数据安全同时验证服务器的身份。服务器通过私钥 解密得到客户端的随机数 A 的同时生成一个服务器随机数 B,然后通过客户端随 机数 A 执行对称加密服务器随机数 B 返回客户端。客户端接收后通过自身的随机 数 A 对称解密后即可得到随机数 B。此后,随机数 B 将作为客户端与服务器端传 输加密的协商密钥,服务器认证与加密通道建立完毕。

(3)用户认证与用户私钥证书的发放。在用户首次使用客户端软件时,使用 标准数字证书申请流程,生成 PKCS10 证书请求文件,并将此文件发至后台服务 器。服务器调用 CA 中心接口签发用户证书,并将保存在本地用户数据库中;随 后,服务器将用户证书返回到客户端。客户端接受后,将证书使用用户密码加密

(例如使用 AES256)后,保存在本地存储中。初始化后,每次用户 时,客户端要求用户输入密码,并使用该密码将保存的用户证书解密。随后,客户端使用解密 的证书向后台发送请求,后台利用保存的用户证书验证用户身份。

2. 访问安全控制

仅向外部提供一个交易请求接口,所有交易必须通过该接口才能进行。在请求进入时,检查请求 Session 是否合法,数据加密是否通过,从而有效防止非法请求。

3. 会话超时控制 设定会话时间,当用户长时间未操作(未访问)达到系统设定的超时阈值时,

系统会对该会话进行失效处理。

4. 表单输入校验

对用户从表单输入的数据进行服务器端校验,防止用户提交非法数据或表单 数据在提交后被篡改。

5.SQL 注入过滤

后台业务系统通过全面采用 PreparedStatement 方式,且将 SQL 和输入输出参 数分开,从而以防止 SQL注入攻击。

6. 关键信息加密存储

对于关键信息(如密码),采用加密密文进行存储,防止行内用户读取明文信 息。用户退出手机 App 时系统将自动清除本地缓存,保证用户交易、账号密码等 关键信息只在安全信道建立完成后加载,增强系统安全。

7. 安全日志记录

手机 App提供从登录到交易的包含与安全有关的完整日志记录,为安全事故 提供可追溯的依据。

行内人员可通过内部管理查询客户的可疑日志(如密码连续错误导致客户被 冻结等),并通过客服系统或统一消息平台等渠道向客户发出通知。

三、所做工作

 为提升“吉祥生活”项目的系统性能,我们做了以下工作。

 (1)为了提高应用系统响应速度,把热点数据保存在内存中。提供在多个 Redis间节点间共享数据,减少与持久层的交互。

(2)采用多台应用服务器通过负载均衡技术共同提供服务只是从系统结构和应用 服务器的角度提供了系统的高可用性。

(3)反向代理服务器上运行一个负载均衡器,把流量平均分配给一堆应用服务 器。由于负载均衡器的引入,在增加应用服务器时可以完全不用修改应用程序。

(4)缓存静态文件,直接请求的文件,如图片或者静态资源,存在反向代理服务 器上,并直接发送给客户端,这样可以更快地提供服务,分担了应用服务器的负载, 可以让应用执行得更快。

(5)采用队列和异步线程机制,将大量操作加入队列中,由单独的线程进行异步 的执行,节约系统连接数,提升用户使用连贯程度。

(6)应用线程池技术有效减少多线程环境中资源的消耗,提高系统的处理能力。

(7)应用异步 IO 技术提高系统读写能力。

“吉祥生活”是基于电子账户体系打造的一款集生活服务、特色电商、金融服 务于一体的应用 App,通过在“吉祥生活”注册并绑定天津农商银行或他行银行 卡的方式可以完成生活缴费、交通罚款缴纳、手机话费及流量充值、“优农乐选” 商城购物、传统金融产品购买等,还可以像微信、支付宝一样在实体商户实现扫 码支付。同时,通过人脸识别和 OCR识别有效地控制了业务风险。截至 2017 年 9月末,“吉祥生活”累计注册客户数 80 余万人,其中超过 1/4 客户绑定了本人银行卡,绑卡客户中接近一半为他行卡客户。绑卡客户平均年龄 35.5岁,较天津农商银行客户平均年龄低 9.4 岁。电子账户余额 7800 万元,实现定期存款余额增长 650 余万元,拓展扫码商户约 5 万,扫码商户资金余额超过 12 亿。

通过“吉祥生活”App 的建设和推广,天津农商银行打破了地域和时间的限 制,实现了远程获客及非面对面获客,同时为客户提供 24 小时全天候自助服务, 使客户以合理的成本获取了广泛的金融服务;通过对“吉祥生活”扫码商户的拓 展,优化了农村地区电子支付的受理环境,提升了金融服务的覆盖率;借助吉祥 生活内嵌“优农乐选”农产品商城的建设,扶持了当地农户、为他们提供了特色 农产品的销售渠道,同时,采集农户的销售数据、信用记录,进而使利用大数据 分析为其发放贷款成为可能,间接解决了农户贷款难的问题。


作者 :天津农村商业银行     齐劲松


本文由新知号原创发布,转载请注明来源。
联系方式:system@shangyexinzhi.com
2000+知识点 7000+案例
商业新知助力数字化转型
下载