MessageProtectionOrder MessageProtectionOrder MessageProtectionOrder MessageProtectionOrder Enum

Definizione

Specifica l'ordine delle operazioni che proteggono un messaggio.Specifies the order of operations that protect a message.

public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder = 
Public Enum MessageProtectionOrder
Ereditarietà
MessageProtectionOrderMessageProtectionOrderMessageProtectionOrderMessageProtectionOrder

Campi

EncryptBeforeSign EncryptBeforeSign EncryptBeforeSign EncryptBeforeSign 2

Specifica che il messaggio SOAP è crittografato prima che venga generata una firma digitale per il messaggio SOAP.Specifies that the SOAP message is encrypted before a digital signature is generated for the SOAP message.

SignBeforeEncrypt SignBeforeEncrypt SignBeforeEncrypt SignBeforeEncrypt 0

Specifica che la firma digitale per il messaggio SOAP viene generata prima che qualsiasi parte del messaggio SOAP venga crittografata, ma che la firma digitale non viene crittografata.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

Specifica che la firma digitale per il messaggio SOAP viene generata prima che qualsiasi parte del messaggio SOAP venga crittografata e la firma digitale viene crittografata.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.

Esempi

L'esempio seguente crea una SymmetricSecurityBindingElement elemento e i set relativo MessageProtectionOrder proprietà 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 

Commenti

Questa enumerazione viene utilizzata con la proprietà AsymmetricSecurityBindingElement.MessageProtectionOrder della classe AsymmetricSecurityBindingElement e la proprietà SymmetricSecurityBindingElement.MessageProtectionOrder della classe SymmetricSecurityBindingElement.This enumeration is used with the AsymmetricSecurityBindingElement.MessageProtectionOrder property of the AsymmetricSecurityBindingElement and the SymmetricSecurityBindingElement.MessageProtectionOrder property of the SymmetricSecurityBindingElement classes.

Se un messaggio è vulnerabile a un attacco del digest (ad esempio, se il messaggio è corto o l'entropia è bassa), è consigliabile utilizzare l'opzione 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. (Entropia è dati casuali forniti da un server, un client o entrambe e viene usato per creare una chiave condivisa per crittografare e decrittografare i dati.)(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.)

Informazioni sull'ordinamentoWhat Is Ordered?

WCF offre tre diversi livelli di protezione che determinano il modo in cui i messaggi vengono protetti utilizzando sicurezza del messaggio SOAP.WCF offers three different protection levels that determine how messages are secured using SOAP message security. Il valore predefinito è SignBeforeEncryptAndEncryptSignature.The default is SignBeforeEncryptAndEncryptSignature. Questa impostazione firma il messaggio, crittografa il corpo del messaggio e quindi crittografa la firma XML.This setting first signs the message, encrypts the message body, and then encrypts the XML signature. In questo modo è possibile ridurre la probabilità di successo di un attacco basato su tentativi di decrittografare la firma.This reduces the likelihood of a successful cryptographic guessing attack against the signature.

Tuttavia, l'utilizzo dell'impostazione predefinita comporta implicazioni sulla prestazione.However, using the default has performance implications. Di fatto, aumentando la sicurezza, diminuiscono le prestazioni.In effect, there is a tradeoff of performance for increased security. Crittografando la firma è possibile che le prestazioni vengano ridotte di un valore compreso tra il 10 percento e il 40 percento.Encrypting the signature can decrease performance between 10 percent and 40 percent. Se il contenuto dei dati del messaggio è del valore bassa e velocità effettiva delle prestazioni è più significativa, usare SignBeforeEncrypt.If the data content of the message is of low value, and performance throughput is more significant, use SignBeforeEncrypt. Con questa impostazione, il digest della firma viene inviato come testo non crittografato e il messaggio è più vulnerabile agli attacchi basati su tentativi e verifiche con l'entropia bassa.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 associazioni personalizzateCustom Bindings Only

Per modificare la proprietà MessageProtectionOrder è necessario creare un'associazione di sicurezza personalizzata.To change the MessageProtectionOrder property requires the creation of a custom security binding. Per altre informazioni sulla creazione di associazioni personalizzate, vedere associazioni Creating User-Defined.For more information about creating custom bindings, see Creating User-Defined Bindings. Per altre informazioni sulla creazione di un'associazione personalizzata per una modalità di autenticazione specifica, vedere procedura: creare un elemento SecurityBindingElement per una modalità di autenticazione specificato.For more information about creating a custom binding for a specific authentication mode, see How to: Create a SecurityBindingElement for a Specified Authentication Mode.

Si applica a

Vedi anche