我們最近宣布強化了 Play Integrity API 判定結果,讓判定結果更快速、更能抵禦攻擊,並為使用者提供更完善的隱私權,同時也改善了其他安全性功能。
異動內容摘要
本文件後面會詳細列出變更內容和常見問題。2025 年 5 月的判定結果變更如下:
功能 | 異動內容 | 預估影響* | 哪些裝置 |
---|---|---|---|
影響所有提出 Play Integrity API 要求的開發人員的變更 | |||
裝置判定結果回應:meets-device-integrity | 必須具備硬體支援的正面已驗證開機程序判定結果 | 影響不大,因為 Play Integrity API 已在 Android 13 以上版本的裝置上使用硬體支援的安全信號 (~0.4%) | Android 13 以上版本 |
應用程式完整性回應:應用程式辨識判定結果 | 沒有變化 | 影響不大,這會反映裝置判定結果的變化 (約 0.4%) | Android 13 以上版本 |
帳戶詳細資料回應:Play 授權判定結果 | 要求的應用程式必須透過 Google Play 安裝或更新 | 授權回應數量略微減少 (~2.5%) | Android 6 以上版本 |
僅影響使用選用功能的 Play 管理中心開發人員和 Play SDK 管理中心開發人員的異動 | |||
裝置判定結果回應:meets-basic-integrity | 必須具備 Android 平台金鑰認證,但啟動狀態可以是已驗證或未驗證 | 基本回應率略微下降 (~0.4%) | Android 13 以上版本 |
裝置判定結果回應:meets-strong-integrity | 必須在過去一年內進行安全性更新 | 強烈回應減少 (約 14.5%) | Android 13 以上版本 |
所有選用信號 | 要求的應用程式必須透過 Google Play 安裝或更新 | 回應中包含選用信號的百分比下降 (約 7%) | Android 13 以上版本 |
*上述所有預估影響百分比均以平均值為準,不同應用程式可能會因安裝數而出現較小或較大的變化。
常見問題
總覽
什麼是 Play Integrity API?
Play Integrity API 可取得裝置、應用程式和使用者的相關資訊,協助您評估使用者應用程式環境的可信度,進而偵測並回應潛在的濫用行為和攻擊。
Play Integrity API 提供哪些信號?
Play Integrity API 包含要求應用程式的身分、要求應用程式是否由 Google Play 安裝,以及裝置是否為正版 Play 安全防護認證 Android 裝置。這些信號預設為提供。您可以在應用程式的後端伺服器上讀取這些信號,並決定應用程式是否應回應,以及回應方式。Google Play 開發人員可以選擇接收 Play 安裝作業中的額外信號,以便查看更多資訊。
什麼是 Android 平台金鑰認證?
Android 平台金鑰認證可讓應用程式驗證裝置狀態,並取得硬體支援開機完整性的強烈信號。這取決於 Google 在裝置的硬體支援金鑰庫中佈建的金鑰。Play Integrity API 已在部分裝置上使用金鑰認證,取得硬體支援的安全信號,現在將在所有搭載 Android 13 以上版本的裝置上,更深入地整合這些信號。
判決結果變更
針對 Android 13 以上版本裝置,Play Integrity API 判定結果有哪些異動?
Play Integrity API 現在要求所有完整性判定結果都使用硬體支援的安全信號:
meets-device-integrity
裝置辨識判定結果表示應用程式執行的裝置是正版的 Play 安全防護認證 Android 裝置。這個判定結果會要求鎖定裝置系統啟動載入程式,並將載入的 Android 作業系統設為經過認證的裝置製造商映像檔。meets-strong-integrity
裝置辨識判定結果表示裝置已通過 Play 安全防護認證,並安裝最新的安全性更新。這個判定結果會要求meets-device-integrity
和過去一年內的安全性更新,適用於裝置的所有分區,包括 Android OS 分區修補程式和供應商分區修補程式。這項規定日後可能會有變動。meets-basic-integrity
裝置辨識判定結果表示檢查是在搭載 Android 的實體裝置上進行。裝置的系統啟動載入程式可以鎖定或解鎖,啟動狀態則可驗證或未驗證。這類裝置可能未通過 Play 安全防護認證,因此 Google 無法提供任何安全性、隱私權或應用程式相容性保證,也無法保證裝置不會充當 Proxy,例如 Android 虛擬執行個體。這也表示只要有金鑰認證,已解鎖的裝置就符合傳回meets-basic-integrity
的條件。
這些變更不會影響 Play 遊戲電腦版的 Play Integrity API,後者將繼續傳回 meets-virtual-integrity
。
為何在 Android 13 以上版本裝置上變更 Play Integrity API 判定結果?
在 Android 12 以下版本中,Play Integrity API 會部分使用硬體支援的安全信號。在 Android 13 以上版本中,Play Integrity API 判定結果要求使用硬體支援的安全性,因此可更有效地抵禦攻擊者,讓應用程式效能更佳,並提升使用者的隱私權。開發人員可在搭載 Android 13 以上版本的裝置上,體驗以下改善項目:
- 減少需要收集及評估的裝置信號,以便在 Google 伺服器上產生預設判定結果,減少約 90%。選用信號仍需要收集其他信號。
- 對於最糟糕的標準要求,判定延遲時間改善幅度最高可達 80%;對於所有取得預設判定的傳統要求,改善幅度最高可達 80%。選用信號可能會增加延遲時間。
- 提供一致的可靠性和支援程度,支援所有 Android 板型規格,包括手機、平板電腦、摺疊式裝置、電視、Auto、Wear OS 和 ChromeOS,並提供重要認證。
- 在裝置辨識判定結果中,各裝置標籤之間的差異更大:
meets-strong-integrity
、meets-device-integrity
和meets-basic-integrity
。
Play 遊戲電腦版的 Play Integrity API 判定結果不會變更,在 Android 12 以下版本和 Android 13 以上版本都會維持不變。
如何更新應用程式的完整性判定結果後端邏輯,以便考量 Android SDK 版本?
如果您想根據 Android SDK 版本,在應用程式的後端伺服器上使用不同的邏輯,可以在判定結果中使用新的裝置屬性欄位。以下提供示例說明如何進行這項操作:
Kotlin
val deviceIntegrity = JSONObject(payload).getJSONObject("deviceIntegrity") val sdkVersion = if (deviceIntegrity.has("deviceAttributes")) { deviceIntegrity.getJSONObject("deviceAttributes").getInt("sdkVersion") } else { 0 } if (sdkVersion >= 30) { // Provide Android R+ specific experience to the user. }
Java
JSONObject deviceIntegrity = new JSONObject(payload).getJSONObject("deviceIntegrity"); int sdkVersion = deviceIntegrity.has("deviceAttributes") ? deviceIntegrity.getJSONArray("deviceAttributes").getInt("sdkVersion") : 0; if (sdkVersion >= 30) { // Provide Android R+ specific experience to the user. }
如何在所有 Android SDK 版本中使用舊版 meets-strong-integrity
標籤定義?
您可以透過更新應用程式的後端邏輯,在 Android 13 以下版本裝置上使用 meets-strong-integrity
,在 Android 13 以上版本裝置上使用 meets-device-integrity
,並在判定結果中使用包含 Android SDK 版本的新裝置屬性欄位。以下是這項操作的範例:
Kotlin
val deviceRecognitionVerdict = if (deviceIntegrity.has("deviceRecognitionVerdict")) { deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString() } else { "" } val deviceIntegrityToCheckFor = sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY"; if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) { // Looks good! }
Java
JSONObject deviceIntegrity = new JSONObject(payload).getJSONObject("deviceIntegrity"); String deviceRecognitionVerdict = deviceIntegrity.has("deviceRecognitionVerdict") ? deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString() : ""; String deviceIntegrityToCheckFor = sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY"; if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) { // Looks good! }
由於這也是硬體支援的信號,因此在搭載 Android 13 以上版本的裝置上,裝置屬性欄位是最可靠的。
還有哪些判定結果變更?
我們會持續投入資源,讓 Play Integrity API 中的現有信號更可靠,並定期推出新功能,協助開發人員因應新興威脅和新用途。我們也改善了其他判定結果,包括:
- Play 授權回應:為了傳回 Play 授權回應,Play Integrity API 現在一律要求提出要求的應用程式必須是從 Google Play 安裝或更新。這可修正某些極端情況,並讓開發人員更容易解讀回應。
- 可用選用信號:現在,使用 Google Play 管理中心或 Play SDK 管理中心的開發人員,若要使用所有可用選用信號,都必須在 Android 13 以上版本中,由 Google Play 安裝或更新要求的應用程式。包括
meets-strong-integrity
、meets-basic-integrity
、最近的裝置活動、應用程式存取風險判定結果,以及 Play 安全防護判定結果。我們將所有其他 Play Integrity API 要求標準化,以便接收裝置檢查 (僅附有meets-device-integrity
標籤)、安裝程式檢查和應用程式完整性檢查。 - 針對特定裝置的判定結果變更:Play Integrity API 會在更多情況下自動變更裝置判定結果,以便在所有 Android SDK 版本中更早保護應用程式,例如在有證據顯示過度活動或金鑰遭到入侵時。這包括 Play 能夠在無法取得硬體支援信號時,改用其他信號為使用者產生暫時性的裝置判定結果。建議開發人員使用 應用程式內的 Play 修復對話方塊,或將使用者導向 Play 商店應用程式,以修正完整性判定結果問題。這些對話方塊將隨著時間推移,處理更多情境,並提供使用者具體指引,告訴他們需要根據特定裝置或帳戶修正哪些問題。
如何回報完整性判定結果的問題?
如要回報 Play Integrity API 回應的問題 (無論是舊版或新版判定結果),請按照支援頁面上的操作說明進行。
適用地區
Play Integrity API 需要哪些條件才能運作?
Play Integrity API 要求裝置必須安裝 Google Play 商店和 Google Play 服務,包括 Android 裝置和 Google Play 遊戲電腦版。傳統要求需要 Android 4.4 (API 級別 19) 以上版本,標準要求則需要 Android 5.0 (API 級別 21) 以上版本。在搭載 Android 13 (API 級別 33) 以上版本的裝置上,Play Integrity API 現已支援所有 Android 板型規格 (包括行動裝置、平板電腦、摺疊式裝置、電視、Auto、Wear OS 和 ChromeOS),並提供相同程度的可靠性和認證功能。
為什麼 Play Integrity API 會對不同裝置做出不同的判定結果?
Play Integrity API 提供多種裝置判定結果,以便開發人員因應不同的使用情境和風險容忍度,並採用分層強制執行策略。舉例來說,如果應用程式和裝置較可信任,開發人員可能會簡化使用者驗證步驟;但如果裝置不明,開發人員可能需要額外的使用者驗證,才能執行受保護或敏感的動作。這可能是減少濫用行為和攻擊的有效方法。
什麼是獲得 Play 安全防護認證的 Android 裝置?
通過 Play 安全防護認證的 Android 裝置 (也稱為 GMS Android 裝置) 是指執行可預測軟體的裝置,該軟體已通過數百項 Google 相容性測試,並遵循 Android 安全性和權限模型,且隨附 Google Play 安全防護套裝的防惡意軟體功能。如果 Play Integrity API 能夠驗證裝置是獲得 Play 安全防護認證的 Android 裝置,就會在裝置辨識判定結果中傳回 meets-device-integrity
回應。
meets-basic-integrity
裝置是什麼?
Play Integrity API 也會在裝置判定結果 meets-basic-integrity
中傳回選用回應。如果裝置只傳回 meets-basic-integrity
判定結果,而沒有 meets-device-integrity
或 meets-strong-integrity
,表示無法驗證 Android 作業系統,但金鑰認證是有效的。這表示檢查是在搭載 Android 的實體裝置上執行,但 Google 無法保證裝置的安全性、隱私權或應用程式相容性,也無法保證裝置不會充當 Proxy,例如 Android 虛擬例項。視開發人員的用途和風險容忍度而定,他們可以決定應用程式在這些裝置上的執行方式。
任何開發人員都可以使用 Play Integrity API 嗎?
是的,任何 Android 開發人員都可以發出 Play Integrity API 要求,以便接收預設完整性判定結果。無論發布管道為何,使用量上限為每天 1 萬次要求。除了在任何其他發行管道外,在 Google Play 上發布應用程式的開發人員也可以要求調高每日配額。
任何開發人員都可以使用 Android 平台金鑰認證嗎?
是的,任何 Android 開發人員都可以使用 Android 平台金鑰認證取得金鑰認證記錄,並透過 Google 認證根金鑰的公開憑證進行驗證。Play Integrity API 可讓開發人員享有金鑰認證和其他功能的好處,而無須自行整合金鑰認證,避免複雜的整合作業。
違規處置
開發人員如何使用 Play Integrity API 判定結果?
開發人員可以自行決定是否要使用 Play Integrity API 判定結果,以及如何使用。部分開發人員會收集信號,用於內部反濫用分析,其他開發人員則會根據判定結果決定應用程式的行為。舉例來說,開發人員可以決定要求信任度較低的裝置在建立帳戶時,執行額外的使用者驗證步驟;或是決定信任度較低的裝置應在同一個多人遊戲伺服器上一起遊玩。
Play Integrity API 會封鎖使用者或裝置嗎?
否,Play Integrity API 不會阻擋任何功能的存取權。這是一項可選的開發人員服務,可提供信號,而開發人員則可選擇如何處理這些信號。
如果裝置無法通過 Play Integrity API 裝置檢查,使用者該怎麼做?
使用者可以前往裝置上的 Play 商店應用程式,開啟「設定」選單,然後向下捲動至「關於」,並查看「Play 安全防護認證」底下,如果裝置的 Play 安全防護認證有問題,使用者可以按下按鈕,嘗試修正問題。這麼做可重新整理裝置的認證狀態,並提供具體指引,說明需要修正的項目。