Android应用安装、更新与加密技术详解
1. 自定义权限注册
在Android系统中,应用自定义权限采用“先到先得”的注册策略。若应用A和应用B都定义了权限P,且应用A先安装,那么A的权限定义会被注册,B的则会被忽略,因为权限P已被注册。这是由于权限名称与定义它的应用包没有绑定关系,任何应用都能定义任意权限。
这种策略可能导致权限保护级别降低。例如,若A定义的权限保护级别为“normal”,而B定义的为“signature”,且A先安装,那么访问B中受权限P保护的组件时,调用者无需与B使用相同的密钥签名。所以,使用自定义权限保护组件时,要确保当前注册的权限保护级别符合应用预期。
当完成权限注册等操作后,包数据库的更改(包括包条目和新权限)会保存到磁盘,同时 PackageManagerService 会发送 ACTION_PACKAGE_ADDED 通知其他组件有新应用添加。
2. 应用包更新
应用包更新的流程与安装流程大部分相同,下面主要介绍不同之处。
2.1 签名验证
更新应用包的第一步是检查新包是否由与现有包相同的签名者签名,这遵循同源策略,也称为首次使用信任(TOFU)。此签名检查确保更新由与原始应用相同的实体产生(假设签名密钥未泄露),并在更新和现有应用之间建立信任关系。更新会继承原始应用的数据。
在比较签名证书是否相等时,不会按照PKI的标准验证证书(如时间有效性、可信颁发者、撤销状态等)。证书相等性检查由 PackageManagerService.compareSignatures
超级会员免费看
订阅专栏 解锁全文
8714

被折叠的 条评论
为什么被折叠?



