C# strings sicher im RAM speichern


#1
Hallo,
ich möchte für ein Programm Nutzerdaten nach dem Login im Arbeitsspeicher zwischenspeichern, um sie später nochmal zu benutzen. Wie kann ich das machen, sodass man den Inhalt mit bestimmten Tools nicht lesen kann?
Freue mich auf Antworten!
 

vfl_freak

Premium-User
#2
Moin,
Programm Nutzerdaten nach dem Login im Arbeitsspeicher zwischenspeichern, um sie später nochmal zu benutzen
wie meinst Du das genau?
Nur während der Laufzeit oder auch anschließend?
Wenn erstes: jede Variable mit Deinen Nutzerdaten liegt doch im RAM!
Wenn das zweite: geht gar nicht! Der Speicher ist flüchtig und mit Programmende verschwinden auch Deine Werte!
Andernfalls wäre es auch ein böses Speicherleck!

sodass man den Inhalt mit bestimmten Tools nicht lesen kann
Wie willst Du denn eine bestimmte Stelle im RAM auslesen???

VG Klaus

EDIT:
Waru nutzt Du zur Speicherung keine Datenbank?
 

sheel

I love Asm
#3
Die wesentliche Frage ist wohl, wie man einen Benutzer Zugangsdaten eingeben lassen kann, die für andere mit (physischem) Zugriff auf den selben Computer nicht auslesbar sein sollen... und nicht ob es im RAM ist oder nicht.

Btw, vfl_freak, Auslesen des RAM-Inhalts und/oder gemapptem virtuellem Speicher ist kein Problem.

Zurück zur ersten Frage:

In den meisten Fällen "gar nicht".

a) Um überhaupt irgendeine Chance zu haben muss der "Angreifer" nur passiv sein - also nachschauen ob man an die Zugangsdaten drankommt ist, wenn der Besitzer grad nicht da ist, ist ok; aber irgendwas am Computer verändern ist nicht ok, und etwas machen während er Besitzer grad mit den Daten arbeitet (eingeben oder wiederverwenden) ist auch nicht ok

Wenn jemand die Zugangsdaten haben will wird er sich wohl nicht auf das beschränken; damit hat man schon verloren.

b) Zweitens kann man nur etwas wirklich sichern, wenn man als Besitzer der Daten irgendetwas "mitnimmt", statt alles am Computer lasst. Zum Beispiel ein Passwort, das zum Verschlüsseln der Daten verwendet wird. Oder das selbe verpackt in eine Chipkarte. usw.usw.

Wenn die Daten selber ein Passwort und Benutzername etc. sind ist das nicht sinnvoll, man könnte gleich die Originaldaten mitnehmen (statt sie am Computer zu lassen).

=> Kurz gesagt, geht nicht.
 

zerix

Hausmeister
Moderator
#5
@Spyke
SecureString erfüllt hier nur den Zweck, dass die Daten aus dem RAM wieder sicher entfernt werden.

@Tech-Essen
Man sollte Daten, wie Passwörter oder Keys, nicht länger im RAM halten als nötig. Wenn du sie verschlüsselt haben möchtest, musst du das selbst tun, dann hast du das ganze Problem aber nur verlagert. Denn
wo speicherst du den Schlüssel. :)

Viele Grüße
Sascha