Поддержка политики защиты данных на уровне компьютера в ASP.NET Core
Автор: Рик Андерсон (Rick Anderson)
При запуске в Windows система защиты данных имеет ограниченную поддержку настройки политики на уровне компьютера по умолчанию для всех приложений, использующих ASP.NET Core Data Protection. Общая идея заключается в том, что администратор может изменить параметр по умолчанию, например алгоритмы, используемые или время существования ключа, без необходимости вручную обновлять каждое приложение на компьютере.
Предупреждение
Системный администратор может задать политику по умолчанию, но они не могут применить ее. Разработчик приложений всегда может переопределить любое значение с помощью одного из своих собственных вариантов. Политика по умолчанию влияет только на приложения, в которых разработчик не указал явное значение для параметра.
Настройка политики по умолчанию
Чтобы задать политику по умолчанию, администратор может задать известные значения в системном реестре в следующем разделе реестра:
HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection
Если вы находитесь в 64-разрядной операционной системе и хотите повлиять на поведение 32-разрядных приложений, не забудьте настроить эквивалент Wow6432Node приведенного выше ключа.
Ниже показаны поддерживаемые значения.
Значение | Тип | Описание |
---|---|---|
EncryptionType | строка | Указывает, какие алгоритмы следует использовать для защиты данных. Значение должно быть CNG-CBC, CNG-GCM или Managed и описано более подробно ниже. |
DefaultKeyLifetime | DWORD | Указывает время существования только что созданных ключей. Значение указывается в днях и должно иметь значение >= 7. |
KeyEscrowSinks | строка | Указывает типы, используемые для депонирования ключей. Значение — это список приемников с запятой, разделенных точкой с запятой, где каждый элемент в списке — это имя типа, реализующего сборку IKeyEscrowSink. |
Типы шифрования
Если EncryptionType — CNG-CBC, система настроена на использование симметричного шифра симметричного блока CBC для конфиденциальности и HMAC для проверки подлинности служб, предоставляемых Windows CNG (дополнительные сведения см. в разделе "Указание пользовательских алгоритмов CNG Windows"). Поддерживаются следующие дополнительные значения, каждый из которых соответствует свойству в типе CngCbcAuthenticatedEncryption Параметры.
Значение | Тип | Описание |
---|---|---|
EncryptionAlgorithm | строка | Имя алгоритма шифра симметричного блока, понятного CNG. Этот алгоритм открыт в режиме CBC. |
EncryptionAlgorithmProvider | строка | Имя реализации поставщика CNG, которое может создать алгоритм EncryptionAlgorithm. |
EncryptionAlgorithmKeySize | DWORD | Длина (в битах) ключа, наследуемого для алгоритма шифра симметричного блока. |
Hashalgorithm | строка | Имя хэш-алгоритма, понятного CNG. Этот алгоритм открыт в режиме HMAC. |
HashAlgorithmProvider | строка | Имя реализации поставщика CNG, которая может создавать алгоритм HashAlgorithm. |
Если EncryptionType — CNG-GCM, система настроена на использование симметричного шифра симметричного блока Galois/Counter Mode для конфиденциальности и подлинности служб, предоставляемых Windows CNG (дополнительные сведения см. в разделе "Указание пользовательских алгоритмов CNG Windows"). Поддерживаются следующие дополнительные значения, каждый из которых соответствует свойству в типе CngGcmAuthenticatedEncryption Параметры.
Значение | Тип | Описание |
---|---|---|
EncryptionAlgorithm | строка | Имя алгоритма шифра симметричного блока, понятного CNG. Этот алгоритм открыт в режиме Galois/Counter. |
EncryptionAlgorithmProvider | строка | Имя реализации поставщика CNG, которое может создать алгоритм EncryptionAlgorithm. |
EncryptionAlgorithmKeySize | DWORD | Длина (в битах) ключа, наследуемого для алгоритма шифра симметричного блока. |
Если EncryptionType является управляемым, система настроена на использование управляемого симметричногоAlgorithm для конфиденциальности и проверки подлинности KeyedHashAlgorithm (дополнительные сведения см. в разделе "Указание настраиваемых управляемых алгоритмов "). Поддерживаются следующие дополнительные значения, каждый из которых соответствует свойству в типе ManagedAuthenticatedEncryption Параметры.
Значение | Тип | Описание |
---|---|---|
EncryptionAlgorithmType | строка | Полное имя типа, реализующего СимметричныйAlgorithm. |
EncryptionAlgorithmKeySize | DWORD | Длина (в битах) ключа, наследуемого для алгоритма симметричного шифрования. |
ValidationAlgorithmType | строка | Полное имя типа, реализующего KeyedHashAlgorithm. |
Если EncryptionType имеет любое другое значение, отличное от null или пустого, система защиты данных создает исключение при запуске.
Предупреждение
При настройке параметра политики по умолчанию, включающего имена типов (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), типы должны быть доступны приложению. Это означает, что для приложений, работающих в классической среде CLR, сборки, содержащие эти типы, должны присутствовать в глобальном кэше сборок (GAC). Для приложений ASP.NET Core, работающих в .NET Core, необходимо установить пакеты, содержащие эти типы.
ASP.NET Core