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

EncryptBeforeSign 2

Určuje, že zpráva SOAP je zašifrována před vygenerovaným digitálním podpisem pro zprávu SOAP.

SignBeforeEncrypt 0

Určuje, že před zašifrování jakékoli části zprávy SOAP je vygenerován digitální podpis pro zprávu SOAP, ale digitální podpis není zašifrován.

SignBeforeEncryptAndEncryptSignature 1

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

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 vlastnosti SymmetricSecurityBindingElement tříd.

Pokud je zpráva zranitelná vůči útoku digest (například pokud je zpráva krátká nebo je nízká entropie), měli byste použít signBeforeEncryptAndEncryptSignature nebo EncryptBeforeSign možnost. (Entropie jsou náhodná data poskytovaná serverem, klientem nebo obojím a používají se 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í způsob zabezpečení zpráv pomocí protokolu SOAP. Výchozí hodnota je SignBeforeEncryptAndEncryptSignature. Toto nastavení nejprve podepíše zprávu, zašifruje text zprávy a pak zašifruje podpis XML. Tím se snižuje pravděpodobnost úspěšného útoku kryptografického odhadu na podpis.

Použití výchozího nastavení má ale vliv na výkon. V důsledku toho existuje kompromis mezi výkonem, který zvyšuje zabezpečení. Šifrování podpisu může snížit výkon mezi 10 a 40 procenty. Pokud je datový obsah zprávy nízký a propustnost výkonu je významnější, použijte SignBeforeEncrypt. Při tomto nastavení se hodnota hash podpisu odesílá jako prostý text, a proto je zpráva zranitelnější vůči útokům na hádání a ověřování s nízkou entropií.

Pouze vlastní vazby

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

Platí pro

Viz také