7

Ich schreibe App für Android und ich muss zwei Schlüssel speichern, die ich verwenden werde, um einige Nachrichten zu verschlüsseln/entschlüsseln. (Ich muss den privaten Schlüssel RSA speichern). Ich habe gelesen:Speichern von Schlüsseln in Android

https://developer.android.com/training/articles/keystore.html#WhichShouldIUse

und es gibt einen Abschnitt mit dem Titel:

Wahl zwischen einem Schlüsselanhänger oder dem Android Schlüsselspeicher Provider

Aber ich bin immer noch nicht sicher, was Ich sollte mich für die sicherste Lösung entscheiden.

Bitte helfen Sie mir.

Antwort

5

Wie die Seite sagt:

die KeyChain API verwenden, wenn Sie systemweite Anmeldeinformationen wünschen

Der Zweck der KeyChain API ist Anmeldeinformationen Benutzername/Passwort zu verwenden, um einen ‚Token zu erhalten 'dass diese App (und mögliche andere Apps) verwenden können. Der KeyChain wird auch sehr oft benutzt, um private Informationen (wie Mails) im Hintergrund zu synchronisieren.

Aber in Ihrem Fall klingt es, dass Sie nur einen privaten RSA-Schlüssel speichern möchten. In diesem Fall ist der Keystore eine bessere Lösung. Beachten Sie, dass der Keystore nur auf Geräten ab 4.3 funktioniert, da er hardwaregestützten sicheren Speicher (wie ARM Trustzone und andere sichere Ausführungsumgebungen) verwendet, um seine privaten Schlüssel zu speichern (wenn ein Hardwaremodul vorhanden ist). Diese Funktion wurde in Android 4.3 hinzugefügt.

Um den Keystore verwenden zu können, müssen Sie ein Zertifikat mit dem öffentlichen Schlüssel generieren und mit dem privaten Schlüssel im Keystore speichern. Der Keystore verwendet das Lockscreen-Muster/Pin/etc. (falls vorhanden) um den privaten Schlüssel zu verschlüsseln. Beachten Sie, dass dies manchmal zu der irritierenden Tatsache führt, dass der Benutzer seinen Sperrbildschirm nicht mehr deaktivieren kann, solange der Benutzer seinen Zertifikatsspeicher nicht löscht oder die App entfernt (unter Android < = 5), also löschen Sie das Zertifikat wenn der Schlüssel nicht mehr benötigt wird. Der Keystore speichert den privaten Schlüssel im Hardwaremodul (falls vorhanden), so dass es viel schwieriger ist, den privaten Schlüssel zu extrahieren, oder für andere Anwendungen, Daten mit dem privaten Schlüssel zu verschlüsseln. Dennoch ist es nicht 100% ig narrensicher, da neue exploits are found und root (in gewisser Weise) diese zusätzliche Schutzschicht umgehen können. Aber es ist immer noch besser, als Ihren privaten Schlüssel in einer Datei zu speichern.

Auch wenn Sie ein tieferes Verständnis davon haben möchten, wie das alles "unter der Haube" funktioniert, würde ich empfehlen, this paper zu lesen, die sehr detailliert über den Keystore und andere Sicherheitsmechanismen in Android geht.

+0

Toller Beitrag, danke! Eine Frage, da sich das zitierte Papier auf Änderungen in Lollipop bezieht: Weißt du, ob die Verschlüsselung des Schlüsselspeichers in späteren Versionen von Android verbessert wurde? Die verfügbaren Informationen, die ich gefunden habe, sind in diesem Punkt nicht sehr klar. – Frank

Verwandte Themen