安全矩阵

 找回密码
 立即注册
搜索
查看: 2374|回复: 0

网络安全攻防:Android App签名

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-5-16 21:56:59 | 显示全部楼层 |阅读模式
原文链接:网络安全攻防:Android App签名

App证书是App在被推送到App市场中,表示开发者身份的。把开发者的ID和他们的App以密码学原理关联起来。通过App签名来保证Android App的完整性,确保App不会被其他的App所冒充,所以App在被安装之前都要被签名。在Android系统中,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个 Permission 的protectionLevel为Signature,那么就只有那些与该Permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。


在签名时,需要考虑数字证书的有效期。

(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有该数字证书的程序将不能正常升级。

(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。

(3)AndroidMarket强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。

Google建议把同一开发者所有的App都使用同一个签名证书,这样就没有人能够覆盖你的应用程序,即使包名相同,所以影响如下。

(1)App升级。使用相同签名的升级软件可以正常覆盖老版本的软件,否则系统比较发现新版本的签名证书和老版本的签名证书不一致,不会允许新版本成功安装。

(2)App模块化。Android系统允许具有相同的App运行在同一个进程中,如果运行在同一个进程中,则它们相当于同一个App,但是可以单独对它们升级更新,这是一种App级别的模块化思路。

(3)允许代码和数据共享。Android 中提供了一个基于签名的 Permission 标签。通过允许的设置,可以实现对不同App之间的访问和共享。

1. 通用签名

搭建好Android开发环境后(使用Eclipse或Android Studio),对APK签名的默认密钥存在debug.keystore文件中。在Linux和Mac上debug.keystore文件位置是在~/.android路径下,在Windows目录下文件位置是C:\user\用户名.android路径下。

除了debug.keystore外,在AOSP发布的Android源码中,还有以下几个证书是公开的,任何人都可以获取,在源码的build/target/product/security目录中,如图1所示。

图1  公开证书目录

2. 通用签名风险

(1)如果攻击者的应用包名与目标应用相同,又使用了相同的密钥对应用进行签名,攻击者的应用就可以替换掉目标应用。

(2)另外,目标应用的自定义权限android:protectionlevel为“signature”或“signatureOrSystem”时,保护就形同虚设。

(3)如果设备使用的是第三方ROM,而第三方ROM的系统也是用AOSP默认的签名,那么使用如果使用系统级签名文件签名过的应用,权限就得到了提升。

对于普通开发者如果自己的签名证书泄露也可能发生(1)、(2)条所提到的风险。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 02:52 , Processed in 0.012150 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表