it-swarm.com.de

wie sichere ich Verschlüsselungsschlüssel in Android?

Ich möchte wissen, wie Verschlüsselungsschlüssel in Android sicher gespeichert werden kann? Was ist das beste Szenario, um Verschlüsselung und Schlüssel zu schützen? 

26
user6693721

In Ihren Kommentaren müssen Sie Daten für die aktuellen und die alten Android-Versionen mit einem lokalen Schlüssel verschlüsseln

Android Keystore wurde entwickelt, um Ihre Schlüssel zu generieren und zu schützen. Es ist jedoch nicht für API-Level unter 18 verfügbar, und es gibt einige Einschränkungen bis zum API-Level 23. 

Sie benötigen einen zufälligen symmetrischen Verschlüsselungsschlüssel, beispielsweise AES. Der AES-Schlüssel dient zum Ver- und Entschlüsseln Ihrer Daten. Ich werde Ihre Optionen zusammenfassen, um sie abhängig vom Android-API-Level sicher zu generieren und zu speichern. 

  • API-Ebene <18: Android-Keystore nicht vorhanden. Fordern Sie ein Kennwort an den Benutzer an, leiten Sie einen Verschlüsselungsschlüssel vom Kennwort ab. Der Nachteil ist, dass Sie beim Start der Anwendung zur Eingabe des Kennworts aufgefordert werden müssen. Der Verschlüsselungsschlüssel wird nicht im Gerät gespeichert. Sie wird bei jedem Start der Anwendung mit dem Kennwort berechnet 

  • API Level> = 18 <23: Android Keystore ohne AES-Unterstützung verfügbar. Generieren Sie einen zufälligen AES-Schlüssel mit dem Standard-Kryptografieanbieter (ohne AndroidKeystore). Generieren Sie ein RSA-Schlüsselpaar im Android-Keystore und verschlüsseln Sie den AES-Schlüssel mit dem öffentlichen RSA-Schlüssel. Speichern Sie verschlüsselte AES-Schlüssel in Android SharedPreferences. Wenn die Anwendung startet, entschlüsseln Sie den AES-Schlüssel mit dem privaten RSA-Schlüssel

  • API Level> = 23: Android Keystore mit AES-Unterstützung verfügbar. Generieren Sie einen zufälligen AES-Schlüssel mit Android Keystore. Sie können es direkt verwenden.

Um zu verschlüsseln, kann AES/CBC/PKCS7Padding Algorithmus verwendet werden. Es erfordert auch einen zufälligen Initialisierungsvektor (IV), um Ihre Daten zu verschlüsseln. Dies kann jedoch öffentlich sein.

Alternativen: 

  • API-Ebene> 14: Android-Schlüsselkette: KeyChain ist ein systemweiter Speicher für Berechtigungsnachweise. Sie können Zertifikate mit privaten Schlüsseln installieren, die von Anwendungen verwendet werden können. Verwenden Sie einen vorinstallierten Schlüssel, um Ihren AES-Schlüssel wie im zweiten Fall oben zu ver- und entschlüsseln.

  • Externes Token: Die geschützten Schlüssel werden nicht im Gerät gespeichert. Sie können ein externes Token verwenden, das ein privates/öffentliches Schlüsselpaar enthält, mit dem Sie den AES-Schlüssel verschlüsseln können. Auf das Token kann über Bluetooth oder NFC zugegriffen werden

22
pedrofb

Sie können den Verschlüsselungsschlüssel nicht in Ihrer APK-Datei platzieren. Sie können es auf einem Remote-Server behalten und mit dem Server entschlüsseln. Oder Sie machen es anderen schwer, indem Sie den Schlüssel kodieren und ihn an nicht offensichtlichen Orten aufbewahren. Dafür gibt es keine kugelsichere Lösung.

3
Nabin Bhandari

Es gibt keine Möglichkeit, Ihre privaten API-Schlüssel sicher im Code zu speichern. Sie können jedoch NDK verwenden, um private Schlüssel sicher zu speichern. Es ist nicht trivial, den Schlüssel vom NDK zu erhalten. Secue-Schlüssel mit NDK-Beispiel

1
Manish

Sie können das Android Keystore-System verwenden, um vertrauliche Informationen zu speichern und abzurufen. Lesen Sie diesen 5-minütigen Artikel, um zu verstehen, wie es funktioniert . Verwenden des Android Keystore-Systems zum Speichern und Abrufen vertraulicher Informationen

0
Neeraj