Omówienie interfejsu Play Integrity API

Interfejs Play Integrity API pomaga sprawdzać, czy interakcje i żądania serwera pochodzą z autentycznego pliku binarnego aplikacji na oryginalnym urządzeniu z Androidem. Dzięki wykrywaniu potencjalnie ryzykownych i fałszywych interakcji, takich jak te pochodzące z zmodyfikowanych wersji aplikacji i niewiarygodnych środowisk, serwer backendu aplikacji może podejmować odpowiednie działania zapobiegające atakom i ograniczające nadużycia.

Gdy użytkownik korzysta z Twojej aplikacji lub gry na urządzeniu z Androidem, które korzysta z Google Play Store i Usług Google Play, interfejs Play Integrity API wysyła odpowiedź, która pomaga określić, czy użytkownik wchodzi w interakcję z:

  • Autentyczność pliku binarnego: pozwala na ustalenie, czy plik binarny jest niezmodyfikowany i czy Google Play go rozpoznaje.
  • Autentyczność instalacji z Google Play: umożliwia ustalenie, czy bieżące konto użytkownika jest objęte licencją. Świadczy to o tym, że użytkownik zainstalował lub zapłacił za Twoją aplikację lub grę w Google Play.
  • Oryginalność urządzenia z Androidem: pozwala na ustalenie, czy aplikacja działa na oryginalnym urządzeniu z Androidem z Usługami Google Play (lub czy jest to oryginalna instancja Gier Google Play na PC).

Możesz też zdecydować, że chcesz otrzymać informacje o środowisku w odpowiedzi interfejsu Play Integrity API, w tym:

  • Ryzyko związane z dostępem aplikacji: pozwala określić, czy uruchomione są inne aplikacje, które mogą rejestrować to, co widać na ekranie, wyświetlać nakładki lub kontrolować urządzenie.
  • Ryzyko związane ze znanym złośliwym oprogramowaniem: umożliwia ustalenie, czy usługi Google Play Protect są włączone i czy wykryły zainstalowane na urządzeniu stwarzające ryzyko lub niebezpieczne aplikacje.

Omówienie

Gdy użytkownik wykona działanie w aplikacji, możesz wywołać interfejs Play Integrity API, aby sprawdzić, czy zostało ono wykonane w autentycznym pliku binarnym aplikacji zainstalowanym z Google Play na oryginalnym urządzeniu z Androidem. Możesz też wyrazić zgodę na otrzymywanie dodatkowych informacji w odpowiedzi, w tym liczby próśb wysłanych ostatnio przez urządzenie oraz sygnałów o środowisku, w tym oceny ryzyka związanego z dostępem aplikacji i oceny Play Protect. Jeśli z wynikami coś jest nie tak, serwer backendu aplikacji może podjąć odpowiednie działania, które mają na celu ograniczenie ataków, nadużyć, nadużyć i oszukiwania oraz nieautoryzowanego dostępu.

Interfejs Play Integrity API – omówienie

Zagadnienia związane z bezpieczeństwem

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. Korzystaj z tego interfejsu API w połączeniu z odpowiednimi dobrymi praktykami dotyczącymi zabezpieczeń w przypadku aplikacji. Domyślnie aplikacja może wysyłać łącznie do 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 przypadku dotychczasowej grupy odbiorców, wdrażając interfejs API bez wymuszania. Gdy poznasz wyniki testów, możesz oszacować wpływ planowanych działań i odpowiednio dostosować strategię zapobiegania nadużyciom.

Zdecyduj, jak chcesz żądać oceny integralności

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

Standardowe żądania interfejsu API są odpowiednie dla każdej aplikacji lub gry i mogą być wysyłane na żądanie, aby sprawdzić, czy działania użytkownika lub żądanie serwera są autentyczne. Standardowe żądania mają najkrótszy czas oczekiwania (średnio kilkaset milisekund) i wysoką niezawodność w przypadku uzyskiwania przydatnych ocen. Żądania standardowe korzystają z inteligentnego buforowania na urządzeniu, a także z zabezpieczeń Google Play przed określonymi typami ataków.

Klasyczne żądania do interfejsu API, czyli pierwotny sposób żądania oceny integralności, są nadal dostępne. W przypadku żądań klasycznych czas oczekiwania jest dłuższy (średnio kilka sekund), a Ty ponosisz odpowiedzialność za ograniczenie ryzyka pewnych rodzajów ataków. Prośby klasyczne zużywają więcej danych i energii z baterii użytkownika niż prośby standardowe, ponieważ inicjują nową ocenę. Powinny być wysyłane rzadko, tylko wtedy, gdy trzeba sprawdzić, czy działanie o wysokiej wartości lub o wysokiej wrażliwości jest autentyczne. Jeśli rozważasz przesłanie klasycznego żądania i zapisanie go w pamięci podręcznej na później, zamiast tego prześlij żądanie standardowe, aby zmniejszyć ryzyko ataków.

W tej tabeli opisano najważniejsze różnice między tymi 2 typami żądań:

Standardowe żądanie do interfejsu API Żądanie do klasycznego interfejsu API
Minimalna wymagana wersja pakietu Android SDK Android 5.0 (poziom API 21) lub nowszy Android 4.4 (poziom 19 interfejsu API) lub nowszy
Wymagany czas na rozgrzewkę interfejsu API ✔️ (kilka sekund)
Typowy czas oczekiwania na żądanie Kilkaset milisekund kilka sekund
Potencjalna częstotliwość żądań Często (sprawdzanie na żądanie, czy nie trzeba wykonać żadnego działania lub odpowiedzieć na prośbę) rzadko (jednorazowe sprawdzanie działań o najwyższej wartości lub najbardziej poufnych żądań);
Zapobieganie atakom typu replay i podobnym Automatyczne zapobieganie problemom przez Google Play Używanie pola nonce z logiką po stronie serwera

Więcej informacji o różnicach znajdziesz w artykule Uwzględnienie klasycznych żądań.

W odpowiednim momencie poproś o ocenę integralności

Prośbę o wydanie orzeczenia o ryzyku dostępu do aplikacji należy wysłać możliwie jak najbliżej momentu działania lub żądania serwera, któremu chcesz zapobiec, aby uniemożliwić oszustom obejście kontroli integralności przeprowadzanej przez Twoją aplikację.

Utrudnianie powielania żądań do interfejsu API

Standardowe żądania interfejsu API zawierają pole requestHash, które służy do ochrony przed modyfikacją i podobnymi atakami. W tym polu należy podać podsumowanie wszystkich istotnych wartości z żądania aplikacji. Aby chronić standardowe żądania aplikacji, postępuj zgodnie z instrukcjami dotyczącymi wiązania treści.

W klasycznych żądaniach interfejsu API występuje pole o nazwie nonce (skrót od „number once”), które służy do ochrony przed pewnymi typami ataków, takimi jak ataki typu replay i zmiany. Aby chronić klasyczne żądania aplikacji, postępuj zgodnie z instrukcjami dotyczącymi generowania losowych ciągów znaków.

Unikanie buforowania ocen integralności

Zapisywanie w pamięci podręcznej oceny integralności zwiększa ryzyko korzystania z serwera proxy, czyli ataku, w którym nieuczciwy użytkownik wykorzystuje ocenę z dobrego urządzenia do celów nadużyć w innym środowisku. Zamiast przechowywać odpowiedzi w pamięci podręcznej, możesz wysłać standardowe żądanie API, aby uzyskać wynik na żądanie.

mieć wielopoziomową strategię egzekwowania zasad;

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ż ustawić poziomy strategii egzekwowania zasad na podstawie wiarygodności urządzenia, decydując się na otrzymywanie dodatkowych etykiet urządzeń w odpowiedzi interfejsu API z Konsoli Play. Każde urządzenie zwróci wszystkie etykiety, których kryteria spełnia. Jeśli na przykład zdecydujesz się na otrzymywanie wszystkich etykiet urządzeń, możesz uznać za bardziej wiarygodne urządzenie, które zwraca odpowiedzi MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITYMEETS_BASIC_INTEGRITY, niż urządzenie, które zwraca tylko odpowiedź MEETS_BASIC_INTEGRITY. W każdym scenariuszu możesz odpowiedzieć inaczej niż serwer.

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

Wyniki decyzji są trudniejsze do odtworzenia niż wysyłanie binarnej odpowiedzi ze strony serwera z powrotem do aplikacji w przypadku 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 nadużyć na dużą skalę na podstawie ostatniej aktywności na urządzeniu

Użyj funkcji ostatnia aktywność na urządzeniu w interfejsie Play Integrity API, aby znaleźć urządzenia, które żądają dużej liczby tokenów integralności. Wykorzystujący, którzy generują dużą aktywność, często generują prawidłowe wyniki uwierzytelniania na podstawie prawdziwych urządzeń i przekazują je botom, aby zautomatyzować ataki na urządzenia z rootem i na emulatory. Na podstawie poziomu ostatniej aktywności na urządzeniu możesz sprawdzić, ile zaświadczeń zostało wygenerowanych przez Twoją aplikację na tym urządzeniu w ciągu ostatniej godziny.

Wyświetlanie komunikatów o błędach z możliwością działania

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

mieć plan na wypadek nieoczekiwanych problemów lub przerw w działaniu;

Panel stanu Google Play zawiera informacje o stanie usługi Play Integrity API oraz o wszelkich przerwach i awariach. Należy z wyprzedzeniem zaplanować, jak backend serwera ma działać w nieprawdopodobnej sytuacji, gdy nastąpi duży przestój w działaniu interfejsu Play Integrity API. Pamiętaj, że serwer backendu powinien też działać, gdy klucze uwierzytelniania kluczy platformy Android są odwoływane.

Rozważ kompleksowe rozwiązania do walki z oszustwami na poziomie przedsiębiorstwa

Klienci biznesowi, którzy szukają kompleksowego rozwiązania do zarządzania oszustwami i botami, mogą kupić reCAPTCHA Enterprise na urządzenia mobilne. Rozwiązanie to obejmuje pakiety SDK na Androida, które dostarczają deweloperom ocen ryzyka oszustwa. reCAPTCHA Enterprise automatycznie uwzględnia sygnały z sieci Play Integrity API i łączy je z sygnałami z sieci reCAPTCHA i aplikacji klientów, zapewniając bezproblemowe, niewidoczne rozwiązanie do zarządzania oszustwami. Może też zapewniać ochronę w przypadku aplikacji na Androida, w których nie jest dostępny interfejs Play Integrity API.

kwestionowanie ruchu o wysokim ryzyku podczas uzyskiwania dostępu do funkcji o wysokiej wartości lub funkcji newralgicznych;

Określ działania o wysokiej wartości lub działania newralgiczne w aplikacji lub grze, które chcesz chronić za pomocą interfejsu Play Integrity API, zamiast od razu odrzucać dostęp. Jeśli to możliwe, przed zezwoleniem na działania o wysokiej wartości sprawdź, czy ruch nie jest ryzykowny. Jeśli na przykład funkcja 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 korzystanie z funkcji, którą 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. Zanim uzyskasz dostęp do interfejsu API, przeczytaj i zapoznaj się ze wszystkimi obowiązującymi warunkami i zasadami.

W Google Play jest sekcja Bezpieczeństwo danych, w której deweloperzy mogą ujawnić informacje o zbieraniu, udostępnianiu i zabezpieczaniu danych przez aplikacje. Aby ułatwić wypełnienie formularza danych, zapoznaj się z informacjami o tym, jak interfejs Play Integrity API obsługuje dane.