# C# strings sicher im RAM speichern



## Tech-Essen (8. Mai 2018)

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 (8. Mai 2018)

Moin,


Tech-Essen hat gesagt.:


> 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!



Tech-Essen hat gesagt.:


> 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 (9. Mai 2018)

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.


----------



## Spyke (9. Mai 2018)

Ev. mittels SecureString könnt man bissl sicherheit schaffen.
Habs aber nie angewendet.
https://msdn.microsoft.com/de-de/library/system.security.securestring(v=vs.110).aspx
Kannst ja berichten obs das war was de gesucht hast.


----------



## zerix (9. Mai 2018)

@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


----------

