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.