Wird in der SafetyNet-Attestierung ein API-Schlüssel benötigt?

9

Ich habe erfolgreich einen Backend-Service und einen Android-Client für die SafetyNet-Attestierung erstellt. Wenn ich ein jws-Token an meinen Server sende und versuche, sein Zertifikat zu validieren, stellt sich heraus, dass es kein Zertifikat gibt, das es signiert hat.

Sollte ich meiner Android-App einen API-Schlüssel hinzufügen?

Mein Attestierungsergebnis:

%Vor%     
pixel 29.03.2017, 13:43
quelle

3 Antworten

0

Sie müssen den API-Schlüssel mit der neuesten Version der Google Play-Dienste verwenden.

Weitere Informationen finden Sie in der Dokumentation zu SafetyNetClient::attest(byte[], String) Methode.

Als Randnotiz empfehle ich dringend, das Verifikationskontingent für einen Schlüssel, den Sie für Ihre Android-App generieren, auf den minimalen Wert 1 zu setzen:

Zypern

Dies (fast aus mit 1 Fehler;)) verhindert, dass ein Angreifer einen Schlüssel verwendet, der wie folgt aus Ihrem Client-Code abgerufen werden kann:

%Vor%

Ersetze X-Android-Package , X-Android-Cert und key Werte, um deinen API-Schlüssel mit Android-App-Beschränkungen zu testen.

    
MaciejGórski 27.06.2017, 07:11
quelle
-2

Ich denke, Sie haben aufgrund der Dokumentation einige Details verpasst - Validierung der Antwort mit Google APIs :

  

Hinweis : Sie benötigen einen API-Schlüssel, um auf die Android-Geräteüberprüfungs-API zuzugreifen, und die API unterliegt einer Preisbeschränkung. Aus diesen Gründen sollten Sie die API nur zum Testen während der ersten Entwicklungsphase verwenden. Sie sollten diese Verifizierungs-API nicht in einem Produktionsszenario verwenden.

Fügen Sie den API-Schlüssel hinzu und prüfen Sie, ob sich das Verhalten ändert.

Hoffe, das hilft.

    
Mr.Rebot 30.03.2017 09:04
quelle
-2

Sie können die Antwort selbst validieren. Hier ist ein Code, der Ihnen hilft, die JWT-Antwort zu interpretieren:

Ссылка

Sie möchten die Signierung in Ihrem Backend validieren. Google lässt Sie wissen, was Sie überprüfen müssen, wenn Sie nicht ihren einfachen Service nutzen:

  

Überprüfen Sie die Antwort zur Kompatibilitätsprüfung

     

Sie sollten Schritte unternehmen, um zu machen   Sicher, dass die Antwort der Kompatibilitätsprüfung tatsächlich von der   SafetyNet-Service und enthält Daten, die Ihren Anfragedaten entsprechen.

     

Achtung: Sie sollten die gesamte JWS-Antwort an Ihren eigenen Server senden,   Verwenden einer sicheren Verbindung zur Überprüfung. Wir empfehlen das nicht   Sie führen die Verifizierung direkt in Ihrer App durch, weil   Fall, es gibt keine Garantie, dass die Verifikationslogik selbst nicht hat   wurde geändert.

     

Befolgen Sie diese Schritte, um den Ursprung der JWS-Nachricht zu überprüfen:

     
  1. Extrahieren Sie die SSL-Zertifikatskette aus der JWS-Nachricht.
  2.   
  3. Bestätigen Sie die   SSL-Zertifikatkette und verwenden Sie SSL-Hostname, um sicherzustellen, dass die   Das Blattzertifikat wurde an den Hostnamen attest.android.com ausgestellt.
  4.   
  5. Verwenden   das Zertifikat zur Überprüfung der Signatur der JWS-Nachricht.
  6.   
  7. Überprüfen Sie die   Daten der JWS-Nachricht, um sicherzustellen, dass sie mit den Daten in Ihrem übereinstimmt   ursprüngliche Anfrage. Stellen Sie insbesondere sicher, dass die Nonce, Timestamp,   Paketname und die SHA-256-Hashwerte stimmen überein.
  8.   

Von: Ссылка

    
Scott Merritt 18.04.2017 18:37
quelle