我們最近宣布,已強化 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 以上版本 |
*先前提到所有預估影響百分比時,都是以平均值為依據,不同應用程式的變化幅度可能較小或較大,視安裝數而定。
**選用信號 (裝置屬性除外) 包括:
meets-basic-integrity
、meets-strong-integrity
、近期裝置活動、
裝置召回 (Beta 版)、Play 安全防護狀態和應用程式存取風險。
常見問題
總覽
什麼是 Play Integrity API?
Play Integrity API 可協助您取得裝置、應用程式和使用者的相關資訊,評估使用者應用程式環境的信任度,進而偵測及防範潛在的濫用和攻擊行為。
Play Integrity API 提供哪些信號?
Play Integrity API 會提供提出要求的應用程式身分、應用程式是否透過 Google Play 安裝,以及裝置是否為正版認證 Android 裝置。系統預設會提供這些信號。您可以在應用程式的後端伺服器上讀取這些信號,並決定應用程式是否應回應,以及回應方式。Google Play 開發人員可以選擇在 Play 安裝次數中接收額外信號,查看更多資訊。
什麼是 Android 平台金鑰認證?
Android 平台金鑰認證可讓應用程式驗證裝置狀態,並取得硬體支援的開機完整性信號。這取決於 Google 在裝置硬體支援的金鑰儲存區中佈建的金鑰。Play Integrity API 已在部分裝置上使用金鑰認證,取得硬體支援的安全信號,現在將在所有搭載 Android 13 以上版本的裝置上,更深入整合這些信號。
判決變更
Android 13 以上版本裝置的 Play Integrity API 判定結果有哪些異動?
Play Integrity API 現在會使用硬體支援的安全信號,提供所有完整性判定結果:
meets-device-integrity
裝置辨識結果表示應用程式執行的裝置是正版且通過認證的 Android 裝置。這項判決會要求鎖定裝置系統啟動載入程式,且載入的 Android OS 必須是經過認證的裝置製造商映像檔。meets-strong-integrity
裝置辨識判定結果表示裝置是正版且通過認證的 Android 裝置,並已安裝最新的安全性更新。如要獲得這項判定結果,裝置的所有分割區都必須在過去一年內收到meets-device-integrity
和安全性更新,包括 Android OS 分割區修補程式和供應商分割區修補程式。這項條件日後可能會有變動。meets-basic-integrity
裝置辨識判定結果表示檢查是在實體 Android 裝置上進行。裝置的系統啟動載入程式可以鎖定或解鎖,啟動狀態可以是已驗證或未驗證。裝置可能未通過認證,因此 Google 無法提供任何安全性、隱私權或應用程式相容性保證,也無法保證裝置不會做為 Proxy,例如 Android 的虛擬執行個體。這也表示只要通過金鑰認證,已解鎖的裝置也符合傳回meets-basic-integrity
的條件。
這些變更不會影響 Play Integrity API 在 Google Play 遊戲電腦版上的運作,該 API 仍會傳回 meets-virtual-integrity
。
為什麼 Android 13 以上版本裝置的 Play Integrity API 判定結果會有所變更?
在 Android 12 以下版本中,Play Integrity API 會部分使用硬體支援的安全信號。在 Android 13 以上版本中,Play Integrity API 判定結果會使用硬體支援的安全信號,因此更不容易遭到攻擊,應用程式效能也更出色,同時為使用者提供更完善的隱私保護。在搭載 Android 13 以上版本的裝置上,開發人員可望獲得下列改善:
- 需要收集和評估的裝置信號減少約 90%,Google 伺服器即可產生預設判定結果。選用信號 仍須收集額外信號。
- 最差情況下,標準要求的判定延遲時間最多可縮短 80%,所有傳統要求的預設判定延遲時間最多可縮短 80%。選用信號可能會增加延遲時間。
- 為所有 Android 板型規格提供一致的可靠性和支援,包括手機、平板電腦、摺疊式裝置、電視、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
、近期裝置活動、裝置喚回 (Beta 版)、應用程式存取風險判定和 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 板型規格,並提供重要認證,包括行動裝置、平板電腦、摺疊式裝置、TV、Android Auto、Wear OS 和 ChromeOS。
為什麼 Play Integrity API 對不同裝置的判定結果不同?
Play Integrity API 提供多種裝置判定結果,可滿足不同使用情境和風險容許度的開發人員需求,並協助他們制定分層強制執行策略。舉例來說,如果應用程式和裝置較為可信,開發人員可能會簡化使用者驗證步驟;但如果裝置不明,開發人員可能會要求額外驗證使用者身分,才能執行受保護或私密的動作。這項措施可有效減少濫用和攻擊行為。
什麼是通過認證的 Android 裝置?
通過認證的 Android 裝置 (也稱為通過 Play 安全防護認證的 Android 裝置) 是指執行可預測軟體的裝置,這類裝置已通過數百項 Google 相容性測試,符合 Android 安全性和權限模式,且出廠時搭載 Google Play 安全防護套件的惡意軟體防護功能。如果 Play Integrity API 能夠驗證裝置是通過認證的 Android 正版裝置,就會在裝置辨識判定結果中傳回 meets-device-integrity
回應。
什麼是 meets-basic-integrity
裝置?
Play Integrity API 也會在裝置判定結果中傳回選用回應,meets-basic-integrity
。如果裝置只傳回 meets-basic-integrity
判定結果,而沒有 meets-device-integrity
或 meets-strong-integrity
,表示系統無法驗證 Android OS,但有金鑰認證。這表示檢查是在實體 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 安全防護認證有問題,使用者可以按下按鈕嘗試修正問題。這樣一來,裝置的認證狀態就會重新整理,並提供具體指引,說明需要修正的項目。