Unterstützung computerweiter Richtlinien für den Schutz von Daten in ASP.NET Core

Von Rick Anderson

Bei der Ausführung unter Windows bietet das System zum Schutz von Daten eine eingeschränkte Unterstützung zum Festlegen einer computerweiten Standardrichtlinie für alle Apps, die den Schutz von Daten in ASP.NET Core nutzen. Der Grundgedanke ist, dass Administrator*innen möglicherweise eine Standardeinstellung ändern möchten, z. B. die verwendeten Algorithmen oder die Schlüssellebensdauer, ohne jede App auf dem Computer manuell aktualisieren zu müssen.

Warnung

Systemadministratoren können die Standardrichtlinie festlegen, aber nicht erzwingen. App-Entwickler*innen können jeden Wert jederzeit durch einen Wert ihrer Wahl überschreiben. Die Standardrichtlinie wirkt sich nur auf Apps aus, bei denen die Entwickler*innen keinen expliziten Wert für eine Einstellung angegeben haben.

Festlegen der Standardrichtlinie

Um die Standardrichtlinie festzulegen, können Administratoren 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, vergessen Sie nicht, das Wow6432Node-Äquivalent des obigen Schlüssels zu konfigurieren.

Die unterstützten Werte sind unten dargestellt.

Wert type Beschreibung
EncryptionType Zeichenfolge Gibt an, welche Algorithmen für den Schutz von Daten verwendet werden sollen. Der Wert muss „CNG-CBC“, „CNG-GCM“ oder „Managed“ lauten 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 Zeichenfolge Gibt die Typen an, die für die Schlüsselhinterlegung verwendet werden. Der Wert ist eine durch Semikolon getrennte Liste von Schlüsselhinterlegungssenken, wobei jedes Element in der Liste der assemblyqualifizierte Name eines Typs ist, der IKeyEscrowSink implementiert.

Verschlüsselungstypen

Wenn für EncryptionType „CNG-CBC“ angegeben wird, wird das System so konfiguriert, dass es eine symmetrische Blockchiffre im CBC-Modus für Vertraulichkeit und HMAC für die Authentizität mit von Windows CNG bereitgestellten Diensten verwendet (weitere Informationen finden Sie unter Angeben benutzerdefinierter Windows CNG-Algorithmen). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft des CngCbcAuthenticatedEncryptionSettings-Typs entsprechen.

Wert type Beschreibung
EncryptionAlgorithm Zeichenfolge Der Name eines symmetrischen Blockchiffrealgorithmus, 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 des Schlüssels (in Bits), der für den symmetrischen Blockchiffrealgorithmus abgeleitet werden soll.
HashAlgorithm Zeichenfolge Der Name eines von CNG verstandenen Hashalgorithmus. Dieser Algorithmus wird im HMAC-Modus geöffnet.
HashAlgorithmProvider Zeichenfolge Der Name der CNG-Anbieterimplementierung, die den Algorithmus HashAlgorithm erzeugen kann.

Wenn für EncryptionType „CNG-GCM“ angegeben wird, wird das System so konfiguriert, dass es eine symmetrische Blockchiffre im Galois/Counter-Modus für Vertraulichkeit und Authentizität mit von Windows CNG bereitgestellten Diensten verwendet (weitere Informationen finden Sie unter Angeben benutzerdefinierter Windows CNG-Algorithmen). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft des CngGcmAuthenticatedEncryptionSettings-Typs entsprechen.

Wert type Beschreibung
EncryptionAlgorithm Zeichenfolge Der Name eines symmetrischen Blockchiffrealgorithmus, 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 des Schlüssels (in Bits), der für den symmetrischen Blockchiffrealgorithmus abgeleitet werden soll.

Wenn für EncryptionType „Managed“ angegeben wird, wird das System so konfiguriert, dass es einen verwalteten SymmetricAlgorithm-Algorithmus für Vertraulichkeit und einen KeyedHashAlgorithm-Algorithmus für Authentizität verwendet (weitere Informationen finden Sie unter Angeben benutzerdefinierter verwalteter Algorithmen). Die folgenden zusätzlichen Werte werden unterstützt, die jeweils einer Eigenschaft des ManagedAuthenticatedEncryptionSettings-Typs entsprechen.

Wert type Beschreibung
EncryptionAlgorithmType Zeichenfolge Der assemblyqualifizierte Name eines Typs, der SymmetricAlgorithm implementiert.
EncryptionAlgorithmKeySize DWORD Die Länge des Schlüssels (in Bits), der für den symmetrischen Verschlüsselungsalgorithmus abgeleitet werden soll.
ValidationAlgorithmType Zeichenfolge Der assemblyqualifizierte Name eines Typs, der KeyedHashAlgorithm implementiert.

Wenn EncryptionType nicht NULL oder leer ist, löst das System zum Schutz der Daten beim Start eine Ausnahme aus.

Warnung

Wenn eine Standardrichtlinieneinstellung mit Typnamen (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks) konfiguriert wird, müssen die betreffenden Typen für die App verfügbar sein. Dies heißt, dass für Apps, die auf Desktop-CLR ausgeführt werden, die Assemblys, die diese Typen enthalten, im globalen Assemblycache (GAC) vorhanden sein müssen. Für ASP.NET Core Apps, die unter .NET Core ausgeführt werden, müssen die Pakete installiert werden, die diese Typen enthalten.