Udoskonalona ocena na urządzeniach z Androidem 13 i nowszym

Niedawno ogłosiliśmy, że wzmacniamy wyroki interfejsu Play Integrity API, aby były szybsze, bardziej odporne na ataki i bardziej prywatne dla użytkowników, a także wprowadziliśmy inne ulepszenia dotyczące bezpieczeństwa.

Podsumowanie zmian

Szczegółowe podsumowanie zmian i ich przewidywany wpływ znajdziesz w dalszej części tego dokumentu. Nowe werdykty będą dostępne w ramach tych opcji:

  • Nowe integracje: wszystkie nowe integracje będą automatycznie otrzymywać nowe werdykty.

  • Dotychczasowe integracje do maja 2025 r.: deweloperzy, którzy mają już integracje, mogą wyrazić zgodę na otrzymywanie nowych ocen obok dotychczasowych na stronie ustawień interfejsu Play Integrity API w Konsoli Play. Dzięki temu będą mogli sprawdzić i wprowadzić zmiany w zachowaniu aplikacji. Zanim się zarejestrujesz, możesz zobaczyć spodziewaną zmianę w procentowym udziale urządzeń z poszczególnymi werdyktami oraz przykładowy ciąg tekstowy JSON nowego werdyktu. Gdy wyrazisz zgodę, otrzymasz w odpowiedzi 2 dodatkowe pola z wersją pakietu Android SDK i poprzednimi ocenami.

  • Obecne integracje po maju 2025 r.: ulepszenia zostaną wprowadzone we wszystkich integracjach bez konieczności podejmowania działań przez programistów. Aplikacje, które zostaną dodane przed majem 2025 roku, nie będą zawierać tymczasowego pola z danymi z poprzednich wersji.

Co Co się zmienia Szacowany wpływ* Które urządzenia
Zmiany, które mają wpływ na wszystkich deweloperów wysyłających żądania do interfejsu Play Integrity API
Odpowiedź na ocenę urządzenia: meets-device-integrity Wymagane pozytywne weryfikowania uruchamiania z użyciem sprzętu. Minimalny wpływ, ponieważ Play Integrity API już korzysta ze sprzętowych sygnałów zabezpieczeń na urządzeniach z Androidem 13 lub nowszym (~0,4%). Android 13 i nowsze
Odpowiedź dotycząca integralności aplikacji: ocena rozpoznawania aplikacji Bez zmian Minimalny wpływ, który odzwierciedla zmianę w ocenie urządzenia (~0,4%). Android 13 i nowsze
Odpowiedź na prośbę o szczegóły konta: ocena licencji Google Play Aplikacja, która wysyła żądanie, musi być zainstalowana lub zaktualizowana przez Google Play. Niewielki spadek liczby licencjonowanych odpowiedzi (o ok. 2,5%). Android 11 i nowsze (ta zmiana będzie wprowadzana stopniowo)
Zmiany, które mają wpływ tylko na deweloperów korzystających z Konsoli Play i Konsoli Play SDK, którzy używają funkcji opcjonalnych
Odpowiedź oceny urządzenia: meets-basic-integrity Wymaga atestacji klucza na platformie Android, ale stan uruchamiania może być zweryfikowany lub nie. Nieznaczny spadek liczby podstawowych odpowiedzi (o ok. 0,4%). Android 13 lub nowszy
Odpowiedź oceny urządzenia: meets-strong-integrity Wymagane jest posiadanie co najmniej 1 aktualizacji zabezpieczeń z ostatniego roku. spadek liczby odpowiedzi „silnie zgodnych” (o ok.14,5%), Android 13 lub nowszy
Wszystkie sygnały opcjonalne Aplikacja, która wysyła żądanie, musi być zainstalowana lub zaktualizowana przez Google Play. spadek odsetka odpowiedzi zawierających opcjonalne sygnały (około 7%), Android 13 lub nowszy

*Powyższe szacowane wartości procentowe są obliczane na podstawie średnich wartości. W przypadku różnych aplikacji mogą wystąpić mniejsze lub większe zmiany w zależności od liczby instalacji.

Najczęstsze pytania

Omówienie

Czym jest interfejs Play Integrity API?

Interfejs Play Integrity API pomaga ocenić wiarygodność środowiska aplikacji użytkownika, uzyskując informacje o urządzeniu, aplikacji i użytkowniku. Dzięki temu możesz wykrywać potencjalne nadużycia i ataki oraz reagować na nie.

Jakie sygnały dostarcza interfejs Play Integrity API?

Interfejs Play Integrity API zawiera informacje o tożsamości aplikacji przesyłającej żądanie, czy została ona zainstalowana przez Google Play oraz czy urządzenie jest oryginalnym urządzeniem z certyfikatem Play Protect. Te sygnały są dostarczane domyślnie. Możesz odczytać te sygnały na serwerze backendu aplikacji i określić, czy i jak aplikacja powinna na nie reagować. Deweloperzy Google Play mogą wyrazić zgodę na otrzymywanie dodatkowych sygnałów podczas instalacji aplikacji w Google Play, aby uzyskać jeszcze więcej informacji.

Czym jest atestacja klucza na platformie Android?

Poświadczenie klucza platformy Androida pozwala aplikacjom weryfikować stan urządzenia i otrzymywać silny sygnał o integralności uruchamiania z użyciem sprzętu. Zależy od klucza udostępnionego przez Google w sprzętowym magazynie kluczy urządzenia. Interfejs Play Integrity API korzysta już z potwierdzeniem klucza, aby uzyskać potwierdzone sprzętowo sygnały zabezpieczeń na niektórych urządzeniach. Teraz zostanie on jeszcze bardziej zintegrowany ze wszystkimi urządzeniami z Androidem 13 lub nowszym.

Zmiany w wynikach

Jakie zmiany wprowadzamy w ocenianiu interfejsu Play Integrity API na urządzeniach z Androidem 13 lub nowszym?

W przypadku wszystkich ocen integralności interfejs Play Integrity API będzie wymagać potwierdzonych sprzętowo sygnałów zabezpieczeń:

  • Wynik meets-device-integrity oznacza, że urządzenie, na którym działa aplikacja, to oryginalne urządzenie z Androidem z certyfikatem Play Protect. Aby to zrobić, musisz zablokować program rozruchowy urządzenia, a załadowany system operacyjny Android musi być obrazem certyfikowanego producenta urządzenia.
  • Ocena meets-strong-integrity to informacja o tym, że urządzenie z Androidem ma certyfikat Play Protect i niedawno było aktualizowane pod kątem zabezpieczeń. Aby wydać wyrok, musimy meets-device-integrity i sprawdzić, czy urządzenie otrzymało aktualizację zabezpieczeń w ostatnim roku. Ten warunek może się w przyszłości zmienić.
  • Wynik meets-basic-integrity oznacza, że weryfikacja została przeprowadzona na fizycznym urządzeniu z Androidem. Program rozruchowy urządzenia może być zablokowany lub odblokowany, a stan uruchamiania może być zweryfikowany lub niezweryfikowany. Może nie mieć certyfikatu Play Protect, dlatego Google nie może zapewnić bezpieczeństwa, prywatności ani zgodności aplikacji. Nie możemy też zagwarantować, że urządzenie nie działa jako serwer proxy, na przykład dla wirtualnego wystąpienia Androida. Oznacza to też, że urządzenia z rootem mogą zwracać meets-basic-integrity, o ile jest obecne potwierdzenie klucza.

Te zmiany nie mają wpływu na interfejs Play Integrity API w Gry Google Play na PC, który nadal będzie zwracał wartość meets-virtual-integrity.

Dlaczego oceny z Play Integrity API są zmieniane na urządzeniach z Androidem 13 lub nowszym?

W przypadku różnych wersji pakietu SDK Androida interfejs Play Integrity API używał sygnałów bezpieczeństwa wspieranych sprzętowo tylko częściowo. Dzięki zwiększeniu integracji oceny Play Integrity API będą bardziej odporne na ataki, zapewnią większą wydajność aplikacji i większą prywatność użytkowników. Po zakończeniu przejścia na nową wersję spodziewamy się następujących ulepszeń na urządzeniach z Androidem 13 lub nowszym:

  • Zmniejszenie o około 90% sygnałów z urządzenia, które trzeba zebrać i ocenić, aby wygenerować domyślny werdyk na serwerach Google. Opcjonalne sygnały będą nadal wymagać zbierania dodatkowych sygnałów.
  • Skrócenie czasu oczekiwania na werdykt nawet o 80% w przypadku najgorszych standardowych żądań i nawet o 80% w przypadku wszystkich klasycznych żądań, aby uzyskać domyślny werdykt. Opcjonalne sygnały mogą wydłużać czas oczekiwania.
  • Utrzymywanie stałego poziomu niezawodności i obsługi wszystkich formatów Androida z potwierdzeniem klucza, w tym telefonów, tabletów, składanych urządzeń, telewizorów, samochodów, Wear OS i ChromeOS.
  • Większe zróżnicowanie etykiet urządzeń w opinii o ich rozpoznawaniu: meets-strong-integrity, meets-device-integritymeets-basic-integrity.

W okresie korzystania z opcji dołączenia interfejs Play Integrity API będzie generować zarówno stare, jak i nowe oceny integralności. Nie powinno to mieć wpływu na skuteczność. Po wprowadzeniu nowych werdyktów dla wszystkich deweloperów w maju 2025 r. spodziewamy się, że poprawa skuteczności będzie następować stopniowo, podczas gdy usuniemy lub przekształcimy zależności od starszych sygnałów we wszystkich sygnałach domyślnych i opcjonalnych.

Wynik z interfejsu Play Integrity API w Gry Play na PC nie ulegnie zmianie i będzie taki sam na Androidzie 12 i starszych wersjach, jak i na Androidzie 13 i nowszych.

Jak zaktualizować logikę backendu aplikacji, aby uwzględniała ona wersję pakietu SDK Androida?

Jeśli chcesz używać na serwerze aplikacji innej logiki na podstawie wersji pakietu Android SDK, możesz użyć w ocenie nowego pola atrybutów urządzenia. Oto przykład:

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.
}

Jak mogę używać starej definicji etykiety meets-strong-integrity we wszystkich wersjach pakietu Android SDK?

Aby to zrobić, zaktualizuj logikę backendu aplikacji, aby używała wartości meets-strong-integrity w przypadku urządzeń z Androidem w wersji 13 lub starszej oraz wartości meets-device-integrity w przypadku urządzeń z Androidem 13 lub nowszym, korzystając z nowego pola atrybutów urządzenia w ocenie, które zawiera wersję pakietu Android SDK. Oto przykład:

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!
}

Ponieważ jest to sygnał oparty na sprzęcie, pole atrybutów urządzenia jest najbardziej niezawodne na urządzeniach z Androidem 13 lub nowszym.

Jakie inne zmiany w ocenie wprowadza interfejs Play Integrity API?

Stale pracujemy nad zwiększeniem niezawodności dotychczasowych sygnałów w interfejsie Play Integrity API i okresowo wdrażamy nowe funkcje, aby pomagać deweloperom radzić sobie z nowymi zagrożeniami i nowymi przypadkami użycia. Inne ulepszenia, które wprowadzamy:

  • Odpowiedź na żądanie o licencji w Google Play: aby zwrócić odpowiedź na żądanie o licencji w Google Play, interfejs Play Integrity API wymaga teraz, aby aplikacja wysyłająca żądanie była zainstalowana lub zaktualizowana przez Google Play. Rozwiązanie to poprawia niektóre przypadki szczególne i ułatwia interpretację odpowiedzi przez programistów. Ta funkcja jest dostępna w Androidzie 13 lub nowszym.
  • Dostępność sygnałów opcjonalnych: wszystkie sygnały opcjonalne dostępne dla deweloperów korzystających z Konsoli Google Play lub Konsoli Play SDK będą teraz wymagać zainstalowania lub zaktualizowania aplikacji przez Google Play na Androidzie 13 lub nowszym. Dotyczy to meets-strong-integrity, meets-basic-integrity, ostatniej aktywności na urządzeniu, orzeczenia Play Protect dotyczącego ryzyka związanego z dostępem aplikacji oraz orzeczenia Play Protect. Wszystkie pozostałe żądania interfejsu Play Integrity API zostaną ujednolicone, aby zawierały sprawdzanie urządzenia (tylko z oznaczeniem meets-device-integrity), sprawdzanie instalatora i sprawdzanie integralności aplikacji.
  • Zmiany oceny w przypadku konkretnych urządzeń: Play Integrity API zacznie automatycznie zmieniać ocenę urządzenia w większej liczbie scenariuszy, aby chronić aplikacje we wszystkich wersjach pakietu SDK Androida, np. gdy pojawią się dowody nadmiernej aktywności lub naruszenia integralności klucza. Obejmuje to możliwość korzystania przez Google Play z innych sygnałów do generowania tymczasowych werdyktów dotyczących urządzenia dla użytkowników, gdy sygnały oparte na sprzęcie są niedostępne. Deweloperom zalecamy korzystanie z okno dialogowe w aplikacji w Sklepie Play lub kierowanie użytkowników do aplikacji Sklep Play w celu rozwiązania problemów z orzeczeniem dotyczącym integralności. Z czasem te okienka będą uwzględniać więcej scenariuszy i zawierać konkretne wskazówki dla użytkowników dotyczące tego, co muszą naprawić na konkretnym urządzeniu lub koncie.

Włączanie i wyłączanie

Jak włączyć ulepszony werdykt na urządzeniach z Androidem 13 lub nowszym?

Deweloperzy korzystający z Konsoli Play mogą wybrać tę opcję na stronie ustawień interfejsu Play Integrity API.

Co się stanie z moją odpowiedzią interfejsu Play Integrity API po wyrażeniu zgody?

Gdy wyrazisz zgodę, nastąpi 3 etapów:

  • Odpowiedzi w polu deviceRecognitionVerdict będą natychmiast generowane i zwracane na podstawie nowych wymagań oceny werdyktu na urządzeniach z Androidem 13 lub nowszym. Na urządzeniach z Androidem 12 lub starszym deviceRecognitionVerdict będzie generowany na podstawie historycznej oceny.
  • Otrzymasz nowe pole deviceAttributes, które zawiera wersję pakietu Android SDK na urządzeniu.
  • Otrzymasz nowe pole legacyDeviceRecognitionVerdict, które zawiera odpowiedzi dotyczące integralności urządzenia na podstawie historycznych wymagań oceny niezależnie od wersji pakietu Android SDK.

Gdy w maju 2025 r. wprowadzimy zmiany w wynikach dla wszystkich integracji, aplikacje, które się na nie zgodziły, przestaną otrzymywać pole legacyDeviceRecognitionVerdict.

Jak zgłaszać problemy z wynikami weryfikacji integralności?

Aby zgłosić problem z odpowiedziami z interfejsu Play Integrity API, niezależnie od tego, czy problem dotyczy starszych ocen czy nowych, wykonaj instrukcje podane na stronie pomocy.

Czy mogę zrezygnować z użycia kotwic zakupowych po ich włączeniu?

Tak, możesz zrezygnować z korzystania z interfejsu Play Integrity API na stronie z ustawieniami.

Dostępność

Czego wymaga interfejs Play Integrity API?

Interfejs Play Integrity API wymaga zainstalowania Sklepu Google Play i Usług Google Play na urządzeniu, w tym na urządzeniach z Androidem i w Google Play Games na PC. Prośby klasyczne wymagają Androida 4.4 (poziom API 19) lub nowszego, a prośby standardowe – Androida 5.0 (poziom API 21) lub nowszego. Na urządzeniach z Androidem 13 (poziom interfejsu API 33) lub nowszym interfejs Play Integrity API będzie teraz zapewniać ten sam poziom niezawodności i obsługi we wszystkich formatach Androida z potwierdzeniem klucza, w tym na telefonach, tabletach, urządzeniach składanych, telewizorach, Androidzie Auto, Wear OS i ChromeOS.

Dlaczego interfejs Play Integrity API ma różne oceny dla różnych urządzeń?

Interfejs Play Integrity API udostępnia różne oceny urządzeń, aby umożliwić deweloperom tworzenie różnych scenariuszy użycia i strategii ograniczania ryzyka. Jeśli na przykład aplikacja i urządzenie są bardziej zaufane, deweloper może uprościć proces weryfikacji użytkownika. Natomiast w przypadku nieznanego urządzenia deweloper może wymagać dodatkowej weryfikacji użytkownika przed wykonaniem czynności chronionych lub wrażliwych. Może to być skuteczny sposób na ograniczenie nadużyć i ataków.

Czym jest urządzenie z Androidem z certyfikatem Play Protect?

Urządzenie z Androidem z certyfikatem Play Protect (znane też jako urządzenie z Androidem GMS) to urządzenie z oprogramowaniem o przewidywalnym działaniu, które przeszło setki testów zgodności Google, jest zgodne z modelem zabezpieczeń i zezwoleń Androida oraz jest dostarczane z zestawem funkcji antymalware Google Play Protect. Gdy interfejs Play Integrity API potwierdzi, że urządzenie z Androidem ma certyfikat Play Protect, zwróci odpowiedź meets-device-integrity w ocenie rozpoznawania urządzenia.

Co to jest urządzenie meets-basic-integrity?

Interfejs Play Integrity API zwraca też opcjonalną odpowiedź w ocenie urządzenia:meets-basic-integrity. Jeśli urządzenie zwraca tylko meets-basic-integrity verdict bez meets-device-integrity lub meets-strong-integrity, oznacza to, że systemu operacyjnego Android nie można zweryfikować, ale występuje uwierzytelnienie klucza. Oznacza to, że sprawdzenie zostało przeprowadzone na fizycznym urządzeniu z Androidem, ale Google nie może zagwarantować bezpieczeństwa, prywatności ani zgodności urządzenia z aplikacją. Nie możemy też zagwarantować, że urządzenie nie działa jako serwer proxy, np. dla wirtualnego wystąpienia Androida. W zależności od zastosowań i akceptowanego poziomu ryzyka deweloperzy mogą decydować, jak aplikacja ma działać na tych urządzeniach.

Czy każdy deweloper może korzystać z interfejsu Play Integrity API?

Tak, każdy deweloper aplikacji na Androida może wysyłać żądania do interfejsu Play Integrity API, aby otrzymywać domyślne oceny integralności. Korzystanie z usługi jest ograniczone do 10 tys. żądań dziennie niezależnie od kanału dystrybucji. Deweloperzy, którzy publikują aplikacje w Google Play i ewentualnie w innych kanałach dystrybucji, mogą też poprosić o zwiększenie dziennej puli.

Czy każdy deweloper może korzystać z weryfikacji kluczy na platformie Android?

Tak. Każdy deweloper aplikacji na Androida może użyć usługi Android Platform Key Attestation, aby uzyskać rekord klucza, który można zweryfikować za pomocą publicznego certyfikatu klucza głównego Google. Interfejs Play Integrity API zapewnia deweloperom korzyści z poświadczenia klucza i dodatkowych funkcji bez konieczności samodzielnego przeprowadzania integracji z poświadczeniem klucza.

Egzekwowanie zasad

Jak deweloperzy korzystają z opinii interfejsu Play Integrity API?

To deweloperzy decydują, czy i jak używać ocen interfejsu Play Integrity API. Niektórzy deweloperzy zbierają sygnały na potrzeby wewnętrznej analizy zapobiegania nadużyciom, a inni podejmują decyzje dotyczące działania aplikacji na podstawie wyroku. Na przykład deweloperzy mogą wymagać, aby mniej wiarygodne urządzenia wykonywały dodatkowe czynności weryfikacyjne podczas tworzenia konta. Mogą też zdecydować, że mniej wiarygodne urządzenia powinny grać razem na tym samym serwerze gier wieloosobowych.

Czy interfejs Play Integrity API blokuje użytkowników lub urządzenia?

Nie, interfejs Play Integrity API nie blokuje dostępu do żadnej funkcji. Jest to opcjonalna usługa dla deweloperów, która dostarcza sygnałów, a deweloperzy decydują, jak na nie reagować.

Co powinni zrobić użytkownicy, jeśli ich urządzenie nie przechodzi testów interfejsu Play Integrity API?

Użytkownik może otworzyć aplikację Sklep Play na urządzeniu, wybrać menu Ustawienia, przewinąć w dół do sekcji Informacje i sprawdzić certyfikat Play Protect. Jeśli coś jest nie tak z certyfikatem Play Protect urządzenia, użytkownicy będą mogli nacisnąć przycisk, aby spróbować rozwiązać problem. Spowoduje to odświeżenie stanu certyfikacji urządzenia i podanie konkretnych wskazówek dotyczących tego, co należy poprawić.