硬核 | 凡泰极客发布私有云小程序技术白皮书,助力金融机构入局小程序生态


  • administrators

    背景

    从 2017 年初,微信创始人张小龙宣布小程序正式上线开始,很多行业都在摸索着开发小程序,且取得了不错的成绩,小程序已经生长出一个相对完整的生态圈。在轻应用混战的当下,小程序已经成为巨头们角逐的焦点,支付宝、百度、今日头条、京东都先后发布各自的小程序生态平台。

    0_1582855741791_0a874a91-dd94-4768-865e-747bc8125d6f-image.png

    在小程序爆炸性发展的前景下,可以在外部App上运行的小程序平台,开发者一次开发就可以多端运行,开放小程序生态的诉求变得越来越强。小程序在券商业内开始得到应用是顺应了某些需求,“这些年,各类券商APP在功能上不断做‘加法',导致APP越来越重、功能越来越多,而有的用户可能觉得返璞归真更好,或许现在是到APP试着做‘减法’的时候了。”

    打造金融业小程序生态

    券商APP开始试水微信这样的第三方小程序平台模式, 改变了原先把APP外包给第三方的模式,并在证券行业中率先引入了小程序平台,以支持公司在金融创新业务上的各类尝试,同时又不会影响到行情和交易模块的稳定性。实现了高度模块化,让敏态模块和稳态模块各自独立、互不影响,既保证APP在业务服务上利用小程序的灵活性快速试错、迭代,也能保证行情交易等基础服务的稳定性要求,让产品升级变得更为便捷。本白皮书提出的方案,是把它实现成一个“小程序运行时”,即借鉴腾讯、百度等公司的相关技术,建立一个类似于微信小程序的平台,公司一些业务办理功能和创新业务的尝试都会以小程序的形式在APP上发布,用户无需更新APP,就可以获得最新服务。

    腾讯通过其微信平台率先引领了小程序技术,阿里、百度、头条等互联网巨头均陆续跟进,各自发展出自己的小程序生态,让自己的平台更加生态化、更加开放。本文所提出的方案,可视为在这些互联网巨头之外的另外一个具有证券业合规监管属性的类似生态。

    相比纯粹的HTML5内嵌,小程序类技术有一些显著的优势:

    一、性能更佳,页面渲染不基于DOM而是通过WebView堆栈中的多个实例切换实现页面转换;尤其是在Android端,运行时通常可自主控制采用性能更高的Chromium而不是系统缺省的WebView进行界面渲染;
    二、业务功能独立上架到服务器端经合规审批才发布,出现任何问题可以随时下架;
    三、可以在即时通讯技术中进行分享、转发,真正促进人与人基于场景的交流;
    四、极其松散耦合的架构,释放金融机构生产力 — App的原生部分可以做得非常稳定、简单,因为业务功能都以轻应用的方式独立在App之外实现。

    下文将详细介绍凡泰小程序技术标准与平台。

    1、术语

    0_1582855585237_术语.png

    2.总体架构

    凡泰小程序开放平台借鉴目前主流微信小程序、支付宝小程序等互联网成熟的小程序技术方案,再结合中国证券行业的合规监管的业务场景,逐步的发展起来。它由凡泰小程序SDK、凡泰小程序管理中心、监控与合规工具以及小程序云端运行环境共同组成。

    它同时也是一个生态性的协作平台,可以由金融机构本身、SDK的提供商、小程序开发者(通常为金融机构的IT人员或其指定合作伙伴)、合作渠道(通常提供了SDK嵌入的“宿主”)进行协作。

    0_1582855788765_7d6873c8-e401-4559-9285-a26efadb6f58-image.png

    总体架构包括:

    • SDK - 通用SDK开发包,提供给App(“宿主”)进行打包
    • 为应用提供安全沙箱机制,保证嵌入应用的安全性
    • 兼容微信小程序和一般H5应用
    • 完全继承小程序“用完即扔”,轻量小巧的特性
    • 小程序 – 业务应用以小程序的形式发布到金融机构自有小程序应用中心 (应用商店的模式)
    • 持牌机构小程序开发团队计划嵌入到App中的业务应用采用微信小程序的形式发布
    • 小程序与相应的业务后端系统协同完成特定的服务
    • 小程序应用管理中心- 成立小程序应用管理中心
    • SDK开发/维护/升级/安全
    • 运营小程序应用中心
    • 宿主App应用证书签发管理
    • 小程序SDK证书管理
    • 提供运营统计数据、运营支撑
    • 小程序开发管理

    下图是凡泰小程序技术架构的示意图,最上面是主要的4个场景入口,开发者可以根据自己的业务场景运营这些场景入口,把这些入口的流量充分利用起来。中间框内的是小程序的核心引擎,上面是对开发者提供的基础组件和基础 API 能力,开发者根据这些组件和 API 来开发自己的小程序,满足用户的需求。

    0_1582855834496_461487df-59f1-4adf-aa48-44c65a577b17-image.png

    小程序前端框架这块借鉴了主流前端框架Vue的设计思路,从小程序的应用形态,提供了简洁的编程模型,定义了一套组件和 API 接口的规范,降低了学习门槛,方便开发者快速开发小程序。在小程序框架内部提供了小程序的生命周期管理,通过事件的方式把小程序每个阶段都注入到小程序里面,开发者可以通过这些事件来处理小程序每个阶段需要完成的业务逻辑。同时框架内部使用了虚拟 DOM 来处理页面的每次更新,提升了页面的渲染性能。

    前端框架下面是小程序Native引擎,包括了小程序容器、渲染引擎和 JavaScript引擎,这块主要是把客户端 Native 的能力和前端框架结合起来,给开发者提供系统底层能力的接口。在渲染引擎上面,凡泰小程序不仅提供 JavaScript + WebView 的方式,还提供 JavaScript + Native 的方式,在对性能要求较高的场景,可以选择 Native 的渲染模式,给用户更好的体验。

    示意图左边和右边分别是面对开发者提供的研发支撑和运维支撑服务,可以帮助开发者更有效率的开发小程序,在上线后也提供众多的工具帮助开发者管理和运营线上的小程序。

    2.1 凡泰小程序运行时与安全沙箱SDK

    凡泰小程序集中行业力量打造并维护一个通用的、安全可靠的、App接入SDK 及与之配套的应用技术规范, 明确持牌机构、App渠道和机构服务组织的角色关系, 促进机构小程序应用生态的健康有序发展:

    对持牌机构,可以:

    • 直接使用通用SDK,不需要投入研发资源,自行开发安全沙箱
    • 基于应用小程序规范,一次开发完成后,即具备与多家App对接的能力
    • 自主控制与App渠道的业务合作关系,可以自由、灵活的控制是否允许App渠道访问小程序服务

    对App(“宿主”)提供者:

    • 只需要对接调试一次
    • 极大降低与机构的合作实施难度 (只需要进行UI 层面的整合)

    SDK的主要功能包括:

    • 安全沙箱,保护沙箱中的H5应用和小程序应用不被宿主App干扰、窃听
    • 运行环境,提供在宿主App内安全执行小程序/H5应用的环境
    • 合规留痕,在法律框架内为H5/小程序提供合规留痕所需要的设备识别信息
    • 支持第三方以SDK插件形式扩展SDK服务API (如智能音识别插件等)
    • 指标采集,应用性能指标(APM)

    SDK为业务代码提供一个封闭的安全沙箱,有效对抗外部代码的干扰和数据泄露风险;第三方App只能通过SDK暴露的接口启动SDK, SDK完全管控对业务代码所需要的运行环境以及业务代码所有对外通信,可以通过多种机制保证网络通信不被拦截和干扰;SDK内部使用独立的浏览器内核,运行环境与系统浏览器完全隔离 (在Android上)。

    0_1582856000136_b5b0ac34-2444-4033-b9a7-ad7a4bea44e5-image.png

    2.2 凡泰小程序管理中心

    凡泰小程序管理中心是搭建在金融机构私有化机房上面的小程序服务平台,是面向金融机构、全生态的中心化平台。通过管理中心,金融机构不同利益诉求者可以达到多方协同、互利共赢的生态平衡。
    凡泰小程序管理中心的运营者,扮演类似腾讯在微信小程序世界里的角色,履行对上架的小程序进行审核、管理、监管的职能,业务上中立,充当证券业数字化生态的促进者、赋能者。由于是私有化在金融机构内部机房其满足金融信息系统安全合规要求,其数据隐私保护承诺,高于微信、支付宝、百度、字节跳动的类似生态。

    下图以金融机构管理者角度,说明其多方协作原理。

    0_1582856200000_2a95443c-d9d7-4326-8f30-1cad9db9b25a-image.png

    凡泰小程序管理中心运营者:

    • 对金融机构的开发者账户进行开立与管理
    • 对金融机构所申请上架的小程序进行审核
    • 对金融机构潜在违规或有技术缺陷、安全漏洞的小程序进行下架
    • 响应合规请求,对任何存在潜在技术与合规风险的小程序进行实时下架,从而杜绝任何第三方入口带来的风险
    • 对符合凡泰小程序运行标准的SDK进行审计、认证、颁布。SDK可以由多家开发商提供,但是需符合隐私保护、信息安全、合规管控等方面的要求。并对符合要求的SDK颁布进行数字签名以保障该SDK是安全、无后门、未经污染的版本。任何采用SDK的机构,均需从凡泰小程序管理中心下载官方颁布的版本

    金融机构开发人员:

    • 到小程序管理中心申请一个开发者账户(类似于申请微信小程序开放者账户)
    • 让IT人员把希望嵌入到第三方合作伙伴网络空间(例如一个App)的代码,以H5或者类似微信小程序代码规范的方式进行开发,打包成凡泰小程序
    • 提交至凡泰小程序管理中心,通过凡泰小程序管理中心提供的“小程序开放助手”工具进行测试
    • 测试无碍申请上架发布
    • 小程序的服务器端代码开发、运维部署,这与当前微信小程序的开发生态无异

    金融机构APP终端:

    • 在凡泰小程序管理中心,下载 “凡泰小程序引擎开发组件”(即含有安全沙箱及凡泰小程序运行时的SDK)
    • 把该SDK打包至自己的App
    • 在App的某处,提供一个能点击打开该金融机构小程序的入口,其用户在首次点击时,该小程序将从凡泰小程序管理中心远程加载至本地,由SDK进行渲染执行。该小程序通过SDK所的网络黑白名单设置,连接到此前金融机构所提供的服务器端地址
      凡泰小程序管理中心是凡泰小程序生态与开放平台的核心组成,应由金融机构私有化基础设施服务机构负责运行与管理。

    3.凡泰小程序生态

    凡泰小程序作为一个证券行业的小程序开放平台,通过建立标准与规范把多个参与方融合在一起,共同构建一个既开放又合规可控的数字化生态。

    0_1582856310614_77465568-0b22-4f55-a1e3-4abf5d39a8f2-image.png

    此生态的主要参与者有以下各方。

    3.1 小程序中心运营商

    如前所述,小程序中心运营商由金融机构基础设施IT运营人员进行管理,对整个小程序管理中心承担运营、管理、维护职责,其职责范围包括:

    • 维护小程序管理中心的软件服务功能,确保多方可以正常、高效地在平台完成业务诉求
    • 进行审核管理,包括小程序上下架审核等
    • 拓展小程序管理中心的参与者,让更多开发人员加入凡泰小程序生态
    • 维护凡泰小程序的健康生态,确保小程序生态符合监管需求

    0_1582856474835_向.png

    运营商负责对小程序上下架进行审核,确认小程序的安全合规;

    1. 根据平台运营规范和国家法规,对已提交审核的小程序的基本信息、代码、页面内容进行安全合规审查;
    2. 通过平台的公告和文章,及时向开发者同步平台功能和SDK的更新情况,为开发者提供更优质的服务;
    3. 定期监控和统计平台的小程序数据,分析平台稳定性和运营状况,不断完善平台功能和制定新的运营方针。
      3.2 小程序开发者
      小程序开发者以金融机构为主,可以在小程序管理中心中完成以下业务:

    0_1582856575343_屏幕快照 2020-02-20 下午3.09.08.png

    以核心的小程序上架为例,金融机构若想成为小程序平台的开发者并开发上架小程序,需要在平台上申请企业账号并按照下图的流程完成小程序的开发和上架。

    0_1582856596435_屏幕快照 2020-02-20 下午3.09.44.png

    1. 创建小程序:开发者可在平台创建小程序,获取小程序APP ID;
    2. 下载开发工具:小程序平台兼容微信小程序,推荐使用微信开发者工具进行开发;
    3. 配置服务器:开发小程序前需要配置服务器域名以确保小程序能够正常访问服务器;
    4. 开发小程序:建议参考本平台的开发文档或微信开发文档进行开发,如需使用第三方框架,推荐使用mpvue或Taro进行开发;
    5. 上传代码包:小程序开发完成后可在平台中上传代码包进行编译,并可以下载平台提供的测试助手APP进行功能的测试;

    0_1582856632500_J7.png

    1. 提交审核:小程序上架前,开发者需要完善小程序的基本信息并提交至运营方进行合规审核;

    0_1582856655577_J8.png

    1. 上架小程序:审核通过后,小程序的上架由开发者自行控制,运营方仅负责上架前的合规审核;

    2. 关联应用:开发者需要将已上架的小程序关联至APP应用,当两者关联后,用户才能在APP应用中打开小程序。

    0_1582856685713_J9.png

    3.3 小程序引擎SDK提供商

    凡泰小程序引擎SDK主要负责小程序运行时环境构建与隔离、第三方App的身份校验、小程序代码的更新与版本管理、小程序的网络访问控制及其他权限控制、小程序的行为监控等功能。

    提供SDK的厂商,必须遵循以下准则来保证小程序引擎的安全性。

    • SDK自身需要对抗篡改/跟踪/逆向工程的能力。小程序引擎需要运行在第三方App内,要保证自己不被第三方破解导致SDK被篡改或跟踪。对于破解/逆向工程,SDK核心代码需要使用C/C++/Object-C实现,提高反编译的难度,同时对其他代码进行混淆处理,提高反编译后的破解难度;对于篡改SDK的攻击方式,SDK需要提供签名的哈希值并在运行前校验代码的完整性;对于跟踪行为,SDK需要尽量运行在单独的进程中,与宿主App保持隔离。
    • SDK需要与宿主App保持隔离。为了保持小程序引擎的独立性,SDK需要运行在单独的进程/线程中。这样既可以保证小程序引擎作为沙箱的独立性,避免一些行为被宿主应用监控,同时隔离的进程也避免SDK与宿主App发生异常时相互影响。
    • SDK需要完善的安全测试流程来保障健壮性。SDK提供商需要组织专门应用安全团队/外部安全服务商对SDK不同版本进行安全测试和攻击测试, 及时修正安全漏洞, 发布新版本
    • SDK需要数据监控能力。SDK要将小程序引擎的运行状态等行为数据和性能数据定时上报到服务中心,以便服务中心对小程序引擎的使用情况进行监控。服务中心通过对大量SDK激活和使用情况的监控,可以及时感知SDK版本异常和行为异常并作出快速反应。SDK要拥有远端控制引擎的能力,当某个版本的SDK出现漏洞时,通过集中式的控制,在服务中心端限制某些有安全漏洞的SDK版本的特定功能,包括完全停用
    • SDK运行时接管所有对外网络通信。在小程序的WebView中禁用了传统DOM的访问和网络访问的API(XMLHttpRequest),所以小程序无法直接发起网络请求,小程序对外网络通信均必须通过SDK提供的API完成。SDK提供的API对小程序的网络请求进行了过滤和拦截。小程序必须在管理后台配置IP地址/URL,小程序启动时运行时会加载小程序配置的域名信息并限制小程序只能访问对应的域名或IP
    • SDK不应收集运行在其中的小程序的业务场景相关信息,包括但不限于用户行为数据、交易数据、账户数据、以及小程序提供者(金融机构)的任何商业内容
    • SDK不应收集其所处于的外部环境(“宿主”)的相关信息,包括但不限于宿主的用户行为数据和其他隐私数据
    • SDK需遵循国家等级安全保护标准

    SDK引擎提供商的职能应包括:

    • 专职团队对SDK进行开发更新维护
    • 根据业务场景的需求对SDK进行定期升级
    • 负责SDK的安全漏洞检测和对第三方App开发团队的安全/更新提示
    • SDK官方下载页面和数字指纹 (MD5/SHA Digest)
    • 通过SDK在线验证服务,确保不符合安全要求的SDK版本在指定期限内停用
    3.4 小程序SDK插件提供商

    SDK本身只是一个隔离的、安全的小程序运行时。与微信、支付宝不同,它出厂时并不知道自己将被打包嵌入到什么“宿主”环境中,所以它无法预先内置一些原生的技术能力。这些能力,可以插件的方式,由“宿主”自行选择,注入到SDK中,从而让运行其中的小程序获得对该些扩展能力的调用。凡泰小程序生态应欢迎任何有能力的开发商参与进来,一同打造一个开发、多元的生态系统。

    一些证券业常用的插件包括:

    • 用于开户的语音、视频双录技术
    • 语音识别、人脸识别技术
    • 自行开发并开放API接口,允许小程序通过API调用的方式获得特定服务,例如证券行业中高频使用的行情功能
    • 其他因业务场景所需的设备端原生功能

    与小程序引擎SDK提供商相同的是,所有开发出来的插件均需通过运营方审核,只有在代码安全、业务合规的基础上,方可在凡泰小程序管理中心中上线。

    0_1582856783253_屏幕快照 2020-02-20 下午3.12.35.png

    3.5 小程序上下架审核管理者

    小程序上架审核管理者可以金融机构IT运营管理职能部门负责,其职责是对小程序上架进行审核,确保其安全性、合规性。

    管理职能包括审核小程序的名称、图标、简介等信息是否符合应用基本信息规范,审核小程序的内容是否存在恶意营销、违法犯罪、血腥暴力等违反平台规范和国家法规的内容。

    3.6 小程序云端服务提供商

    金融机构可以选择把自己的小程序服务器端托管在行业云提供商(例如深证通)机房,行业云提供商需具备高规格的基础设施托管环境,保障客户系统安全稳定运行,且需满足合规监管诉求。

    金融机构也可选择仅把小程序的前端入口(例如API网关)或部分服务部署在云端,通过VPN、专线等任何方式再连接到自己内部的机房。

    金融机构也可以选择完全在自有机房部署服务,不采用任何金融云服务商的资源。

    3.7 多方协同的行业数字生态

    凡泰小程序生态是由多方协作、各司其职、共同打造出的全新的、更高效、更合规的行业生态。在这一生态中,多方均可获得收益,生态才能健康可持续发展。

    4.信息安全与隐私保护

    凡泰小程序生态,在合规、安全与隐私保护方面,需做到高于微信小程序等互联网平台。

    4.1端侧用户设备信息留痕

    凡泰小程序SDK,在所在“宿主“的设备端收集硬件指纹等信息,供小程序开发者收集、留痕,作为用户交易行为不可抵赖的存证。这类似于当前证券公司手机交易App所依法收集留痕的信息。

    这类数据,由金融机构的小程序开发者,通过SDK接口获得,并把数据上传到该金融机构的机房,以记录其客户在第三方宿主App使用该金融机构小程序时的设备信息。这样,即使用户不是通过金融机构自有的App,其交易行为所发生的设备也能被留痕。

    SDK开发商及SDK插件开发商,不能私下收集和传输该类信息。这在SDK软件、SDK插件提交凡泰小程序管理中心时,将被管理中心运营商检查、审计,以确定其符合规定。此外,凡泰小程序管理中心运营商以及小程序上下架的审核机构,亦不收集此类用户设备信息。在发生合规审计需要时,由监管机构向相关金融机构调查相关数据。

    金融机构应存储用户设备信息并关联相应的交易行为(与目前证券公司手机证券App中设备端信息留痕要求一样)。

    4.2云侧数据安全与隐私保护

    金融机构所开发的凡泰小程序,其服务器端无论托管在行业云服务商(例如深证通)或运行在自有机房,均需严格遵循互联网上应用服务的安全规范。以证券公司为例,券商对自己的手机证券系统信息安全负责,其凡泰小程序的安全等级应与手机证券无异,虽然小程序前端发布在凡泰小程序管理中心,但服务器端自行维护、所暴露的接口应自行安全加固。

    凡泰小程序管理中心运营商,除了审核发布金融机构的小程序代码、让其可被远程加载到允许的第三方宿主,并不参加到持股金融机构具体的小程序业务场景的链路中,不收集金融机构或其第三方合作伙伴的任何业务信息、用户信息,服务器端业务逻辑不发生在其管辖的网络空间内。

    4.3网络访问控制

    每一个上架的凡泰小程序,在第三方宿主内嵌的SDK中加载后,其网络请求只能连接到申请上架时备案的服务器端地址,无法在SDK内随意连接到互联网上任何其他地方。

    4.4实时安全应急管控

    凡泰小程序管理中心可在任何时候作以下应急处理:

    • 金融机构因其开发的凡泰小程序发现缺陷,主动下架该小程序
    • 小程序中心监控到某凡泰小程序信息安全问题,让其下架
    • 小程序中心监控到某金融机构在某第三方合作伙伴的入口的信息安全风险,下架在该合作伙伴的小程序
    • 金融机构终止与某第三方合作伙伴的合作,小程序监控中心注销该金融机构与该第三方机构的合作关系数字证书,使该第三方机构的宿主App无法再通过其嵌入的凡泰小程序SDK加载该金融机构的小程序。这等同于以数字化方式解除双方的合作备案
    • 发现某个版本的凡泰小程序SDK安全漏洞,迅速终止这个版本的SDK有效加载小程序的能力,迫使第三方宿主App们升级SDK版本
    4.5 审计

    在凡泰小程序平台上,开发者的登录日志、操作日志、服务器安全基线文件变更、访问权限、变更日志都会被记录,通过自动化检测实时审计非法访问和风险操作,并进行告警。凡泰小程序开放平台对数据的操作均有详细日志记录,并区分不同操作者角色,授予不同的权限。平台会永久存储这些日志以方便后续的审计追踪。