machineKey-Element (ASP.NET-Einstellungsschema)

Konfiguriert Algorithmen und Schlüssel, die zur Ver- und Entschlüsselung sowie Validierung von Daten für die Formularauthentifizierung und Ansichtszustandsdaten und zur Überprüfung der Kennzeichnung des prozessexternen Sitzungszustands verwendet werden.

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
    HMACSHA384 | HMACSHA512 | alg:algorithm_name]
  decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Attribute

Beschreibungen

decryption

Optionales String-Attribut.

Gibt den Algorithmus an, der zum Verschlüsseln und Entschlüsseln von Formularauthentifizierungsdaten verwendet wird.

Dieses Attribut kann einen der folgenden Werte annehmen:

  • Auto  Gibt an, dass ASP.NET automatisch bestimmt, welcher Entschlüsselungsalgorithmus verwendet wird. Dies ist der Standardwert für dieses Attribut.

  • AES  Gibt an, dass ASP.NET den AES-Algorithmus (Rijndael) zum Verschlüsseln und Entschlüsseln von Daten verwendet. AES ist der Standardalgorithmus und wird verwendet, wenn Auto der Wert dieses Attributs ist. Dieser Algorithmus erfüllt die amerikanischen Federal Information Processing Standards (FIPS).

  • DES  Gibt an, dass ASP.NET den DES-Algorithmus (Data Encryption Standard) zum Verschlüsseln und Entschlüsseln von Daten verwendet. Dieser Algorithmus ist nur aus Legacyzwecken enthalten und sollte nur verwendet werden, wenn die Kompatibilität mit früheren Versionen von ASP.NET erforderlich ist.

  • 3DES  Gibt an, dass ASP.NET den TripleDES-Algorithmus (3DES) zum Verschlüsseln und Entschlüsseln von Daten verwendet. Dieser Algorithmus ist nur aus Legacyzwecken enthalten und sollte nur verwendet werden, wenn die Kompatibilität mit früheren Versionen von ASP.NET erforderlich ist.

  • alg:algorithm_name  Gibt an, dass ASP.NET einen benutzerdefinierten Algorithmus zum Verschlüsseln und Entschlüsseln von Daten verwendet. Der Verschlüsselungsalgorithmus muss in einer Klasse definiert werden, die von SymmetricAlgorithm abgeleitet wird. ASP.NET ruft die SymmetricAlgorithm.Create-Methode auf und übergibt den Namen des Algorithmus, der hier angegeben wird.

decryptionKey

Erforderliches String-Attribut.

Legt den Schlüssel zur Ver- und Entschlüsselung der Daten oder den Prozess zur Schlüsselgenerierung fest. Dieses Attribut wird zur Ver- und Entschlüsselung bei der Formularauthentifizierung verwendet. Wenn der Ansichtszustand auf verschlüsselt festgelegt ist, dient es außerdem zur Verschlüsselung und Entschlüsselung des Ansichtszustands.

Dieses Attribut kann einen der folgenden Werte annehmen:

  • AutoGenerate, IsolateApps  Gibt an, dass der Schlüssel automatisch erstellt wird. Dies ist der Standardwert. Der AutoGenerate-Modifizierer gibt an, dass ASP.NET einen zufälligen Schlüssel generiert und ihn in der LSA (Local Security Authority) speichert. Der IsolateApps-Modifizierer gibt an, dass ASP.NET für jede Anwendung anhand ihrer ID einen eindeutigen verschlüsselten Schlüssel generiert.

  • key value  Gibt einen manuell zugewiesenen Schlüssel an. Der decryptionKey-Wert muss manuell auf eine aus Hexadezimalzeichen bestehende Zeichenfolge festgelegt werden, um die konsistente Konfiguration aller Server in einer Webfarm sicherzustellen. Der Schlüssel sollte 64 Bit (16 hexadezimale Zeichen) für die DES-Verschlüsselung oder 192 Bit (48 hexadezimale Zeichen) für 3DES umfassen. Für AES kann der Schlüssel 128 Bit (32 Zeichen), 192 Bits (48 Zeichen) oder 256 Bit (64 Zeichen) lang sein. Die längste Schlüssel bietet die höchste Sicherheit. Zufällige Schlüssel können manuell generiert werden, indem Sie die RNGCryptoServiceProvider-Klasse verwenden. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von MachineKey in ASP.NET 2.0.

Weitere Informationen finden Sie unter DecryptionKey.

validation

Erforderliches MachineKeyValidation-Attribut.

Gibt den Hashalgorithmus zur Datenvalidierung an.

Standardmäßig wird der Ansichtszustand als Base-64-codierte Zeichenfolge gesendet. Obwohl auf den ersten Blick codierte Daten unverständlich sind, fördert Base64-Codierung die Sicherheit gefördert, da sie mühelos decodiert wird. Wenn Sie vertrauliche Daten im Ansichtszustand speichern, können Sie angeben, dass ASP.NET die Ansichtszustandsdaten zusätzlich zum Überprüfen verschlüsselt. Sie können die Verschlüsselung des Ansichtszustands für alle Seiten einer Webanwendung oder für ausgewählte Seiten angeben. Weitere Informationen zu dieser Option finden Sie unter ViewStateEncryptionMode und RegisterRequiresViewStateEncryption().

Wenn Sie die Verschlüsselung des Ansichtszustands verwenden möchten, legen Sie dieses Attribut auf AES fest. In diesem Fall wird der Wert von decryptionKey verwendet wird, um die Ansichtszustandsdaten zu verschlüsseln, und ASP.NET verwendet den HMACSHA1-Hashalgorithmus zur Datenvalidierung.

Dieses Attribut kann einen der folgenden Werte annehmen.

  • AES  Gibt an, dass ASP.NET den AES-Algorithmus (Rijndael) verwendet, um Daten zu verschlüsseln und zu entschlüsseln, wenn der Ansichtszustand verschlüsselt ist. Wenn diese Option für das validation-Attribut angegeben ist, wird der HMACSHA1-Algorithmus zur Validierung verwendet.

  • MD5  Legt fest, dass ASP.NET den Hashalgorithmus Message Digest 5 (MD5) zur Datenvalidierung verwendet. Dieser Algorithmus ist nur aus Legacyzwecken enthalten und sollte nur verwendet werden, wenn die Kompatibilität mit früheren Versionen von ASP.NET erforderlich ist.

  • SHA1  Gibt an, dass ASP.NET den HMACSHA1-Hashalgorithmus zum Überprüfen der Daten verwendet. Dieser Algorithmus sollte nur verwendet werden, wenn Sie dieses Attribut auf AES festlegen müssen, um Verschlüsselung des Ansichtszustands zu unterstützen. Verwenden Sie andernfalls HMACSHA256, HMACSHA384 oder HMACSHA512.

  • 3DES  Gibt an, dass ASP.NET den TripleDES-Algorithmus (3DES) verwendet, um Daten zu verschlüsseln und zu entschlüsseln, wenn der Ansichtszustand verschlüsselt ist. Wenn diese Option für das validation-Attribut angegeben ist, wird der HMACSHA1-Algorithmus zur Validierung verwendet. Dieser Algorithmus ist nur aus Legacyzwecken enthalten und sollte nur verwendet werden, wenn die Kompatibilität mit früheren Versionen von ASP.NET erforderlich ist.

  • HMACSHA256  Gibt an, dass ASP.NET den HMACSHA256-Hashalgorithmus zum Überprüfen der Daten verwendet. Dies ist der Standardwert. Dieser Algorithmus erfüllt die amerikanischen Federal Information Processing Standards (FIPS).

  • HMACSHA384  Gibt an, dass ASP.NET den HMACSHA384-Hashalgorithmus zum Überprüfen der Daten verwendet. Diese Option ist für Anwendungen verfügbar, die höhere Sicherheit als vom HMACSHA256-Algorithmus bereitgestellt erfordern. Dieser Algorithmus erfüllt die amerikanischen Federal Information Processing Standards (FIPS).

  • HMACSHA512  Gibt an, dass ASP.NET den HMACSHA512-Hashalgorithmus zum Überprüfen der Daten verwendet. Diese Option ist für Anwendungen verfügbar, die höhere Sicherheit als vom HMACSHA384-Algorithmus bereitgestellt erfordern. Dieser Algorithmus erfüllt die amerikanischen Federal Information Processing Standards (FIPS).

  • alg:algorithm_name  Gibt an, dass ASP.NET einen benutzerdefinierten Algorithmus verwendet. Das Präfix "alg:" ist gefolgt vom Namen einer Klasse, die von KeyedHashAlgorithm abgeleitet wird. ASP.NET ruft die Create()-Methode auf und übergibt den Namen des Algorithmus, der hier angegeben wird.

validationKey

Erforderliches String-Attribut.

Gibt den Schlüssel an, mit dem Daten validiert werden, oder den Prozess, durch den er generiert wird. Der validationKey-Wert wird auch zum Generieren prozessexterner anwendungsspezifischer Sitzungs-IDs verwendet, um sicherzustellen, dass die Sitzungszustandsvariablen zwischen Sitzungen isoliert sind.

Dieses Attribut kann einen der folgenden Werte annehmen:

  • AutoGenerate, IsolateApps  Gibt an, dass der Schlüssel automatisch erstellt wird. Dies ist der Standardwert. Der AutoGenerate-Modifizierer gibt an, dass ASP.NET einen zufälligen Schlüssel generiert und ihn in der LSA (Local Security Authority) speichert. Der IsolateApps-Modifizierer gibt an, dass ASP.NET für jede Anwendung anhand ihrer ID einen eindeutigen verschlüsselten Schlüssel generiert.

  • key value  Gibt einen manuell zugewiesenen Schlüssel an. Der validationKey-Wert muss manuell auf eine aus Hexadezimalzeichen bestehende Zeichenfolge festgelegt werden, um die konsistente Konfiguration aller Server in einer Webfarm sicherzustellen. Die Länge des Schlüssels hängt vom verwendeten Hashalgorithmus ab:

    • AES erfordert einen 256-Bit-Schlüssel (64 Hexadezimalzeichen).

    • MD5 erfordert einen 128-Bit-Schlüssel (32 Hexadezimalzeichen).

    • SHA1 erfordert einen 160-Bit-Schlüssel (40 Hexadezimalzeichen).

    • 3DES erfordert einen 192-Bit-Schlüssel (48 Hexadezimalzeichen).

    • HMACSHA256 erfordert einen 256-Bit-Schlüssel (64 Hexadezimalzeichen).

    • HMACSHA384 erfordert einen 384-Bit-Schlüssel (96 Hexadezimalzeichen).

    • HMACSHA512 erfordert einen 512-Bit-Schlüssel (128 Hexadezimalzeichen).

    Zufällige Schlüssel können manuell generiert werden, indem die RNGCryptoServiceProvider-Klasse verwendet wird. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von MachineKey in ASP.NET 2.0. Dieses Thema listet nicht die Algorithmen HMACSHA256, HMACSHA384 oder HMACSHA512 auf. Allerdings funktioniert der Prozess für diese Algorithmen auch, solange Sie die richtige Schlüssellänge angeben.

Weitere Informationen finden Sie unter ValidationKey.

Untergeordnete Elemente

Keine.

Übergeordnete Elemente

Element

Beschreibungen

configuration

Gibt das erforderliche Stammelement in jeder Konfigurationsdatei an, die von der Common Language Runtime und den .NET Framework-Anwendungen verwendet wird.

system.web

Gibt das Stammelement für die ASP.NET-Konfigurationseinstellungen in einer Konfigurationsdatei an und enthält Konfigurationselemente, die ASP.NET-Webanwendungen konfigurieren und das Verhalten der Anwendungen steuern.

Hinweise

Das folgende Codebeispiel veranschaulicht, wie sowohl das validationKey-Attribut als auch das decryptionKey-Attribut auf AutoGenerate festgelegt werden. Der Wert isolateApps wird angegeben, um für jede Anwendung auf dem Server eindeutige Schlüssel zu generieren.

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
/>

Im folgenden Codebeispiel wird veranschaulicht, wie das validationKey-Attribut und das decryptionKey-Attribut auf manuell generierte Zufallswerte festgelegt werden. Das validationKey-Attribut wird auf einen 256-Bit-Schlüssel für den HMACSHA256-Hashalgorithmus festgelegt und das decryptionKey-Attribut auf einen 256-Bit-Schlüssel, den längstmöglichen Wert für den AES-Verschlüsselungsalgorithmus. Diese sind ausschließlich Beispiele und sollten nicht in einer Anwendung verwendet werden.

<machineKey 
    validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F" 
    decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4" 
/>

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration

Gewusst wie: Konfigurieren von bestimmten Verzeichnissen mit Standorteinstellungen

Gewusst wie: Sperren von ASP.NET-Konfigurationseinstellungen

Referenz

system.web-Element (ASP.NET-Einstellungsschema)

configuration-Element (allgemeines Einstellungsschema)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

Konzepte

Anwendungsübergreifende Formularauthentifizierung

Sichern von Rollen

Sichern der Mitgliedschaft

Sichern von Profileigenschaften

Sichern des Sitzungszustands

ASP.NET-Konfigurationsdateihierarchie und Vererbung

Absichern der ASP.NET-Konfiguration

ASP.NET-Konfigurationsszenarios

Weitere Ressourcen

Allgemeine Konfigurationseinstellungen (ASP.NET)

ASP.NET-Konfigurationseinstellungen

ASP.NET-Websiteverwaltung

ASP.NET-Konfigurations-API