WCF Encrypts Signatures by default in Message Security

When you are building your application with security enabled you will see that all your signatures are encrypted by default. This was not the default in WCF Beta 1. As you would expect this did result in a significant performance penalty. The message protection order in Beta 1 was to Sign before Encrypt. There is an attack vector here when you are signing low entropy data. Since the data is of low entropy the hash in the signature can be used to guess that actual data which may be encrypted. So encryption has really not got you anything. This is the reason we decided to encrypt the signature by default.

We do not encrypt the signature always. We do this only when there is a part in the message that is signed and encrypted. You can turn off signature encryption by setting the MessageProtection property of the security binding element. But be aware of the attack and disable this cautiously.