为了打击在Android中的潜在有害应用程序(Potentially Harmful Applications,PHAs),Google使用全面性的Android安全服务Google Play Protect,整合应用监督式和非监督式机器学习技术,以精确检测并且分类PHA。
检测PHA是一项工程浩大的工作,需要投入大量的资源,Google需要了解应用程序与用户交互的过程,分析复杂信号以了解PHA的行为。为了可以快速且大规模的侦测PHA,Google利用机器学习,让系统在不需要人为介入的情况下就能自动搜索PHA,而且只要通过增加运算能力,就能增加分析的规模。Google提到,机器学习比起人可以更有效的从数据中,找到信号之间隐藏的关联。
Google Play Protect机器学习保护主要由两个部分构成,分别是数据以及和机器学习模型,而数据源又分为应用程序的数据,以及使用应用程序的体验数据。首先,应用程序的数据来自Google Play Protect分析网络上找到的所有应用程序。通过拆解应用程序的APK,并且深入分析提取PHA信号来创建数据集,这些数据除了特定特征外,还包含像是SMS欺诈、网络钓鱼或是权限提升等行为。
Google Play Protect会对APK文件中的各种资源,进行静态和动态分析,这两种方法相辅相成,Google表示,只要代码经过混淆技术,就会阻碍静态分析,但是动态分析通过执行应用程序,因该样能找出问题所在,而静态分析则能检测在实例中可以绕过动态分析,试图隐藏在代码的恶意部分。综合动态与静态分析,产生应用程序特征信息,作为机器学习的数据源之一。
除了应用程序的数据,机器学习的数据还需要用户使用应用程序的体验数据,这些数据来自Google Play的用户反馈,包括安装、卸载、用户评分和评论的数量等信息,另外,有关开发人员的信息,像是使用的凭证以及发布应用程序的历史纪录,也都是可用来辨识PHA的信息。应用程序的体验数据,由每天开发人员提交的应用程序,以及数百万Google Play用户产生,能帮助Google了解应用程序的质量、行为和目的,以识别新的PHA行为。
通常这些数据来源提供的都是原始信号,需要经过转换才能给机器学习使用,虽然部分原始信号具有明确语义意义能直接被利用,但是大多数情况,需要重新设计数据以找出更强而有力的特征。像是汇总特定开发人员拥有所有的应用程序评分,个别对每位开发人员进行评分,用来验证未来的应用程序。也会使用嵌入技术,为稀疏数据创建压缩表示,或是为了简化数据使其更容易被模型使用,以特征选择技术,根据目标不同保留最相关的信号,并移除不相关的信号。
Google提到,机器学习模型设计对于有效且精准的侦测PHA很重要,但是要识别特定类型像是SMS欺诈或网络钓鱼等PHA行为并不容易,这些行为都只是广义的名词,实际上符合定义的可能包含了广泛的样本。抑或是,同一个PHA活动,是由一群应用程序构成,这些应用程序共享部分代码和行为。
为了应对复杂的PHA行为,Google使用多种建模技术以修正使用的机器学习方法,包括监督式与非监督式的方法。Google使用监督式逻辑回归来侦测大部分的PHA,逻辑回归模型结构简单可以快速训练,可用来分析不同PHA和应用程序特征的重要性,进而改变特征工程程序。经过几轮的训练、评价和改进之后,便能产生生产用的最佳模型。
而针对其他更为复杂的PHA案例,Google使用深度学习,以捕捉不同PHA特征间复杂的交互,并找出隐藏的关联。由于Google Play中存在数百万个应用程序,提供了丰富的数据集,很适合适于训练深度学习模型,而且除了目标特征工程外,由于深度神经网络有拥有许多层,每层具有多神经元,可以用来处理信号,Google通过改变层数以及每层的神经元,来改变模型行为。此外,Google还使用了非监督式的机器学习方法,因为许多PHA使用相同技术,非监督式方法可以用来定义行为相似的应用程序群集,而这能更加有效识别并减轻PHA的威胁。
但Google也提到,PHA不断发展,所以他们的模型也需要不端的更新,而且训练数据也要使用近期的应用程序数据,才能维持相关性,通过维护机器学习模型的创建和更新循环,才能确保系统侦测的精确度。