MessageProtectionOrder MessageProtectionOrder MessageProtectionOrder MessageProtectionOrder Enum

Definition

Gibt die Reihenfolge der Vorgänge an, mit denen eine Nachricht geschützt wird.Specifies the order of operations that protect a message.

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

Felder

EncryptBeforeSign EncryptBeforeSign EncryptBeforeSign EncryptBeforeSign 2

Gibt an, dass die SOAP-Nachricht verschlüsselt wird, bevor eine digitale Signatur für die SOAP-Nachricht generiert wird.Specifies that the SOAP message is encrypted before a digital signature is generated for the SOAP message.

SignBeforeEncrypt SignBeforeEncrypt SignBeforeEncrypt SignBeforeEncrypt 0

Gibt an, dass eine digitale Signatur für die SOAP-Nachricht generiert wird, bevor ein Teil der SOAP-Nachricht verschlüsselt wird; die digitale Signatur wird jedoch nicht verschlüsselt.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

Gibt an, dass eine digitale Signatur für die SOAP-Nachricht generiert wird, bevor ein Teil der SOAP-Nachricht verschlüsselt wird; die digitale Signatur wird verschlüsselt.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.

Beispiele

Im folgenden Beispiel wird ein SymmetricSecurityBindingElement -Element erstellt und MessageProtectionOrder dessen-Eigenschaft auf signbeforeverschlüsseln festgelegt.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 

Hinweise

Diese Enumeration wird in Verbindung mit der AsymmetricSecurityBindingElement.MessageProtectionOrder-Eigenschaft vom AsymmetricSecurityBindingElement und der SymmetricSecurityBindingElement.MessageProtectionOrder-Eigenschaft der SymmetricSecurityBindingElement-Klassen verwendet.This enumeration is used with the AsymmetricSecurityBindingElement.MessageProtectionOrder property of the AsymmetricSecurityBindingElement and the SymmetricSecurityBindingElement.MessageProtectionOrder property of the SymmetricSecurityBindingElement classes.

Wenn eine Nachricht anfällig für einen Digest-Angriff ist (z. b. wenn die Nachricht kurz oder die Entropie niedrig ist), sollten Sie die Option signbeforeverschlüsseltandverschlüsseltsignature oder verschlüsseltbeforesign verwenden.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. (Entropie ist Zufallsdaten, die von einem Server, einem Client oder beidem bereitgestellt werden, und wird zum Erstellen eines gemeinsam verwendeten Schlüssels zum Verschlüsseln und Entschlüsseln von Daten verwendet.)(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.)

Was passiert?What Is Ordered?

WCF bietet drei verschiedene Schutz Ebenen, die bestimmen, wie Nachrichten mithilfe der SOAP-Nachrichten Sicherheit gesichert werden.WCF offers three different protection levels that determine how messages are secured using SOAP message security. Der Standardwert ist signbeforeverschlüsseltandverschlüsseltsignature.The default is SignBeforeEncryptAndEncryptSignature. Mit dieser Einstellung wird zuerst die Nachricht signiert, der Nachrichtentext verschlüsselt und dann die XML-Signatur verschlüsselt.This setting first signs the message, encrypts the message body, and then encrypts the XML signature. Dies reduziert die Wahrscheinlichkeit für einen Angriff auf die Signatur durch Erraten der Verschlüsselung.This reduces the likelihood of a successful cryptographic guessing attack against the signature.

Bei Verwendung der Standardeinstellung ist aber mit Auswirkungen auf die Leistung zu rechnen.However, using the default has performance implications. Eine erhöhte Sicherheit führt in der Regel zu geringerer Leistung.In effect, there is a tradeoff of performance for increased security. Durch die Verschlüsselung der Signatur kann die Leistung um 10 bis 40 Prozent sinken.Encrypting the signature can decrease performance between 10 percent and 40 percent. Wenn der Dateninhalt der Nachricht einen niedrigen Wert hat und der Leistungs Durchsatz signifikanter ist, verwenden Sie signbeforeverschlüsseln.If the data content of the message is of low value, and performance throughput is more significant, use SignBeforeEncrypt. Bei dieser Einstellung wird der Signaturhashwert in Klartext gesendet, weswegen die Nachricht bei geringer Entropie anfälliger gegenüber Guess-and-Verify-Angriffen (Raten und Überprüfen) ist.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.

Nur benutzerdefinierte BindungenCustom Bindings Only

Um die MessageProtectionOrder-Eigenschaft zu ändern, ist die Erstellung einer benutzerdefinierten Sicherheitsbindung erforderlich.To change the MessageProtectionOrder property requires the creation of a custom security binding. Weitere Informationen zum Erstellen benutzerdefinierter Bindungen finden Sie unter Erstellen benutzerdefinierter Bindungen.For more information about creating custom bindings, see Creating User-Defined Bindings. Weitere Informationen zum Erstellen einer benutzerdefinierten Bindung für einen bestimmten Authentifizierungsmodus finden Sie unter Gewusst wie: Erstellen Sie ein SecurityBindingElement für einen angegebenen AuthentifizierungsModus.For more information about creating a custom binding for a specific authentication mode, see How to: Create a SecurityBindingElement for a Specified Authentication Mode.

Gilt für:

Siehe auch