Google udostępnia zestaw interfejsów API i usług, które ułatwiają wykrywanie, czy aplikacja działa w bezpiecznym i zaufanym środowisku. Głównym elementem jest interfejs Play Integrity API, który pomaga sprawdzać, czy interakcje są autentyczne, przez wykrywanie potencjalnie niebezpiecznych i nielegalnych interakcji. Oprócz informacji o integralności aplikacji i urządzenia interfejs Play Integrity API udostępnia teraz informacje o ryzykach związanych z dostępem i dostępnością, Google Play Protect oraz ostatniej aktywności na urządzeniu. Aby jeszcze bardziej wzmocnić strategię zapobiegania oszustwom, platforma Android oferuje interfejsy API do stosowania w konkretnych scenariuszach, które mogą być przydatne w Twojej aplikacji.
Play Integrity API
Interfejs Play Integrity API pozwala poznać stan zabezpieczeń urządzenia, na którym działa aplikacja. Dzięki temu masz pewność, że dostęp do informacji poufnych ma odpowiedni użytkownik.
Pomaga sprawdzać, czy interakcje i żądania serwera pochodzą z autentycznego pliku binarnego aplikacji w zaufanym środowisku:
- 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.
- 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 stwarzające ryzyko lub niebezpieczne aplikacje.
- Niski poziom ryzyka dostępu innych aplikacji: pozwala określić, czy uruchomione są inne aplikacje, które mogą rejestrować to, co widać na ekranie, lub kontrolować urządzenie i dane wejściowe w Twojej aplikacji.
Jak to pomaga ograniczać oszustwa
Gdy użytkownik wykona ważne działanie w Twojej aplikacji, możesz wywołać interfejs Play Integrity API. Jeśli nie, serwer backendu aplikacji może podjąć odpowiednie działania, które mają na celu ograniczenie ataków i oszustw. Możesz na przykład wymagać dodatkowej weryfikacji użytkownika lub odmówić dostępu do funkcji związanych z danymi wrażliwymi.
Ryzyko dotyczące dostępu do aplikacji
Sygnalizowanie ryzyka dotyczącego dostępu do aplikacji zostało wprowadzone, aby pomóc Ci ocenić, czy inne aplikacje na urządzeniu mogą wyświetlać i rejestrować ekran, gdy Twoja aplikacja jest uruchomiona lub uzyskuje dostęp do niej za pomocą uprawnień ułatwień dostępu. Zweryfikowane aplikacje ułatwiające dostępność są automatycznie wykluczane z tych orzeczeń. Ryzyko dostępu aplikacji pomaga deweloperom chronić aplikacje, a jednocześnie szanować prywatność użytkowników, ponieważ aplikacja wysyłająca żądanie nie uzyskuje tożsamości zainstalowanych aplikacji, a wyrok nie jest powiązany z identyfikatorami użytkownika ani urządzenia.
Dzięki tej współpracy możemy otrzymywać sygnały potrzebne do uzyskiwania bardziej szczegółowych statystyk, które pomogą nam skuteczniej chronić naszych klientów.
—Nubank, partner w ramach wcześniejszego dostępu
Ryzyko dotyczące dostępu do aplikacji ma różne poziomy ryzyka:
- Odpowiedź „przechwytywanie” oznacza, że uruchomione są inne aplikacje, które mogą rejestrować to, co widać na ekranie.
- Odpowiedź „sterowanie” oznacza, że uruchomione są inne aplikacje, które mogą sterować urządzeniem, a zatem mogą przechwytywać ekran i kontrolować dane wejściowe do Twojej aplikacji.
Ryzyko dotyczące dostępu do aplikacji
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ć.
Tabela zawiera przykładowe werdykty:
Przykładowa odpowiedź na ocenę ryzyka dotyczącego dostępu aplikacji | Interpretacja |
---|---|
appsDetected: ["KNOWN_INSTALLED"]
|
Zainstalowane są tylko aplikacje rozpoznawane przez Google Play lub wstępnie załadowane na partycji systemowej przez producenta urządzenia. Nie ma uruchomionych aplikacji, które mogłyby spowodować wydanie werdyktu dotyczącego przechwytywania, sterowania lub nakładek. |
appsDetected: ["KNOWN_INSTALLED", "UNKNOWN_INSTALLED", "UNKNOWN_CAPTURING"]
|
Na partycji systemowej są zainstalowane aplikacje przez Google Play lub załadowane fabrycznie przez producenta urządzenia. Uruchomione są inne aplikacje z włączonymi uprawnieniami, które mogą służyć do wyświetlania ekranu lub rejestrowania innych danych wejściowych i wyjściowych. |
appsDetected: ["KNOWN_INSTALLED", "KNOWN_CAPTURING", "UNKNOWN_INSTALLED", "UNKNOWN_CONTROLLING"]
|
Uruchomione są aplikacje Google Play lub systemowe, które mają włączone uprawnienia umożliwiające wyświetlanie ekranu lub przechwytywanie innych danych wejściowych i wyjściowych. Uruchomione są też inne aplikacje z włączonymi uprawnieniami, które mogą służyć do sterowania urządzeniem i bezpośredniego kontrolowania danych wejściowych w aplikacji. |
appAccessRiskVerdict: {}
|
Ryzyko związane z dostępem do aplikacji nie zostało ocenione, ponieważ pominięto niezbędny wymóg. Na przykład urządzenie nie było wystarczająco godne zaufania. |
sygnał Play Protect;
Sygnał Play Protect informuje aplikację, czy usługa Play Protect jest włączona i czy wykryła zainstalowane na urządzeniu znane szkodliwe aplikacje.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Jeśli złośliwe oprogramowanie stanowi szczególne zagrożenie dla Twojej aplikacji lub danych użytkowników, możesz sprawdzić ten werdykt i poprosić użytkowników, aby włączyli Google Play Protect lub usunęli szkodliwe aplikacje.
playProtectVerdict
może mieć jedną z tych wartości:
Ocena | Wyjaśnienie | Zalecane działanie |
---|---|---|
|
Usługa Play Protect jest włączona i nie wykryła żadnych problemów z aplikacją na urządzeniu. |
Usługa Play Protect jest włączona i nie wykryła żadnych problemów, więc użytkownik nie musi nic robić. |
|
Usługa Play Protect jest włączona, ale skanowanie nie zostało jeszcze wykonane. Urządzenie lub aplikacja Sklep Play mogły zostać niedawno zresetowane. |
Usługa Play Protect jest włączona i nie wykryła ż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 wykryła żadnych problemów, więc użytkownik nie musi nic robić. |
|
Usługa Play Protect jest włączona i znalazła potencjalnie szkodliwe aplikacje zainstalowane na urządzeniu. |
W zależności od tolerancji na ryzyko możesz poprosić użytkownika o uruchomienie Play Protect i podjęcie działań w odpowiedzi na ostrzeżenia Play Protect. Jeśli użytkownik nie spełnia tych wymagań, możesz zablokować mu dostęp do działania serwera. |
|
Usługa Play Protect jest włączona i wykryła na urządzeniu niebezpieczne aplikacje. |
W zależności od tolerancji na ryzyko możesz poprosić użytkownika o uruchomienie Play Protect i podjęcie działań w odpowiedzi na ostrzeżenia Play Protect. Jeśli użytkownik nie spełnia tych wymagań, możesz zablokować mu dostęp do tej akcji serwera. |
|
Wynik Play Protect nie został oceniony. Może się tak zdarzyć z kilku powodów, m.in.:
|
Ostatnia aktywność na urządzeniu
Możesz też włączyć funkcję „Ostatnia aktywność na urządzeniu”, która informuje, ile razy aplikacja zażądała tokena integralności na określonym urządzeniu w ciągu ostatniej godziny. Możesz używać ostatniej aktywności urządzenia, aby chronić swoją aplikację przed nieoczekiwanymi, nadmiernie aktywnymi urządzeniami, które mogą wskazywać na aktywny atak. Możesz określić, ile zaufania przyznać poszczególnym poziomom aktywności na urządzeniu na podstawie tego, ile razy w ciągu godziny aplikacja zainstalowana na typowym urządzeniu wysyła żądanie tokena integralności.
Jeśli zdecydujesz się otrzymywać dane 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ć, jakie są typowe poziomy aktywności Twojej aplikacji na wszystkich urządzeniach. Następnie możesz określić, jak ma reagować aplikacja, gdy urządzenie wysyła zbyt dużo żądań. Jeśli aktywność jest nieco wysoka, możesz poprosić użytkownika, aby spróbował ponownie później. Jeśli aktywność jest bardzo wysoka, możesz podjąć bardziej zdecydowane działania.
Żądania standardowe a klasyczne
W ramach wdrażania Play Integrity należy wziąć pod uwagę 2 typy żądań. W większości przypadków należy używać standardowych żądań, aby uzyskać najszybszą odpowiedź. Klasyczne żądania należy stosować w przypadku, gdy potrzebne jest nowo wygenerowane żądanie dotyczące rekordu atesta dla urządzenia.
Klasyczne żądanie |
Żądanie standardowe |
---|---|
Prośby te wymagają więcej czasu i powinny być wysyłane rzadziej. Na przykład sporadycznie, aby sprawdzić, czy działanie związane z bardzo cennymi lub poufnymi danymi jest autentyczne. Używaj rzadko. |
Żądania charakteryzują się krótkim czasem oczekiwania i można je realizować na bieżąco. Standardowe żądanie składa się z 2 części:
Użyj na żądanie. |
Więcej informacji o standardowych i klasycznych żądaniach znajdziesz w dokumentacji Play Integrity.
Implementacja
Aby rozpocząć korzystanie z interfejsu Play Integrity API:
- Włącz w Konsoli Google Play odpowiedzi interfejsu Play Integrity API i połącz je z projektem Google Cloud.
- Zintegruj interfejs Play Integrity API w swojej aplikacji.
- Zdecyduj, jak będziesz rozpatrywać wyroki.
Domyślnie interfejs Play Integrity API zezwala na wysyłanie maksymalnie 10 tys. żądań dziennie na aplikację. Aby wyrazić chęć zwiększenia maksymalnej liczby żądań dziennie, postępuj zgodnie z tymi instrukcjami. Aby móc zwiększyć maksymalną liczbę żądań wysyłanych dziennie, aplikacja musi prawidłowo implementować interfejs Play Integrity API i być dostępna w Google Play oraz w ewentualnych innych kanałach dystrybucji.
Wskazówki dotyczące interfejsu Play Integrity API
- Ważne jest, aby odpowiednio obsługiwać błędy w odpowiedziach interfejsów Play Integrity API. Postępuj zgodnie z tym przewodnikiem dotyczącym strategii ponownego próbowania i egzekwowania na podstawie kodów błędów.
- Interfejs Play Integrity API udostępnia narzędzia do testowania odpowiedzi.
- Aby sprawdzić integralność urządzenia, wykonaj te czynności.
- Zapoznaj się z tymi uwagami dotyczącymi bezpieczeństwa, aby dowiedzieć się, jak korzystać z interfejsu Play Integrity API.
Automatyczna ochrona integralności (interfejs API ≥ 23)
Automatyczna ochrona integralności to usługa ochrony kodu przed nieuprawnionymi modyfikacjami, która chroni aplikację przed naruszeniem integralności w wyniku nieautoryzowanej modyfikacji lub dalszego rozpowszechniania. Działa bez połączenia z internetem. Nie wymaga pracy programistycznej przed testowaniem ani integracji z serwerem backendu.
Jak to pomaga ograniczać oszustwa
Gdy włączysz automatyczną ochronę integralności, Google Play doda do kodu aplikacji mechanizmy kontrolne, które są trudne do usunięcia dzięki zaawansowanym technikom zaciemniania kodu i blokowania analizowania wstecznego. W czasie działania ochrona sprawdza, czy aplikacja została zmodyfikowana lub rozpowszechniona:
- Jeśli sprawdzanie instalatora da wynik negatywny, użytkownik zostanie poproszony 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 aplikacji.
Implementacja
Automatyczna ochrona integralności jest obecnie dostępna tylko dla wybranych partnerów Google Play. Jeśli funkcja nie jest dostępna w Konsoli Google Play, a chcesz uzyskać do niej dostęp, skontaktuj się z zespołem pomocy dla deweloperów Google Play.
Ochronę możesz włączyć podczas tworzenia wersji lub na stronie Integralność aplikacji (Wersja > Integralność aplikacji). Automatyczna ochrona integralności wymaga, aby aplikacja korzystała z podpisywania aplikacji przez Google Play.
Przed opublikowaniem wersji produkcyjnej przetestuj chronioną aplikację.
O czym musisz pamiętać
- Nie publikuj niezabezpieczonych wersji aplikacji
- Zachowaj ostrożność przy łączeniu różnych rozwiązań do ochrony przed nieuprawnionymi modyfikacjami
- Testowanie chronionej aplikacji przed opublikowaniem jej wersji produkcyjnej
- Sprawdzaj statystyki w standardowy sposób, aby wykryć wzrost liczby awarii.
- Możesz zgłaszać scrackowane wersje aplikacji w Google Play