SafetyNet

From Android Wiki
Jump to navigation Jump to search

SafetyNet ist ein Service von Google, welcher im Rahmen der Google Play Services auf einem Android-Gerät installiert ist und vordergründig für App-Entwickler zur Verfügung steht. Entwickler können mit Hilfe der von SafetyNet bereitgestellten Informationen zum einen ihre App im Google Play Store verstecken, wenn das Gerät die sog. SafetyNet-Überprüfung (siehe weiter unten für mehr Informationen) nicht besteht. Zum anderen kann eine auf einem Gerät bereits installierte App den SafetyNet-Status selbst überprüfen und so bspw. App-Funktionen deaktivieren oder die Arbeit auch komplett verweigern.

Ziel von SafetyNet ist es, kritischen Apps, wie bspw. Banking- oder Bezahl-Apps, den Status des Gerätes vor deren Verwendung zu überprüfen um potentiellen Missbrauch zu minimieren.

Funktionsweise[edit | edit source]

SafetyNet besteht grundlegend aus zwei Komponenten. Auf dem Gerät des Nutzers ist zum einen ein Service snet installiert, welcher im Hintergrund kontinuierlich Daten über das Gerät sammelt und an Google sendet. Zum Anderen existiert eine Komponente bei Google, welcher diese Daten Server-seitig von SafetyNet-Geräten entgegennimmt und auswertet. Auf Basis dieser Daten kann Google durch nicht näher dokumentierte Prüfmechanismen und -analysen die Entscheidung treffen, ob ein Gerät aktuell in einem sicheren und nicht veränderten Status ist.[1]

Dieser Status wird als CTS compatible bezeichnet, wobei CTS für die Compatibility Test Suite steht,[2] welche grundsätzlich jedes Gerät bestehen muss, bevor Google Services, wie bspw. der Google Play Store, auf diesem vorinstalliert werden darf. Die CTS-Kompatibilität beinhaltet allerdings lediglich die Aussage, ob das Gerät CTS-kompatibel ist und nicht verändert wurde, allerdings nicht, ob es Fehlerfrei ist oder keine Sicherheitslücken aufweist.

SafetyNet-Überprüfung[edit | edit source]

Neben der Sammlung von Daten und der Server-seitigen Verarbeitung dieser für die Aussage, ob ein Gerät CTS-kompatibel ist oder nicht, stellt SafetyNet App-Entwicklern verschiedene APIs bereit, mit welchem eine App den SafetyNet-Status überprüfen kann. Diese Aktion wird als attestation bezeichnet.[3] Hierbei sendet die App ein Request an die SafetyNet-API und fragt den Status des Gerätes ab. Als Antwort bekommt die App zwei boolesche Werte, zum einen ob das Gerät einen Basis-Integrität-Check bestanden hat und zum anderen ob das Gerät CTS-kompatibel ist. Der Basis-Integrität-Check sagt hierbei aus, ob das Gerät höchst-wahrscheinlich und nach Wissen des SafetyNet-Service nicht verändert wurde.

Probleme mit CustomROMs und Root[edit | edit source]

Aufgrund des gesetzten Ziels von SafetyNet und der daraus resultierenden Implementierung, ist es problematisch, ein CustomROM zu installieren oder ein Gerät zu rooten, wenn gleichzeitig eine App genutzt wird, die einen positiven SafetyNet Check benötigt. Sowohl das Installieren eines CustomROM, wie auch das rooten, verändern die auf dem Gerät installierte Software und resultieren damit in einer negativen SafetyNet-Überprüfung, sodass Apps wie bspw. Google Pay aber auch Pokemon GO nicht mehr funktionieren. Aus der Entwickler-Community gibt es immer wieder Wege und Implementierungen, die die Veränderung des Systems vor SafetyNet verbergen sollen und somit zu einem positiven Ergebnis bei der Überprüfung führen. Aufgrund der unbekannten Analysen, die auf den gesammelten Daten seitens Google durchgeführt werden, ist es allerdings oft schwer nachzuvollziehen, welche Informationen verändert werden müssen. Zusätzlich verändert Google regelmäßig die Analysen um Methoden zur Umgehung von SafetyNet unbrauchbar zu machen. Die Server-seitige Überprüfung unterstützt hierbei sowohl das geheimhalten der verwendeten Algorithmen, wie auch die schnelle Anpassung der Analysen.

Des Weiteren kann der SafetyNet-Status nicht ohne Weiteres von einem tampered, also einem veränderten, Zustand zurück geändert werden. Hintergrund ist, dass SafetyNet nicht nur den aktuellen Status des Gerätes für eine Überprüfung heranzieht, sondern auch die verschiedenen Status im Verlauf der Zeit bewertet. Das Zurücksetzen des Status ist daher nur durch einen kompletten Austausch der System-Partition mit einem unveränderten Image möglich.[4]

Überprüfen des aktuellen SafetyNet Status[edit | edit source]

Neben der Installation einer App, die bekanntermaßen SafetyNet verwendet, wie bspw. Google Pay, kann es für den Nutzer von Interesse sein, zu wissen, wie der aktuelle Status des Gerätes in Bezug auf SafetyNet ist. Hierfür gibt es im Google Play Store verschiedene Apps, die diesen Status anzeigen können, bspw. die App SafetyNet Test Play Store.

Einzelnachweise[edit | edit source]

  1. SafetyNet: Google's tamper detection for Android · John Kozyrakis ~ blog. Abgerufen am 29. September 2018 (en-us).
  2. SafetyNet Attestation API  |  Android Developers. In: Android Developers. Abgerufen am 29. September 2018 (english).
  3. SafetyNet Attestation API  |  Android Developers. In: Android Developers. Abgerufen am 29. September 2018 (english).
  4. Gefangen im SafetyNet von Google: Was Modder beachten müssen | AndroidPIT. Abgerufen am 29. September 2018 (deutsch).