© Omelchenko/shutterstock.com
Windows Developer
Welche Funktionen gibt es, und wie kann man sie wofür nutzen?

.NET-Sicherheitsklassen im Überblick

Die .NET-Klassenbibliothek enthält mit System.Security [1], System.DirectoryServices [2] und System.IO [3] drei Klassen, die Funktionalitäten zum Lösen klassischer Sicherheitsaufgaben bereitstellen. In diesem Artikel sollen diese Funktionen näher betrachtet werden.

Carsten Eilers


Am prominentesten dürften die Kryptografiefunktionen sein: Symmetrische und asymmetrische Verschlüsselung, Signaturen und Hash-Verfahren gehören wahrscheinlich zu den ersten Funktionen, an die man denkt, wenn es um das Thema „Sicherheit“ geht. Es gibt aber noch etliche weitere Funktionen, die sehr nützlich sind, so die rollenbasierte Sicherheit mit ihren Principals, Identities und Permissions, der geregelte Zugriff auf Dateien und Ordner mithilfe von Zugriffsrechtelisten (ACLs), der Isolated Storage zur sicheren Speicherung vertraulicher Daten, oder auch die Authentifizierung gegen Windows/Active Directory.

Die „System.Security“ Namespaces

Die System.Security Namespaces [1] enthalten die Klassen für das Sicherheitssystem und die Berechtigungen des .NET Frameworks. Darunter fallen zum Beispiel die schon erwähnten kryptografischen Funktionen, der geregelte Zugriff auf Objekte sowie dessen Überwachung, die Authentifizierung und dergleichen mehr.

System.Security [4] stellt die grundlegenden Strukturen für das Sicherheitssystem der Common Language Runtime einschließlich der Basisklassen für die Berechtigungen bereit. Enthalten ist z. B. die nicht vererbbare Klasse AllowPartiallyTrustedCallersAttribute [5], die den Aufruf einer Assembly durch nur teilweise vertrauenswürdigen Code erlaubt. Ohne diese Deklaration dürften nur vollständig vertrauenswürdige Aufrufe diese Assemblies verwenden. Die allen Codezugriffsberechtigungen zugrunde liegende Struktur wird in der Klasse CodeAccessPermission [6] definiert. Verwaltet werden die Berechtigungen mithilfe der Klassen PermissionSet [7] und ReadOnlyPermissionSet [8]. Werden vertrauliche Daten wie z. B. Zugangsdaten oder Schlüssel in normalen Strings gespeichert, weiß man nicht, wann sie nach der Nutzung gelöscht werden. Unter Umständen kann Schadcode die Daten im Speicher ausspähen, bevor sie durch die Garbage Collection gelöscht werden. Daher gibt es für solche Daten die Klasse SecureString [9]. SecureString-Objekte können im Gegensatz zu normalen String-Objekten nach dem Anlegen geändert und nach Gebrauch gezielt gelöscht werden. Je nach Plattform können die SecureString-Objekte auch verschlüsselt im Speicher abgelegt werden (Windows unterstützt das prinzipiell, aber wenn die verwendete Plattform z. B. kein passendes API bereitstellt, kann der Schutz nicht greifen). Daten in SecureStrings sind deutlich besser geschützt als Daten in normalen Strings, können aber immer noch im Speicher des sie verwendenden Prozesses ausg...

Windows Developer
Welche Funktionen gibt es, und wie kann man sie wofür nutzen?

.NET-Sicherheitsklassen im Überblick

Die .NET-Klassenbibliothek enthält mit System.Security [1], System.DirectoryServices [2] und System.IO [3] drei Klassen, die Funktionalitäten zum Lösen klassischer Sicherheitsaufgaben bereitstellen. In diesem Artikel sollen diese Funktionen näher betrachtet werden.

Carsten Eilers


Am prominentesten dürften die Kryptografiefunktionen sein: Symmetrische und asymmetrische Verschlüsselung, Signaturen und Hash-Verfahren gehören wahrscheinlich zu den ersten Funktionen, an die man denkt, wenn es um das Thema „Sicherheit“ geht. Es gibt aber noch etliche weitere Funktionen, die sehr nützlich sind, so die rollenbasierte Sicherheit mit ihren Principals, Identities und Permissions, der geregelte Zugriff auf Dateien und Ordner mithilfe von Zugriffsrechtelisten (ACLs), der Isolated Storage zur sicheren Speicherung vertraulicher Daten, oder auch die Authentifizierung gegen Windows/Active Directory.

Die „System.Security“ Namespaces

Die System.Security Namespaces [1] enthalten die Klassen für das Sicherheitssystem und die Berechtigungen des .NET Frameworks. Darunter fallen zum Beispiel die schon erwähnten kryptografischen Funktionen, der geregelte Zugriff auf Objekte sowie dessen Überwachung, die Authentifizierung und dergleichen mehr.

System.Security [4] stellt die grundlegenden Strukturen für das Sicherheitssystem der Common Language Runtime einschließlich der Basisklassen für die Berechtigungen bereit. Enthalten ist z. B. die nicht vererbbare Klasse AllowPartiallyTrustedCallersAttribute [5], die den Aufruf einer Assembly durch nur teilweise vertrauenswürdigen Code erlaubt. Ohne diese Deklaration dürften nur vollständig vertrauenswürdige Aufrufe diese Assemblies verwenden. Die allen Codezugriffsberechtigungen zugrunde liegende Struktur wird in der Klasse CodeAccessPermission [6] definiert. Verwaltet werden die Berechtigungen mithilfe der Klassen PermissionSet [7] und ReadOnlyPermissionSet [8]. Werden vertrauliche Daten wie z. B. Zugangsdaten oder Schlüssel in normalen Strings gespeichert, weiß man nicht, wann sie nach der Nutzung gelöscht werden. Unter Umständen kann Schadcode die Daten im Speicher ausspähen, bevor sie durch die Garbage Collection gelöscht werden. Daher gibt es für solche Daten die Klasse SecureString [9]. SecureString-Objekte können im Gegensatz zu normalen String-Objekten nach dem Anlegen geändert und nach Gebrauch gezielt gelöscht werden. Je nach Plattform können die SecureString-Objekte auch verschlüsselt im Speicher abgelegt werden (Windows unterstützt das prinzipiell, aber wenn die verwendete Plattform z. B. kein passendes API bereitstellt, kann der Schutz nicht greifen). Daten in SecureStrings sind deutlich besser geschützt als Daten in normalen Strings, können aber immer noch im Speicher des sie verwendenden Prozesses ausg...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang