Why do we sign things?
Alice wants to send a public message \(m\), and sign the message to indicate (a) that she sent it (authentication), and (b) that she intended to send it (non-repudiation).
Questions.
Pair Exercise. Make this algorithm into a signature scheme. Let the message be some integer \(m\). Then explain what Alice makes public, and what Bob does to verify the signature. (Notice that Alice is the one who does steps 1–4.)
Do the above exercise.
Decryption: In \(U(p)\), Bob uses the secret \(a\) to compute \[ tr^{-a} = \beta^km(\alpha^k)^{-a} = (\alpha^a)^km\alpha^{-ak} = m \]
Alice wants to sign the message \(m\).
To verify, Bob checks that \(\beta^rr^s = \alpha^m\) in \(U(p)\).
Group Exercise.
Suppose Alice signs messages \(m_1, m_2\) with the same \(k\), posting \((m_1, r_1, s_1)\) and \((m_2, r_2, s_2)\).
Suppose \(s(m)\) represents a signature for the message \(m\) in some signature scheme.
Let \(h\) be a hash function.
In practice, the pair \((m, s(h(m)))\) is used for the signed document. (Why?)
If the size of the hash is small, Bob can try this:
How can Alice foil this plan?
History:
Revisions are based primarily on the length of the hashes used.
To verify the signature, Bob does the following:
powm
’s, not three.