mPaas组件的安全设计介绍

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 由于金融行业的特殊性,对安全的要求很高,所以mPaas内很多模块都采用了很多安全策略,包括RPC的加签加密,离线包的签名校验,移动同步的tcp+ssl机制,热修复的加密配置等。本文主要介绍下我对常见mPaas模块的安全设计的理解,方便后续更好的使用。

一 背景

由于金融行业的特殊性,对安全的要求很高,所以mPaas内很多模块都采用了很多安全策略,包括RPC的加签加密,离线包的签名校验,移动同步的tcp+ssl机制,热修复的加密配置等。本文主要介绍下我对常见mPaas模块的安全设计的理解,方便后续更好的使用。

二 RPC

作为mPaas最重要的组件之一,RPC提供了客户端和服务端的安全通信通道,其中涉及安全的主要包括加签和加密。其中加签解决的是防止客户端被伪造,加密解决的是防止请求数据被泄漏。

1. 加签

1. 整体流程

  1. 在mPaas后台初始化应用的时候,会为每一个App创建一个唯一的appSecret  
  2. 客户端通过appid,WorkspaceID,appSecret等信息,生成无线保镖图片。通过无线保镖模块的加密,保证了存放在客户端的appSecret的安全性
  3. 客户端请求的时候,从无线保镖获取appSecret,同时添加OperationType,time,requestData等因子做md5计算,添加到header发到MGS网关

 4. MGS收到后按照同样的方法再计算一次MD5,如果一致,则通过校验

2. 优势

通过无线保镖机制,保证了内置在客户端内的appSecret的安全性。


2. 加密

1. 整体流程

  1. 通过openssl生成非对称秘钥,客户端保存公钥,服务端报错私钥
  2. 客户端每次请求rpc都会生成一个新的对称秘钥,通过第一步生成的非对称秘钥进行加密,生成SecKey
  3. 客户端使用对称密钥同时对原始数据进行加密,得到加密的数据SecData
  4. 移动网关通过保存的私钥对SecKey进行解密得到对称密钥
  5. 通过上一步得到的对称秘钥,对加密数据SecData进行解密,得到原始数据

2. 优势

RPC的加密采用了混合加密的模式,使用了非对称加密和对称加密的组合。如果单纯使用对称秘钥,虽然性能较好,但是保证不了足够的安全性。如果单独使用非对称加密,虽然保证了安全性,但是会导致性能变差,不适合RPC这种大量通信的场景。所以RPC采取的这种混合加密模式,很好的结合了两者的优点。

3. 防抓包

在客户端端为了防止数据被抓包软件抓到,客户端进行了防止抓包的设置,通过设置网络库禁止代理的方式,解决了被抓包的风险。代码如下

httpParams.setParameter(ConnRoutePNames.DEFAULT_PROXY, ConnRouteParams.NO_HOST);

三 离线包

作为业务使用很多的离线模块,为了保证下发到本地的离线包模块没有被篡改,离线包提供了签名校验机制。

1. 整体流程

  1. 提前通过openssl生成公钥和私钥,公钥内置在客户端内,私钥存储到服务端
  2. 离线包打包的时候,服务端对当前离线包的文件做md5计算,然后将计算后的值通过非对称秘钥进行加密生成加密后的签名数据,随离线包下发到客户端
  3. 客户端每次打开离线包的时候,通过客户端内的公钥获取下发的md5和本地的离线包文件做md5对比,如果一致,则校验通过,如果不一致,则删除离线包,直接访问fallback资源

2. 优势

  1. 由于是每次打开离线包都做校验,保证了离线包的来源正确和不被篡改
  2. 校验失败后直接降级到fallback地址,减少对客户使用的影响

四 版本发布

版本发布服务提供了apk的发布功能,同时为了保证下载的apk文件不被篡改,提供了基于md5的完整性校验。在上传apk的时候,会基于当前的apk生成md5下发,本地安装的时候本地下载文件的md5和会和服务端下发的md5做匹配,如果匹配成功才会继续安装。服务端下发的md5字段如下图所示。

五 移动同步

移动同步服务Sync是基于TCP进行通信的,为了保证安全,Sync可以配置为TCP+SSL模式进行通信。当指定Sync的端口号为433端口后,客户端就会开始基于tcp+ssl实现长连接,长连接请求到服务端后,需要通过F5或者其他类似负载装置完成SSL卸载,最后到MSS实现长连接。整体流程如下图所示:


相关文章
|
数据采集 机器学习/深度学习 监控
mPaaS 核心组件:支付宝如何为移动端产品构建舆情分析体系?
移动舆情分析 MMA(Mobile Media Analysis)通过采集应用内、应用市场反馈及外部媒体等内容,经过机器学习、自然语言处理等大数据技术,为企业的产品进化、运营、营销、公关提供实时、有效的舆情监控-分析-预警-处理的闭环能力,帮助企业发现与跟踪产品问题,收集产品建议,危机公关,辅助市场调研、产品营销与竞争分析。
2686 0
|
存储 缓存 Java
mPaaS 3.0 多媒体组件发布 | 支付宝百亿级图片组件 xMedia 锤炼之路 (图片缓存篇)
历经三年的风雨洗礼沉淀,xMedia 多媒体图片加载组件已经成为支付宝重要的驱动力,承载了绝大部分业务,与此同时,我们也通过移动开发平台 mPaaS 对外输出,向外界企业提供稳定的图片加载技术。
2367 0
|
移动开发 开发框架 小程序
蚂蚁mPaaS上线音视频通话组件,以技术创新构建场景生态
远程问诊、线上开户、车载语音通话……蚂蚁mPaaS正在“拥抱新技术,探索新未来”。
蚂蚁mPaaS上线音视频通话组件,以技术创新构建场景生态
|
移动开发 开发框架 小程序
再添新亮点!3 张图带你走近蚂蚁mPaaS音视频通话组件
远程问诊、线上开户、车载语音通话……蚂蚁 mPaaS 正在“拥抱新技术,探索新未来”。
2153 0
再添新亮点!3 张图带你走近蚂蚁mPaaS音视频通话组件
|
Java API 开发工具
蚂蚁金服 mPaaS 服务端核心组件体系概述:移动 API 网关 MGS
根据《开篇 | mPaaS 服务端核心组件体系概述》,我们已经初步了解 mPaaS 平台后端各组件的核心架构体系。 而在 mPaaS 服务端众多组件中,移动 API 网关 MGS 是连接移动客户端与服务端的组件产品。
5115 0
|
网络协议 Java 开发工具
mPaaS 服务端核心组件:移动同步服务 MSS 架构解析
移动同步服务 MSS 是移动开发平台 mPaaS 的核心基础服务组件之一,源自于蚂蚁金服集团内面向移动应用从服务端到客户端进行海量数据推送的全链路解决方案。
2882 0
|
算法 网络协议 Java
蚂蚁金服 mPaaS 服务端核心组件:亿级并发下的移动端到端网络接入架构解析
本文结合贾岛分享内容《亿级并发下的蚂蚁移动端到端网络接入架构》,着重探讨网络接入架构在蚂蚁金服体系内如何演进、如何应对“新春红包”等亿级并发挑战、以及相应的技术架构实践与优化思路如何在 mPaaS 中得到沉淀。
2993 0
|
监控 大数据 数据库
开篇 | 蚂蚁金服 mPaaS 服务端核心组件体系概述
经过《mPaaS 客户端架构解析》系列,我们已经对 mPaaS 的产品矩阵与具体定位有了初步认识。由本章节开始,我们将针对 mPaaS 服务端核心组件体系展开梳理和讨论,带领大家进一步认识了解 mPaaS 在服务端组件体系搭建过程中踩过的坑与相应的实践经验。
3634 0
|
5月前
|
移动开发 监控 小程序
mPaaS常见问题之音视频通话微信小程序通话界面录制为画中画模式如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
5月前
|
缓存 小程序 Android开发
mPaaS问题之更改包名之后就进不了小程序如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
108 1

热门文章

最新文章