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 del mensaje firmada. 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, solo 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
Crear un control CustomBinding. Para obtener más información, consulte Procedimiento para crear un enlace personalizado mediante 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.
Para obtener más información sobre cómo crear enlaces personalizados, consulte Creación de enlaces definidos por el usuario. Para obtener más información sobre cómo crear un enlace personalizado para un modo de autenticación específico, consulte Procedimiento para crear un SecurityBindingElement para un modo de autenticación especificado.
Consulte también
- MessageProtectionOrder
- AsymmetricSecurityBindingElement
- SymmetricSecurityBindingElement
- Procedimiento para crear un enlace personalizado mediante SecurityBindingElement
- Creación de enlaces definidos por el usuario
- Procedimiento para crear un SecurityBindingElement para un modo de autenticación especificado