F-Droid 更新通知与签名密钥变更提醒
F-Droid 2.0 的新功能
F-Droid 2.0(Kotlin Compose 重写版本)新增了一个重要的安全功能:签名密钥变更提醒。当应用的开发者换了签名密钥时,F-Droid 会在更新前通知用户。
这个功能解决了一个长期以来的安全问题:恶意攻击者如果在某个应用更新中混入了自己签名的 APK,传统更新机制可能无法检测到。
为什么签名密钥会变更
签名密钥变更的常见原因:
- 密钥泄露 — 开发者必须立即更换密钥以阻止攻击者
- 新团队接手 — 开源项目被新团队 fork,使用新密钥
- 重新发布 — 应用从一个商店迁移到另一个商店
正常情况下,开发者会在版本说明中解释密钥变更的原因。但用户很少会去看版本说明,所以 F-Droid 2.0 主动提醒。
签名变更时会发生什么
当 F-Droid 检测到即将安装的更新签名密钥和当前已安装版本不同:
- F-Droid 弹出一个明确的警告界面
- 显示当前版本的签名和新版本的签名对比
- 提示你「请确认这个变更是合法的」
- 因为签名不同,Android 会拒绝直接覆盖安装——你必须先卸载再安装
卸载再安装意味着什么
签名不同 → Android 拒绝安装 → 必须卸载旧版 → 安装新版。这意味着:
- 应用数据会被清空(Android 的沙箱机制)
- 你需要重新配置应用
- 如果应用支持导出/导入数据,你需要先备份
如何应对签名变更提醒
场景一:你信任这个开发者
开发者通过官方渠道(邮件、GitHub issue、社区公告)通知了密钥变更。你:
- 确认通知渠道是官方的
- 卸载旧版本(数据如有需要先导出备份)
- 安装新版本
- 重新配置应用
场景二:你不确定变更是否合法
你没有收到任何通知,突然出现签名变更提醒。建议:
- 去应用的源码仓库(F-Droid 详情页有链接)查看最近的 commit 和 issue
- 在 F-Droid 社区论坛或 Reddit 搜索是否有人讨论这个变更
- 如果找不到合理解释,暂时不要更新,保持当前版本
场景三:攻击者更换了签名
在最坏的情况下,攻击者可能劫持了某个应用的发布流程(比如获取了开发者的 GitLab 权限),替换了签名。F-Droid 2.0 的签名变更提醒就是为了拦截这种情况——攻击者无法让 F-Droid 静默更新,用户必然会被通知。
其他通知类型
F-Droid 还会通知:
- 应用不在任何仓库中 — 如果你手机上装了某个应用但所有已连接仓库中都找不到它(可能是从其他渠道安装的)
- 仓库签名无效 — 仓库索引签名验证失败,可能该仓库被篡改
- 应用有多个版本来源 — 多个仓库中存在同包名应用,F-Droid 会提示选择
这些通知共同构成了 F-Droid 完整的安全防御体系。