MessageProtectionOrder Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Especifica a ordem das operações que protegem uma mensagem.
public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder =
Public Enum MessageProtectionOrder
- Herança
Campos
| Name | Valor | Description |
|---|---|---|
| SignBeforeEncrypt | 0 | Especifica que uma assinatura digital é gerada para a mensagem SOAP antes de qualquer parte da mensagem SOAP ser encriptada, mas a assinatura digital não é encriptada. |
| SignBeforeEncryptAndEncryptSignature | 1 | Especifica que uma assinatura digital é gerada para a mensagem SOAP antes de qualquer parte da mensagem SOAP ser encriptada, e a assinatura digital é encriptada. |
| EncryptBeforeSign | 2 | Especifica que a mensagem SOAP é encriptada antes de ser gerada uma assinatura digital para a mensagem SOAP. |
Exemplos
O exemplo seguinte cria um SymmetricSecurityBindingElement elemento e define a sua MessageProtectionOrder propriedade para 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
Observações
Esta enumeração é usada com a AsymmetricSecurityBindingElement.MessageProtectionOrder propriedade de e AsymmetricSecurityBindingElement a SymmetricSecurityBindingElement.MessageProtectionOrder propriedade das SymmetricSecurityBindingElement classes.
Se uma mensagem for vulnerável a um ataque digest (por exemplo, se a mensagem for curta ou a entropia for baixa), deve usar a opção SignBeforeEncryptAndEncryptSignature ou EncryptBeforeSign. (Entropia são dados aleatórios fornecidos por um servidor, um cliente ou ambos, e são usados para criar uma chave partilhada para encriptar e desencriptar dados.)
O que é pedido?
O WCF oferece três níveis de proteção diferentes que determinam como as mensagens são protegidas utilizando a segurança das mensagens SOAP. O padrão é SignBeforeEncryptAndEncryptAndEncryptSignature. Esta configuração assina primeiro a mensagem, encripta o corpo da mensagem e depois encripta a assinatura XML. Isto reduz a probabilidade de um ataque de adivinhação criptográfica bem-sucedido contra a assinatura.
No entanto, usar o padrão tem implicações de desempenho. Na prática, há um compromisso entre desempenho e maior segurança. A encriptação da assinatura pode diminuir o desempenho entre 10 por cento e 40 por cento. Se o conteúdo dos dados da mensagem for de baixo valor e o rendimento de desempenho for mais significativo, use o SignBeforeEncrypt. Com esta definição, o resumo da assinatura é enviado em texto claro, tornando assim a mensagem mais vulnerável a ataques de adivinhação e verificação com baixa entropia.
Apenas Encadernações Personalizadas
Para alterar a MessageProtectionOrder propriedade, é necessário criar uma ligação de segurança personalizada. Para obter mais informações sobre como criar associações personalizadas, consulte Criando ligações User-Defined. Para obter mais informações sobre como criar uma associação personalizada para um modo de autenticação específico, consulte Como criar um SecurityBindingElement para um modo de autenticação especificado.
Aplica-se a
Ver também
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Como: Criar um Binding Personalizado Usando o SecurityBindingElement
- Criação de Ligações e Elementos de Ligação Definidos pelo Utilizador
- Como: Criar um SecurityBindingElement para um Modo de Autenticação Especificado
- Encriptação de Assinaturas Digitais