Podpora zásad ochrany dat na úrovni počítače v ASP.NET Core

Autor: Rick Anderson

Při spouštění ve Windows má systém Ochrany dat omezenou podporu pro nastavení výchozích zásad pro všechny aplikace, které využívají ASP.NET Core Data Protection. Obecně platí, že správce může chtít změnit výchozí nastavení, jako jsou algoritmy používané nebo životnost klíče, aniž by bylo nutné ručně aktualizovat každou aplikaci na počítači.

Upozorňující

Správce systému může nastavit výchozí zásady, ale nemůže je vynutit. Vývojář aplikace může vždy přepsat libovolnou hodnotu vlastním výběrem. Výchozí zásada má vliv jenom na aplikace, u kterých vývojář nezadá explicitní hodnotu pro nastavení.

Nastavení výchozích zásad

Pokud chcete nastavit výchozí zásady, může správce nastavit známé hodnoty v systémovém registru pod následujícím klíčem registru:

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

Pokud používáte 64bitový operační systém a chcete ovlivnit chování 32bitových aplikací, nezapomeňte nakonfigurovat ekvivalent Wow6432Node výše uvedeného klíče.

Podporované hodnoty jsou uvedené níže.

Hodnota Typ Popis
EncryptionType řetězec Určuje, které algoritmy se mají použít pro ochranu dat. Hodnota musí být CNG-CBC, CNG-GCM nebo Managed a je popsána podrobněji níže.
DefaultKeyLifetime DWORD Určuje životnost nově vygenerovaných klíčů. Hodnota je zadaná ve dnech a musí být >= 7.
KeyEscrowSinks řetězec Určuje typy, které se používají pro klávesu escrow. Hodnota je seznam jímek s oddělovači klíčů oddělený středníkem, kde každý prvek v seznamu je název sestavení kvalifikovaného typu, který implementuje IKeyEscrowSink.

Typy šifrování

Pokud je EncryptionType CNG-CBC, je systém nakonfigurovaný tak, aby používal symetrickou šifru CBC v režimu CBC pro důvěrnost a HMAC pro pravost se službami poskytovanými systémem Windows CNG (další podrobnosti najdete v tématu Určení vlastních algoritmů CNG systému Windows). Podporují se následující další hodnoty, z nichž každá odpovídá vlastnosti cngCbcAuthenticatedEncryption Nastavení typ.

Hodnota Typ Popis
EncryptionAlgorithm řetězec Název symetrického blokového šifrovacího algoritmu, kterému rozumí CNG. Tento algoritmus se otevře v režimu CBC.
EncryptionAlgorithmProvider řetězec Název implementace poskytovatele CNG, která může vytvořit algoritmus EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Délka klíče (v bitech), která se má odvodit pro algoritmus symetrického blokového šifrování.
Hashalgorithm řetězec Název hashovacího algoritmu, kterému rozumí CNG. Tento algoritmus se otevře v režimu HMAC.
HashAlgorithmProvider řetězec Název implementace poskytovatele CNG, která může vytvořit algoritmus HashAlgorithm.

Pokud je EncryptionType CNG-GCM, je systém nakonfigurovaný tak, aby používal symetrický blok Galois/Counter Mode pro důvěrnost a pravost se službami poskytovanými systémem Windows CNG (další podrobnosti najdete v tématu Určení vlastních algoritmů CNG systému Windows). Podporují se následující další hodnoty, z nichž každá odpovídá vlastnosti cngGcmAuthenticatedEncryption Nastavení typ.

Hodnota Typ Popis
EncryptionAlgorithm řetězec Název symetrického blokového šifrovacího algoritmu, kterému rozumí CNG. Tento algoritmus je otevřen v režimu Galois/Counter.
EncryptionAlgorithmProvider řetězec Název implementace poskytovatele CNG, která může vytvořit algoritmus EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Délka klíče (v bitech), která se má odvodit pro algoritmus symetrického blokového šifrování.

Pokud je typ EncryptionType spravovaný, systém je nakonfigurovaný tak, aby používal spravovaný symetrický protokol pro důvěrnost a keyedHashAlgorithm pro pravost (další podrobnosti najdete v tématu Určení vlastních spravovaných algoritmů ). Podporují se následující další hodnoty, z nichž každá odpovídá vlastnosti typu ManagedAuthenticatedEncryption Nastavení.

Hodnota Typ Popis
EncryptionAlgorithmType řetězec Kvalifikovaný název sestavení typu, který implementuje SymmetricAlgorithm.
EncryptionAlgorithmKeySize DWORD Délka klíče (v bitech), která se má odvodit pro algoritmus symetrického šifrování.
ValidationAlgorithmType řetězec Kvalifikovaný název sestavení typu, který implementuje KeyedHashAlgorithm.

Pokud má encryptionType jinou hodnotu než null nebo prázdnou, systém Ochrany dat vyvolá při spuštění výjimku.

Upozorňující

Při konfiguraci výchozího nastavení zásad, které zahrnuje názvy typů (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), musí být typy dostupné pro aplikaci. To znamená, že pro aplikace spuštěné v Desktop CLR by sestavení, která obsahují tyto typy, měla být přítomna v globální mezipaměti sestavení (GAC). Pro ASP.NET aplikace Core spuštěné v .NET Core by se měly nainstalovat balíčky, které obsahují tyto typy.