The Elliptic Curve Digital Signature Algorithm (ECDSA) is a digital signature algorithm (DSA). ECDSA relies on elliptic curves defined over a finite field to generate and verify signatures. The underlying elliptic curves make the signing process more efficient and secure, as the process relies on the complexity of the elliptic-curve discrete logarithm problem (ECDLP).
We generate asymmetric keys using the key agreement algorithms that elliptic curve cryptography provides. Elliptic-curve Diffie–Hellman (ECDH) is a widely used key agreement algorithm. The process of public-private key generation in ECDH as follows:
Note: To learn more about the ECDH, we can click here.
The signature generation algorithm is based on the ElGamal signature scheme. It takes the private key of the sender and the message to be sent as input, and generates the signature as output. The working of the algorithm is as follows:
The signature consists of two integer values calculated above
The signature verification algorithm takes the message and the signature
We can generate the public key from the signature calculated by the ECDSA algorithm. The calculation process of public key returns
Extended ECDSA tackles this issue by adding an extra part
Extended ECDSA implementation is particularly useful in storage or bandwidth constraint environments. In situations where it is difficult or expensive to store or transmit public keys, we can use extended ECDSA.
Blockchain is an environment limited on bandwidth and storage. By using extended ECDSA, it avoids transmitting or storing the public key. Ethereum uses it to sign transactions.
Note: To learn how to create a digital signature in Python, we can click here.