我們最近宣布,將強化 Play Integrity API 判定結果,讓判定結果更快速、更能抵禦攻擊,並為使用者提供更高的隱私權,同時也改善其他安全性功能。
異動內容摘要
請參閱本文件後續部分,瞭解變更內容和預期影響的詳細摘要。新的判定結果如下:
新整合:所有新整合都會自動收到新的判定結果。
現有的整合作業 (至 2025 年 5 月):如果您已整合 Play Integrity API,可以前往 Play 管理中心的 Play Integrity API 設定頁面啟用這項功能,以便同時接收新版和舊版判定結果,讓您有時間查看並考慮修改應用程式的行為。在選擇加入前,您可以查看預期的變更,包括每個判定結果的裝置百分比,以及新判定結果的 JSON 範例。選擇啟用後,回應中會提供兩個額外欄位,其中包含 Android SDK 版本和舊版判定結果。
2025 年 5 月後的現有整合:所有整合都會推出改善功能,開發人員不必採取任何行動。在 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 11 以上版本 (這項異動會逐步推出) |
僅影響使用選用功能的 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
,且裝置在過去一年內必須已進行安全性更新。這項條件日後可能會有變動。meets-basic-integrity
裝置辨識判定結果表示檢查是在搭載 Android 的實體裝置上進行。裝置的系統啟動載入程式可以鎖定或解鎖,啟動狀態可以驗證或未驗證。這類裝置可能未通過 Play 安全防護認證,因此 Google 無法提供任何安全性、隱私權或應用程式相容性保證,也無法保證裝置不會充當 Proxy,例如 Android 虛擬執行個體。這也表示只要有金鑰認證,已解鎖的裝置就符合傳回meets-basic-integrity
的資格。
這些變更不會影響 Play 遊戲電腦版的 Play Integrity API,後者將繼續傳回 meets-virtual-integrity
。
為什麼在 Android 13 以上版本的裝置上,Play Integrity API 判定結果會有所變更?
Play Integrity API 在各個 Android SDK 版本中,僅部分使用硬體支援的安全性信號。透過增加整合作業,Play Integrity API 判定結果將更能抵禦攻擊者,並為應用程式提供更佳效能,以及為使用者提供更高的隱私權。轉換完成後,我們預期搭載 Android 13 以上版本的裝置將有以下改善:
- 減少需要收集及評估的裝置信號,以便在 Google 伺服器上產生預設判定結果,減少約 90%。選用信號仍需要收集其他信號。
- 對於最糟糕的標準要求,判定延遲時間改善幅度最高可達 80%;對於所有取得預設判定的傳統要求,改善幅度最高可達 80%。選用信號可能會增加延遲時間。
- 提供一致的可靠性和支援性,支援所有 Android 板型規格,包括手機、平板電腦、折疊式裝置、電視、Auto、Wear OS 和 ChromeOS,並提供關鍵認證。
- 在裝置辨識判定結果中,各裝置標籤之間的差異更大:
meets-strong-integrity
、meets-device-integrity
和meets-basic-integrity
。
在選擇加入期間,Play Integrity API 會產生舊版和新版完整性判定結果,但效能不會因此改變。不過,在 2025 年 5 月為所有開發人員推出新判定結果後,我們預期成效會逐漸提升,同時我們也會移除或轉移所有預設和選用信號的舊版依附元件。
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 Integrity API 中的現有信號更可靠,並定期推出新功能,協助開發人員因應新興威脅和新用途。我們正在進行的其他判定結果改善措施包括:
- Play 授權回應:為了傳回 Play 授權回應,Play Integrity API 現在一律要求提出要求的應用程式必須是從 Google Play 安裝或更新。這可修正某些極端情況,並讓開發人員更容易解讀回應。這項功能適用於 Android 13 以上版本。
- 可用選用信號:現在,使用 Google Play 管理中心或 Play SDK 管理中心的開發人員可用的所有選用信號,都必須由 Google Play 在 Android 13 以上版本中安裝或更新要求的應用程式。包括
meets-strong-integrity
、meets-basic-integrity
、最近的裝置活動、應用程式存取風險判定結果,以及 Play 安全防護判定結果。所有其他 Play Integrity API 要求都會標準化,以便接收裝置檢查 (僅附有meets-device-integrity
標籤)、安裝程式檢查和應用程式完整性檢查。 - 針對特定裝置的判定結果變更:Play Integrity API 也會開始在更多情況下自動變更裝置判定結果,以便在所有 Android SDK 版本中更早保護應用程式,例如在有證據顯示過度活動或金鑰遭到入侵時。這包括 Play 在無法取得硬體支援信號時,可改用其他信號為使用者產生暫時性裝置判定結果。建議開發人員使用應用程式內的 Play 修復對話方塊,或是將使用者導向 Play 商店應用程式,以修正完整性判定結果問題。這些對話方塊會隨著時間的推移處理更多情境,並提供使用者特定指引,告訴他們需要根據特定裝置或帳戶進行哪些修正。
加入和退出
如何在 Android 13 以上版本的裝置上啟用改善版判定結果?
使用 Play 管理中心的開發人員可以在 Play Integrity API 設定頁面中選擇加入。
選擇加入後,Play Integrity API 回應會發生什麼情況?
選擇加入後,系統會發生下列三種情況:
- 系統會立即開始根據 Android 13 以上裝置的新判定評估要求,產生並傳回
deviceRecognitionVerdict
欄位中的回應。在搭載 Android 12 以下版本的裝置上,系統會使用歷來判定結果評估來產生deviceRecognitionVerdict
。 - 您會收到新的欄位
deviceAttributes
,其中包含裝置上的 Android SDK 版本。 - 您將收到新的欄位
legacyDeviceRecognitionVerdict
,其中包含根據歷來判定結果評估要求的裝置完整性回應,不受 Android SDK 版本影響。
當判定結果變更於 2025 年 5 月全面推出時,所有選擇加入的應用程式都會停止收到 legacyDeviceRecognitionVerdict
欄位。
如何回報完整性判定結果的問題?
如要回報 Play Integrity API 回應的問題 (無論是舊版或新版判定結果),請按照支援頁面上的操作說明進行。
啟用後還能停用嗎?
可以,您可以在 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 安全防護認證有問題,使用者可以按下按鈕,嘗試修正問題。這麼做可重新整理裝置的認證狀態,並提供具體指引,說明需要修正的項目。