Compartir a través de


Cifrado de firmas digitales

De forma predeterminada, un mensaje se cifra y se firma y la firma se cifra digitalmente. Puede controlar esto creando un enlace personalizado con una instancia de AsymmetricSecurityBindingElement o SymmetricSecurityBindingElement y estableciendo la propiedad MessageProtectionOrder de cualquier clase en un valor de enumeración MessageProtectionOrder. El valor predeterminado es SignBeforeEncryptAndEncryptSignature. Este proceso tarda entre un 10 y un 40 por ciento más que la simple firma y cifrado. Deshabilitar el cifrado de la firma, sin embargo, puede permitir a un atacante adivinar el contenido del mensaje. Esto es posible porque el elemento de firma contiene el código hash del texto sin formato de cada parte firmada en el mensaje. Por ejemplo, aunque se cifra el cuerpo del mensaje de forma predeterminada, la firma no cifrada contiene el código hash del cuerpo del mensaje. Si el mensaje es pequeño, un atacante podría ser capaz de deducir el contenido. Cifrar la firma reduce o elimina esta posibilidad.

Por consiguiente, sólo deshabilite el cifrado de la firma cuando el valor del contenido sea bajo y el aumento de rendimiento significativo, por ejemplo, al enviar archivos binarios de gran tamaño que no tienen implicaciones de seguridad.

Para deshabilitar la firma digital

  1. Cree un objeto CustomBinding. Para obtener más información, consulte Cómo: Crear un enlace personalizado mediante SecurityBindingElement.

  2. Agregue AsymmetricSecurityBindingElement o SymmetricSecurityBindingElement a la colección de enlaces.

  3. Defina la propiedad System.ServiceModel.Channels.AsymmetricSecurityBindingElement.MessageProtectionOrder en SignBeforeEncrypt o defina la propiedad System.ServiceModel.Channels.SymmetricSecurityBindingElement.MessageProtectionOrder en SignBeforeEncrypt.

Para obtener más información acerca de crear enlaces predeterminados, vea Creación de enlaces definidos por el usuario. Para obtener más información acerca de crear un enlace predeterminado para un modo de autenticación concreto, vea Cómo: Crear un SecurityBindingElement para un modo de autenticación especificado.

Consulte también

Tareas

Cómo: Crear un SecurityBindingElement para un modo de autenticación especificado

Referencia

MessageProtectionOrder
AsymmetricSecurityBindingElement
SymmetricSecurityBindingElement

Conceptos

Cómo: Crear un enlace personalizado mediante SecurityBindingElement
Creación de enlaces definidos por el usuario