MessageProtectionOrder Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger ordningen på åtgärder som skyddar ett meddelande.
public enum class MessageProtectionOrder
public enum MessageProtectionOrder
type MessageProtectionOrder =
Public Enum MessageProtectionOrder
- Arv
Fält
| Name | Värde | Description |
|---|---|---|
| SignBeforeEncrypt | 0 | Anger att en digital signatur genereras för SOAP-meddelandet innan någon del av SOAP-meddelandet krypteras, men den digitala signaturen är inte krypterad. |
| SignBeforeEncryptAndEncryptSignature | 1 | Anger att en digital signatur genereras för SOAP-meddelandet innan någon del av SOAP-meddelandet krypteras och den digitala signaturen krypteras. |
| EncryptBeforeSign | 2 | Anger att SOAP-meddelandet krypteras innan en digital signatur genereras för SOAP-meddelandet. |
Exempel
I följande exempel skapas ett SymmetricSecurityBindingElement element och dess MessageProtectionOrder egenskap anges till 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
Kommentarer
Den här uppräkningen används med AsymmetricSecurityBindingElement.MessageProtectionOrder egenskapen AsymmetricSecurityBindingElement och SymmetricSecurityBindingElement.MessageProtectionOrder egenskapen för klasserna SymmetricSecurityBindingElement .
Om ett meddelande är sårbart för en sammandragsattack (till exempel om meddelandet är kort eller om entropin är låg) bör du använda alternativet SignBeforeEncryptAndEncryptSignature eller EncryptBeforeSign. (Entropi är slumpmässiga data som tillhandahålls av en server, en klient eller båda och används för att skapa en delad nyckel för kryptering och dekryptering av data.)
Vad är beställt?
WCF erbjuder tre olika skyddsnivåer som avgör hur meddelanden skyddas med hjälp av SOAP-meddelandesäkerhet. Standardvärdet är SignBeforeEncryptAndEncryptSignature. Den här inställningen signerar först meddelandet, krypterar meddelandetexten och krypterar sedan XML-signaturen. Detta minskar sannolikheten för en lyckad kryptografisk gissningsattack mot signaturen.
Att använda standardvärdet har dock prestandakonsekvenser. I själva verket finns det en kompromiss med prestanda för ökad säkerhet. Kryptering av signaturen kan minska prestandan mellan 10 och 40 procent. Om meddelandets datainnehåll har ett lågt värde och prestandadataflödet är större använder du SignBeforeEncrypt. Med den här inställningen skickas signatursammandraget i klartext, och därför är meddelandet mer sårbart för gissnings- och verifieringsattacker vid låg entropi.
Endast anpassade bindningar
Om du vill ändra MessageProtectionOrder egenskapen måste du skapa en anpassad säkerhetsbindning. Mer information om hur du skapar anpassade bindningar finns i Skapa User-Defined bindningar. Mer information om hur du skapar en anpassad bindning för ett specifikt autentiseringsläge finns i Så här skapar du ett SecurityBindingElement för ett angivet autentiseringsläge.
Gäller för
Se även
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Anvisningar: Skapa en anpassad bindning med securityBindingElement
- Skapa användardefinierade bindningar och bindningselement
- Anvisningar: Skapa ett SecurityBindingElement för ett angivet autentiseringsläge
- Kryptering av digitala signaturer