Поделиться через


Поддержка политики защиты данных на уровне компьютера в ASP.NET Core

Автор: Рик Андерсон (Rick Anderson)

При запуске в Windows система защиты данных имеет ограниченную поддержку настройки политики на уровне компьютера по умолчанию для всех приложений, использующих ASP.NET Core Data Protection. Общая идея заключается в том, что администратор может изменить параметр по умолчанию, например алгоритмы, используемые или время существования ключа, без необходимости вручную обновлять каждое приложение на компьютере.

Warning

Системный администратор может задать политику по умолчанию, но они не могут применить ее. Разработчик приложений всегда может переопределить любое значение с помощью одного из своих собственных вариантов. Политика по умолчанию влияет только на приложения, в которых разработчик не указал явное значение для параметра.

Настройка политики по умолчанию

Чтобы задать политику по умолчанию, администратор может установить известные значения в следующем разделе системного реестра:

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

Если вы находитесь в 64-разрядной операционной системе и хотите повлиять на поведение 32-разрядных приложений, не забудьте настроить эквивалент Wow6432Node приведенного выше ключа.

Ниже показаны поддерживаемые значения.

Value Type Description
EncryptionType string Указывает, какие алгоритмы следует использовать для защиты данных. Значение должно быть CNG-CBC, CNG-GCM или Managed и описано более подробно ниже.
Срок действия ключа по умолчанию DWORD Указывает время существования только что созданных ключей. Значение указывается в днях и должно иметь значение >= 7.
KeyEscrowSinks string Указывает типы, используемые для депонирования ключей. Значение представляет собой список приемников хранилища ключей, разделенных точкой с запятой, где каждый элемент в списке — это полное имя типа сборки, реализующего IKeyEscrowSink.

Типы шифрования

Если EncryptionType — CNG-CBC, система настроена на использование симметричного шифра симметричного блока CBC для конфиденциальности и HMAC для проверки подлинности служб, предоставляемых Windows CNG (дополнительные сведения см. в разделе "Указание пользовательских алгоритмов CNG Windows "). Поддерживаются следующие дополнительные значения, каждый из которых соответствует свойству типа CngCbcAuthenticatedEncryptionSettings.

Value Type Description
EncryptionAlgorithm string Имя алгоритма шифра симметричного блока, понятного CNG. Этот алгоритм открыт в режиме CBC.
EncryptionAlgorithmProvider string Имя реализации поставщика CNG, которая может создавать алгоритм EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Длина (в битах) ключа, наследуемого для алгоритма шифра симметричного блока.
HashAlgorithm string Имя хэш-алгоритма, распознаваемого CNG. Этот алгоритм открыт в режиме HMAC.
HashAlgorithmProvider string Имя реализации поставщика CNG, которая может создавать алгоритм HashAlgorithm.

Если EncryptionType — CNG-GCM, система настроена на использование симметричного шифра симметричного блока Galois/Counter Mode для конфиденциальности и подлинности служб, предоставляемых Windows CNG (дополнительные сведения см. в разделе "Указание пользовательских алгоритмов CNG Windows "). Поддерживаются следующие дополнительные значения, каждый из которых соответствует свойству типа CngGcmAuthenticatedEncryptionSettings.

Value Type Description
EncryptionAlgorithm string Имя алгоритма шифра симметричного блока, понятного CNG. Этот алгоритм открыт в режиме Galois/Counter.
EncryptionAlgorithmProvider string Имя реализации поставщика CNG, которая может создавать алгоритм EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Длина (в битах) ключа, наследуемого для алгоритма шифра симметричного блока.

Если тип шифрования является управляемым, система настроена на использование управляемого симметричного алгоритма для обеспечения конфиденциальности и алгоритма KeyedHash для проверки подлинности (дополнительные сведения см. в разделе Указание настраиваемых управляемых алгоритмов). Поддерживаются следующие дополнительные значения, каждый из которых соответствует свойству типа ManagedAuthenticatedEncryptionSettings.

Value Type Description
EncryptionAlgorithmType string Полное имя типа, реализующего класс SymmetricAlgorithm.
EncryptionAlgorithmKeySize DWORD Длина (в битах) ключа, наследуемого для алгоритма симметричного шифрования.
ValidationAlgorithmType string Полное название типа, реализующего KeyedHashAlgorithm, в контексте сборки.

Если EncryptionType имеет любое другое значение, отличное от null или пустого, система защиты данных создает исключение при запуске.

Warning

При настройке параметра политики по умолчанию, включающего имена типов (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), типы должны быть доступны приложению. Для приложений ASP.NET Core необходимо установить пакеты, содержащие эти типы.