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
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.
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.
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.
Pole playProtectVerdict
może mieć jedną z tych wartości:
Ocena | Wyjaśnienie | Zalecane działanie |
---|---|---|
|
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ć. |
|
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ć. |
|
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ć. |
|
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. |
|
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. |
|
Ocena Play Protect nie została sprawdzona. Może się tak zdarzyć z kilku powodów, między innymi:
|
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:
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:
- Włącz odpowiedzi interfejsu Play Integrity API w Konsoli Google Play i połącz je z projektem Google Cloud.
- Zintegruj interfejs Play Integrity API ze swoją aplikacją.
- Zdecyduj, jak będziesz obchodzić się z ocenami.
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
- Koniecznie musisz odpowiednio naprawić błędy w odpowiedziach Play Integrity API. Postępuj zgodnie z przewodnikiem na temat ponownych prób i strategii egzekwowania zasad na podstawie kodów błędów.
- Interfejs Play Integrity API zawiera narzędzia do testowania odpowiedzi.
- Aby zobaczyć wynik integralności z urządzenia, wykonaj te czynności.
- Przeczytaj informacje dotyczące bezpieczeństwa, aby poznać zalecane metody korzystania z 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