MessageProtectionOrder Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica a ordem das operações que protege uma mensagem.
public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder =
Public Enum MessageProtectionOrder
- Herança
Campos
EncryptBeforeSign | 2 | Especifica que a mensagem SOAP é criptografada antes que uma assinatura digital seja gerada para a mensagem SOAP. |
SignBeforeEncrypt | 0 | Especifica que uma assinatura digital é gerada para a mensagem SOAP antes que qualquer parte da mensagem SOAP seja criptografada, mas a assinatura digital não é criptografada. |
SignBeforeEncryptAndEncryptSignature | 1 | Especifica que uma assinatura digital é gerada para a mensagem SOAP antes que qualquer parte da mensagem SOAP seja criptografada e a assinatura digital é criptografada. |
Exemplos
O exemplo a seguir cria um SymmetricSecurityBindingElement elemento e define sua MessageProtectionOrder propriedade como 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
Comentários
Essa enumeração é usada com a AsymmetricSecurityBindingElement.MessageProtectionOrder propriedade e a AsymmetricSecurityBindingElement SymmetricSecurityBindingElement.MessageProtectionOrder propriedade das SymmetricSecurityBindingElement classes.
Se uma mensagem estiver vulnerável a um ataque digest (por exemplo, se a mensagem for curta ou a entropia estiver baixa), você deverá usar a opção SignBeforeEncryptAndEncryptSignature ou EncryptBeforeSign. (A entropia é dados aleatórios fornecidos por um servidor, um cliente ou ambos e é usada para criar uma chave compartilhada para criptografar e descriptografar dados.)
O que é ordenado?
O WCF oferece três níveis de proteção diferentes que determinam como as mensagens são protegidas usando a segurança da mensagem SOAP. O padrão é SignBeforeEncryptAndEncryptSignature. Essa configuração primeiro assina a mensagem, criptografa o corpo da mensagem e, em seguida, criptografa a assinatura XML. Isso 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 verdade, há uma compensação do desempenho para aumentar a segurança. Criptografar a assinatura pode diminuir o desempenho entre 10% e 40%. Se o conteúdo dos dados da mensagem for de baixo valor e a taxa de transferência de desempenho for mais significativa, use SignBeforeEncrypt. Com essa configuração, o resumo da assinatura é enviado em texto claro e, portanto, a mensagem é mais vulnerável a ataques de adivinhação e verificação em baixa entropia.
Somente associações personalizadas
Para alterar a MessageProtectionOrder
propriedade, é necessário criar uma associação de segurança personalizada. Para obter mais informações sobre como criar associações personalizadas, consulte Criando associações de 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
Confira também
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Como criar uma associação personalizada usando o SecurityBindingElement
- Criando associações definidas pelo usuário e elementos de associação
- Como criar um SecurityBindingElement para um modo de autenticação especificado
- Criptografia de assinaturas digitais