Zabezpieczanie środowiska

Google oferuje zestaw interfejsów API i usług, które pomogą Ci wykrywać, czy Twoja aplikacja działa w bezpiecznym i zaufanym środowisku. Głównym elementem jest interfejs Play Integrity API, który pomaga sprawdzać autentyczność interakcji przez wykrywanie potencjalnie niebezpiecznych i fałszywych interakcji. Oprócz integralności aplikacji i urządzenia Play Integrity API wyświetla teraz informacje o zagrożeniach związanych z dostępem i ułatwieniami dostępu, Google Play Protect oraz ostatniej aktywności na urządzeniu. Aby jeszcze bardziej wzmocnić strategię przeciwdziałania oszustwom, platforma Androida udostępnia interfejsy API przeznaczone do konkretnych scenariuszy, które mogą mieć znaczenie w przypadku Twojej aplikacji.

Play Integrity API

Funkcje Play Integrity API

Interfejs Play Integrity API pozwala uzyskiwać informacje o stanie zabezpieczeń urządzenia, na którym działa dana aplikacja. Dzięki temu możesz mieć pewność, że dostęp do informacji poufnych ma odpowiedni użytkownik.

Pomaga sprawdzić, czy interakcje i żądania serwera pochodzą z autentycznego pliku binarnego aplikacji w godnym zaufania środowisku:

  • Oryginalny plik binarny aplikacji: umożliwia ustalenie, czy używasz niezmodyfikowanego pliku binarnego rozpoznawanego przez Google Play.
  • Oryginalna instalacja z Google Play: umożliwia ustalenie, czy bieżące konto użytkownika jest licencjonowane. Oznacza to, ż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 i Usługami Google Play.
  • Brak znanego złośliwego oprogramowania: umożliwia ustalenie, czy usługa Google Play Protect jest włączona i czy wykryła zainstalowane na urządzeniu niebezpieczne lub niebezpieczne aplikacje.
  • Niskie ryzyko uzyskania dostępu przez inne aplikacje: sprawdź, czy uruchomione są inne aplikacje, które mogą przechwytywać ekran, lub kontrolować urządzenie i dane wejściowe aplikacji.

Jak pomaga to zapobiegać oszustwom

Gdy użytkownik wykona ważne działanie w aplikacji, możesz wywołać interfejs Play Interity API. Jeśli tak nie jest, serwer backendu aplikacji może zdecydować, jak zabezpieczyć się przed atakami i oszustwami. Możesz na przykład wymagać dodatkowej weryfikacji użytkownika lub odmówić dostępu do poufnych funkcji.

Proces decyzyjny w związku z interfejsem Play Integrity API

Ryzyko dotyczące dostępu do aplikacji

Wprowadzono sygnał Ryzyko dostępu do aplikacji, aby pomóc Ci ocenić, czy inne aplikacje na urządzeniu mogą wyświetlać i przechwytywać ekran, gdy jest uruchomiona lub uzyskuje do niej dostęp za pomocą uprawnień ułatwień dostępu. Zweryfikowane aplikacje ułatwień dostępu są automatycznie wykluczane z tych ocen. Ryzyko związane z dostępem do aplikacji pomaga deweloperom chronić ich aplikacje, jednocześnie chroniąc prywatność użytkowników, ponieważ aplikacja wysyłająca żądanie nie uzyskuje tożsamości zainstalowanych aplikacji, a wynik nie jest powiązany z identyfikatorami użytkownika ani urządzenia.

Zrzut ekranu telefonu, który wymaga od użytkownika zamknięcia określonych aplikacji.

Dzięki tym wspólnym wysiłkom możemy uzyskiwać sygnały potrzebne do uzyskania bardziej szczegółowych statystyk, które pozwalają nam skuteczniej chronić naszych klientów.
– Nubank, partner w programie wcześniejszego dostępu

Ryzyko dostępu do aplikacji ma różne poziomy ryzyka:

  • Odpowiedź przechwytująca oznacza, że uruchomione są inne aplikacje mogące przechwytywać ekran.
  • Kontrola reakcji oznacza, że uruchomione są inne aplikacje, które mogą sterować urządzeniem, więc mogą one przechwytywać ekran i sterować wejściami aplikacji.

Ryzyko związane z dostępem do aplikacji jest obecnie dostępne w publicznej wersji beta i zostanie ogólnie udostępnione w najbliższych miesiącach.

Egzekwowanie ryzyka dostępu do aplikacji

Identyfikuj w swojej aplikacji lub grze działania o dużej wartości lub poufne dane i chroń je za pomocą interfejsu Play Integrity API, zamiast odmawiać im dostępu. W miarę możliwości najpierw badaj generowany przez nie ryzykowny ruch, zanim zezwolisz na działania o wysokiej wartości. Jeśli na przykład ryzyko dostępu do aplikacji wskazuje, że uruchomiona aplikacja może przechwytywać ekran, poproś użytkownika o wyłączenie lub odinstalowanie takich aplikacji, zanim umożliwisz mu skorzystanie z funkcji, którą chcesz chronić.

Ta tabela zawiera przykładowe oceny:

Przykładowa odpowiedź na ocenę ryzyka dostępu do aplikacji Interpretacja
appsDetected:
["KNOWN_INSTALLED"]
Masz zainstalowane tylko te aplikacje, które zostały rozpoznane przez Google Play lub wstępnie wczytane na partycji systemowej przez producenta urządzenia. Nie masz uruchomionych aplikacji, które mogłyby prowadzić do rejestrowania, kontrolowania lub nakładania ocen.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Masz aplikacje zainstalowane z Google Play lub wstępnie wczytane na partycji systemowej przez producenta urządzenia. Masz uruchomione inne aplikacje i mają włączone uprawnienia, których można używać do wyświetlania ekranu lub przechwytywania innych danych wejściowych i wyjściowych.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Masz uruchomione aplikacje Google Play lub system, które mają włączone uprawnienia. Można ich używać do wyświetlania ekranu lub przechwytywania innych danych wejściowych i wyjściowych. Są też inne uruchomione aplikacje z włączonymi uprawnieniami, które umożliwiają sterowanie urządzeniem i bezpośrednie sterowanie danymi wejściowymi do aplikacji.
appAccessRiskVerdict: {} Ryzyko związane z dostępem do aplikacji nie jest oceniane, ponieważ pominięto niezbędny wymóg. Na przykład urządzenie nie było wystarczająco zaufane.

Sygnał Play Protect

Sygnał Play Protect informuje aplikację, czy funkcja Play Protect jest włączona i czy wykryła znane szkodliwe aplikacje zainstalowane na urządzeniu.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Jeśli w przypadku Twojej aplikacji lub danych użytkowników szczególnie ważne jest złośliwe oprogramowanie, możesz sprawdzić tę ocenę i poprosić użytkowników o włączenie Play Protect lub usunięcie szkodliwych aplikacji, zanim przejdziesz dalej.

Włącz okno Play Protect

Pole playProtectVerdict może mieć jedną z tych wartości:

Ocena Wyjaśnienie Zalecane działanie

NO_ISSUES

Usługa Play Protect jest włączona, ale na urządzeniu nie znaleziono żadnych problemów z aplikacją.

Usługa Play Protect jest włączona i nie wykryto żadnych problemów, więc użytkownik nie musi nic robić.

NO_DATA

Usługa Play Protect jest włączona, ale nie przeprowadzono jeszcze skanowania. Być może urządzenie lub aplikacja Sklep Play zostały niedawno zresetowane.

Usługa Play Protect jest włączona i nie wykryto żadnych problemów, więc użytkownik nie musi nic robić.

POSSIBLE_RISK

Funkcja Play Protect jest wyłączona.

Usługa Play Protect jest włączona i nie wykryto żadnych problemów, więc użytkownik nie musi nic robić.

MEDIUM_RISK

Usługa Play Protect jest włączona i znajduje zainstalowane na urządzeniu potencjalnie szkodliwe aplikacje.

W zależności od tolerancji ryzyka możesz poprosić użytkownika o uruchomienie Play Protect i podjęcie odpowiednich działań w związku z ostrzeżeniami Play Protect. Jeśli użytkownik nie może spełnić tych wymagań, możesz zablokować mu możliwość wykonywania działania serwera.

HIGH_RISK

Usługa Play Protect została włączona i wykryła na urządzeniu zainstalowane niebezpieczne aplikacje.

W zależności od tolerancji ryzyka możesz poprosić użytkownika o uruchomienie Play Protect i podjęcie odpowiednich działań w związku z ostrzeżeniami Play Protect. Jeśli użytkownik nie może spełnić tych wymagań, możesz zablokować mu możliwość wykonywania działania serwera.

UNEVALUATED

Ocena Play Protect nie została sprawdzona.

Może się tak zdarzyć z kilku powodów, między innymi:

  • Urządzenie nie jest wystarczająco zaufane.
  • Tylko gry: konto użytkownika nie ma licencji.

Ostatnia aktywność na urządzeniach

Możesz też włączyć opcję ostatniej aktywności na urządzeniu, która pokazuje, ile razy Twoja aplikacja zażądała tokena integralności na określonym urządzeniu w ciągu ostatniej godziny. Możesz użyć danych o ostatniej aktywności na urządzeniu, aby chronić aplikację przed nieoczekiwanymi urządzeniami nadużywającymi funkcji, które mogą wskazywać na aktywny atak. Możesz określić, w jakim stopniu należy ufać poszczególnym poziomom aktywności na urządzeniu na podstawie tego, ile razy w ciągu godziny Twoja aplikacja została zainstalowana na typowym urządzeniu.

Jeśli zgodzisz się na otrzymywanie recentDeviceActivity, pole deviceIntegrity będzie miało 2 wartości:

deviceIntegrity: {
  deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
  recentDeviceActivity: {
    // "LEVEL_2" is one of several possible values.
    deviceActivityLevel: "LEVEL_2"
  }
}

Najpierw sprawdź dane, aby zobaczyć, jaki jest typowy poziom aktywności aplikacji na wszystkich Twoich urządzeniach. Następnie możesz określić, jak aplikacja ma reagować, gdy urządzenie wysyła zbyt wiele żądań. Jeśli aktywność jest niska, możesz poprosić użytkownika, aby spróbował ponownie później. Jeśli aktywność jest bardzo duża, możesz podjąć zdecydowane środki egzekwowania zasad.

Żądania standardowe a klasyczne

Przy wdrażaniu Play Integrity należy pamiętać o 2 typach żądań. Aby jak najszybciej uzyskać odpowiedź, w większości przypadków należy używać żądań standardowych. Natomiast żądań klasycznych należy używać wtedy, gdy potrzebne jest nowo wygenerowane żądania względem rekordu atestu urządzenia.

Klasyczne żądanie

Żądanie standardowe

Żądania są przesyłane dłużej i powinny być wysyłane z mniejszą częstotliwością.

Może to być na przykład jednorazowe sprawdzenie, czy działanie o dużej wartości lub danych poufnych jest uzasadnione.

Rzadko.

Żądania charakteryzują się krótkim czasem oczekiwania i można ich używać na żądanie.

Żądanie standardowe składa się z 2 części:

  • Przygotowywanie dostawcy tokena integralności (jeden wyłączony)
  • Wysyłanie żądania tokena integralności (na żądanie)

Korzystaj na żądanie.

Więcej informacji o żądaniach standardowych i klasycznych znajdziesz w dokumentacji Play Integrity.

Implementacja

Aby zacząć korzystać z interfejsu Play Integrity API:

Domyślnie Play Integrity API zezwala na maksymalnie 10 tys. żądań na aplikację dziennie. Aby wyrazić zainteresowanie zwiększeniem maksymalnej dziennej liczby żądań, wykonaj te instrukcje. Aby kwalifikować się do zwiększenia maksymalnej dziennej liczby żądań, aplikacja musi prawidłowo zaimplementować interfejs Play Integrity API i być dostępna w Google Play oraz w innych kanałach dystrybucji.

O czym musisz pamiętać w przypadku interfejsu Play Integrity API

Automatyczna ochrona integralności (API >= 23)

Automatyczna ochrona integralności to usługa chroniąca przed nieuprawnionymi modyfikacjami kodu, która chroni aplikację przed naruszeniem integralności w wyniku nieautoryzowanej modyfikacji lub dalszej dystrybucji. Rozwiązanie działa bez połączenia do transmisji danych, nie wymaga żadnej pracy programistycznej ani integracji z serwerem backendu.

Jak pomaga to zapobiegać oszustwom

Gdy włączysz automatyczną ochronę integralności, Google Play będzie dodawać do kodu aplikacji testy, które utrudnią ich usunięcie przy użyciu zaawansowanych technik zaciemniania kodu i zapobiegania inżynierii wstecznej. W czasie działania zabezpieczenia sprawdzają, czy nie zmodyfikowano lub rozpowszechniono aplikację:

  • Jeśli sprawdzanie instalatora nie powiedzie się, użytkownicy zostaną poproszeni o pobranie aplikacji z Google Play.
  • W przypadku negatywnego wyniku kontroli pod kątem modyfikacji aplikacja się nie uruchomi

Pomaga to chronić użytkowników przed zmodyfikowanymi wersjami Twojej aplikacji.

Implementacja

Automatyczna ochrona integralności jest obecnie dostępna tylko dla wybranych partnerów Google Play. Jeśli ta funkcja nie jest dostępna w Twojej Konsoli Google Play i chcesz uzyskać do niej dostęp, skontaktuj się z zespołem pomocy Google Play dla deweloperów.

Ochronę możesz włączyć podczas tworzenia wersji lub na stronie Integralność aplikacji (Wersja > Integralność aplikacji). Automatyczna ochrona integralności wymaga, aby aplikacja używała podpisywania aplikacji przez Google Play.

Pamiętaj, aby przetestować chronioną aplikację przed awansowaniem wersji produkcyjnej do wersji produkcyjnej.

O czym musisz pamiętać

  • Nie publikuj niechronionych wersji aplikacji
  • Zachowaj ostrożność przy łączeniu różnych rozwiązań do ochrony przed nieuprawnionymi modyfikacjami
  • Przetestuj chronioną aplikację przed opublikowaniem jej w wersji produkcyjnej
  • Obserwuj jak zwykle statystyki pod kątem wzrostu liczby awarii
  • Możesz zgłaszać do Google Play wersje aplikacji, których zabezpieczenia zostały złamane