Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Baton: Key Agility for Android Without a Centralized Certificate Infrastructure

论文下载

Abstract & Introduction

IOS等手机OS对于开发者签名都有一个centralized authority,而Android没有,开发者自己来提供签名,只有具有相同的签名和证书的两个APP才能更新。如果Android上app更换签名,就需要卸载或重装。

Baton—-通过修改系统app installation framework,使开发者可以在不需要用户干涉的情况下安全的更换签名。(提高 key agility)

几个需要更换签名的情况:

  1. 为了让两个签名不同的APP share UID或一个APP申请另一个APP的自定义的signature permission
  2. 签名过期了
  3. app转让给其他开发者

Detail

Delegation token:

Sign(KeyA){Hash(pkg name,version code,Cert A,Cert B fingerprint,previous token hash)}

  1. pkgName
  2. version code
  3. a set of previous certificates
  4. a set of current certificates
  5. a hash of the previous delegation token in the certificate chain
  6. 最后用之前的私钥来上述的hash作为token。

certificate chain

a sequence of delegation tokens

AOSP

  1. android.content.pm.PackageParser 识别Baton XML
  2. com.android.server.pm.SignatureChain 新增的class,用来处理 certificate chain
  3. com.android.server.pm.PackageManagerService 修改签名认证的逻辑和app更新的过程

新的认证流程:

> if(A's set of signing certificates matches B's) 
>     update    
> else
>     if(B has a token with a correct version transition signed by A's
> certificate set)   
>          update and change key          
>     else   
>          reject

Developer Tools a third party Eclipse plugin

Evaluation

  1. 影响Android原有的机制,兼容性好,没有Baton系统安装带有Baton修改的app也可以正常运行。
  2. 功能正常
  3. 安全方面:1)有完整性检验 2)无法重放 3)更换签名升级时,用户不用卸载,避免一些攻击 4)不影响原有的签名保护机制