验证 APK 签名:如何确保您的应用程序安全

A magnifying glass over a phone showing a certificate and fingerprint, illustrating verifying APK signatures

Android 上的侧载应用程序提供了自由和灵活性,但也带来了重大风险:被篡改的应用程序。恶意行为者经常修改流行的应用程序以包含间谍软件或广告软件,然后再将它们重新分发到非官方网站上。您如何确定您刚刚下载的 APK 与开发者上传到 Google Play 的 APK 完全相同?

答案归结为APK数字签名。下面,我们将介绍应用程序签名的实际工作原理,并在您决定信任 APK 之前使用 在线 APK 验证器 检查 APK 的哈希值和证书。

60秒版本:

Android 使用发布者密钥对每个 APK 进行签名。手机拒绝签名与现有安装不匹配的“更新”;这是操作系统的主要反假冒防御措施。要验证旁加载的 APK,请计算其 SHA-256 哈希及其签名证书指纹,然后将两者与您信任的值(现有的 Play 商店安装、开发人员发布的指纹或已知良好的早期副本)进行比较。匹配意味着文件字节相同并且由同一发布者签名;不匹配意味着 不要安装。

什么是 APK 签名?

数字签名是身份的加密证明。当开发人员完成应用程序时,他们使用私钥(密钥库)对其进行“签名”。然后,Android 使用 APK 中嵌入的相应公钥来确保:

  1. 正直: 文件自签名以来未曾更改。
  2. 真实性: 开发人员就是他们所说的那样。
  3. 更新: 只有使用相同密钥签名的 APK 才能更新手机上的现有应用程序。

签名的演变:V1、V2、V3 和 V4

Google 多年来不断提高 APK 安全性:

如何在线验证APK签名

我们的APK验证工具不只是计算哈希值;它对证书链执行完整的加密审核。以下是如何使用它:

验证步骤:

  1. 导航至 APK验证器 页面。
  2. 选择您的 APK 或 XAPK 文件。
  3. 我们的工具解析 META-INF/ 目录并提取证书数据(.RSA、.DSA 或 .EC)。
  4. 等待分析完成(只需几秒钟)。
  5. 查看 证书信息:开发者名称、组织和原籍国。
  6. 检查 哈希值:将我们网站上显示的 SHA-256 与发布者在其自己的官方网站、项目发布页面或签名清单上发布的值进行比较。

安全警告

如果验证程序显示 《调试证书》 或 Facebook 或 WhatsApp 等主要应用程序的未知“自签名”实体,则为 不要安装它。几乎可以肯定它已受到损害。

了解校验和(MD5、SHA-1、SHA-256)

校验和是代表整个文件的固定长度字符串。如果更改应用程序图标中的单个像素,SHA-256 哈希值将完全改变。

哈希类型 安全等级 笔记
MD5 遗产 容易受到碰撞。不是为了安全。
SHA-1 缓和 仍然广泛用于快速查找。
SHA-256 出色的 应用程序验证的现代标准。

签名证书实际上告诉您什么

当验证者返回证书时,对侧载安全重要的部分不是 X.509 元数据的彩色部分,而是一小部分字段。实际上:

哈希与签名:大多数教程都会跳过的区别

人们经常将“哈希”和“签名”混为一谈。它们的用途截然不同,安全验证需要:

对于旁加载 APK,最强有力的保证将两者结合起来:证书指纹与发布者的已知指纹 和 相匹配,文件的 SHA-256 与发布者为该确切版本发布的值相匹配。

哪里可以获得值得信赖的参考指纹

验证最困难的部分是知道要比较的正确值。一些可靠的方法,按可信度大致顺序排列:

  1. 发布者自己的网站或发布页面。 许多开源项目和具有安全意识的供应商在下载时发布其签名证书的 SHA-256 指纹。这是黄金标准。
  2. 现有的 Play 商店安装。 如果应用程序已安装在 Play 管理的设备上,则根据定义,其证书指纹是发布者的指纹。将侧载 APK 的指纹与其进行比较。 Apk 分析器(在 Android Studio 中)或 apksigner verify --print-certs 等工具直接从已安装的 APK 中读取它。
  3. 您安装的此应用程序的第一个 APK。 如果您已经使用该应用程序一段时间并且从未出现过“签名不匹配”提示,则可以使用任何旧版本作为参考。来自同一发布者的后续更新必须使用相同的密钥(或通过 v3 进行轮换,在这种情况下链仍会进行验证)。
  4. 存档的公共快照。 互联网档案馆和类似服务有时会保留旧的 APK 发布页面及其声明的哈希值。对于原始发布者页面已消失的非常旧的版本非常有用。

常见验证错误

您的应用程序安全吗?

别猜了。在几秒钟内根据官方开发者证书验证您侧载的 APK。

开始APK验证

常见问题 (FAQ)

为什么 Android 阻止我安装修改过的 APK?

因为新 APK 的签名与已安装的签名不匹配。这可以防止黑客用假银行应用程序“覆盖”您真正的银行应用程序。

APK修改后可以重新签名吗?

是的,但您将使用 不同的钥匙。该应用程序仍将安装在“干净”的手机上,但它将不再接收来自原始开发人员的更新。

什么是证书固定?

这是一项高级安全功能,应用程序在与其服务器通信之前显式检查特定证书,从而使被篡改的应用程序即使安装正确也毫无用处。

让签名验证成为每个旁加载的一部分

签名在现代 Android 安全性中承担着许多繁重的工作。花额外的几秒钟通过 APK验证器 运行文件是一种廉价的方法,可以在安装被篡改的应用程序之前使其远离您的设备。

由 Shaefale 女士设计并记录 首席开发人员和 Android 包架构师 • 在 Android 12–15 上经过验证

Mst Shaefale 在 xapktoapk.com 维护客户端 XAPK/APKS 合并、二进制清单解析器和 APK v1+v2 签名工具。发现过时的命令或操作系统更改?发送编辑说明。