Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

FLEX: A Flexible Code Authentication Framework for Delegating Mobile App Customization

论文下载

Introduction

本文针对APP的二次开发的授权认证问题提出了一种签名认证机制,这种机制能够同时认证两个开发者,并且确保二次开发者不篡改APP原有代码。

应用场景举例,万能遥控器,APP开发者流出了接口,但是为了适配更多的智能设备,需要二次开发者添加自己设备的相关代码。现有的二次开发方案会使原有的APP开发者签名失效,无法验证来源。

作者提出了一个认证机制Flex,并且引入了一种新的编程语言Annotated Middleweight Java(AMJ)

System And Adversary Model

Fig

  • 要求开发者使用AMJ语言写APP,其中包含注释(指定可重写部分),使用Flex编译器编译
  • 二次开发者使用AMJ编写重载函数,并且公开源码。
  • apk的完整性通过签名机制校验,认证者有系统中所有参与者的公钥,所以也就不存在重打包的问题。
  • 认证信息主要是一个元组,验证的流程: app开发者提供的元组 D = (app, contract,γD),二次发者进行校验 checkmm(D,pkdev),如果成功的话就可以确定D的可信性,然后加入自己修改的内容,给出元组M = (app, contract, mods,γM),用户校验M checkuser(M,pkdev,pkmm)

威胁模型分为两种,一种是这个系统的参与者有恶意行为,主要考虑二次开发者想要掩盖自己的修改行为,但是用户校验的时候会使用pkdev校验原有APK和contract的完整性,所以攻击不可行。 第二种是存在中间人可在APK传递过程中修改代码或者contract,同样由于公钥已知,所以可以验证代码是否被篡改。

Programming Model&Code Verification

Flex引入了一种新的编程语言,AMJ(Annotated Middleweight Java) ,其中Middleweight Java (MJ)是Bierman在03年提出来的一种编程语言,把JAVA轻量化,变为面向对象和面向过程混合的。Flex在此基础上进行扩展,对特定类型的注释可以进行重写。

FLEX contract包含了APP源码中所有注释,并且标识出了其在源码中的位置。 mods包含一个或多个由二次开发者编写的AMJ源码文件,扩展函数通过延迟绑定进行重载。

Fig