Android - Passwörter speichern


Raven280438

Erfahrenes Mitglied
#1
Hi,

ich bin neu in der Android-App Entwicklung.

Ich programmiere im Moment eine App, die sich später in eine Internet-Seite einloggen soll.

Dazu möchte ich das Passwort speichern, dass man es nicht immer eingeben soll.
Wie mach ich das am besten, dass das Passwort auch sicher ist, und nicht von Fremden ausgelesen werden kann?




Gruß
 

Raven280438

Erfahrenes Mitglied
#2
Hi,

hat niemand ne Idee dazu?

Reicht es, wenn ich die Passwörter wie den Loginnamen einfach in SharedPreferences speichere, oder kann man die auslesen?
Oder kann man die irgendwie sicher verschlüsseln, speichern und dann später wieder auslesen und entschlüsseln?


Gruß
 

ComFreek

Mod | @comfreek
Moderator
#3
Hi,

im Prinzip kann man ein Passwort immer auslesen, denn schließlich muss es verarbeitet werden, seien es auch nur Millisekunden im Arbeitsspeicher.

Was ich gar nicht machen würde, wäre es, das PW im Klartext zu speichern. Dann lieber verschlüsselt mit einem bekannten und starken Verschlüsselungsalgorithmus.
 

Raven280438

Erfahrenes Mitglied
#4
Hi,

ja das hab ich mir auch gedacht.

Aber zum Verschlüsseln des Passworts braucht man ja einen Schlüssel.
Wie speichert man den am Besten, damit er nicht ausgelesen werden kann?


Gruß
 

hendl

Erfahrenes Mitglied
#5
Hi du könntest das Passwort ja bei der ersten Eingabe im Klartext eingeben, dies dann per SHA verschlüsseln und an den Server übertragen. Dieser Hashwert + Username könnten dann in einer sqlite Datenbank oder File gespeichert werden und beim nächsten Start einfach diese Daten verwenden.
Lg hendl
 
#6
Hi du könntest das Passwort ja bei der ersten Eingabe im Klartext eingeben, dies dann per SHA verschlüsseln und an den Server übertragen. Dieser Hashwert + Username könnten dann in einer sqlite Datenbank oder File gespeichert werden und beim nächsten Start einfach diese Daten verwenden.
Wenn man mit dem Hash ebenfalls Zugriff zur Datenbank erlangt, dann ist das doch dasselbe als hätte der Benutzer ein zweites Passwort... Und auch den Hash kann man finden.
 

hendl

Erfahrenes Mitglied
#7
Falls du dir mal die sqlite Datenbank anderer Apps angesehen hast sind diese alle nicht ohne Root Rechte zu öffnen.
Eine andere Möglichkeit wäre das Passwort nach der erst Eingabe per RSA mit zwei bekannten Zahlen zu verschlüsseln (diese beiden Zahlen bleiben in der App immer unverändert) und das verschlüsselte Passwort nacher an den Server zu senden + wieder in eine sqlite Datenbank.
 

zerix

Hausmeister
Moderator
#8
Hallo,

solange du das Passwort auf dem Telefon speicherst, und es vor dem senden wieder entschlüsseln musst, hast du nie 100%ige Sicherheit. Es sei denn, das Passwort wird mit einem weiteren Passwort verschlüsselt und das wird jedes mal eingegeben. Aber dann ist das Speichern des Passwortes relativ sinnlos. ;-)

Speicherst du einen Hashwert, muss dieser an den Server geschickt werden und dann kann sich jeder, der diesen Hashwert auch hat, auch am Server anmelden. Verschlüsselst du das Passwort, liegt/en der/die Schlüssel auf deinem Telefon und damit kann man das Passwort auch wieder entschlüsseln.

Habe leider noch keine App für Android entwickelt, deshalb weiß ich jetzt nicht, welche Möglichkeiten zur Verfügung stehen. Aber hier mal eine Idee.
Ich gehe jetzt mal davon aus, dass die Internetseite nicht deine ist und du den Login-Mechanismus nicht ändern kannst und das Passwort vor dem Senden an den Server im Klartext vorhanden sein muss.

Dann könntest du das Passwort per AES verschlüsseln und in der Datenbank speichern. Den Schlüssel für diese Verschlüssung würde ich auf jedem Gerät neu erstellen und nicht im Code hinterlegen.
So müssen das Passwort immerhin mit dem Schlüssel "gestohlen" werden. Steht der Schlüssel aber im Code, bzw ist bei jeder Installation der gleiche, ist es einfacher das Passwort zu entschlüsseln.

Hast du aber auf der Internetseite freie Hand, lassen sich natürlich ganz andere Möglichkeiten realisieren.

Viele Grüße

Sascha