MessageProtectionOrder MessageProtectionOrder MessageProtectionOrder MessageProtectionOrder Enum

Definición

Especifica el orden de las operaciones que protegen un mensaje.Specifies the order of operations that protect a message.

public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder = 
Public Enum MessageProtectionOrder
Herencia
MessageProtectionOrderMessageProtectionOrderMessageProtectionOrderMessageProtectionOrder

Campos

EncryptBeforeSign EncryptBeforeSign EncryptBeforeSign EncryptBeforeSign 2

Especifica que se cifra el mensaje SOAP antes de que se genere una firma digital para el mensaje SOAP.Specifies that the SOAP message is encrypted before a digital signature is generated for the SOAP message.

SignBeforeEncrypt SignBeforeEncrypt SignBeforeEncrypt SignBeforeEncrypt 0

Especifica que una firma digital se genera para el mensaje SOAP antes de que se cifre cualquier parte del mensaje SOAP, pero no se cifra la firma digital.Specifies that a digital signature is generated for the SOAP message before any portion of the SOAP message is encrypted, but the digital signature is not encrypted.

SignBeforeEncryptAndEncryptSignature SignBeforeEncryptAndEncryptSignature SignBeforeEncryptAndEncryptSignature SignBeforeEncryptAndEncryptSignature 1

Especifica que una firma digital se genera para el mensaje SOAP antes de que se cifre cualquier parte del mensaje SOAP y se cifra la firma digital.Specifies that a digital signature is generated for the SOAP message before any portion of the SOAP message is encrypted, and the digital signature is encrypted.

Ejemplos

En el ejemplo siguiente se crea un SymmetricSecurityBindingElement elemento y establece su MessageProtectionOrder propiedad SignBeforeEncrypt.The following example creates a SymmetricSecurityBindingElement element and sets its MessageProtectionOrder property to 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 

Comentarios

Esta enumeración se utiliza junto con la propiedad AsymmetricSecurityBindingElement.MessageProtectionOrder de AsymmetricSecurityBindingElement y la propiedad de SymmetricSecurityBindingElement.MessageProtectionOrder las clases SymmetricSecurityBindingElement.This enumeration is used with the AsymmetricSecurityBindingElement.MessageProtectionOrder property of the AsymmetricSecurityBindingElement and the SymmetricSecurityBindingElement.MessageProtectionOrder property of the SymmetricSecurityBindingElement classes.

Si un mensaje es vulnerable a un ataque de resumen (por ejemplo, si el mensaje es corto o la entropía es baja), debe usar la opción SignBeforeEncryptAndEncryptSignature o EncryptBeforeSign.If a message is vulnerable to a digest attack (for example, if the message is short or the entropy is low), you should use the SignBeforeEncryptAndEncryptSignature or EncryptBeforeSign option. (Entropía son datos aleatorios proporcionados por un servidor, un cliente o ambos y se usa para crear una clave compartida para cifrar y descifrar datos.)(Entropy is random data provided by a server, a client, or both, and is used to create a shared key for encrypting and decrypting data.)

¿Qué se ordena?What Is Ordered?

WCF ofrece tres niveles de protección diferentes que determinan cómo los mensajes están protegidos mediante la seguridad de mensaje SOAP.WCF offers three different protection levels that determine how messages are secured using SOAP message security. El valor predeterminado es SignBeforeEncryptAndEncryptSignature.The default is SignBeforeEncryptAndEncryptSignature. Este valor firma primero el mensaje, cifra el cuerpo del mensaje y, a continuación, cifra la firma XML.This setting first signs the message, encrypts the message body, and then encrypts the XML signature. Esto reduce la probabilidad de un ataque de estimación criptográfico se realice con éxito contra la firma.This reduces the likelihood of a successful cryptographic guessing attack against the signature.

Sin embargo, utilizar el valor predeterminado tiene las implicaciones de rendimiento.However, using the default has performance implications. En efecto, hay un intercambio de rendimiento para aumentar la seguridad.In effect, there is a tradeoff of performance for increased security. Cifrar la firma puede disminuir el rendimiento entre un 10 y un 40 por ciento.Encrypting the signature can decrease performance between 10 percent and 40 percent. Si el contenido de datos del mensaje es de valor bajo, y de rendimiento es más importante, use SignBeforeEncrypt.If the data content of the message is of low value, and performance throughput is more significant, use SignBeforeEncrypt. Con este valor, el resumen de la firma se envía en texto no cifrado y así el mensaje es más vulnerable a los ataques suposición y comprobación de entropía baja.With this setting, the signature digest is sent in clear text, and thus the message is more vulnerable to guess-and-verify attacks on low entropy.

Solo enlaces personalizadosCustom Bindings Only

Para cambiar la propiedad MessageProtectionOrder se requiere la creación de un enlace de seguridad personalizado.To change the MessageProtectionOrder property requires the creation of a custom security binding. Para obtener más información acerca de cómo crear enlaces personalizados, consulte crear enlaces.For more information about creating custom bindings, see Creating User-Defined Bindings. Para obtener más información acerca de cómo crear un enlace personalizado para un modo de autenticación específicos, consulte Cómo: crear un SecurityBindingElement para un modo de autenticación especificado.For more information about creating a custom binding for a specific authentication mode, see How to: Create a SecurityBindingElement for a Specified Authentication Mode.

Se aplica a

Consulte también: