Criptografia de assinaturas digitais

Por padrão, uma mensagem é assinada e criptografada e a assinatura é criptografada digitalmente. Você pode controlar isso criando uma associação personalizada com uma instância de AsymmetricSecurityBindingElement ou SymmetricSecurityBindingElement e, em seguida, definindo a propriedade MessageProtectionOrder de qualquer classe como um valor de enumeração MessageProtectionOrder. O padrão é SignBeforeEncryptAndEncryptSignature. Esse processo leva de 10 a 40 por cento mais do que simplesmente assinar e criptografar. A desativação da criptografia da assinatura, no entanto, pode permitir que um invasor adivinhe o conteúdo da mensagem. Isso é possível porque o elemento de assinatura contém o código hash do texto sem formatação de cada parte assinada na mensagem. Por exemplo, embora o corpo da mensagem seja criptografado por padrão, a assinatura não criptografada contém o código hash do corpo da mensagem. Se a mensagem for pequena, um invasor poderá deduzir o conteúdo. A criptografia da assinatura reduz ou elimina essa possibilidade.

Portanto, desative a criptografia da assinatura somente quando o valor do conteúdo for baixo, e o ganho de desempenho será significativo, por exemplo, ao enviar arquivos binários grandes que não tenham implicações de segurança.

Para desabilitar a assinatura digital

  1. Crie um CustomBinding. Para obter mais informações, consulte Como criar uma associação personalizada utilizando o SecurityBindingElement.

  2. Adicione um AsymmetricSecurityBindingElement ou um SymmetricSecurityBindingElement à coleção de associação.

  3. Defina a propriedade AsymmetricSecurityBindingElement.MessageProtectionOrder como SignBeforeEncrypt, ou defina a propriedade SymmetricSecurityBindingElement.MessageProtectionOrder como SignBeforeEncrypt.

Para obter mais informações sobre como criar vinculações personalizadas, consulte Criação de vinculações definidas pelo usuário. Para obter mais informações sobre como criar uma associação personalizada para um modo de autenticação específico, consulte Como: criar um SecurityBindingElement para um modo de autenticação especificado.

Confira também