Digital Signatures
- Published on
💡Key Ideas:
Digital signatures are a cryptographic tool to sign messages and verify message signatures in order to provide proof of authenticity for digital messages.
Digital signatures provide three properties:
- Message authentication - a proof that certain known sender (secret key owner) have created and signed the message.
- Мessage integrity - a proof that the message was not altered after the signing.
- Non-repudiation - the signer cannot deny the signing of the document after the signature is once created.
Blockchain actions are digital signatures: using your private key in your wallet, you sign a digital message that you want to execute an action on your account (public key) like sending money or interacting with a smart contract.
Most signature algorithms work like this:
- At signing, the input message is hashed, then some computation calculates the digital signature. The produced signed message consists of the original message + the calculated signature.
- At signature verification, the message for verification is hashed and some computations are performed between the message hash, the digital signature and the public key, and finally a comparison decides whether the signature is valid or not.
Important digital signature algorithms are:
- ECDSA (Bitcoin, Ethereum, etc)
- RSA
- EdDSA
- Schnoor
- DSA, etc.
🔗Links:
Cryptobook - Digital Signatures
PSE Core Program 2023 - Digital Signatures
🛠️ Build and Practice:
Implement digital signature algorithms in a language of your choice (web2 like TypeScript, Rust, C++, C#, Go or a web3 language like Cairo, Solidity, Noir, Circom)
💰 If you want a grant, apply for an ecosystem to build and expand their hashing libraries, starting from obscure or less known hashing algorithms.