安全知识
怎么判断 APK 是不是官方原版:看签名证书指纹
在网上找海外应用的安装包,最大的风险不是下载失败,而是下到一个「看起来一模一样」的改版:可能被塞了广告、被植入了窃取账号的代码,或者干脆是仿冒品。
图标、名字、版本号都可以伪造,签名证书伪造不了。这篇文章讲清楚为什么,以及怎么自己核对。
签名证书是什么
每个安卓应用在发布前,都必须由开发者用自己的私钥签名。签名信息里包含开发者的证书,证书可以算出一个唯一的「指纹」(通常用 SHA-256 表示,是一串 64 位的十六进制字符)。
关键在于:
- 改包必须重签。 安装包里的任何内容被修改后,原签名就失效了。改包的人手里没有开发者的私钥,只能用自己的证书重新签名,指纹就变了。
- 系统会拦截签名不同的更新。 安卓只允许用同一证书签名的安装包覆盖升级。所以如果你先装了改版,以后想换成官方版,系统会提示签名冲突,必须先卸载。
因此,只要指纹和开发者的官方指纹一致,就能确定安装包出自开发者本人。
在手机上查看签名
推荐使用开源工具 App Manager(可在 F-Droid 获取),它可以直接查看安装包文件或已安装应用的签名:
- 用 App Manager 打开 APK 文件,或在已安装应用列表里点开对应应用。
- 进入「签名」(Signatures)页。
- 查看证书的 SHA-256 值,与官方指纹逐位对照。
在电脑上查看签名
安装 Android SDK 的 build-tools 后,用自带的 apksigner:
apksigner verify --print-certs 应用名.apk
输出中 Signer #1 certificate SHA-256 digest:(新版工具显示为 V2 Signer: certificate SHA-256 digest:)后面的值就是指纹。
对于 XAPK、APKS 等分包格式,先用解压软件解开,里面每个 .apk 文件的签名都应该相同。
注意「密钥轮换」
从 Android 9 开始,开发者可以把签名证书换成新的一把,同时在安装包里保留新旧证书之间的「传承记录」。YouTube、Instagram、WhatsApp、Signal 等应用都做过这样的轮换。
这时 apksigner 会同时列出旧证书和新证书,Android 13 及以上的系统使用新证书验证,旧系统使用旧证书验证。核对时两个指纹都应该是官方的。
常见应用的官方签名指纹
以下指纹由赶海从多个互不相关的下载渠道交叉核对得出(2026 年 9 月):
| 应用 | 签名证书 SHA-256 |
|---|---|
| Telegram | 49C1522548EBACD46CE322B6FD47F6092BB745D0F88082145CAF35E14DCC38E1 |
| Signal(原始证书) | 29F34E5F27F211B424BC5BF9D67162C0EAFBA2DA35AF35C16416FC446276BA26 |
| Signal(轮换后) | 4BE4F6CD5BE844083E900279DC822AF65A547FECC26ABA7FF1F5203A45518CD8 |
| Firefox | A78B62A5165B4494B2FEAD9E76A280D22D937FEE6251AECE599446B2EA319B04 |
| X | 0FD9A0CFB07B65950997B4EAEBDC53931392391AA406538A3B04073BC2CE2FE9 |
Signal 在官网(signal.org/android/apk)公布的是轮换后的新证书指纹,与上表一致。其他应用如果开发者公布了指纹,以开发者公布的为准。
赶海是怎么做的
- 入库时:每个应用都从多个来源下载,签名证书完全一致才记为官方证书;之后每个新版本都必须和官方证书一致才能上架。
- 安装时:安装包下载到你的手机后,赶海会重新计算文件指纹并读取签名证书,两项都对得上才交给系统安装。
即使不用赶海,也建议养成习惯:从非官方渠道下载的安装包,装之前先看一眼签名。