证书指纹校验与下载安全
为什么要校验证书
下载 APK 文件(特别是从 GitHub Releases 等非 Play Store 渠道)时,理论上你的下载路径可能被中间人攻击篡改——插入恶意代码。校验证书签名能确保:
- APK 确实由 FairCode B.V.(开发者 Marcel Bokhorst)签名
- APK 内容自签名以来未被篡改
- 没有被替换为恶意应用
FairCode 官方证书指纹
以下三个指纹是 NetGuard 所有版本(Play、GitHub、F-Droid 之外的两版)使用的证书。如果下载的 APK 签名不匹配,说明文件被篡改。
MD5
B6:4A:E8:08:1C:3C:9C:19:D6:9E:29:00:46:89:DA:73
SHA1
EF:46:F8:13:D2:C8:A0:64:D7:2C:93:6B:9B:96:D1:CC:CC:98:93:78
SHA256
E4:A2:60:A2:DC:E7:B7:AF:23:EE:91:9C:48:9E:15:FD:01:02:B9:3F:9E:7C:9D:82:B0:9C:0B:39:50:00:E4:D4
注意:F-Droid 版使用独立签名,以上指纹不适用于 F-Droid 版。F-Droid 版的指纹需要从 F-Droid 仓库获取。
为什么 Play 和 GitHub 共用证书
NetGuard Play Store 版和 GitHub Release 版使用完全相同的证书签名。这是开发者的有意设计,使得:
- 两个版本可以互相覆盖安装(签名相同允许)
- Play Store 购买状态在 GitHub 版上可以自动恢复
- 用户可以无缝在两个渠道之间切换
GitHub Releases 上提供的 APK 就是 Play Store 同一个构建产物,加上 Hosts 和端口转发功能——只是 Play Store 里的构建被移除了这些功能。
如何校验 APK 签名
在 Android 设备上
使用 F-Droid 客户端:
- 打开 F-Droid → 搜索 NetGuard
- NetGuard 详情页里显示签名信息
- 对比 MD5 / SHA256 指纹是否匹配 FairCode 官方值
或使用第三方 APK 签名校验工具(如 APK Signature Verifier 等)。
在 PC 上
下载 Android SDK Build-Tools → 使用 apksigner 或 jarsigner 命令校验:
apksigner verify --print-certs netguard.apk
输出里会包含 MD5 / SHA1 / SHA256 指纹,与 FairCode 官方签名对比。
或使用 keytool:
keytool -printcert -jarfile netguard.apk
三星 Galaxy 应用商店恶意应用警告
开发者在 GitHub README 和官方网站首页发布了一个安全警告:
三星 Galaxy 应用商店(Samsung Galaxy Store)里出现了一个名为「_Play Music - MP3 Music player_」的应用,使用了与 NetGuard 完全相同的包名(eu.faircode.netguard),会在用户不知情的情况下作为 NetGuard 的"更新"安装。
这个应用很可能是恶意的。开发者已在 2021 年 12 月 8 日向三星报告了此问题,但三星至今未能有效处理。
避免方法
- 仅从三个正规渠道安装 NetGuard:Google Play、GitHub Releases、F-Droid
- 不要从三星 Galaxy Store 安装任何声称是 NetGuard 更新的应用
- 如果已经误装了那个恶意应用 → 立即卸载 → 从正规渠道重新安装
下载安全建议总结
| 建议 | 操作 |
|---|---|
| 只用三个正规渠道 | Play Store / GitHub Releases / F-Droid |
| 不要从 APK 汇总站下载 | 那些站可能提供被修改过的 APK |
| 检查开发者身份 | 正规渠道里开发者是 Marcel Bokhorst / FairCode B.V. |
| 三星设备额外小心 | 不要用 Galaxy Store 更新 NetGuard |
| F-Droid 版有自己的指纹 | 如果用 F-Droid,用 F-Droid 客户端本身做校验 |
证书变化通知
如果未来 NetGuard 更新了签名(比如开发者证书过期),会在 GitHub Release 和官方网站上提前公告。正常使用中不需要频繁校验——只要从可信渠道安装和更新,风险极低。