Freigeben über


Unterstützung für maschinenweite Richtlinien beim Datenschutz in ASP.NET Core

Von Rick Anderson

Bei der Ausführung unter Windows hat das Datenschutzsystem eingeschränkte Unterstützung für das Festlegen einer standardmäßigen computerweiten Richtlinie für alle Apps, die ASP.NET Core Data Protection nutzen. Die allgemeine Idee ist, dass ein Administrator möglicherweise eine Standardeinstellung ändern möchte, z. B. die verwendeten Algorithmen oder die Schlüssellebensdauer, ohne dass jede App auf dem Computer manuell aktualisiert werden muss.

Warning

Der Systemadministrator kann die Standardrichtlinie festlegen, aber er kann sie nicht erzwingen. Der App-Entwickler kann immer einen beliebigen Wert mit einer eigenen Wahl überschreiben. Die Standardrichtlinie betrifft nur Apps, bei denen der Entwickler keinen expliziten Wert für eine Einstellung angegeben hat.

Festlegen der Standardrichtlinie

Um die Standardrichtlinie festzulegen, kann ein Administrator bekannte Werte in der Systemregistrierung unter dem folgenden Registrierungsschlüssel festlegen:

HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection

Wenn Sie ein 64-Bit-Betriebssystem verwenden und das Verhalten von 32-Bit-Apps beeinflussen möchten, denken Sie daran, das Wow6432Node-Äquivalent des obigen Schlüssels zu konfigurieren.

Die unterstützten Werte werden unten angezeigt.

Value Type Description
EncryptionType string Gibt an, welche Algorithmen zum Datenschutz verwendet werden sollen. Der Wert muss CNG-CBC, CNG-GCM oder Managed sein und wird unten ausführlicher beschrieben.
DefaultKeyLifetime DWORD Gibt die Lebensdauer für neu generierte Schlüssel an. Der Wert wird in Tagen angegeben und muss = 7 sein >.
KeyEscrowSinks string Gibt die Typen an, die für die Schlüsselhinterlegung verwendet werden. Der Wert ist eine Liste von Schlüssel-Escrow-Senken, getrennt durch Semikolons, wobei jedes Element der Liste der assembly-qualifizierte Name eines Typs ist, der IKeyEscrowSink implementiert.

Verschlüsselungstypen

Wenn EncryptionType CNG-CBC ist, wird das System so konfiguriert, dass eine symmetrische CBC-Modus-Blockchiffre für Vertraulichkeit und HMAC für die Authentizität mit Diensten verwendet wird, die von Windows CNG bereitgestellt werden (weitere Details finden Sie unter Angeben von benutzerdefinierten Windows CNG-Algorithmen ). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft im CngCbcAuthenticatedEncryptionSettings-Typ entsprechen.

Value Type Description
EncryptionAlgorithm string Der Name eines symmetrischen Blockchiffrealgorithmus, der von CNG verstanden wird. Dieser Algorithmus wird im CBC-Modus geöffnet.
EncryptionAlgorithmProvider string Der Name der CNG-Anbieterimplementierung, die den Algorithmus EncryptionAlgorithm erzeugen kann.
EncryptionAlgorithmKeySize DWORD Die Länge (in Bits) des Schlüssels, der für den symmetrischen Blockchiffrealgorithmus abgeleitet werden soll.
HashAlgorithm string Der Name eines Von CNG verstandenen Hashalgorithmus. Dieser Algorithmus wird im HMAC-Modus geöffnet.
HashAlgorithmProvider string Der Name der CNG-Anbieterimplementierung, die den Algorithmus HashAlgorithm erzeugen kann.

Wenn EncryptionType CNG-GCM ist, wird das System so konfiguriert, dass eine symmetrische Galois/Counter Mode-Blockchiffre für Vertraulichkeit und Authentizität mit Diensten verwendet wird, die von Windows CNG bereitgestellt werden (weitere Details finden Sie unter Angeben von benutzerdefinierten Windows CNG-Algorithmen ). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft des Typs "CngGcmAuthenticatedEncryptionSettings" entsprechen.

Value Type Description
EncryptionAlgorithm string Der Name eines symmetrischen Blockchiffrealgorithmus, der von CNG verstanden wird. Dieser Algorithmus wird im Galois/Counter-Modus geöffnet.
EncryptionAlgorithmProvider string Der Name der CNG-Anbieterimplementierung, die den Algorithmus EncryptionAlgorithm erzeugen kann.
EncryptionAlgorithmKeySize DWORD Die Länge (in Bits) des Schlüssels, der für den symmetrischen Blockchiffrealgorithmus abgeleitet werden soll.

Wenn EncryptionType verwaltet wird, wird das System so konfiguriert, dass ein verwaltetes SymmetricAlgorithm für Vertraulichkeit und KeyedHashAlgorithm für Authentizität verwendet wird (weitere Details finden Sie unter Angeben von benutzerdefinierten verwalteten Algorithmen ). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft auf dem Typ ManagedAuthenticatedEncryptionSettings entsprechen.

Value Type Description
EncryptionAlgorithmType string Der assemblyqualifizierte Name eines Typs, der SymmetricAlgorithm implementiert.
EncryptionAlgorithmKeySize DWORD Die Länge (in Bits) des Schlüssels, der für den symmetrischen Verschlüsselungsalgorithmus abgeleitet werden soll.
ValidationAlgorithmType string Der Assembly-qualifizierte Name eines Typs, der den KeyedHashAlgorithm implementiert.

Wenn EncryptionType einen anderen Wert als NULL oder leer hat, löst das Datenschutzsystem beim Start eine Ausnahme aus.

Warning

Beim Konfigurieren einer Standardrichtlinieneinstellung mit Typnamen (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks) müssen die Typen für die App verfügbar sein. Bei ASP.NET Core-Apps sollten die Pakete, die diese Typen enthalten, installiert werden.