Verhindern dass Daten bei einem laufenden Programm ausgelesen werden
-
Ich habe ein Programm, dass selbständig diverse Eingaben tätigt und die Ergebnisse verarbeitet.
Unter anderem werden von diesem Programm hin und wieder Passworteingaben getätigt.
Gibt es eine einfache Möglichkeit zu verhindern dass die Passwörter aus dem Speicher ausgelesen werden?Reicht es wenn man die Passwörter in mehrere Teilstrings aufteilt und erst bei der Verwendung kurz zusammensetzt oder sollten andere Maßnahmen getroffen werden?
Das Programm ist nur eine kleine Spielerrei von mir.
Es ist aber trotzdem ein ungutes Gefühl, dass mit teils sensiblen Passwörtern gearbeitet wird, und diese offen im Speicher liegen.
-
Was meinst du mit
Barny schrieb:
Gibt es eine einfache Möglichkeit zu verhindern dass die Passwörter aus dem Speicher ausgelesen werden?
?
Wenn du die Zeichenkette in einer Membervariablen ablegst, dann liegt die selbstverständlich irgendwo im Speicher, wie soll das sonst gehen. Ich kenne den Aufwand deines Projektes nicht. Ich speichere nicht die Passwörter, sondern den Hashcode des Passwortes. Du brauchst dann nur bei einer Eingabe den Hashcode des eingegebenen Passwortes mit dem abgespeicherten Hashwert vergleichen. Damit kommt man nicht so leicht an das eigentliche Passwort heran, da aus dem Hashcode das Passwort nicht so einfach zu berechnen ist. Das sollte für die Sicherheitsanforderungen im Hausgebrauch auf jeden Fall reichen. Suche mal nach MD5 oder Rijndael bzw. bei codeproject (da gibts auch fertige Klassen dafür).
-
Den Hashwert im Speicher zu behalten bringt nichts.
Ich muss ja irgendwie auf das Kennwort zurückkommen.
Wie ich schon geschrieben habe, tätigt das Programm automatisiert Eingaben.
Die Programme, bei denen ich die Passwörter als Hashwert eingebe, werden mir etwas husten.
Ich weis dass da eine Schwachstelle ist, aber die existiert auch bei einer manuellen Eingabe.Ich möchte erst einmal vermeiden, dass die Kennwörter ungeschützt im Speicher liegen.
Reicht es gegen die normalen Ausleseversuche die Strings in mehrere Teile aufzuteilen und so über den Speicherbereich zu verteilen, oder sollte ich die Kennwörter mit der Windows-Crypt API AES verschlüsseln?Wie kann ich verhindern dass das Kennwort nach der Verwendung als Klartext im Speicher bleibt?
Reicht es den String mit Zufallswerten zu füllen oder gibt es einen besseren Weg den Speicher aufzuräumen?
-
Windows Data protection API
http://msdn.microsoft.com/en-us/library/ms995355.aspx
-
Wenn ich das richtig sehe, handelt es sich bei dem Link um Informationen wie man die Informationen auf Datenträger, in der Registry,... verschlüsselt.
Das habe ich so gelöst, dass ich die Daten erst verschlüssle und dann auf der Festplatte getarnt ablege.Mir geht es darum, dass die Passwörter, die im laufenden Programm in den Variablen stehen vor auslesen geschützt sind.
Sonst kommt man mit jedem Cheat-Programm an die Daten.
-
Ich benutze gerne EncodePointer und DecodePointer...