Computational cryptography › Live on mainnet today › Plain curves
SIGNATUREPrimitiveGGMCRH

ECDSA on secp256k1

In plain words

The signature that authorizes every ordinary Ethereum transaction.

The idea: Your private key is a number x and your public key is x·G. To sign, you pick a fresh secret number k and combine k, x and the transaction hash into the signature. Anyone can check it against your public key, and Ethereum goes one step further: from a signature and the message, it can recompute the public key (ecrecover), which is how it knows who sent a transaction. Because k and x are tied together in one simple equation, a reused or guessable k reveals x.

Why it matters: If it broke, attackers could spend from accounts.

The details

On the map: every EOA transaction, EIP-7702 authorizations, EIP-712 / permit offchain signatures

Every ordinary Ethereum transaction is authorized by an ECDSA signature on the secp256k1 curve[1, 2], as are EIP-7702 delegations[3] and offchain messages such as EIP-712 permits[4].

Its security proofs need idealized models (GGM)[5] and a collision-resistant hash (Keccak, CRH). It is fragile with randomness: a reused or biased nonce reveals the private key, which is why wallets use deterministic nonces (RFC 6979)[6].

The ecrecover precompile lets contracts recover the signer from a signature, which also means the public key becomes public as soon as an account signs anything.

Rests on

If any of these breaks, this breaks too.

If it falls

If this breaks, these break with it.

About the tags

GGM
Its security proof only covers attackers who use the group as a black box (the generic group model), an idealization.
CRH
Hash-then-sign: the message is hashed before signing, so a collision in the hash function lets an attacker move a signature onto a different message.

References

  1. Gavin Wood. Ethereum: A Secure Decentralised Generalised Transaction Ledger. Ethereum Yellow Paper, 2014. ethereum.github.io/yellowpaper/paper.pdf
  2. Standards for Efficient Cryptography Group. SEC 2: Recommended Elliptic Curve Domain Parameters. Version 2.0, 2010. secg.org/sec2-v2.pdf
  3. Vitalik Buterin, Sam Wilson, Ansgar Dietrichs and lightclient. EIP-7702: Set Code for EOAs. Ethereum Improvement Proposals (Final), 2024. eips.ethereum.org/EIPS/eip-7702
  4. Remco Bloemen, Leonid Logvinov and Jacob Evans. EIP-712: Typed structured data hashing and signing. Ethereum Improvement Proposals (Final), 2017. eips.ethereum.org/EIPS/eip-712
  5. Daniel R. L. Brown. Generic Groups, Collision Resistance, and ECDSA. Designs, Codes and Cryptography, 2005. doi:10.1007/s10623-003-6154-z
  6. T. Pornin. Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA). RFC 6979, 2013. rfc-editor.org/rfc/rfc6979