# About Digital Signature Algorithms

Digital signatures are a cryptographic primitive that underpins the security of blockchains and digital asset custody solutions like io.vault. They provide three key properties:

- Authentication - Verifying the identity of the signer
- Non-repudiation - The signer cannot deny having signed the message
- Integrity - Detecting if the message has been altered since signing

io.vault supports two primary digital signature algorithms: the Elliptic Curve Digital Signature Algorithm (ECDSA) and the Edwards-curve Digital Signature Algorithm (EdDSA). Let's explore each in more depth.

## Elliptic Curve Digital Signature Algorithm (ECDSA)

ECDSA is the signature scheme used in Bitcoin, Ethereum, and many other blockchains. It's based on the algebraic structure of elliptic curves over finite fields.

Key facts about ECDSA:

- Relies on the assumed difficulty of the Elliptic Curve Discrete Logarithm Problem (ECDLP)
- Uses a curve and base point defined in a standard, e.g., secp256k1 in Bitcoin
- Private key is a random integer, public key is a point on the curve
- Signing involves generating a random nonce and computing a signature (r, s)
- Verification checks a mathematical relationship between the message, public key, and signature

ECDSA has good performance and relatively short signature sizes, making it well-suited for blockchain use.

## Edwards-curve Digital Signature Algorithm (EdDSA)

EdDSA is a more recent signature scheme based on twisted Edwards curves. It's designed to be faster and more secure than ECDSA.

Notable differences from ECDSA:

- Uses a different curve form for better performance and implementation security
- Deterministic nonce generation to prevent common ECDSA pitfalls
- Includes a hash of the private key in the signature for better malleability resistance
- Cleaner and more efficient implementation

EdDSA is seeing increasing adoption, particularly in newer blockchain platforms and protocols. The most common variant is Ed25519, which uses the curve Curve25519 and the hash function SHA-512.

io.vault supports both ECDSA and EdDSA across different blockchains. When a new vault is created, the appropriate signature scheme is used based on the blockchain network. The MPC and TSS schemes are agnostic to the underlying signature algorithm.

In the next section, we'll dive deeper into how these signature algorithms are used in practice to secure blockchain transactions.

Updated 4 months ago