Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
De forma predeterminada, se firma un mensaje y la firma está cifrada digitalmente. Esto se controla mediante la creación de un enlace personalizado con una instancia de AsymmetricSecurityBindingElement o SymmetricSecurityBindingElement y estableciendo la propiedad MessageProtectionOrder de cualquiera de las clases a un valor de enumeración MessageProtectionOrder. El valor predeterminado es SignBeforeEncryptAndEncryptSignature. Este proceso consume hasta un 30 % más de tiempo que simplemente firmar y cifrar en función del tamaño general del mensaje (cuanto menor sea el mensaje, mayor será el impacto en el rendimiento). Sin embargo, deshabilitar el cifrado de la firma podría permitir a un atacante adivinar el contenido del mensaje. Esto es posible porque el elemento signature contiene el código hash del texto sin formato de cada parte firmada del mensaje. Por ejemplo, aunque el cuerpo del mensaje se cifra de forma predeterminada, la firma sin cifrar contiene el código hash del cuerpo del mensaje antes del cifrado. Si el conjunto de valores posibles para la parte firmada y cifrada es pequeño, es posible que un atacante pueda deducir el contenido examinando el valor hash. El cifrado de la firma mitiga este vector de ataque.
Por lo tanto, deshabilite el cifrado de la firma solo cuando el valor del contenido sea bajo o el conjunto de valores de contenido posibles sea grande y no determinista, y la ganancia de rendimiento es más importante que mitigar el ataque descrito anteriormente.
Nota:
Si no hay nada cifrado en el mensaje, el elemento de firma no se cifra, incluso cuando la propiedad AsymmetricSecurityBindingElement.MessageProtectionOrder o SymmetricSecurityBindingElement.MessageProtectionOrder está configurada en SignBeforeEncryptAndEncryptSignature. Este comportamiento se produce incluso con enlaces proporcionados por el sistema; todos los enlaces proporcionados por el sistema tienen el orden de protección de mensajes establecido en SignBeforeEncryptAndEncryptSignature. Sin embargo, el Lenguaje de Descripción de Servicios Web (WSDL) que WCF genera, seguirá conteniendo la aserción <sp:EncryptSignature>.
Para deshabilitar la firma digital
Crear un control CustomBinding. Para obtener más información, consulte Cómo: Crear un enlace personalizado utilizando el SecurityBindingElement.
Agregue AsymmetricSecurityBindingElement o SymmetricSecurityBindingElement a la colección de enlaces.
Establezca la propiedad AsymmetricSecurityBindingElement.MessageProtectionOrder en SignBeforeEncrypt, o establezca la propiedad SymmetricSecurityBindingElement.MessageProtectionOrder en SignBeforeEncrypt.