Поддержка политики защиты данных на уровне компьютера в 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, необходимо установить пакеты, содержащие эти типы.