2016-12-27 4 views
1

Ich lese über einen geheimen Schlüssel speichern (um Daten zu verschlüsseln/zu entschlüsseln) und scheint es gibt keine Möglichkeit, das zu erreichen. Man kann das für einen Angreifer nur schwer erreichen.Wie sicher zu speichern geheimer Schlüssel in Android?

Es ist wirklich so?

Was ich bisher habe:

Shop in gemeinsamen Präferenz (Privatmodus) - Verwurzelt Telefon wird in der Lage sein, um es abzurufen.

NDK C/C++ nativer Code, .so-Datei erstellen - Schwer zu dekompilieren, aber man könnte diese .so-Datei aufrufen und abrufen.

Ein Webserver zum Speichern des Schlüssels, sieht nutzlos aus, wenn ein Berechtigungsnachweis gesendet werden muss, könnte eine bösartige Ware Schlüsselabgriffe protokollieren.

Bin ich zu paranoisch?

+1

Sie sind nie ganz paranoid, aber Sie müssen zu einer Partnerschaft mit Usability kommen – pedrofb

+0

@pedrofb Ich denke so ... –

Antwort

5

Warum Sie Android Schlüsselspeicher nicht verwenden? Es für diesen Zweck ausgelegt ist https://developer.android.com/training/articles/keystore.html

Das Android-Schlüsselspeicher-System kann Sie in einem Container kryptographischen Schlüssel speichern, um es schwieriger zu machen, aus dem Gerät zu extrahieren

Es hat erhebliche Vorteile gegenüber freigegebenen Einstellungen oder privaten Dateien wie Extraktionsverhinderung oder Schlüsselbenutzungsberechtigung Ich halte es nicht für sinnvoll, private Schlüssel auf dem Server

zu speichern

Sicherheitsfunktionen

Android Schlüsselspeicher-System schützt Schlüsselmaterial vor unberechtigter Benutzung. Erstens, Android Keystore lindert die unbefugte Verwendung von Schlüsselmaterial außerhalb des Android-Geräts durch verhindert Extraktion des Schlüsselmaterials von Anwendungsprozessen und von dem Android-Gerät als Ganzes. Zweitens verringert Android KeyStore die nicht autorisierte Verwendung von Schlüsselmaterial auf dem Android-Gerät, indem Apps autorisierte Verwendungen ihrer Schlüssel angeben und diese Einschränkungen dann außerhalb der Prozesse der Apps durchgesetzt werden.

In einigen Geräten mit dedizierter Hardware ist es implementiert. Als ein Programmierer können Sie wissen, ist ein Schlüssel ist hardwaregeschützt

Das Konzept ähnelt iOS KeyChain, aber während IOS KeyChain können Passwörter speichern, generieren und importieren kryptografische Schlüssel, Android KeyStore nur erlaubt, kryptografische geheime Schlüssel durch die generieren Anwendung (keine Importfunktionen)

die Tasten können auch Benutzer geschützt werden benötigt das Gerät zu entsperren und/oder präsentiert den Fingerabdruck

zum Beispiel ein Passwort zu sichern, möglich ist, einen Verschlüsselungsschlüssel mit Fingerabdruck geschützt zu erzeugen , und verwenden Sie es, um Anmeldeinformationen des Benutzers zu verschlüsseln, die in den Einstellungen

gespeichert werden können
+0

Ich habe über Keystore gelesen. Es ist ein nettes Feature, aber nur für Marshmallow verfügbar. Sie beschränken Ihre App auf eine sehr kleine Gruppe. –

+0

Android KeyStore ist seit Android 18 (4.3 JellyBean MR2) verfügbar. In Marshmallow steht die Berechtigung zur Schlüsselverwendung mit Fingerabdrücken zur Verfügung. Ungefähr 85% der Benutzer sind mindestens in dieser Version https://www.statista.com/statistics/271774/share-of-android-platforms-on-mobile-devices-with-android-os/ – pedrofb

+0

Sorry, Sie ' hast recht. Re-Lesen https://developer.android.com/training/articles/keystore.html Ich habe es gefunden. –

1

Sie haben Recht. Die meisten Sicherheitsexperten werden Ihnen sagen, dass es kein absolut sicheres System gibt. Der richtige Weg, um darüber nachzudenken, ist in Bezug auf die Höhe der Ressourcen, die ein Angreifer verwenden muss, um Ihr System zu brechen.

Sie gleichen dann Ihre Sicherheitsmaßnahmen zwischen dem Wert der Daten und anderen Faktoren wie der Komplexität Ihrer Lösung und anderen Kosten aus.

auf Ihre Beispiele zu erarbeiten, sind Sie nicht besorgt über den rechtmäßigen Besitzer/Benutzer des Telefons der Angreifer zu sein vorausgesetzt, Sie beurteilen können, wie folgt:

  1. Rooting ein Telefon ein Risiko, wenn ein Angreifer bekommt physischen Besitz. Um zu beurteilen, wie wertvoll die Daten im Vergleich zu der Wahrscheinlichkeit sind, dass ein Telefon verloren geht/gestohlen wird, kümmert sich die Person, die es dann hat, um den Schlüssel zu bekommen und zu wissen, wie man ein Telefon root.
  2. Verschleiern geheime Informationen wird im Allgemeinen als nutzlos angesehen. Ich persönlich denke, es hängt ein wenig von den Umständen ab. Auch hier muss ein Angreifer das Telefon rooten usw. Das Problem mit der Verschleierung geheimer Informationen ist, dass nur eine Person benötigt, um herauszufinden, was Sie getan haben, und diese Informationen verfügbar machen, um den Wert vollständig zu verlieren.
  3. Wenn Sie einen Keylogger haben, welche Sicherheit haben Sie überhaupt?

Sie sollten die Möglichkeit der Verwendung eines "sicheren Elements" betrachten. Eine gute Information finden Sie unter this post auf der Sicherheitsplattform Exchange.

+0

Ich denke, das Ausgleichen, was ausmacht, ist Schlüsselpunkt, obwohl ... –

Verwandte Themen