MessageProtectionOrder Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает порядок операций, которые защищают сообщение.
public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder =
Public Enum MessageProtectionOrder
- Наследование
Поля
| Имя | Значение | Описание |
|---|---|---|
| SignBeforeEncrypt | 0 | Указывает, что цифровая подпись создается для сообщения SOAP перед шифрованием любой части сообщения SOAP, но цифровая подпись не шифруется. |
| SignBeforeEncryptAndEncryptSignature | 1 | Указывает, что цифровая подпись создается для сообщения SOAP перед шифрованием любой части сообщения SOAP, а цифровая подпись шифруется. |
| EncryptBeforeSign | 2 | Указывает, что сообщение SOAP шифруется до создания цифровой подписи для сообщения SOAP. |
Примеры
В следующем примере создается SymmetricSecurityBindingElement элемент и устанавливается свойство MessageProtectionOrder SignBeforeEncrypt.
public static Binding CreateCustomBinding()
{
// Create an empty BindingElementCollection to populate,
// then create a custom binding from it.
BindingElementCollection outputBec = new BindingElementCollection();
// Create a SymmetricSecurityBindingElement.
SymmetricSecurityBindingElement ssbe =
new SymmetricSecurityBindingElement();
// Set the algorithm suite to one that uses 128-bit keys.
ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128;
// Set MessageProtectionOrder to SignBeforeEncrypt.
ssbe.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;
// Use a Kerberos token as the protection token.
ssbe.ProtectionTokenParameters = new KerberosSecurityTokenParameters();
// Add the SymmetricSecurityBindingElement to the BindingElementCollection.
outputBec.Add ( ssbe );
outputBec.Add(new TextMessageEncodingBindingElement());
outputBec.Add(new HttpTransportBindingElement());
// Create a CustomBinding and return it; otherwise, return null.
return new CustomBinding(outputBec);
}
Public Shared Function CreateCustomBinding() As Binding
' Create an empty BindingElementCollection to populate,
' then create a custom binding from it.
Dim outputBec As New BindingElementCollection()
' Create a SymmetricSecurityBindingElement.
Dim ssbe As New SymmetricSecurityBindingElement()
' Set the algorithm suite to one that uses 128-bit keys.
ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128
' Set MessageProtectionOrder to SignBeforeEncrypt.
ssbe.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt
' Use a Kerberos token as the protection token.
ssbe.ProtectionTokenParameters = New KerberosSecurityTokenParameters()
' Add the SymmetricSecurityBindingElement to the BindingElementCollection.
outputBec.Add(ssbe)
outputBec.Add(New TextMessageEncodingBindingElement())
outputBec.Add(New HttpTransportBindingElement())
' Create a CustomBinding and return it; otherwise, return null.
Return New CustomBinding(outputBec)
End Function
Комментарии
Это перечисление используется со свойством AsymmetricSecurityBindingElement.MessageProtectionOrderAsymmetricSecurityBindingElement класса и SymmetricSecurityBindingElement.MessageProtectionOrder свойством SymmetricSecurityBindingElement классов.
Если сообщение уязвимо для атаки дайджеста (например, если сообщение короткое или энтропия низко), следует использовать параметр SignBeforeEncryptAndEncryptSignature или EncryptBeforeSignature или EncryptBeforeSign. (Энтропия — это случайные данные, предоставляемые сервером, клиентом или обоими, и используются для создания общего ключа для шифрования и расшифровки данных.)
Что упорядочено?
WCF предлагает три различных уровня защиты, которые определяют, как сообщения защищены с помощью безопасности сообщений SOAP. Значение по умолчанию — SignBeforeEncryptAndEncryptSignature. Этот параметр сначала подписывает сообщение, шифрует текст сообщения, а затем шифрует XML-подпись. Это снижает вероятность успешной криптографической атаки на сигнатуру.
Однако использование по умолчанию влияет на производительность. В действительности существует компромисс производительности для повышения безопасности. Шифрование подписи может снизить производительность в диапазоне от 10 до 40 процентов. Если содержимое сообщения имеет низкое значение, а пропускная способность производительности является более значительной, используйте SignBeforeEncrypt. С помощью этого параметра дайджест подписи отправляется в виде ясного текста, поэтому сообщение более уязвимо для атак на атаки с низким энтропией.
Только пользовательские привязки
Для изменения MessageProtectionOrder свойства требуется создание пользовательской привязки безопасности. Дополнительные сведения о создании пользовательских привязок см. статью Создание User-Defined привязки. Дополнительные сведения о создании пользовательской привязки для определенного режима проверки подлинности см. в разделе "Практическое руководство. Создание securityBindingElement для указанного режима проверки подлинности".
Применяется к
См. также раздел
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Практическое руководство. Создание пользовательской привязки с помощью SecurityBindingElement
- Создание определяемых пользователем привязок и элементов привязки
- Практическое руководство. Создание securityBindingElement для указанного режима проверки подлинности
- Шифрование цифровых подписей