ASP.NET Core 中的資料保護全機器原則支援

作者:Rick Anderson

在 Windows 上執行時,對使用 ASP.NET Core 資料保護的所有應用程式設定預設電腦全域原則而言,資料保護系統的支援有限。 一般的想法是,系統管理員可能會想要變更預設設定,例如使用的演算法或金鑰存留期,而不需要手動更新電腦上的每個應用程式。

警告

系統管理員可以設定預設原則,但無法強制執行。 應用程式開發人員一律可以使用自己的其中一個選擇來覆寫任何值。 預設原則僅會影響開發人員未指定明確設定值的應用程式。

設定預設原則

若要設定預設原則,系統管理員可以在下列登錄機碼下,在系統登錄中設定已知值:

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

如果您是在 64 位元作業系統上,而且想要影響 32 位元應用程式的行為,請記得設定相當於上述機碼的 Wow6432Node。

支援的值如下所示。

類型 描述
EncryptionType string 指定應該用於資料保護的演算法。 此值必須是 CNG-CBC、CNG-GCM 或 Managed,如下所述。
DefaultKeyLifetime 下載 指定新產生金鑰的存留期。 此值以天為單位指定,而且必須是 >= 7。
KeyEscrowSinks string 指定用於金鑰委付的類型。 該值是以分號分隔的索引鍵委付接收清單,其中清單中的每個元素都是實作 IKeyEscrowSink 之型別的元件限定名稱。

加密類型

如果 EncryptionType 是 CNG-CBC,系統會將系統設定為使用 CBC 模式對稱區塊加密進行機密性,並使用 HMAC 來驗證 Windows CNG 所提供的服務 (如需詳細資訊,請參閱指定自訂 Windows CNG 演算法)。 支援下列其他值,每個值都會對應至 CngCbcAuthenticatedEncryptionSettings 類型的屬性。

類型 描述
EncryptionAlgorithm string CNG 所了解的對稱區塊加密演算法名稱。 此演算法會在 CBC 模式中開啟。
EncryptionAlgorithmProvider string 可產生演算法 EncryptionAlgorithm 的 CNG 提供者實作名稱。
EncryptionAlgorithmKeySize 下載 要針對對稱區塊加密演算法衍生之金鑰的長度 (以位元為單位)。
HashAlgorithm string CNG 所了解的雜湊演算法名稱。 此演算法會在 HMAC 模式中開啟。
HashAlgorithmProvider string 可產生演算法 HashAlgorithm 的 CNG 提供者實作名稱。

如果 EncryptionType 是 CNG-GCM,系統會將系統設定為使用 Galois/Counter Mode 對稱區塊加密,以取得 Windows CNG 所提供的服務機密性和真實性 (如需詳細資訊,請參閱指定自訂 Windows CNG 演算法)。 支援下列其他值,每個值都會對應至 CngGcmAuthenticatedEncryptionSettings 類型的屬性。

類型 描述
EncryptionAlgorithm string CNG 所了解的對稱區塊加密演算法名稱。 此演算法會在 Galois/Counter 模式中開啟。
EncryptionAlgorithmProvider string 可產生演算法 EncryptionAlgorithm 的 CNG 提供者實作名稱。
EncryptionAlgorithmKeySize 下載 要針對對稱區塊加密演算法衍生之金鑰的長度 (以位元為單位)。

如果 EncryptionType 為 Managed,則系統會設定為使用受控 SymmetricAlgorithm 來實現機密性,使用 KeyedHashAlgorithm 來實現真實性 (如需詳細資訊,請參閱指定自訂 Managed 演算法)。 支援下列其他值,每個值都會對應至 ManagedAuthenticatedEncryptionSettings 類型的屬性。

類型 描述
EncryptionAlgorithmType string 實作 SymmetricAlgorithm 之型別的組件限定名稱。
EncryptionAlgorithmKeySize 下載 要針對對稱加密演算法衍生之金鑰的長度 (以位元為單位)。
ValidationAlgorithmType string 實作 KeyedHashAlgorithm 之型別的組件限定名稱。

如果 EncryptionType 有 Null 或空白以外的任何其他值,資料保護系統會在啟動時擲回例外狀況。

警告

設定包含類型名稱的預設原則設定時 (EncryptionAlgorithmType、ValidationAlgorithmType、KeyEscrowSinks),該類型必須可供應用程式使用。 這表示對於在桌面 CLR 上執行的應用程式,包含這些類型的元件應該出現在全域組件快取 (GAC) 中。 針對在 .NET Core 上執行的 ASP.NET Core 應用程式,應該安裝包含這些類型的套件。