The Evolution of Signature Algorithms

Key Takeaways

  • Signature algorithms rely on a trapdoor function — easy to compute with a private key, practically infeasible to reverse without it.

  • RSA remains widely used and reasonably secure, but requires increasingly large keys as processing power grows, adding storage and performance costs.

  • Elliptic Curve Cryptography (ECC/ECDSA) achieves strong security with much smaller keys, but is complex to implement correctly — nonce reuse or bad implementations have caused real-world breaches (e.g., YubiKeys, PS3, a Java ECDSA flaw).

  • ECDSA is also vulnerable to side-channel attacks if implementation isn't careful.

  • EdDSA solves ECDSA's key weaknesses — no random nonce requirement, reduced side-channel vulnerability, and simpler, more consistent implementation via "complete formulas."

  • EdDSA is also faster and more resource-efficient, making it a stronger and greener choice for signing tokens.

  • Bottom line: when possible, choose EdDSA over RSA or standard ECDSA — Curity Identity Server supports it natively.

On this page

Public key cryptography deals with finding mathematical operations for a key pair that are easy to calculate with part of the key pair but hard to reverse without. Such an operation is called the trapdoor function. 

signature-algorithms curity

Signature Algorithms use the private key from the key pair and a message in some form as an input to the trapdoor function. The outcome is the signature. Normally, the message passes a hashing function before it gets signed. The signature is easy to calculate using the private key and easy to validate with the public key.

Thus everybody with the public key can validate a signed message, verify that it comes from the expected sender (verify the message authenticity) and verify that it was not tampered with (verify the message integrity).

Because of the underlying mathematical operation, it is practically infeasible to create a valid signature without the private key. Further, the private key cannot be recalculated from the public key or any other public information of the system, such as the message, hash value, or signature.

However, if used in the wrong context, it is possible to retrieve the private key from signatures or even create valid signatures without it despite the trapdoor function. To avoid such pitfalls and security incidents, it's essential to familiarize yourself with the different algorithms.

RSA

Not many people have had such a significant impact on modern life as Rivest, Shamir, and Adleman. In 1977, these researchers published the description of a public-key algorithm that became known as the RSA algorithm. Even now, about 45 years later, RSA is still widely used.

It's impressive that RSA is still considered relatively safe after so many years. Yet, as great as RSA is, it has its limitations. Over the years, researchers, cryptographers, and attackers have found vulnerabilities and impracticalities in the algorithm (mainly concerning RSA encryption and not the signature).

Therefore, it's best practice not to use textbook RSA but rather RSASSA-PKCS1-v1_5 (RS256, RS384, or RS512) or RSASSA-PSS (PS256, PS384, or PS512) for your signatures. These are the versions of RSA that we use in the Curity Identity Server.

The underlying trapdoor function in RSA relies on the factoring problem. There is no efficient algorithm known that breaks an integer in its prime factors. Finding the prime factors becomes especially hard when the integer is composed of two large prime numbers (as is the case in all variants of RSA). However, with processing power getting stronger and cheaper, attacks on the factoring problem are becoming more concerning.

To mitigate the risk of cracked keys, we simply increase the size of the RSA key. This way, it becomes harder and harder to guess the prime factors of the public key, which would further reveal the corresponding private key.

However, that strategy comes with a drawback and cost: considering that RSA signatures have the same size as the key, a system using large keys consumes more storage for the keys. It also consumes greater processing power for calculations and bandwidth for transporting the messages.

RSA-token-curity

Practically speaking, we cannot continue increasing the key size indefinitely. This is especially relevant for systems like small Internet of Things devices with limited resources. They simply do not have the capacity to increase the keys. At some point, the processing power will catch up, and RSA keys might be broken before they are invalidated. That is where elliptic curves come into play.

Elliptic Curves

With Elliptic Curve Cryptography (ECC), researchers have found algorithms for signing and encryption that work with small keys and are hard to break. The algorithms are based on a problem called the Elliptic Curve Discrete Logarithm Problem (ECDLP). The trapdoor function in ECDSA is more secure than in RSA, but it makes the algorithm slower.

There is a range of different curves, that is, named sets of defined parameters and formulas. P-256 is one example, Curve25519 another. The security of elliptic curves depends on the characteristics, the parameters, and the formulas of the definition. However, more often, security relies on the implementation details.

For example, algorithms for digital signatures based on elliptic curves (ECDSA) require a random, single-use nonce. Consequently, the nonce becomes a weak point. A bad random generator or the reuse of a nonce eventually allows an attacker to calculate the private key — a problem that previously affected YubiKeys and Sony's PlayStation 3.

eliptic-curves-curity

ECDSA is complex, and it's difficult to correctly implement elliptic curves. If done wrong, elliptic curves may result in a security risk rather than a benefit. For example, the ECDSA implementation in Java had a serious flaw that allowed an attacker to easily forge signatures.

In addition, vulnerabilities for side-channel attacks are a known problem in ECDSA. So make sure you select the right curve and a secure implementation when using ECDSA. If in doubt, choose EdDSA if you can.

EdDSA

EdDSA is an evolved version of the elliptic curves Curve25519 and Curve448. A smart combination of parameters and formulas eliminates two main problems with (other) elliptic curve signatures: the requirement for a random nonce and the vulnerability for side-channel attacks. Actually, the latter depends on the implementation and is theoretically possible.

Side-channel attacks are a category of attacks that don't target vulnerabilities of the algorithm itself but of its implementation by analyzing system characteristics such as power consumption, electromagnetic leaks in caches or memory, or timing information.

EdDSA uses complete formulas, which means that the rules apply to all points on the elliptic curve. As a result, no edge cases need expensive parameter validation and exception handling. Consequently, EdDSA is easier to implement and less prone to side-channel attacks compared to other elliptic curve signature algorithms.

Nowadays, there are even complete formulas for Weierstrass curves, meaning that it's now easier to implement elliptic curve algorithms. However, the problem with the nonce in ECDSA remains. EdDSA is not dependent on a random number generator for the nonce and is, therefore, more secure.

In addition, EdDSA was designed with high performance in mind. Since the keys are small and the operations are fast, EdDSA saves time, money, and resources. As a result, EdDSA is a green computing alternative that reduces the environmental impact of cryptography.

eddsa-curity

Although the industry now has this progressive technology, some software providers have been slow to adopt it. When switching to EdDSA, you may experience limited support from languages, libraries, and frameworks. However, the Curity Identity Server does not contain such an obstacle.

Not only does the Curity Identity Server support EdDSA out of the box, but Curity also provides resources to help you along the way. The right choice should be easy. Choose EdDSA and make a difference for the security and future of your system!

If you want to learn more about signature algorithms and why EdDSA is the optimal choice for securing tokens, watch our webinar - An Engineer's Guide to Signature Algorithms and EdDSA. It is available on-demand.

Related resources

Frequently Asked Questions

Is RSA considered broken or unsafe to use today?

No — RSA (with proper padding schemes like RSASSA-PSS) is still considered secure for the foreseeable future when sufficiently large keys are used, though it's expected to eventually be phased out in favor of more efficient algorithms as key size requirements keep growing.

What key size is currently recommended for RSA signatures?

Common industry guidance recommends at least 2048-bit keys today, with many organizations moving toward 3072-bit or higher for longer-term security margins, though specific recommendations can vary by regulatory or industry context.

How much smaller are elliptic curve keys compared to RSA keys for equivalent security?

Elliptic curve keys can achieve comparable security to RSA with significantly smaller key sizes — for example, a 256-bit elliptic curve key is often considered roughly equivalent in strength to a 3072-bit RSA key, which is part of why ECC is attractive for resource-constrained devices.

Are quantum computers a threat to RSA, ECDSA, and EdDSA equally?

Yes, in principle — all three rely on mathematical problems (factoring for RSA, discrete logarithm for ECDSA/EdDSA) that a sufficiently powerful quantum computer could theoretically solve, meaning none of them are considered quantum-safe long-term without migrating to post-quantum algorithms.