Play Integrity API 總覽

Play Integrity API 可協助防範您的應用程式和遊戲發生具有潛在風險的詐欺活動 (例如作弊或未經授權的存取),讓您能採取適當行動回應,防範攻擊並減少濫用情形。

當您的應用程式或遊戲在搭載 Android 4.4 (API 級別 19) 或以上版本的裝置上執行時,Play Integrity API 會提供已簽署的加密回應,其中包含下列資訊:

  • 正版應用程式二進位檔:判斷您是否與 Google Play 認定的未修改二進位檔互動。
  • 正版 Play 安裝:判斷目前的使用者帳戶是否已獲得授權,也就是使用者已從 Google Play 安裝或付費購買您的應用程式或遊戲。
  • 正版 Android 裝置:指出您的應用程式是否在 Google Play 服務支援的 Android 正版裝置上執行。

服務條款與資料安全性

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

Google Play 提供了資料安全性專區,可讓開發人員揭露應用程式的資料收集、分享和安全性做法。為確保您滿足資料安全性專區的相關要求,請參閱 Play Integrity API 如何處理資料,以便瞭解相關資訊。

安全性考量

儘管 Play Integrity API 可增強安全性並防範竄改行為,但只有在遵循下列建議做法的情況下,才能讓 API 為應用程式充分發揮效用:

制定反濫用策略

Play Integrity API 在與其他信號搭配使用,也就是做為整體反濫用策略的一部分,而非單一反濫用機制時效用最佳。在應用程式使用這個 API 的同時,也請搭配其他適當的安全性最佳做法

不要過於頻繁地獲取完整性權杖

產生完整性權杖時會耗用時間、數據用量和電量,而且每個應用程式都有每日呼叫次數上限 (依據用量層級定義)。 因此,建議您呼叫 API 來保護不常執行的重要操作,這類操作是使用者體驗中不可或缺的一環,像是登入服務或加入多人對戰遊戲的伺服器都屬於此類操作。另外,建議您不要為執行頻率高或不重要的動作呼叫 API。舉例來說,不要在每次應用程式進入前景時就呼叫 API,也不要在背景中每隔幾分鐘就呼叫一次。應用程式呼叫 API 的次數過多時會受到限制,以保護使用者不受錯誤導入結果影響。

使用 Nonce 欄位進一步保護應用程式

Play Integrity API 提供名為 nonce 的欄位,可進一步保護應用程式免受特定攻擊,例如重放攻擊和中間人 (PITM) 竄改攻擊。Play Integrity API 會在已簽署的完整性回應內,傳回您在這個欄位中設定的值。請務必按照如何產生 Nonce 指南操作,藉此保護應用程式免受攻擊。

使用安全的伺服器環境

在安全的伺服器環境中執行所有解密和驗證操作。如果您的用戶端應用程式曝露任何安全性詳細資料,攻擊者可能會從您的 APK 或存放區擷取這些詳細資料,並能獲取有關您的應用程式或遊戲的寶貴資訊。

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

比起每次都將相同的二進位檔成功/失敗回應從伺服器傳回應用程式,建議提供一系列決策結果,因為這樣較難複製。例如,您可以使用一系列相關的回應,像是「允許」、「允許限制」、「在 reCAPTCHA 完成後允許限制」,以及「拒絕」。

制定分層強制執行策略

您可以在 Play 管理中心選擇接收額外裝置標籤,以便建立具有多個強制執行層級的反濫用策略。 在您選擇接收額外標籤後,只要符合所有標籤條件,完整性回應就會含有針對同一裝置的多個標籤。因此,您可以讓後端伺服器根據可能的回應範圍做出不同處置。

例如,相較於只傳回 MEETS_BASIC_INTEGRITY 的裝置,傳回 MEETS_BASIC_INTEGRITYMEETS_DEVICE_INTEGRITYMEETS_STRONG_INTEGRITY 的裝置可能更可信。您可以據此設定伺服器的回應。這可以搭配關於使用者帳戶是 LICENSED 還是 UNLICENSED 的不同操作使用。

以指數輪詢方式重試

網路連線不穩定或超載裝置等環境條件可能會造成裝置完整性檢查失敗,這可能會導致系統並未針對可信任的裝置產生標籤。如要緩解這些情況,請務必加入以指數輪詢策略進行重試的選項。

顯示可採取行動的錯誤訊息

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

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

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

高階 API 使用情況

圖 1. 顯示高階 Play Integrity API 設計的循序圖。

如要透過完整性檢查功能保護使用者在應用程式中執行的重要操作,請完成下列步驟:

  1. 應用程式伺服器端的後端會產生不重複的值,並傳送至用戶端邏輯。其餘步驟會將這個邏輯稱為您的「應用程式」。
  2. 應用程式會根據不重複的值和重要動作的內容建立 Nonce,然後呼叫 Play Integrity API 並傳入 Nonce。
  3. 應用程式會收到來自 Play Integrity API 的已簽署加密判定結果。
  4. 應用程式會將已簽署的加密判定結果傳遞至應用程式的後端。
  5. 應用程式的後端會將判定結果傳送至 Google Play 伺服器,然後 Google Play 伺服器會解密並驗證判定結果,並將結果傳回應用程式的後端。
  6. 應用程式的後端會根據權杖酬載中的信號決定要如何繼續操作。
  7. 應用程式的後端會將決定結果傳送至您的應用程式。

API 用量層級

向 API 發出的要求數量不得超過每個應用程式每日的上限,具體取決於呼叫的應用程式所分配的用量層級。下表列出不同層級:

表 1. Play Integrity API 用量層級
用量層級 每日允許的 API 呼叫次數 要求條件
標準 最多 10,000 次 適用於透過任何管道發布的應用程式
調高後 可超過 10,000 次上限,需經過核准 必須正確導入 API 邏輯 (包含重試)
適用於透過 Google Play 發布外,也透過其他任意管道發布的應用程式

就 API 用量而言,如果在 Google Play 和其他發行管道中使用相同套件名稱,便會計為單一應用程式。因此,您可以針對具有不同套件名稱的多個應用程式使用單一 Google Cloud 專案 ID,如此一來,當計算 API 用量時,這些應用程式就會計為單一應用程式。

查看用量層級

為協助您評估與 Play Integrity API 的互動頻率,Play 管理中心會顯示應用程式的用量層級。如要查看這個用量層級,請按照下列指示操作:

  1. 登入 Play 管理中心。
  2. 選取使用 Play Integrity API 的應用程式。
  3. 在左選單的「版本」部分,依序前往「設定」>「應用程式完整性」。
  4. 在「Integrity API」分頁的「設定」部分,尋找「用量層級」屬性。這個屬性值代表應用程式的用量層級。

變更用量層級

想要求變更應用程式的用量層級,請填妥這份表單。如果應用程式需要處理更多使用者,但不需要提高每位使用者的 API 呼叫頻率,您應要求改用上調用量層級。即使採用的用量層級已上調,應用程式仍應繼續將 API 呼叫的用途限定為不常執行的重要動作。

設定配額監控及快訊功能

層級提升要求通常會在幾個工作天內處理完畢。為維持良好的使用者體驗,並避免緊急情況,建議您使用 Cloud Monitoring,針對應用程式的 API 配額用量設定監控及快訊功能。