Unterstützung für computerweite Datenschutzrichtlinien in ASP.NET Core

Von Rick Anderson

Bei der Ausführung unter Windows verfügt das Datenschutzsystem über eingeschränkte Unterstützung für das Festlegen einer standardcomputerweiten Richtlinie für alle Apps, die ASP.NET Core Datenschutz verwenden. Die allgemeine Idee ist, dass ein Administrator 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.

Warnung

Der Systemadministrator kann die Standardrichtlinie festlegen, aber sie können sie nicht erzwingen. Der App-Entwickler kann jeden Wert immer mit einer eigenen Auswahl außer Kraft setzen. Die Standardrichtlinie wirkt sich nur auf Apps aus, in denen der Entwickler keinen expliziten Wert für eine Einstellung angegeben hat.

Festlegen einer 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 sich auf einem 64-Bit-Betriebssystem befinden 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.

Wert Typ BESCHREIBUNG
EncryptionType Zeichenfolge Gibt an, welche Algorithmen für den Datenschutz verwendet werden sollen. Der Wert muss CNG-CBC, CNG-GCM oder Managed sein und wird weiter unten beschrieben.
DefaultKeyLifetime DWORD Gibt die Lebensdauer für neu generierte Schlüssel an. Der Wert wird in Tagen angegeben und muss = 7 sein >.
KeyEscrowSinks Zeichenfolge Gibt die Typen an, die für den Schlüssel-Escrow verwendet werden. Der Wert ist eine semikolonsdelimitierte Liste der Schlüssel-Escrow-Sinken, wobei jedes Element in der Liste der assemblyqualifizierten Name eines Typs ist, der implementiert IKeyEscrowSinkwird.

Verschlüsselungstypen

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

Wert Typ BESCHREIBUNG
EncryptionAlgorithm Zeichenfolge Der Name eines symmetrischen Blockverschlüsselungsalgorithmus, der von CNG verstanden wird. Dieser Algorithmus wird im CBC-Modus geöffnet.
EncryptionAlgorithmProvider Zeichenfolge 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 Blockverschlüsselungsalgorithmus abgeleitet werden soll.
HashAlgorithm Zeichenfolge Der Name eines Hash-Algorithmus, der von CNG verstanden wird. Dieser Algorithmus wird im HMAC-Modus geöffnet.
HashAlgorithmProvider Zeichenfolge Der Name der CNG-Anbieterimplementierung, die den Algorithmus HashAlgorithm erzeugen kann.

Wenn EncryptionType CNG-GCM ist, wird das System so konfiguriert, dass ein Galois/Counter Mode symmetric block cipher für Vertraulichkeit und Authentizität mit Diensten verwendet wird, die von Windows CNG bereitgestellt werden (siehe Angeben benutzerdefinierter Windows CNG-Algorithmen für weitere Details). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft im Typ "CngGcmAuthenticatedEncryptionSettings" entsprechen.

Wert Typ BESCHREIBUNG
EncryptionAlgorithm Zeichenfolge Der Name eines symmetrischen Blockverschlüsselungsalgorithmus, der von CNG verstanden wird. Dieser Algorithmus wird im Galois/Counter-Modus geöffnet.
EncryptionAlgorithmProvider Zeichenfolge 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 Blockverschlüsselungsalgorithmus abgeleitet werden soll.

Wenn EncryptionType verwaltet wird, wird das System so konfiguriert, dass ein verwaltetes SymmetricAlgorithm für Vertraulichkeit und KeyedHashAlgorithm für die Authentizität verwendet wird (siehe Angeben benutzerdefinierter verwalteter Algorithmen für weitere Details). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft im Typ ManagedAuthenticatedEncryptionSettings entsprechen.

Wert Typ BESCHREIBUNG
EncryptionAlgorithmType Zeichenfolge 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 Zeichenfolge Der assemblyqualifizierte Name eines Typs, der KeyedHashAlgorithm implementiert.

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

Warnung

Wenn Sie eine Standardrichtlinieneinstellung konfigurieren, die Typnamen umfasst (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), müssen die Typen für die App verfügbar sein. Dies bedeutet, dass für Apps, die auf Desktop CLR ausgeführt werden, die Assemblys, die diese Typen enthalten, im globalen Assemblycache (GAC) vorhanden sein sollten. Für ASP.NET Core Apps, die auf .NET Core ausgeführt werden, sollten die Pakete, die diese Typen enthalten, installiert werden.