MessageProtectionOrder Enum

Definitie

Hiermee geeft u de volgorde op van bewerkingen die een bericht beveiligen.

public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder = 
Public Enum MessageProtectionOrder
Overname
MessageProtectionOrder

Velden

Name Waarde Description
SignBeforeEncrypt 0

Hiermee geeft u op dat er een digitale handtekening wordt gegenereerd voor het SOAP-bericht voordat een deel van het SOAP-bericht wordt versleuteld, maar de digitale handtekening niet is versleuteld.

SignBeforeEncryptAndEncryptSignature 1

Hiermee geeft u op dat er een digitale handtekening wordt gegenereerd voor het SOAP-bericht voordat een deel van het SOAP-bericht wordt versleuteld en dat de digitale handtekening wordt versleuteld.

EncryptBeforeSign 2

Hiermee geeft u op dat het SOAP-bericht wordt versleuteld voordat een digitale handtekening wordt gegenereerd voor het SOAP-bericht.

Voorbeelden

In het volgende voorbeeld wordt een SymmetricSecurityBindingElement element gemaakt en wordt de eigenschap ervan ingesteld MessageProtectionOrder op 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

Opmerkingen

Deze opsomming wordt gebruikt met de AsymmetricSecurityBindingElement.MessageProtectionOrder eigenschap van de AsymmetricSecurityBindingElement en de SymmetricSecurityBindingElement.MessageProtectionOrder eigenschap van de SymmetricSecurityBindingElement klassen.

Als een bericht kwetsbaar is voor een digest-aanval (bijvoorbeeld als het bericht kort is of de entropie laag is), moet u de optie SignBeforeEncryptAndEncryptSignature of EncryptBeforeSign gebruiken. (Entropie is willekeurige gegevens die worden geleverd door een server, een client of beide, en wordt gebruikt om een gedeelde sleutel te maken voor het versleutelen en ontsleutelen van gegevens.)

Wat is besteld?

WCF biedt drie verschillende beveiligingsniveaus die bepalen hoe berichten worden beveiligd met SOAP-berichtbeveiliging. De standaardwaarde is SignBeforeEncryptAndEncryptSignature. Deze instelling ondertekent eerst het bericht, versleutelt de hoofdtekst van het bericht en versleutelt vervolgens de XML-handtekening. Dit vermindert de kans op een geslaagde cryptografische schattingsaanval op de handtekening.

Het gebruik van de standaardwaarde heeft echter gevolgen voor de prestaties. In feite is er sprake van een compromis tussen prestaties voor een betere beveiliging. Door de handtekening te versleutelen, kunnen de prestaties tussen 10 en 40 procent afnemen. Als de gegevensinhoud van het bericht een lage waarde heeft en de doorvoer van de prestaties belangrijker is, gebruikt u SignBeforeEncrypt. Met deze instelling wordt de handtekeningsamenvating verzonden in duidelijke tekst en is het bericht dus kwetsbaarder voor aanvallen met een lage entropie.

Alleen aangepaste bindingen

Als u de MessageProtectionOrder eigenschap wilt wijzigen, moet u een aangepaste beveiligingsbinding maken. Zie User-Defined Bindingen maken voor meer informatie over het maken van aangepaste bindingen. Raadpleeg Een SecurityBindingElement maken voor een opgegeven verificatiemodus voor meer informatie over het maken van een aangepaste binding voor een specifieke verificatiemodus.

Van toepassing op

Zie ook