Sensible Zeichenketten möglichst sicher zwischenspeichern

  • Antworten:4
Studiosus
  • Forum-Beiträge: 2

22.05.2014, 10:08:40 via Website

Hallo allerseits,

ich entwickle eine App, in der Passwörter über eine EditText View eingegeben werden. Diese Passwörter landen ja zwangsläufig als Klartext im Hauptspeicher und könnten dort später ausgelesen werden. Bei Strings ist es besonders problematisch, weil diese unveränderabar sind und wenn überhaupt später nur durch den Garbage Collector wirklich entfernt werden.

In zahlreichen Artikeln habe ich gelesen, dass es in diesem Fall besser sei keine Strings, sondern Char Arrays zu verwenden, die nach der Verwendung einfach überschrieben werden. Reicht diese Vorgehensweise aus, um eine gewisse Sicherheit gegen das Auslesen des Haupspeichers zu gewährleisten oder beruhigt man damit nur das Gewissen der Entwickler?

Falls letzteres zutrifft, was wäre eine sicherere Vorgehensweise?

Viele Grüße
Studiosus

— geändert am 22.05.2014, 10:10:06

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.05.2014, 10:53:49 via Website

Ich glaube das ein Char Array genau so wenig bringt, wie ein String.
Daraus kann man ja den String erstellen.
Was für eine App willst du denn programmieren.
Solange es nicht zwangsläufig ein Passworsafe ist, hannst du auch nur den Hash des Passwortes speichern und bei die eingabe im TextEdit ebenfalls hashen.
Später dann nur noch beide Hashs überprüfen.
Oder du verwendest irgen eine Kryptografie Lib, die die passwörter veschlüsselt und entschlüsselt.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Studiosus
  • Forum-Beiträge: 2

24.05.2014, 18:11:29 via Website

Doch, es ist schon eine Art PasswortSafe. Die Passwörter werden natürlich auch verschlüsselt gespeichert, aber alleine um verschlüsselt zu werden, müssen sie ja erst einmal in den Arbeitsspeicher.

Mit stellt sich in erster Linie folgende Frage: Ein Chararray kann ich zwar überschreiben und somit das Passwort nach Gebrauch wieder aus dem Speicher löschen, aber es ist eben kurz im Speicher und wenn da jetzt jemand dran möchte, findet er auch einen Weg die Daten aus dem Speicher zu lesen. Kann man dennoch sagen, dass es definitiv sicherer ist ein Chararray statt einen String zu verwenden? Immerhin ist es ja auch so, dass andere Apps nicht auf die Daten einer anderen App zugreifen können. Da wäre natürlich es interessant zu wissen, wie gut dieser Schutz gegen den Zugriff anderer Apps sind. Vor allem auch bei einem gerooteten Gerät.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

24.05.2014, 21:19:10 via Website

Chararrays lassen sich zumindest unter eine JVM besser löschen. Aber ich empfehle den AccountManager zu benutzen

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten