Play Integrity API 總覽

藉由 Play Integrity API,您可以檢查互動情形和伺服器要求,確認來源是正版 Android 裝置上執行的正版應用程式二進位檔。應用程式的後端伺服器可以偵測具有潛在風險的詐欺活動 (例如從遭竄改的應用程式版本和不可靠的環境偵測),採取適當的因應措施防範攻擊,並減少濫用情形。

當您的應用程式或遊戲在採用 Google Play 商店且支援 Google Play 服務的 Android 裝置執行時,Play Integrity API 會提供回應,協助您判斷是否正在與下列項目互動:

  • 正版應用程式二進位檔:判斷您是否與 Google Play 認定的未修改二進位檔互動。
  • 正版 Play 安裝管道:判斷目前的使用者帳戶是否已獲得授權,也就是使用者已從 Google Play 安裝或付費購買您的應用程式或遊戲。
  • 正版 Android 裝置:判斷您的應用程式是否在 Google Play 服務 (或正規的 Google Play 遊戲電腦版) 支援的正版 Android 裝置上執行。
  • 不含已知的惡意軟體:判斷 Google Play 安全防護是否已啟用,以及裝置上是否安裝有風險或危險的應用程式。

總覽

當使用者在應用程式中執行操作時,您可以呼叫 Play Integrity API,確認該操作是在正版應用程式二進位檔中發生,也就是由 Google Play 安裝、在正版 Android 裝置上執行的二進位檔。您也可以選擇使用有關環境的信號,例如是否啟用 Google Play 安全防護,以及是否發現裝置上安裝了已知的惡意軟體。如在判定結果中發現問題,應用程式的後端伺服器可判斷要採取哪些行動,防範濫用、詐欺、誤用、作弊、未經授權的存取和攻擊行為等問題。

Play Integrity API 流程總覽

安全性考量

為使應用程式充分發揮 Play Integrity API 的效用,請遵循下列建議做法:

制定反濫用策略

Play Integrity API 在與其他信號搭配使用,也就是做為整體反濫用策略的一部分,而非單一反濫用機制時效用最佳。在應用程式使用這個 API 的同時,也請搭配其他適當的安全性最佳做法。根據預設,應用程式每天在所有安裝檔中最多共可提出 10,000 次要求,但您可以要求提高每日上限

決定要求完整性判定結果的方式

Play Integrity API 提供兩種方式讓您要求及接收完整性判定結果。無論您是提出標準要求、傳統要求,還是兩者並用,完整性判定結果的回應都會以同一格式傳回。

標準 API 要求適用於任何應用程式或遊戲,隨選即用,可檢查任一使用者操作或伺服器要求是否正規。標準要求的延遲時間最短 (平均為數百毫秒),可相當程度地確保您取得實用的判定結果。這類要求會善用智慧型裝置端快取功能,同時將能抵禦幾類特定攻擊的防護功能委派給 Google Play。

傳統 API 要求是要求完整性判定結果的原始方式,系統目前仍支援提出這類要求。傳統要求的延遲時間較長 (平均為數秒),您必須自行負責降低特定類型攻擊的風險。由於傳統要求會啟動新的評估作業,所耗用的使用者資料量和電量會比標準要求還多,因此,建議把這類要求做為不常執行的一次性檢查,用於確認高度敏感/重要操作是否正規。如果正在考慮提出傳統要求,並快取這類要求留待日後使用,建議您改為提出可降低攻擊風險的標準要求。

下表重點列出兩種要求的主要差異:

標準 API 要求 傳統 API 要求
Android SDK 最低需求版本 Android 5.0 (API 級別 21) 以上版本 Android 4.4 (API 級別 19) 以上版本
API 需要暖機 ✔️ (幾秒)
要求的一般延遲時間 幾百毫秒 幾秒
可能的要求頻率 頻繁 (隨選即可檢查任何操作或要求) 不頻繁 (對最重要的操作或最機密的要求執行一次性檢查)
如何因應重送和類似攻擊 由 Google Play 自動採取因應措施 使用 nonce 欄位和伺服器端邏輯

您可以查看傳統要求的注意事項表格,瞭解更多差異。

避免他人輕易複製您的 API 要求

標準 API 要求中有一個名為 requestHash 的欄位,用於防範竄改和類似攻擊。在這個欄位中,您應加入應用程式要求內所有相關值的摘要。請按照如何使用內容繫結指南操作,為應用程式的標準要求提供防護。

傳統 API 要求中則有個名為 nonce (number once 的簡寫,意為只能使用一次) 的欄位,用於防止重播和竄改等特定類型的攻擊。請按照如何產生 Nonce 指南操作,為應用程式的傳統要求提供防護。

避免快取完整性判定結果

快取完整性判定結果會增加處理 Proxy 的風險,在 Proxy 這類攻擊中,不肖人士會在另一個環境重複使用善意裝置的判定結果,為的就是要大肆濫用。與其對回應執行快取,不如提出標準 API 要求取得隨選判定結果。

制定分層強制執行策略

Play Integrity API 的完整性判定結果有多種可能的回應方式,可讓您建構具有多個強制執行層級的反濫用策略。如要這麼做,請設定應用程式的後端伺服器,根據各個可能回應或一組回應採取不同行為。

您也可以在 Play 管理中心的 API 回應中選擇接收額外裝置標籤,這樣就能依據裝置可信度制定分層的強制執行策略。只要裝置符合標籤條件,就會分別傳回所有標籤。舉例來說,在選擇接收所有裝置標籤後,會同時傳回 MEETS_STRONG_INTEGRITYMEETS_DEVICE_INTEGRITYMEETS_BASIC_INTEGRITY 的裝置,和只傳回 MEETS_BASIC_INTEGRITY 的裝置相較,您可選擇更信任前者。無論何種情況,您都可透過伺服器做出不同回應。

從伺服器將一系列回應傳送至應用程式

與其每次都將相同的二進位檔成功/失敗回應從伺服器傳回應用程式,不妨提供一系列決策結果,因為這樣可增加複製難度。例如,您可以使用一系列相關的回應,像是「允許」、「允許但有限制」、「在人機驗證 (Captcha) 完成後允許但有限制」,以及「拒絕」。

偵測大規模濫用行為

使用 Play Integrity API 的近期裝置活動功能,找出要求大量認證的裝置。大量活動濫用者通常會從真實裝置產生有效的認證結果,並將這些結果提供給機器人,自動在已解鎖裝置和模擬器上發動攻擊。您可以利用近期裝置活動結果,判斷應用程式過去 1 小時內在特定裝置上產生的認證數量。

顯示提供可行建議的錯誤訊息

請盡可能為使用者提供實用的錯誤訊息,並告知應採取哪些行動來修正問題,例如重試、啟用網路連線,或檢查 Play 商店應用程式是否為最新版本。

針對非預期問題或服務中斷情形制定因應計畫

Play 狀態資訊主頁會顯示 Play Integrity API 服務狀態的相關資訊,以及所有停止運作和服務中斷相關資訊。您可以預先設定萬一發生大規模 Play Integrity API 服務中斷情形時,後端伺服器該如何運作。

考慮採用端對端企業詐欺解決方案

需要完整的詐欺和機器人管理解決方案的企業客戶可以購買 reCAPTCHA Enterprise 行動版,其中的 Android 專用 SDK可提供開發人員詐欺風險分數參考。reCAPTCHA Enterprise 會自動納入 Play Integrity API 信號,並與客戶的 reCAPTCHA 網路和應用程式信號結合,提供立即可用、無縫接軌、且不易察覺的詐欺防範管理解決方案。此外,還可以針對無法使用 Play Integrity API 的 Android 應用程式提供安全防護。

服務條款與資料安全性

存取或使用 Play Integrity API 即表示您同意《Play Integrity API 服務條款》。存取 API 前,請先詳閱並瞭解所有適用的條款和政策。

Google Play 提供了「資料安全性」專區,可讓開發人員揭露應用程式的資料收集、分享和安全性做法,讓使用者掌握相關資訊。為了協助您填寫資料表單,請參閱這裡的資訊,瞭解 Play Integrity API 如何處理資料。