Политика на уровне компьютера

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

Предупреждение

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

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

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

Reg key: HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNet.DataProtection

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

Вот поддерживаемые значения:

  • EncryptionType [string] - указывает, какие алгоритмы нужно использовать для защиты данных. Это значение должно быть “CNG-CBC”, “CNG-GCM” или “Managed”. См. ниже.
  • DefaultKeyLifetime [DWORD] - указывает жизненный цикл новых ключей. Это значение указывается в днях и должно быть ≥ 7.
  • KeyEscrowSinks [string] - указывает типы, которые используются для внедрения ключей. Это значение является списком, где элементы разделены точкой с запятой, и каждый элемент в списке является именем типа, который реализует IKeyEscrowSink.

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

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

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

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

  • EncryptionAlgorithm [string] - имя симметричного блочного шифрового алгоритма, понятного CNG. Этот алгоритм открывается в режиме Galois/Counter.
  • EncryptionAlgorithmProvider [string] - имя реализации CNG провайдера, который может создать алгоритм EncryptionAlgorithm.
  • EncryptionAlgorithmKeySize [DWORD] - длина (в битах) ключа, который наследуется для симметричного блочного шифрового алгоритма.

Если EncryptionType является “Managed”, система будет использовать управляемый SymmetricAlgorithm для конфиденциальности и KeyedHashAlgorithm для аутентификации (см. Указание алгоритмов, управляемых пользователем). Поддерживаются и дополнительные значения, каждое из которых соответствует свойству для типа ManagedAuthenticatedEncryptionOptions:

  • EncryptionAlgorithmType [string] - имя типа, который реализует SymmetricAlgorithm.
  • EncryptionAlgorithmKeySize [DWORD] - длина (в битах) ключа, который наследуется для симметричного блочного шифрового алгоритма.
  • ValidationAlgorithmType [string] - имя типа, который реализует KeyedHashAlgorithm.

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

Предупреждение

При настройке политики по умолчанию, которая реализует имена типов (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), типы должны быть доступны приложению. На практике это обозначает, что для приложений, запущенных на Desktop CLR, сборки, которые содержат эти типы, должны быть GACed. Для ASP.NET Core приложений, запущенных на `.NET Core`_, пакеты, содержащие эти типы, должны ссылаться на project.json.

Поделись хорошей новостью с друзьями!
Следи за новостями!