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.
Standards for Efficient Cryptography Group. SEC 2: Recommended Elliptic Curve Domain Parameters. Version 2.0, 2010. secg.org/sec2-v2.pdf
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
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
Daniel R. L. Brown. Generic Groups, Collision Resistance, and ECDSA. Designs, Codes and Cryptography, 2005. doi:10.1007/s10623-003-6154-z
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