驗證 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 簽章工具。發現過時的命令或作業系統變更?發送編輯說明。