Wie sicher zu speichern Credentials (Passwort) in Android-Anwendung?

Ich möchte das Passwort für die Anmeldung in einer Finanzanwendung, die ich an einem sicheren Ort zu entwickeln verwendet werden. Nach einem net Surfen fand ich folgende Optionen, aber jeder von ihnen hat einen gewissen Nachteil.

1) KeyChain.
Nur in OS Version 4 verfügbar.

  • Wie man das Bild auf bestimmte Koordinaten in android zoomen kann
  • Android Kamera Set Auflösung
  • MDM-Workflow in Android
  • Fehler nach Fingerabdruck berührt Samsung Handys: android.security.KeyStoreException: Key Benutzer nicht authentifiziert
  • Chromecast fügt Untertitel beim Abspielen von Videos hinzu
  • Webview shouldinterceptrequest Beispiel
  • 2) Gemeinsame Vorgaben.
    Es speichert Daten im Klartext, obwohl wenn ich die Daten verschlüsseln kann, dann kann der Verschlüsselungsschlüssel durch Dekompilierung des Anwendungscodes beeinträchtigt werden.

    3) Zugriff auf Keystore-Daemon und Speicher-Anmeldeinformationen in ihm.
    ( Http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html ) Benötigt ein anderes Passwort zu erinnern.

    Bitte schlagen Sie mir einen besseren Weg, um die Anmeldeinformationen in der Android-Anwendung wie IPhone KeyChain zu sichern.

  • Link auf einer Webseite zum Öffnen von Instagram App
  • Android SyncAdapter mit einem Google-Konto
  • Was ist eine nicht eingebettete Aktivität und warum nicht android: fitsSystemWindows arbeiten daran?
  • Wie bekommst du EditText-Wert und zeig es auf dem Bildschirm durch TextView?
  • Google Play Services für Froyo
  • Alle Elemente einer ArrayList ändern sich, wenn ein neuer hinzugefügt wird?
  • 2 Solutions collect form web for “Wie sicher zu speichern Credentials (Passwort) in Android-Anwendung?”

    Das ist kein Äquivalent von iPhone's KeyChain in Android derzeit. Wenn du etwas Geheimnis behalten willst, lass es nicht auf dem Gerät. Oder zumindest nicht den Schlüssel / das Kennwort speichern, das es mit dem Gerät verschlüsselt hat. So einfach ist das.

    Zusätzlich:

    1) Auch auf ICS kannst du den KeyChain nicht direkt nutzen, um Anwendungsgeheimnisse zu speichern (siehe Blogpost in 3))

    2) Dies ist nur ein Problem für verwurzelte Telefone, oder wenn jemand physischen Zugriff auf das Gerät hat.

    3) Es ist viel besser, sich an ein einziges Passwort zu erinnern, das alle von Ihnen Anmeldeinformationen zu schützen, als zu versuchen, mehrere Passwörter zu erinnern. Darüber hinaus, auf ICS, gibt es kein separates Passwort, die Credential-Speicher ist durch das Gerät freischalten Passwort geschützt.

    Hashing ist die Lösung nicht speichern Anmeldeinformationen als Klartext in gemeinsamen Präferenzen oder ein Medium.

    Nur Salz und Hash das Passwort dann können Sie fortfahren, um es in entweder sharedPreferences oder einige eingebettete db zu speichern.

    Hier ist, wie es funktioniert:

    Online

    1. Das Plain (unhashed) Passwort wird bei erfolgreicher Anmeldung an den Server zur Authentifizierung und Autorisierung gesendet.

    2. Das Salz kann entweder generiert und vom Server zum Client zurückgegeben oder am Client generiert werden

    3. Dann speichern Sie es als Salz und Hash das Passwort und speichern Sie es.

    Offline

    1. Wir haben den Benutzern das Passwort mit dem Salz, das wir gespeichert haben

    2. Wir werden mit dem Hash vergleichen, den wir bei erfolgreichem Login gespeichert haben

    3. Wenn beide gleich sind, dann lassen wir den Benutzer in anderen wir lassen den Benutzer nicht in.

    Vorteile:

    1. Also musst du dich keine Sorgen um die Versionskompatibilität machen.

    2. Auch wenn das Gerät verwurzelt ist, ist es so schwer, den Hash zu brechen.

    3. Auch wenn jemand dekompiliert / knackt die app ist es so schwer zu reverse engineer

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.