Omówienie interfejsu Play Integrity API

Interfejs Play Integrity API pomaga sprawdzać, czy działania użytkowników i żądania serwera pochodzą z autentycznej aplikacji zainstalowanej z Google Play i uruchomionej na oryginalnym urządzeniu z Androidem. Wykrywając niebezpieczne interakcje, np. pochodzące ze zmodyfikowanych wersji aplikacji, niezaufanych urządzeń lub emulowanych środowisk, serwer backendu może podejmować odpowiednie działania, które mają na celu zapobieganie nadużyciom i nieautoryzowanemu dostępowi, zwalczanie oszustw i oszukiwania oraz ochronę użytkowników przed atakami.

Omówienie interfejsu Play Integrity API

Interfejs API zwraca oceny, które pomagają wykrywać potencjalne zagrożenia, w tym:

  • Nieautoryzowany dostęp: wynik accountDetails pomaga określić, czy użytkownik zainstalował Twoją aplikację lub grę w Google Play lub za nią zapłacił.
  • Modyfikacja kodu: wynik appIntegrity pomaga określić, czy używasz niezmodyfikowanego pliku binarnego rozpoznawanego przez Google Play.
  • Urządzenia stwarzające ryzyko i środowiska emulowane: deviceIntegrityocena pomaga określić, czy aplikacja działa na oryginalnym urządzeniu z Androidem z certyfikatem Play Protect, czy na oryginalnej instancji Gier Google Play na PC.

Deweloperzy w Google Play mogą też włączyć otrzymywanie dodatkowych wyników weryfikacji, aby wykrywać szerszy zakres potencjalnych zagrożeń, w tym:

  • Urządzenia bez poprawek: odpowiedź MEETS_STRONG_INTEGRITYdeviceIntegrity wyniku pomaga określić, czy na urządzeniu zastosowano ostatnie aktualizacje zabezpieczeń (w przypadku urządzeń z Androidem 13 i nowszymi wersjami).
  • Ryzykowny dostęp innych aplikacji: appAccessRiskVerdict pomaga określić, czy uruchomione są aplikacje, które mogą przechwytywać ekran, wyświetlać nakładki lub sterować urządzeniem (np. przez niewłaściwe wykorzystywanie uprawnień ułatwień dostępu).
  • Znane złośliwe oprogramowanie: playProtectVerdict pomaga ustalić, czy usługa Google Play Protect jest włączona i czy wykryła zainstalowane na urządzeniu stwarzające ryzyko lub niebezpieczne aplikacje.
  • Nadmierna aktywność: poziom recentDeviceActivity pomaga określić, czy urządzenie w ostatnim czasie wygenerowało anomalnie dużą liczbę żądań, co może wskazywać na zautomatyzowany ruch i być oznaką ataku.
  • Powtarzające się nadużycia i ponownie używane urządzenia: deviceRecall (beta) pomaga określić, czy korzystasz z urządzenia, które zostało wcześniej oznaczone, nawet jeśli aplikacja została ponownie zainstalowana lub urządzenie zostało zresetowane.

Interfejsu API można używać na urządzeniach z Androidem, w tym na telefonach, tabletach, urządzeniach składanych, Androidzie Auto, Androidzie TV, Androidzie XR, ChromeOS, Wear OS i Google Play Games na PC.

Bezpieczeństwo

Interfejs Play Integrity API będzie działać najlepiej, gdy zastosujesz te zalecane metody:

mieć strategię przeciwdziałania nadużyciom;

Interfejs Play Integrity API działa najlepiej, gdy jest używany w połączeniu z innymi sygnałami w ramach ogólnej strategii przeciwdziałania nadużyciom, a nie jako jedyny mechanizm tego rodzaju. Używaj tego interfejsu API w połączeniu z innymi odpowiednimi sprawdzonymi metodami zabezpieczeń w przypadku swojej aplikacji. Domyślnie aplikacja może wysyłać maksymalnie 10 tys. żądań dziennie we wszystkich instalacjach. Możesz poprosić o zwiększenie dziennego limitu.

Zbieraj dane telemetryczne i poznawaj odbiorców, zanim podejmiesz działania

Zanim zmienisz zachowanie aplikacji na podstawie ocen interfejsu Play Integrity API, możesz poznać obecną sytuację wśród dotychczasowych użytkowników, wdrażając interfejs API bez egzekwowania. Gdy poznasz wyniki, jakie uzyskuje obecna baza instalacji, możesz oszacować wpływ planowanych działań egzekwujących i odpowiednio dostosować strategię przeciwdziałania nadużyciom.

Określ sposób wysyłania żądań ocen integralności

Interfejs Play Integrity API oferuje 2 opcje wysyłania żądań ocen integralności i ich otrzymywania. Niezależnie od tego, czy wysyłasz żądania standardowe, klasyczne czy ich kombinację, odpowiedź z wynikiem weryfikacji integralności będzie zwracana w tym samym formacie.

Standardowe żądania interfejsu API są odpowiednie dla każdej aplikacji lub gry i można je wysyłać na żądanie, aby sprawdzić, czy każde działanie użytkownika lub żądanie serwera jest autentyczne. Żądania standardowe charakteryzują się najkrótszym czasem oczekiwania (średnio kilkaset milisekund) i wysoką niezawodnością uzyskiwania użytecznej oceny. Żądania standardowe korzystają z inteligentnego buforowania na urządzeniu, a ochronę przed niektórymi rodzajami ataków przekazują do Google Play.

Klasyczne żądania do interfejsu API, czyli pierwotny sposób żądania ocen integralności, są nadal dostępne. Klasyczne żądania mają większe opóźnienie (średnio kilka sekund), a Ty odpowiadasz za ograniczenie ryzyka niektórych rodzajów ataków. Żądania klasyczne zużywają więcej danych i baterii użytkownika niż żądania standardowe, ponieważ inicjują nową ocenę. Dlatego należy je wysyłać rzadko, jednorazowo, aby sprawdzić, czy działanie o wysokiej wrażliwości lub wartości jest autentyczne. Jeśli rozważasz wysłanie klasycznego żądania i zapisanie go w pamięci podręcznej do późniejszego wykorzystania, zamiast tego wyślij standardowe żądanie, aby zmniejszyć ryzyko ataków.

W tej tabeli przedstawiliśmy najważniejsze różnice między tymi 2 rodzajami żądań:

Standardowe żądanie do interfejsu API Żądanie do klasycznego interfejsu API
Wymagana minimalna wersja pakietu Android SDK Android 5.0 (poziom 21 interfejsu API) lub nowszy Android 4.4 (poziom 19 interfejsu API) lub nowszy
Wymagane rozgrzanie interfejsu API ✔️ (kilka sekund)
Typowy czas oczekiwania na żądanie kilkuset milisekund, kilka sekund,
Potencjalna częstotliwość żądań Częste (sprawdzanie na żądanie w przypadku każdej czynności lub prośby) Rzadko (jednorazowe sprawdzanie w przypadku działań o najwyższej wartości lub najbardziej wrażliwych żądań)
Ochrona przed atakami typu replay i podobnymi Automatyczne działania łagodzące w Google Play Używanie pola nonce z logiką po stronie serwera

Więcej różnic znajdziesz w tabeli w sekcji Wskazówki dotyczące klasycznych żądań.

Prośba o ocenę integralności w odpowiednim momencie

Poproś o wynik oceny ryzyka dostępu do aplikacji jak najbliżej czasu działania lub żądania serwera, przed którym chcesz się chronić, aby uniemożliwić oszustom obejście kontroli integralności przeprowadzanej przez Twoją aplikację.

Utrudnianie replikowania żądań do interfejsu API

Standardowe żądania interfejsu API mają pole o nazwie requestHash, które służy do ochrony przed manipulacjami i podobnymi atakami. W tym polu należy podać skrót wszystkich odpowiednich wartości z żądania aplikacji. Aby chronić standardowe żądania aplikacji, postępuj zgodnie z instrukcjami dotyczącymi używania powiązania treści.

Żądania w klasycznym interfejsie API mają pole o nazwie nonce (skrót od „number once”), które służy do ochrony przed niektórymi rodzajami ataków, takimi jak ataki typu replay i ataki polegające na manipulowaniu danymi. Aby chronić klasyczne żądania aplikacji, postępuj zgodnie z instrukcjami generowania wartości nonce.

Unikanie buforowania ocen integralności

Buforowanie ocen integralności zwiększa ryzyko proxy, czyli ataku, w którym nieuczciwa osoba wykorzystuje ocenę z prawidłowego urządzenia do nadużyć w innym środowisku. Zamiast buforować odpowiedzi, możesz wysłać standardowe żądanie interfejsu API, aby uzyskać ocenę na żądanie.

Stosowanie strategii egzekwowania zasad na różnych poziomach

Ocena integralności określona przez interfejs Play Integrity API może wiązać się z różnymi reakcjami, co pozwala opracować strategię przeciwdziałania nadużyciom z wieloma poziomami egzekwowania zasad. Możesz to zrobić, konfigurując serwer backendu aplikacji tak, aby działał inaczej w zależności od każdej możliwej odpowiedzi lub grupy odpowiedzi.

Możesz też podzielić strategię egzekwowania na poziomy w zależności od wiarygodności urządzenia, włączając w Konsoli Play otrzymywanie dodatkowych etykiet urządzenia w odpowiedzi interfejsu API. Każde urządzenie zwróci wszystkie etykiety, których kryteria spełnia. Jeśli na przykład zdecydujesz się otrzymywać wszystkie etykiety urządzeń, możesz uznać za bardziej zaufane urządzenie, które zwraca etykiety MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITYMEETS_BASIC_INTEGRITY, niż urządzenie, które zwraca tylko etykietę MEETS_BASIC_INTEGRITY. W każdym scenariuszu możesz odpowiadać inaczej niż serwer.

Wysyłanie do aplikacji różnych odpowiedzi z serwera

Odtworzenie zakresu wyników decyzji jest trudniejsze niż wysłanie z serwera do aplikacji odpowiedzi binarnej (Zezwól/Odmów) dla każdej odpowiedzi. Możesz na przykład użyć serii powiązanych odpowiedzi, takich jak Zezwól, Zezwól z ograniczeniami, Zezwól z ograniczeniami po wypełnieniu CAPTCHA i Odmów.

Wykrywanie powtarzających się nadużyć za pomocą funkcji zapamiętywania urządzenia przy zachowaniu prywatności użytkownika

Zapamiętanie urządzenia umożliwia aplikacjom przechowywanie i odczytywanie niektórych danych niestandardowych powiązanych z konkretnym urządzeniem w taki sposób, aby zachować prywatność użytkownika. Dane są przechowywane na serwerach Google, dzięki czemu aplikacja może niezawodnie przywoływać dane dotyczące poszczególnych urządzeń nawet po ponownej instalacji aplikacji lub zresetowaniu urządzenia. Dzięki temu możesz niezawodnie ponownie zidentyfikować urządzenie, które w przeszłości było wykorzystywane do nadużyć, i podjąć odpowiednie działania, aby zapobiec jego ponownemu użyciu w tym celu. Możesz zdefiniować własne znaczenie 3 wartości, które składają się na dane dotyczące wycofania urządzenia:

  • Możesz ich używać jako maksymalnie 3 osobnych flag lub wartości logicznych. Na przykład wartości mogą oznaczać, czy urządzenie utworzyło konto, czy nie, czy skorzystało z bezpłatnej wersji próbnej, czy nie, lub czy było znane z nadużyć o wysokim stopniu szkodliwości, czy nie.
  • Możesz też połączyć wszystkie stany wartości w maksymalnie 8 etykiet własnych, np. 1 etykietę dla stanu domyślnego, gdy wszystkie 3 wartości są niezmienione, i 7 etykiet o niestandardowym znaczeniu. Umożliwia to podzielenie wszystkich urządzeń na maksymalnie 8 grup na podstawie zdefiniowanych przez Ciebie zachowań lub działań. W tym przypadku ostatnia z 3 writeDates wskazuje, kiedy etykieta została ostatnio zaktualizowana.

Podczas pracy z danymi dotyczącymi wycofania urządzeń pamiętaj też o wymaganiach wstępnych i innych kwestiach.

Wykrywanie nadużyć na dużą skalę na podstawie ostatniej aktywności na urządzeniu

Używaj funkcji ostatniej aktywności na urządzeniu w interfejsie Play Integrity API, aby znajdować urządzenia, które wysyłają żądania dużej liczby tokenów integralności. Osoby nadużywające aktywności o dużej skali często generują prawidłowe wyniki atestu z prawdziwych urządzeń i przekazują je botom, aby zautomatyzować ataki na urządzenia z dostępem do roota i emulatory. Poziom ostatniej aktywności na urządzeniu pozwala sprawdzić, ile atestów wygenerowała Twoja aplikacja na tym urządzeniu w ciągu ostatniej godziny.

Wyświetlanie komunikatów o błędach, które można rozwiązać

Jeśli to możliwe, wyświetlaj użytkownikom przydatne komunikaty o błędach z informacjami, jak mogą rozwiązać problem, np. ponowić próbę, włączyć połączenie z internetem lub sprawdzić, czy aplikacja Sklep Play jest aktualna.

Przygotuj plan na wypadek nieoczekiwanych problemów lub przerw w działaniu

panelu stanu Play znajdziesz informacje o stanie usługi Play Integrity API oraz o wszelkich zakłóceniach i przerwach w jej działaniu. Z wyprzedzeniem zaplanuj, w jaki sposób serwer backendu ma działać w mało prawdopodobnym przypadku awarii interfejsu Play Integrity API na dużą skalę. Pamiętaj, że serwer backendu powinien być też gotowy do działania w przypadku unieważnienia kluczy atestu klucza platformy Android specyficznych dla urządzeń.

Rozważ kompleksowe rozwiązania do wykrywania oszustw w firmie

Klienci korporacyjni, którzy szukają kompleksowego rozwiązania do zarządzania oszustwami i botami, mogą kupić reCAPTCHA Enterprise na urządzenia mobilne, które obejmuje zestawy SDK na Androida dostarczające deweloperom oceny ryzyka oszustwa. reCAPTCHA Enterprise automatycznie uwzględnia sygnały Play Integrity API i łączy je z sygnałami sieci reCAPTCHA oraz sygnałami aplikacji, zapewniając klientom bezproblemowe, niewidoczne rozwiązanie do zarządzania oszustwami. Może też chronić aplikacje na Androida, w których interfejs Play Integrity API nie jest dostępny.

Wymaganie weryfikacji w przypadku ryzykownego ruchu podczas uzyskiwania dostępu do ważnych lub poufnych funkcji

Określ w aplikacji lub grze działania o wysokiej wartości lub newralgiczne, które chcesz chronić za pomocą interfejsu Play Integrity API, zamiast całkowicie odmawiać dostępu. W miarę możliwości sprawdzaj ruch o wysokim ryzyku, zanim zezwolisz na działania o wysokiej wartości. Na przykład, gdy ryzyko dostępu do aplikacji wskazuje, że uruchomiona jest aplikacja, która może przechwytywać ekran, poproś użytkownika o wyłączenie lub odinstalowanie aplikacji, które mogą przechwytywać ekran, zanim zezwolisz mu na przejście do funkcji, które chcesz chronić.

Warunki korzystania z usługi i bezpieczeństwo danych

Korzystanie z interfejsu Play Integrity API oznacza akceptację Warunków korzystania z interfejsu Play Integrity API. Przed uzyskaniem dostępu do interfejsu API przeczytaj i zrozum wszystkie obowiązujące warunki i zasady.

W Google Play deweloperzy mają do dyspozycji sekcję Bezpieczeństwo danych, w której mogą informować użytkowników o zbieraniu i udostępnianiu danych przez aplikacje oraz zasadach dotyczących bezpieczeństwa. Aby ułatwić Ci wypełnienie formularza danych, zapoznaj się z informacjami o tym, jak interfejs Play Integrity API przetwarza dane.