Signature
GenerateKeys()⇒ (PrivateKey, PublicKey)
Sign(PrivateKey, message) ⇒ signature
Verify(publicKey, message, signature) ⇒ true / false
Lamport Signatures
A signature scheme using only hash functions → quantum resistant
private key is the one-off
PKH: public key hash
send a commitment of a public key
ECDSA
Chaumian blinded cash
RSA
- one way function: p, q → n
- Sign
- Security
- 1024bits (256 bytes)
- p-1 & q-1 can’t be too unprime
ECC: Elliptic Curve Cryptography
Elliptic Curve
- a line will intersect with Elliptic curve on 3 points
- A + B, A * b, A / b ✅
- A * B, A + b ❌
- traits of elliptic curve remain when modulo
Secp256k1
Where the name comes from
- Sec: Standards For Efficient Cryptography
- 256: length of p
- p: the mod factor
- k: inventor of ECC Koblitz, here meaning a selected set of curves
- 1:
- is a prime number
- 30% more performant than unoptimized curves
PKC
: generator point, 32 byte x coord, 32 byte y coord = 64 B ⇒ 32B x coord + 1 bit
: private key. 256 bit scalar
: public key.
Signature
- Signing:
- user has private key , now generate random secret (32 bytes)
- Verify: Verifier receives (message), (public key which eq ), &
- Security:
can’t calculate because R is one-way
BLS Signature aggregation
Chia Blockchain
Diffie-Hellman Key Exchange
is the “Diffie Hellman” point
- Proof of knowledge with point C