Das Kryptografiemodell in .NET Framework.NET Framework Cryptography Model

.NET Framework stellt Implementierungen von vielen kryptografischen Standardalgorithmen bereit.The .NET Framework provides implementations of many standard cryptographic algorithms. Diese Algorithmen sind einfach zu verwenden und die sichersten möglichen Standardeigenschaften.These algorithms are easy to use and have the safest possible default properties. Darüber hinaus ist das .NET Framework-Kryptografiemodell mit Objektvererbung, Streamdesign und Konfiguration äußerst erweiterbar.In addition, the .NET Framework cryptography model of object inheritance, stream design, and configuration is extremely extensible.

ObjektvererbungObject Inheritance

Das Sicherheitssystem von .NET Framework implementiert ein erweiterbares Muster der abgeleiteten Klassenvererbung.The .NET Framework security system implements an extensible pattern of derived class inheritance. Die Hierarchie lautet wie folgt:The hierarchy is as follows:

Wird dieses Muster abgeleiteter Klassen verwendet, ist es einfach, einen neuen Algorithmus oder eine neue Implementierung eines vorhandenen Algorithmus hinzuzufügen.Using this pattern of derived classes, it is easy to add a new algorithm or a new implementation of an existing algorithm. Möchten Sie z. B. einen neuen Algorithmus für einen öffentlichem Schlüssel erstellen, würden Sie von der AsymmetricAlgorithm-Klasse erben.For example, to create a new public-key algorithm, you would inherit from the AsymmetricAlgorithm class. Um eine neue Implementierung eines bestimmten Algorithmus zu erstellen, würden Sie eine nicht abstrakte abgeleitete Klasse dieses Algorithmus erstellen.To create a new implementation of a specific algorithm, you would create a non-abstract derived class of that algorithm.

So werden Algorithmen in .NET Framework implementiertHow Algorithms Are Implemented in the .NET Framework

Als ein Beispiel für die verschiedenen Implementierungen eines Algorithmus können Sie sich symmetrische Algorithmen ansehen.As an example of the different implementations available for an algorithm, consider symmetric algorithms. Die Basis für alle symmetrischen Algorithmen ist die SymmetricAlgorithm-Klasse, die von den folgenden Algorithmen geerbt wird:The base for all symmetric algorithms is SymmetricAlgorithm, which is inherited by the following algorithms:

  1. Aes

  2. DES

  3. RC2

  4. Rijndael

  5. TripleDES

Aes wird von zwei Klassen geerbt: AesCryptoServiceProvider und AesManaged.Aes is inherited by two classes: AesCryptoServiceProvider and AesManaged. Die AesCryptoServiceProvider-Klasse ist ein Wrapper um die Implementierung der Windows-Kryptografie-API (CAPI) von Aes, während die AesManaged-Klasse vollständig in verwaltetem Code geschrieben ist.The AesCryptoServiceProvider class is a wrapper around the Windows Cryptography API (CAPI) implementation of Aes, whereas the AesManaged class is written entirely in managed code. Außerdem gibt es einen dritten Typ von Implementierung ,Cryptography Next Generation (CNG), zusätzlich zu den verwalteten und den CAPI-Implementierungen.There is also a third type of implementation, Cryptography Next Generation (CNG), in addition to the managed and CAPI implementations. Ein Beispiel für einen CNG-Algorithmus ist ECDiffieHellmanCng.An example of a CNG algorithm is ECDiffieHellmanCng. CNG-Algorithmen sind ab Windows Vista verfügbar.CNG algorithms are available on Windows Vista and later.

Sie haben die Wahl, welche Implementierung für Sie am besten geeignet ist.You can choose which implementation is best for you. Die verwalteten Implementierungen sind auf allen Plattformen verfügbar, die .NET Framework unterstützen.The managed implementations are available on all platforms that support the .NET Framework. Die CAPI-Implementierungen sind unter älteren Betriebssystemen verfügbar und werden nicht mehr entwickelt.The CAPI implementations are available on older operating systems, and are no longer being developed. CNG ist die neueste Implementierung, in der die neue Entwicklungen erfolgen.CNG is the very latest implementation where new development will take place. Die verwalteten Implementierungen sind nicht durch die FIPS (Federal Information Processing Standards) zertifiziert und möglicherweise langsamer als die Wrapperklassen.However, the managed implementations are not certified by the Federal Information Processing Standards (FIPS), and may be slower than the wrapper classes.

Streamdesign (Datenstromdesign)Stream Design

Die Common Language Runtime verwendet ein streamorientiertes Design für die Implementierung von symmetrischen Algorithmen und Hashalgorithmen.The common language runtime uses a stream-oriented design for implementing symmetric algorithms and hash algorithms. Der Kern dieses Designs ist die CryptoStream-Klasse, die aus der Stream-Klasse abgeleitet ist.The core of this design is the CryptoStream class, which derives from the Stream class. Streambasierte kryptografische Objekte unterstützen eine einzelne Standardschnittstelle (CryptoStream) für die Verarbeitung des Datenübertragungsanteils des jeweiligen Objekts.Stream-based cryptographic objects support a single standard interface (CryptoStream) for handling the data transfer portion of the object. Da alle Objekte auf Basis einer Standardschnittstelle erstellt werden, können Sie mehrere Objekte verketten (z. B. ein Hashobjekt, auf das ein Verschlüsselungsobjekt folgt), und Sie können mehrere Vorgänge für die Daten ausführen, ohne eine temporäre Speicherung für die Daten zu benötigen.Because all the objects are built on a standard interface, you can chain together multiple objects (such as a hash object followed by an encryption object), and you can perform multiple operations on the data without needing any intermediate storage for it. Das Streamingmodell ermöglicht es Ihnen auch, Objekte aus kleineren Objekten zu erstellen.The streaming model also enables you to build objects from smaller objects. Beispielsweise kann ein kombinierter Verschlüsselungs- und Hashalgorithmus als einzelnes Streamobjekt (Datenstromobjekt) angezeigt werden, obwohl dieses Objekt möglicherweise aus einem Satz von Streamobjekten erstellt wurde.For example, a combined encryption and hash algorithm can be viewed as a single stream object, although this object might be built from a set of stream objects.

Kryptografische KonfigurationCryptographic Configuration

Mit einer kryptografischen Konfiguration können Sie eine bestimmte Implementierung eines Algorithmus zu einem Algorithmusnamen auflösen, wodurch Erweiterbarkeit der Kryptografieklassen von .NET Framework ermöglicht wird.Cryptographic configuration lets you resolve a specific implementation of an algorithm to an algorithm name, allowing extensibility of the .NET Framework cryptography classes. Sie können Ihre eigene Hardware- oder Softwareimplementierung eines Algorithmus hinzufügen und die Implementierung dem von Ihnen gewählten Algorithmusnamen zuordnen.You can add your own hardware or software implementation of an algorithm and map the implementation to the algorithm name of your choice. Ist in der Konfigurationsdatei kein Algorithmus angegeben, werden die Standardeinstellungen verwendet.If an algorithm is not specified in the configuration file, the default settings are used. Weitere Informationen zu einer kryptografischen Konfiguration finden Sie unter konfigurieren kryptografischer Klassen.For more information about cryptographic configuration, see Configuring Cryptography Classes.

Wählen eines AlgorithmusChoosing an Algorithm

Sie können einen Algorithmus für unterschiedliche Zwecke wählen: z. B. für Datenintegrität, für Datenschutz oder zum Generieren eines Schlüssels.You can select an algorithm for different reasons: for example, for data integrity, for data privacy, or to generate a key. Symmetrische und Hashalgorithmen sind dazu vorgesehen, Daten entweder aus Integritätsgründen (Schutz vor Änderungen) oder aus Datenschutzgründen (Schutz vor Anzeigen) zu schützen.Symmetric and hash algorithms are intended for protecting data for either integrity reasons (protect from change) or privacy reasons (protect from viewing). Hashalgorithmen werden hauptsächlich für die Datenintegrität verwendet.Hash algorithms are used primarily for data integrity.

Es folgt eine Liste empfohlener Algorithmen nach Anwendung:Here is a list of recommended algorithms by application:

Siehe auchSee also