Sdílet prostřednictvím


MessageProtectionOrder Výčet

Definice

Určuje pořadí operací, které chrání zprávu.

public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder = 
Public Enum MessageProtectionOrder
Dědičnost
MessageProtectionOrder

Pole

Name Hodnota Description
SignBeforeEncrypt 0

Určuje, že se digitální podpis vygeneruje pro zprávu SOAP před šifrováním jakékoli části zprávy SOAP, ale digitální podpis není šifrovaný.

SignBeforeEncryptAndEncryptSignature 1

Určuje, že se digitální podpis vygeneruje pro zprávu SOAP před zašifrovanými částmi zprávy SOAP a digitální podpis se zašifruje.

EncryptBeforeSign 2

Určuje, že zpráva SOAP je zašifrována před vygenerování digitálního podpisu pro zprávu SOAP.

Příklady

Následující příklad vytvoří SymmetricSecurityBindingElement element a nastaví jeho MessageProtectionOrder vlastnost 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

Poznámky

Tento výčet se používá s AsymmetricSecurityBindingElement.MessageProtectionOrder vlastností AsymmetricSecurityBindingElement a SymmetricSecurityBindingElement.MessageProtectionOrder vlastností SymmetricSecurityBindingElement tříd.

Pokud je zpráva ohrožená útokem digest (například pokud je zpráva krátká nebo entropie je nízká), měli byste použít možnost SignBeforeEncryptAndEncryptAndEncryptSignature nebo EncryptBeforeSign. (Entropie je náhodná data poskytovaná serverem, klientem nebo obojím a slouží k vytvoření sdíleného klíče pro šifrování a dešifrování dat.)

Co je objednáno?

WCF nabízí tři různé úrovně ochrany, které určují, jak jsou zprávy zabezpečené pomocí zabezpečení zpráv SOAP. Výchozí hodnota je SignBeforeEncryptAndEncryptSignature. Toto nastavení nejprve podepíše zprávu, zašifruje text zprávy a pak zašifruje podpis XML. To snižuje pravděpodobnost úspěšného kryptografického odhadu útoku na podpis.

Použití výchozího nastavení má ale vliv na výkon. V důsledku toho existuje kompromis mezi výkonem pro zvýšení zabezpečení. Šifrování podpisu může snížit výkon mezi 10 a 40 procenty. Pokud datový obsah zprávy má nízkou hodnotu a propustnost výkonu je důležitější, použijte SignBeforeEncrypt. Při tomto nastavení se hodnota hash podpisu odešle v prostém textu, a proto je zpráva zranitelnější vůči útokům s nízkými entropii.

Pouze vlastní vazby

MessageProtectionOrder Změna vlastnosti vyžaduje vytvoření vlastní vazby zabezpečení. Další informace o vytváření vlastních vazeb naleznete v tématu Vytváření User-Defined vazeb. Další informace o vytvoření vlastní vazby pro konkrétní režim ověřování naleznete v tématu Postupy: Vytvoření SecurityBindingElement pro zadaný režim ověřování.

Platí pro

Viz také