Crypto Signatures09/08/2026
In this post, I look at the different signature algorithms available to .NET developers. I am going to compare these algorithms from a performance point of view. However, I am not going to focus on their security strength.
Signature algorithms are used to provide integrity and authenticity for data. At the network level, a TLS connection provides encryption, but this is often not enough because some environments may terminate TLS connections. For example, load balancers and ingress proxies often terminate the TLS connection (and sometimes even downgrade the HTTP protocol version) before forwarding requests to the actual server instance. By signing each request or response message individually, a receiver can validate the signature of the sender. It can confirm that a message has not been tampered with and that it originates from the sender rather than from a man-in-the-middle attacker.
What it does not do:
- It does not protect against replay attacks by itself, unless a nonce, idempotency key, or timestamp is included in the signed data.
- Signatures do not encrypt the message. Anyone with access to the message can still read it. This means TLS is still required at the connection level.