Perface
在之前,每次安装软件都是需要从应用商城里面下载的。如果不是的话,就会在安装的时候警告你,当然IOS的只能从应用商城里下载。这个在我的使用生涯里,我是极其的反感的,以至于我现在在工作中,任何一个呈现给客户的东西,你要引导他去按照要求使用,或者给他留后门,但是不要强制性的必须要他去怎么做,这是会引起一种生理的叛逆。
扯远了,最近学习应用安全的时候,正好涉及到了应用商城,通过这个让我知道了原来商城的强制性一方面也在保护着我们的设备。
概述
大规模应用是智能终端操作系统真正的生命活力体现。截至2014年12月,Google Play Store的Android应用总量为143万款,iOS App Store的iOS应用总量为121万款,Windows Phone的应用总量为30万款。在此基础上,各平台的应用数量仍保持着高速发展,截至2015年7月,iOS App Store的应用总数已达到150万款。
丰富多彩的应用是智能终端最重要的组成部分,但海量应用也给智能终端和消费者带来各种各样的安全风险,应用安全是移动互联网信息安全的关键。
应用安全贯穿应用的内容、分发过程以及使用过程的始终。当前,应用内容审核及分发管理由各种各样的应用商店来保障,而应用使用安全则通过构建在智能终端系统的应用管理机制来维护。
应用商店管理机制
应用商店体系由一个应用下载平台和一个终端客户端组成,为支持开发者的应用开发工作和应用作品上传等,通常还包括一个开发者社区。
应用商店是保障应用内容和分发安全的重要手段,系统厂商和终端厂商建立基于应用商店的安全体制,以提高应用的安全性。
应用商店会对上架应用进行审核,以确保应用在内容保护、版权、收费、安全性、功能性等方面不存在安全问题。通用的应用审核机制包括如下几方面。
- 1)签名审查,支持证书签名的商店会对开发者的应用签名进行审查,以保证应用来源的合法性。
- 2)内容审查,保证应用不违反当前法律、法规的各项要求,检查应用内容是否涉嫌侵权等。
- 3)应用收费情况检查,检查应用的收费点、价格、收费方式等,保障用户的消费安全。
- 4)安全性检查,检查应用是否有木马、病毒等安全风险。
- 5)功能性检查,依照开发者说明书对应用进行测试,验证应用的功能是否达到设计要求。
审核方式一般采用系统自动扫描和人工测试相结合的方式。
严格的应用审核及应用分发过程管理构成了应用商店安全管理机制,不同的应用商店在具体使用的安全措施上稍有不同。
苹果App Store的应用分发机制分析
2015年6月8日,苹果在苹果全球开发者大会(WWDC, Apple Worldwide Developer Relations Certification Authority)上表示,苹果App Store应用下载量已经突破1000亿次。作为苹果直接管理的iOS唯一的应用分发市场,iOS App Store在应用审核、上架、下载等方面的管理机制都有相应的安全措施。
App Store对上架应用进行了严格的审核,其应用发布流程如图所示。
如图所示,开发者完成应用的开发和测试后,需要为这个应用创建唯一的AppID,然后申请获得通过WWDR的CA数字证书,为自己的应用签名,应用上传之后会经过苹果的审核,通过苹果严格的安全测试的应用方可在App Store上架。
AppID是用来表明应用身份的ID号,可以认为AppID是iOS应用的身份证,应用在App Store正式发布时需要有唯一的AppID号。而在应用版本更新时,只需关联之前版本的AppID。
开发者需要为应用申请证书并进行签名。App Store要求每一个提交发布的应用都必须使用苹果全球开发者关系证书颁发机构(WWDR, Apple Worldwide Developer Relations Certification Authority)的CA(Certificate Authority,数字证书认证中心)证书签名认证。
经过签名的WWDR的CA数字证书采用通用的X509格式,以PKCS#12格式存储,包含用户的公钥、用户个人信息、证书颁发机构信息、证书有效期等信息以及证书签名。证书格式如图所示。
之前有讲过证书,可以在公众号内容搜索证书
证书的数字签名是将上述证书本身的内容使用散列算法得到一个固定长度的信息摘要,然后使用自己的私钥对该信息摘要加密生成数字签名,整个过程如图所示。
- iOS系统持有WWDR的公钥,系统首先会对证书内容通过指定的散列算法计算得到一个信息摘要;
- 然后使用WWDR的公钥对证书中包含的数字签名解密,从而得到经过WWDR的私钥加密过的信息摘要;最后对比两个信息摘要,如果内容相同就说明该证书可信。整个证书验证过程如图所示。
在验证了证书可信以后,iOS系统就可以获取到证书中包含的开发者的公钥,iOS系统通过从证书中获取到的公钥来验证开发者用该公钥对应的私钥签名后的代码,验证资源文件等有没有被更改破坏,并确定开发者的合法身份。
App Store同时有对应用内容检查的规则,并通过一系列测试验证所提交的应用内容不违反相关规定。
App Store对应用的审核非常严格,涉及功能、元数据、位置信息收集、推送通知、游戏信息管理、广告、商标和商品外观、内容、用户界面、支付机制、设备保护、隐私保护等各个方面。
通过审核之后的应用会在App Store上架供用户检索和下载。相对于其他的应用商店,苹果App Store审核时间最长,也最严格。通过审核上架的应用也会有后期的检查和举报处理,对于违规应用将会处以下架的处理,对于开发者也有相应的处罚机制。
苹果对于iOS应用安装的管理比较封闭**,非越狱的苹果用户只能安装通过iTunes下载的来自App Store应用以及企业应用,通过iTunes下载App Store应用主要包括以下流程。**
- 1)登录iTunes和授权认证:iOS终端使用用户的AppleID和密码登录,登录成功之后,App Store服务器将返回包含授权认证参数的文本信息,其中包含用于用户请求服务器下载的授权认证参数。
- 2)应用下载:在App Store服务器验证用户登录之后,即用户获取授权认证参数之后,客户端根据用户需求的应用唯一标识AppID,向服务器请求下载应用。App Store服务器根据用户提交的授权认证参数及应用标识AppID,搜索需要下载的应用相关信息,返回包含应用下载链接及相关参数的信息给客户端,客户端解析信息文本提取应用的下载链接。客户端根据上一步获取的下载链接及下载请求的相关信息,向App Store服务器请求下载应用,服务器将应用文件以字节流返回客户端,客户端将字节流以ipa文件保存到本地,即完成下载。
苹果公司在售卖iPhone手机和iPad等终端设备之外,还持续不断地推出其他附加服务,如支付、广告等,苹果向开发者提供附加服务的开放能力支持,并纳入了其应用开发技术体系中。
在应用审核环节,App Store是一个不透明的审核机构,App Store的人工审核把关存在严重的不确定性和不统一性,也常被批评针对某些应用或服务的审核缺乏必要的公正性。例如,2012年某应用由于在其应用中包含了Dropbox的链接而在上架审核时被拒绝,对此相当多的开发者认为最主要的原因是排挤,开发者会因为使用Dropbox面临的审核风险转而考虑使用苹果推出的iCloud服务。
由于苹果对iOS生态极高的掌控程度,苹果App Store目前仍旧是最安全的公众市场应用分发平台,其安全体系也被各应用商店借鉴和使用。
谷歌Play Market的应用分发机制分析
Google Play Market是Android最大的应用分发平台,截至2014年年底,在应用总数上已经超过苹果App Store。Google Play Market在应用审核、上架、下载等方面的管理机制也有自己相应的安全措施。
在应用审核方面,2015年3月之前,Google Play Store并不直接对应用进行事前检查,只要经过Android数字证书签名的应用提交后都可直接发布,只在发布后定期进行后台恶意代码扫描检查,审核整体较松。在2015年3月,Google Play Store加强了应用提交后的审核要求,包括通过自动扫描检测恶意代码以及人工审核应用内容环节,为应用安全增加了保障。
但是审核时间相较于苹果App Store短很多,通常不超过一天。Google Play Market的应用发布流程如图所示。
与苹果App Store流程相比,Google Play Market的流程中没有申请AppID的环节,因为Android应用开发环节只需要定义应用名称,没有AppID的概念。
Google Play Market原则上要求每一个发布的应用都经过数字证书签名,这个数字证书用来标识应用程序的作者以及在应用程序之间建立信任关系,它只是用来让应用程序包自我认证,Android系统将在应用安装前检查数字证书。
Android签名证书不需要权威的证书签名机构认证,可以使用自签名证书(SSL, Self-Signed Certificate)。对于没有得到安卓认可的证书颁发机构颁发的证书或者是自签名证书,Android系统在应用安装时会给出安全提示。
想起自己当年去某网站下载不正经的APP安装时的提醒没?
Android应用的数字证书与苹果iOS应用的数字证书类似,同样采用通用的X509格式,以PKCS#12格式存储,包含用户的公钥、用户个人信息、证书颁发机构信息、证书有效期等信息以及证书签名。
应用的验签也与苹果类似,数字证书用来标识应用程序的作者及在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序。
由于没有限制,考虑到费用和开发方便,60%以上的Android应用都使用了自签名证书,相对苹果的认证数字证书体系安全性较低。
记得早年APPLE还因为价格太贵且垄断被告上了法庭
终端通过Google Play Market下载和安装应用的流程如下。
- 1)登录和验证授权:终端通过用户Google Play Market账号密码登录,登录成功之后,Google Play Market服务器将返回授权认证参数。
- 2)应用下载安装:在Google Play Market服务器验证用户登录之后用户根据应用名称,获取应用的唯一标识ID,向服务器请求下载应用。
Google Play Market服务器根据用户提交的授权认证参数及应用标识返回包含应用下载链接及cookie的信息给客户端,客户端解析信息文本提取应用的下载链接。客户端根据上一步获取的下载链接及cookie向服务器请求下载应用。 - 3)终端检查应用的签名证书,校验通过后安装。
如前所述,Google Play Market对于Android应用的管理是开放的,任何来源的应用只要经过合法数字签名都可以在Android终端安装。用户只需要简单地设置即可安装使用未经Google官方审核的其他来源的应用。如图所示,用户勾选未知来源允许安装未知来源的应用程序。
Google Play Market服务未面向国内开通,这直接导致了国内面向Android系统的第三方商店比国外更加丰富多彩。
很多想使用蓝鸟和油管的还得费劲的去下载个Google Play Market,这个方面还是Iphone要方便一点。
其他第三方商店的应用分发机制分析
Google构建的应用服务体系未面向国内提供,国内的Android应用分发主要依赖第三方商店完成。
有代表性的包括分类网站性质的安卓网(hiapk.com)等;
- 手机工具衍生的91助手、豌豆荚、百度手机助手等;
- 手机厂商主导的华为应用市场(华为)、中兴应用商店(中兴)、三星应用商店(三星)等;
- 运营商主导的沃商店(联通)、中国移动应用商城(移动)、天翼空间应用商城(电信)等。
第三方厂商认为应用商店是用户最终应用体验的入口,投入大量资源争夺,应用商店曾经一度表现为百花争鸣、百家齐放的场面,现阶段主要表现为稳定发展的态势。
应用分发机制上,第三方商店大多类似,通过应用测试控制应用质量,通过安装在用户终端的商店客户端推送应用,大多不过度参与对应用运行其他环节的管控。
这就是为什么很多盗版的软件容易带上病毒,一跑起来满屏幕的小广告
以联通的沃商店为例,标准第三方应用商店的开发者应用操作流程如图所示。
- (1)注册
联通沃商店的开发者入口是联通开发者社区,网址http://dev.wostore.cn/,根据注册页面注册流程指示使用手机号完成注册,可选的开发者类型包括:计费机构开发者、免费机构开发者、个人开发者3种。
- (2)签约
签约部分,主要是针对游戏类应用的内容购置和联运的合作协议、应用内支付的合作协议的签约,以及通用应用的信息安全责任承诺书、廉洁合作协议、保密协议等的签署。
- (3)应用上传
开发者从开发者社区的“上传应用”栏目处上传应用,区分计费和免费应用类别,并针对计费应用提交计费点说明等文档。
- (4)评测开发者
应用上传后,提交作品评测。联通沃商店的应用评测由沃商店运营方小沃科技负责,评测范围包括游戏玩法、美术效果、计费点设置等,对优秀内容可以获得沃商店免费推广资源配套、计费优惠政策等支持。一般应用评测在1~2个工作日即可完成。
- (5)应用上架
应用上架,提供给用户浏览和下载。
- (6)联通开放能力
联通为应用开发者提供开放能力支持,包括计费能力接入、广告接入、流量能力接入、账户能力接入。
- (7)费用结算
周期性地面向开发者结算应用费用。如前所述,第三方厂商认为应用商店是用户最终应用体验的入口,所以第三方商店构建的关注重点并不在于分发安全管控上,而在于提供一个向用户推送应用的渠道,并集成自身的开放能力实现自身主体服务价值的提升。
因为小程序的冲击,之前在20年左右还发起了关于快应用的应用形式;记得我当时也受邀参加了小米的快应用培训了一段时间,当时还顺道学习了一些前端的知识;三年过去,而我已经快忘掉了。技术的时代更迭,其实想来也是残酷和激烈的,尤其是在这个着急变现的时代。