在 Windows 上執行時,數據保護系統對於針對取用 ASP.NET Core Data Protection 的所有應用程式設定預設全計算機原則的支援有限。 一般的想法是,系統管理員可能會想要變更預設設定,例如使用的演算法或密鑰存留期,而不需要手動更新電腦上的每個應用程式。
Warning
系統管理員可以設定默認原則,但無法強制執行。 應用程式開發人員隨時可以使用自選值來覆蓋任何值。 默認原則只會影響開發人員未為設定指定明確值的應用程式。
設定默認原則
若要設定預設原則,系統管理員可以在下列登錄機碼下,在系統登錄中設定已知值:
HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection
如果您在 64 位元作業系統上,如果需要影響 32 位元應用程式的行為,請記得設定上述機碼的 Wow6432Node 等效值。
支援的值如下所示。
| Value | 類型 | Description |
|---|---|---|
| EncryptionType | 字串 | 指定應該用於數據保護的演算法。 此值必須是 CNG-CBC、CNG-GCM 或 Managed,如下所述。 |
| 預設鍵壽命 | DWORD | 指定新產生的金鑰存留期。 此值是以天為單位指定,而且必須是 >= 7。 |
| KeyEscrowSinks | 字串 | 指定用於金鑰委付的類型。 值是以分號分隔的密鑰托管接收清單,其中清單中的每個元素都是實作IKeyEscrowSink的型別的組件限定名稱。 |
加密類型
如果 EncryptionType 是 CNG-CBC,系統會將系統設定為使用 CBC 模式對稱區塊加密進行機密性,而 HMAC 則會使用 Windows CNG 所提供的服務進行真實性(如需詳細資訊 ,請參閱指定自定義 Windows CNG 演演算法 )。 支援下列其他值,每個值都會對應至 CngCbcAuthenticatedEncryptionSettings 類型的屬性。
| Value | 類型 | Description |
|---|---|---|
| EncryptionAlgorithm | 字串 | CNG 所瞭解的對稱區塊加密演算法名稱。 此演算法會在 CBC 模式中開啟。 |
| EncryptionAlgorithmProvider | 字串 | 可產生演算法 EncryptionAlgorithm 的 CNG 提供者實作名稱。 |
| EncryptionAlgorithmKeySize | DWORD | 衍生對稱區塊加密演算法之密鑰的長度(位元)。 |
| HashAlgorithm | 字串 | CNG 所瞭解的哈希演算法名稱。 此演算法會在 HMAC 模式中開啟。 |
| HashAlgorithmProvider | 字串 | 可產生演算法 HashAlgorithm 的 CNG 提供者實作名稱。 |
如果 EncryptionType 是 CNG-GCM,系統會將系統設定為使用 Galois/Counter Mode 對稱區塊加密,以取得 Windows CNG 所提供的服務機密性和真實性(如需詳細資訊,請參閱 指定自定義 Windows CNG 演演算法 )。 支援下列其他值,每個值都會對應至 CngGcmAuthenticatedEncryptionSettings 類型的屬性。
| Value | 類型 | Description |
|---|---|---|
| EncryptionAlgorithm | 字串 | CNG 所瞭解的對稱區塊加密演算法名稱。 此演算法會在 Galois/Counter 模式中開啟。 |
| EncryptionAlgorithmProvider | 字串 | 可產生演算法 EncryptionAlgorithm 的 CNG 提供者實作名稱。 |
| EncryptionAlgorithmKeySize | DWORD | 衍生對稱區塊加密演算法之密鑰的長度(位元)。 |
如果 EncryptionType 是託管的,系統會設定為使用託管 SymmetricAlgorithm 來保護機密性,並使用 KeyedHashAlgorithm 來確認完整性(如需詳細資訊,請參閱 指定自定義託管演算法)。 支援下列其他值,每個值都會對應至 ManagedAuthenticatedEncryptionSettings 類型的屬性。
| Value | 類型 | Description |
|---|---|---|
| EncryptionAlgorithmType | 字串 | 實作 SymmetricAlgorithm 類型的程序集限制名稱。 |
| EncryptionAlgorithmKeySize | DWORD | 要針對對稱加密演算法衍生之密鑰的長度(以位為單位)。 |
| ValidationAlgorithmType | 字串 | 實作 KeyedHashAlgorithm 之型別的元件限定名稱。 |
如果 EncryptionType 有 Null 或空白以外的任何其他值,數據保護系統會在啟動時擲回例外狀況。
Warning
設定包含類型名稱的默認原則設定時(EncryptionAlgorithmType、ValidationAlgorithmType、KeyEscrowSinks),類型必須可供應用程式使用。 針對 ASP.NET Core 應用程式,應該安裝包含這些類型的套件。