CSE442T Introduction to Cryptography (Lecture 21)
Chapter 5: Authentication
Digital Signature Scheme
“Chain based approach”.
The signature size grows linearly with the message size .
Improvement:
Use “Tree based approach”.
Instead of creating 1 public key, we create 2 public keys each time and use the shorter one to sign the next message.
For example, let , and we want to sign .
Every verifier knows the public key.
Then we generates and store
and generates
So we sign as .
The final signature is .
The verifier can verify the signature by checking the authenticity of each public key.
Outputs
The signature size grows logarithmically with the message size .
If we want to sign for next message, we can just append to the end of the previous signature since are all stored in the previous signature tree.
So the next signature is .
The size of the next signature is still .
Advantages:
- The signature size is small (do not grow linearly as the number of messages grows).
- The verification is efficient (do not need to check all the previous messages).
- The signature is secure.
Disadvantages:
- Have to store all the public keys securely pair as you go.
Fix: Psudo-randomness.
Use a Pseudo-random number generator to generate random pk/sk pairs.
Since the PRG is deterministic, we don’t need to store the public keys anymore.
We can use a random seed to generate all the pk/sk pairs.
Trapdoor-based Signature Scheme
Idea: use RSA to create
, , (secret key)
We do the “flip” encryption as follows:
Let
Then .
Forgery 1:
Ask oracle nothing.
Pick random let .
Although in this case, the adversary has no control over , it is still not very good.
Forgery 2:
They want to sign .
Pick and .
Ask oracle for and .
Output , since .
This is a valid signature for .
That’s very bad.
This means if we signed two messages , we can get a valid signature for . If unfortunately is the message we want to sign, the adversary can produce a fake signature for free.
Fix for forgeries
Pick a “random”-looking function . ( is collision-resistant)
,
If is truly random, this would be secure.
and
So and , If , then . (the equality is very unlikely to happen)
This is secure.
Choices of :
- is random function. Not practical since we need the verifier to know .
- is pseudo-random function. Verifier needs to use , with full access to the random oracle. If we use for a random key , they need . No more pseudo-random security guarantee.
- is a collision-resistant hash function. We can’t be sure it doesn’t have any patterns like .
Here we present our silly solution:
Random oracle model:
Assume we have a true random function , the adversary only has oracle access to .
And is practical to use.
This RSA scheme under the random oracle model is secure. (LOL)
This requires a proof.
In practice, SHA-256 is used as . Fun, no one really finds a collision yet.