Dela via


Gör så här: Inaktivera kryptering av digitala signaturer

Som standard signeras ett meddelande och signaturen krypteras digitalt. Detta styrs genom att skapa en anpassad bindning med en instans av AsymmetricSecurityBindingElement eller SymmetricSecurityBindingElement och ställa in egenskapen för någon av klasserna MessageProtectionOrder till ett MessageProtectionOrder uppräkningsvärde. Standardvärdet är SignBeforeEncryptAndEncryptSignature. Den här processen förbrukar upp till 30 procent mer tid än att bara signera och kryptera baserat på den totala meddelandestorleken (ju mindre meddelande desto större prestandapåverkan). Om du inaktiverar kryptering av signaturen kan en angripare gissa innehållet i meddelandet. Detta är möjligt eftersom signaturelementet innehåller hash-koden för oformaterad text för varje signerad del i meddelandet. Även om meddelandetexten till exempel är krypterad som standard innehåller den okrypterade signaturen hash-koden för meddelandetexten före krypteringen. Om uppsättningen med möjliga värden för den signerade och krypterade delen är liten kanske en angripare kan härleda innehållet genom att titta på hash-värdet. Kryptering av signaturen minimerar den här attackvektorn.

Inaktivera därför endast kryptering av signaturen när värdet för innehållet är lågt eller om uppsättningen med möjliga innehållsvärden är stor och nondeterministisk, och prestandavinsten är viktigare än att mildra attacken som beskrivs ovan.

Kommentar

Om det inte finns något i meddelandet som är krypterat krypteras inte signaturelementet, även när AsymmetricSecurityBindingElement.MessageProtectionOrder egenskapen eller SymmetricSecurityBindingElement.MessageProtectionOrder är inställd på SignBeforeEncryptAndEncryptSignature. Det här beteendet inträffar även med bindningar som tillhandahålls av systemet. Alla bindningar som tillhandahålls av systemet har meddelandeskyddsordningen inställd på SignBeforeEncryptAndEncryptSignature. WSDL-WCF-genereringen (Web Services Description Language) innehåller dock fortfarande försäkran <sp:EncryptSignature> .

Inaktivera digital signering

  1. Skapa en CustomBinding. Mer information finns i How to: Create a Custom Binding Using the SecurityBindingElement (Skapa en anpassad bindning med securityBindingElement).

  2. Lägg till antingen en AsymmetricSecurityBindingElement eller en SymmetricSecurityBindingElement i bindningssamlingen.

  3. AsymmetricSecurityBindingElement.MessageProtectionOrder Ange egenskapen till SignBeforeEncrypteller ange SymmetricSecurityBindingElement.MessageProtectionOrder egenskapen till SignBeforeEncrypt.

Se även