Элемент machineKey (схема параметров ASP.NET)

Настраивает алгоритмы и ключи, используемые для шифрования, расшифровки и проверки данных проверки подлинности форм и данных состояния представления, а также для определения состояния внешнего сеанса.

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
    HMACSHA384 | HMACSHA512 | alg:algorithm_name]
  decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут

Описание

decryption

Необязательный атрибут элемента String.

Указывает алгоритм, кот. используется для шифрования и дешифрования данных проверки подлинности форм.

Этот атрибут может принимать одно из следующих значений.

  • Auto  Указывает, что ASP.NET автоматически определяет, какой алгоритм дешифрования использовать. Это значение данного атрибута по умолчанию.

  • AES  Указывает, что ASP.NET использует алгоритм AES (Rijndael) для шифрования и дешифрования данных. AES — это алгоритм по умолчанию; именно он используется, когда данный атрибут имеет значение Auto. Этот алгоритм соответствует федеральным стандартам обработки информации США (FIPS).

  • DES  Указывает, что ASP.NET использует алгоритм Data Encryption Standard (DES) для шифрования и дешифрования данных. Этот алгоритм включен только с целью поддержки предыдущих версий, его следует использовать только при необходимости обеспечить совместимость с более ранними версиями ASP.NET.

  • 3DES  Указывает, что ASP.NET использует алгоритм TripleDES (3DES) для шифрования и дешифрования данных. Этот алгоритм включен только с целью поддержки предыдущих версий, его следует использовать только при необходимости обеспечить совместимость с более ранними версиями ASP.NET.

  • alg:имя_алгоритма  Указывает, что ASP.NET использует пользовательский алгоритм для шифрования и дешифрования данных. Алгоритм шифрования должен быть определен в класс, производный от SymmetricAlgorithm. ASP.NET вызывает метод SymmetricAlgorithm.Create и выполняет передачу от имени указанного здесь алгоритма.

decryptionKey

Обязательный атрибут элемента String.

Задает ключ для шифрования и расшифровки данных или процесс, в ходе которого создается ключ. Этот атрибут используется для шифрования и расшифровки при проверке подлинности форм, а также для шифрования состояния отображения и расшифровки состояния отображения, если оно зашифровано.

Этот атрибут может принимать одно из следующих значений.

  • AutoGenerate, IsolateApps  Указывает, что ключ создается автоматически. Это значение по умолчанию. Модификатор AutoGenerate указывает, что ASP.NET генерирует случайный ключ и сохраняет его в LSA. Модификатор IsolateApps указывает, что ASP.NET генерирует уникальный зашифрованный ключ для каждого приложения с помощью идентификатора приложения.

  • значение_ключа  Указывает задаваемый вручную ключ. В качестве значения decryptionKey должна быть вручную задана строка шестнадцатеричных символов, чтобы обеспечить согласованную конфигурацию на всех серверах веб-фермы. Ключ должен быть 64 бита (16 шестнадцатеричных символов) для DES-шифрования, или 192 бит (48 шестнадцатеричных символов) длиной для 3DES. Для AES ключ может быть 128-разрядным (32 символа), 192-разрядным (48 символов) или 256-разрядным (64 символа). Длиннейший ключ обеспечивает наибольшую безопасность.Случайные ключи могут создаваться вручную с помощью класса RNGCryptoServiceProvider. Дополнительные сведения см. в разделе How To: Configure MachineKey in ASP.NET 2.0.

Дополнительные сведения см. в разделе DecryptionKey.

validation

Обязательный атрибут элемента MachineKeyValidation.

Задает хэш-алгоритм, используемый для проверки данных.

По умолчанию состояние просмотра передается в виде строки в кодировке base-64. Хотя на первый взгляд закодированные данные нечитаемы, кодировка Base 64 не обеспечивает никакой безопасности потому, что она легко декодируются. Если конфиденциальные данные хранятся в состоянии просмотра, можно указать, что ASP.NET не только проверяет, но и шифрует данные состояния просмотра. Можно задать шифрование состояния просмотра для всех страниц веб-приложения или для отдельных страниц. Сведения о этом параметре см. в описаниях свойства ViewStateEncryptionMode и метода RegisterRequiresViewStateEncryption().

Если требуется использовать шифрование состояния просмотра, задайте этому атрибуту значение AES. В этом случае значение decryptionKey будет использоваться для шифрования данных состояния просмотра и ASP.NET будет использовать хэш-алгоритм HMACSHA1 для проверки данных.

Этот атрибут может принимать одно из следующих значений.

  • AES  Указывает, что ASP.NET использует алгоритм шифрования AES (Rijndael) для шифрования и дешифрования данных, когда состояние просмотра шифруется. Если атрибуту validation задан этот параметр, для проверки используется алгоритм HMACSHA1.

  • MD5  Задает хэш-алгоритм Message Digest 5 (MD5) для проверки данных в ASP.NET. Этот алгоритм включен только с целью поддержки предыдущих версий, его следует использовать только при необходимости обеспечить совместимость с более ранними версиями ASP.NET.

  • SHA1  Указывает, что ASP.NET использует для проверки данных хэш-алгоритм HMACSHA1. Этот алгоритм должен использоваться, только если необходимо задать для этого атрибута значение AES для поддержки шифрования состояния представления. В противном случае используйте HMACSHA256, HMACSHA384 или HMACSHA512.

  • 3DES  Указывает, что ASP.NET использует алгоритм TripleDES (3DES) для шифрования и дешифрования данных, когда состояние просмотра шифруется. Если атрибуту validation задан этот параметр, для проверки используется алгоритм HMACSHA1. Этот алгоритм включен только с целью поддержки предыдущих версий, его следует использовать только при необходимости обеспечить совместимость с более ранними версиями ASP.NET.

  • HMACSHA256  Указывает, что ASP.NET использует для проверки данных хэш-алгоритм HMACSHA256. Это значение по умолчанию. Этот алгоритм соответствует федеральным стандартам обработки информации США (FIPS).

  • HMACSHA384  Указывает, что ASP.NET использует для проверки данных хэш-алгоритм HMACSHA384. Этот параметр доступен для приложений, требующих более высокой степени безопасности, чем обеспечивается алгоритмом HMACSHA256. Этот алгоритм соответствует федеральным стандартам обработки информации США (FIPS).

  • HMACSHA512  Указывает, что ASP.NET использует для проверки данных хэш-алгоритм HMACSHA512. Этот параметр доступен для приложений, требующих более высокой степени безопасности, чем обеспечивается алгоритмом HMACSHA384. Этот алгоритм соответствует федеральным стандартам обработки информации США (FIPS).

  • alg:имя_алгоритма  Указывает, что ASP.NET использует пользовательский алгоритм. Префикс alg: предшествует имени класса, наследуемого от KeyedHashAlgorithm. ASP.NET вызывает метод Create() и выполняет передачу от имени указанного здесь алгоритма.

validationKey

Обязательный атрибут элемента String.

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

Этот атрибут может принимать одно из следующих значений.

  • AutoGenerate, IsolateApps  Указывает, что ключ создается автоматически. Это значение по умолчанию. Модификатор AutoGenerate указывает, что ASP.NET генерирует случайный ключ и сохраняет его в LSA. Модификатор IsolateApps указывает, что ASP.NET генерирует уникальный зашифрованный ключ для каждого приложения с помощью идентификатора приложения.

  • значение_ключа  Указывает задаваемый вручную ключ. В качестве значения validationKey должна быть вручную задана строка шестнадцатеричных символов, чтобы обеспечить согласованную конфигурацию на всех серверах веб-фермы. Длина ключа зависит от хэш-алгоритма, который используется:

    • AES требует 256-разрядный ключ (64 шестнадцатеричных символа).

    • MD5 требует 128-разрядный ключ (32 шестнадцатеричных символа).

    • SHA1 требует 160-разрядный ключ (40 шестнадцатеричных символов).

    • 3DES требует 192-разрядный ключ (48 шестнадцатеричных символов).

    • HMACSHA256 требует 256-разрядный ключ (64 шестнадцатеричных символа).

    • HMACSHA384 требует 384-разрядный ключ (96 шестнадцатеричных символа).

    • HMACSHA512 требует 512-разрядный ключ (128 шестнадцатеричных символа).

    Случайные ключи могут создаваться вручную с помощью класса RNGCryptoServiceProvider. Дополнительные сведения см. в разделе How To: Configure MachineKey in ASP.NET 2.0. В этом разделе не перечислены алгоритмы HMACSHA256, HMACSHA384 и HMACSHA512. Однако процесс работает и для таких алгоритмов, если указывать правильную длину ключа.

Дополнительные сведения см. в разделе ValidationKey.

Дочерние элементы

Отсутствует.

Родительские элементы

Элемент

Описание

configuration

Задает обязательный корневой элемент любого файла конфигурации, используемого средой CLR и приложениями .NET Framework.

system.web

Задает корневой элемент для параметров конфигурации ASP.NET в файле конфигурации и содержит элементы конфигурации, предназначенные для настройки веб-приложений ASP.NET и управления их работой.

Заметки

В следующем примере кода показано, как атрибуту validationKey и decryptionKey задать значение AutoGenerate. Для генерации ключей, уникальных для каждого приложения на сервере, задается значение isolateApps.

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
/>

В следующем примере кода демонстрируется задание атрибута validationKey и атрибута decryptionKey, чтобы вручную создавать произвольные значения. Для атрибута validationKey задан 256-битный ключ для алгоритма хэширования HMACSHA256, а для атрибута decryptionKey также задан 256-битный ключ — максимально длинный для алгоритма шифрования AES. Это только примеры, их не следует использовать в приложении.

<machineKey 
    validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F" 
    decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4" 
/>

См. также

Задачи

Пошаговое руководство. Шифрование информации конфигурации с помощью функции защищенной конфигурации

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

Пошаговое руководство. Отключение параметров конфигурации ASP.NET

Ссылки

Элемент system.web (схема параметров ASP.NET)

Элемент configuration (схема общих параметров)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

Основные понятия

Проверка подлинности форм между приложениями

Обеспечение безопасности ролей

Защита членства

Защита свойств профиля

Защита состояния сеанса

Иерархия и наследование файла конфигурации ASP.NET

Настройка обеспечения безопасности ASP.NET

Сценарии конфигурации ASP.NET

Другие ресурсы

Общие параметры конфигурации (ASP.NET)

Параметры конфигурации ASP.NET

Администрирование веб-сайта ASP.NET

Конфигурационный API-интерфейс настройки ASP.NET