SecureString effektiv nutzen und verwenden

Mit Hilfe der Klasse SecureString ermöglicht das .NET-Framework auch String Daten nicht vollig entblößt im Arbeitsspeicher abzulegen, um z.B. den Zugriff von anderen Applikationen zu vermeiden. Leider ist mit SecureString nicht allzu einfach umzugehen und es kommt vor, dass man diesen für Momentaufnahmen dennoch als normalen String im Speicher benötigt, um damit z.B. den Inhalt in einer Oberfläche anzuzeigen oder um die Daten speichern zu können. Hier kann mit der Hilfe von Datentyp-Extensions gut Abhilfe geschaffen werden. So können wir uns Methoden implementieren, die es uns ermöglichen auch den SecureString wieder im Quellcode effektiv zu nutzen und dennoch parallel die Sicherheit zu verbessern (auch wenn zur absoluten Sicherheit die Rückwandlung nicht möglich sein sollte). Weiterlesen

Zeichenketten Verschlüsselt im Arbeitsspeicher

Wer sieht schon gerne seine Daten als Klartext im Speicher, so dass diese von jedem Programm genutzt werden können? Seit .NET 2.0 gibt es für Zeichenketten eine Abhilfe, denn die Klasse „SecureString“ sorgt genau dafür, dass die Daten mithilfe der DPAPI (Data Protection API) verschlüsselt im Speicher laden. Diese API sorgt dafür, dass die Daten erst beim erneuten Zugriff durch das ablegende Programm entschlüsselt werden. Um dies zu erzielen, kann eine einfache Methode implementiert werden, welche aus einem String ein SecureString Object erzeugt.

Zunächst einmal benötigen wir zwei Using-Directives, um die nötigen Methoden zur Verfügung gestellt zu bekommen. Diese wären Folgende:

using System.Security; 
using System.Runtime.InteropServices;

Anschließend können wir nun die Methode implementieren. Bevor wir dies jedoch tun, sollten wir in unserem Projekt die Verwendung von unsicherem Code zulassen, dies geschieht über die Projekteigenschaften. Weiterlesen