Procedure: Versleuteling van digitale handtekeningen uitschakelen
Standaard wordt een bericht ondertekend en wordt de handtekening digitaal versleuteld. Dit wordt bepaald door een aangepaste binding te maken met een exemplaar van de AsymmetricSecurityBindingElement of de SymmetricSecurityBindingElement eigenschap van een klasse in te stellen MessageProtectionOrder
op een MessageProtectionOrder opsommingswaarde. De standaardwaarde is SignBeforeEncryptAndEncryptSignature. Dit proces verbruikt maximaal 30 procent meer tijd dan alleen ondertekenen en versleutelen op basis van de totale berichtgrootte (hoe kleiner het bericht, hoe groter de impact op de prestaties). Als u versleuteling van de handtekening uitschakelt, kan een aanvaller echter de inhoud van het bericht raden. Dit is mogelijk omdat het handtekeningelement de hashcode bevat van de tekst zonder opmaak van elk ondertekend onderdeel in het bericht. Hoewel de hoofdtekst van het bericht bijvoorbeeld standaard is versleuteld, bevat de niet-versleutelde handtekening de hashcode van de berichttekst vóór de versleuteling. Als de set mogelijke waarden voor het ondertekende en versleutelde onderdeel klein is, kan een aanvaller de inhoud mogelijk afleiden door de hashwaarde te bekijken. Door de handtekening te versleutelen, wordt deze aanvalsvector beperkt.
Schakel daarom de versleuteling van de handtekening alleen uit wanneer de waarde van de inhoud laag is of de set mogelijke inhoudswaarden groot en niet-deterministisch is en de prestatiewinst belangrijker is dan het beperken van de hierboven beschreven aanval.
Notitie
Als er niets in het bericht staat dat is versleuteld, wordt het handtekeningelement niet versleuteld, zelfs niet wanneer de AsymmetricSecurityBindingElement.MessageProtectionOrder eigenschap SymmetricSecurityBindingElement.MessageProtectionOrder is ingesteld op SignBeforeEncryptAndEncryptSignature. Dit gedrag treedt zelfs op bij door het systeem geleverde bindingen; voor alle door het systeem geleverde bindingen is de berichtbeveiligingsvolgorde ingesteld op SignBeforeEncryptAndEncryptSignature
. WSDL (Web Services Description Language) WCF genereert echter nog steeds de <sp:EncryptSignature>
assertie.
Digitale ondertekening uitschakelen
Maak een CustomBinding. Zie Instructies voor meer informatie : Een aangepaste binding maken met behulp van securityBindingElement.
Voeg een AsymmetricSecurityBindingElement of a SymmetricSecurityBindingElement toe aan de bindingverzameling.
Stel de AsymmetricSecurityBindingElement.MessageProtectionOrder eigenschap in op SignBeforeEncrypt, of stel de SymmetricSecurityBindingElement.MessageProtectionOrder eigenschap in op SignBeforeEncrypt.