Department of Electrical Engineering, IIT Bombay
October 21, 2025
Secrecy | Integrity | |
---|---|---|
Private-Key Setting | Private-Key Encryption | MACs |
Public-Key Setting | Public-Key Encryption | Digital Signatures |
Both MACs and digital signature schemes ensure integrity of the transmitted messages
MAC tags are not publicly verifiable
Non-repudiation: Once a signer S signs a message m, she cannot later deny having done so
MACs cannot provide non-repudiation
A digital signature scheme consists of three PPT algorithms (\textsf{Gen}, \textsf{Sign}, \textsf{Vrfy})
\textsf{Gen}: The key-generation algorithm \textsf{Gen} takes as input the security parameter 1^n and outputs a pair of keys (pk, sk).
\textsf{Sign}: The signing algorithm \textsf{Sign} takes as input a private key sk and a message m from some message space (that may depend on pk). It outputs a signature \sigma, and we write this as \sigma \leftarrow \textsf{Sign}_{sk}(m).
\textsf{Vrfy}: The deterministic verification algorithm \textsf{Vrfy} takes as input pk, m, and \sigma. It outputs a bit b, with b=1 meaning valid and b=0 meaning invalid. We write this as b = \textsf{Vrfy}_{pk}(m,\sigma).
It is required that except with negligible probability over (pk, sk) output by \textsf{Gen}(1^n) \textsf{Vrfy}_{pk}(m, \textsf{Sign}_{sk}(m))=1 for every valid message m
The signature experiment \textsf{Sig-forge}_{\mathcal{A},\Pi}(n):
\textsf{Gen}(1^n) is run to obtain keys (pk, sk).
Adversary \mathcal{A} is the public key pk and oracle access to \textsf{Sign}_{sk}(\cdot). The adversary eventually outputs (m,\sigma). Let \mathcal{Q} denote the set of all queries that \mathcal{A} asked its oracle.
\mathcal{A} succeeds if and only if
A signature scheme \Pi = (\textsf{Gen}, \textsf{Sign}, \textsf{Vrfy}) is existentially unforgeable under an adaptive chosen-message attack, or just secure, if for all PPT adversaries \mathcal{A}, there is a negligible function such that: \begin{equation*} \Pr\left[ \textsf{Sig-forge}_{\mathcal{A}, \Pi}(n) = 1\right] \le \textsf{negl}(n). \end{equation*}
A no-message attack
Attack using two signatures
\textsf{Gen:} On input 1^n run \textsf{GenRSA}(1^n) to obtain N, e, d. The public key is \langle N,e \rangle and the private key is \langle N,d \rangle.
\textsf{Sign:} On input a private key sk = \langle N, d \rangle and message m \in \{0,1\}^*, compute the signature \begin{equation*} \sigma \coloneqq \left[\left(H(m)\right)^d \bmod N \right]. \end{equation*}
\textsf{Vrfy:} On input a public key pk = \langle N, e \rangle, a message m, and a signature \sigma, output 1 if and only if \begin{equation*} \sigma^e = H(m) \bmod N. \end{equation*}
Collisions
No message
Multiplication
H should not admit “multiplicative relations”
It should be infeasible to find three messages m, m_1, m_2 with H(m) = H(m_1) \cdot H(m_2) \bmod N
Theorem: If the RSA problem is hard relative to \textsf{GenRSA} and H is modeled as a random oracle, then the RSA-FDH signature scheme is secure
What is a random oracle?
Idealized model of hash functions used to prove security of cryptographic schemes
If H is modeled as a random oracle, then
RO assumption is controversial; no unanimous agreement
Interactive protocols that allow a party to prove its identity
The party proving identity is called the prover
The party verifying the identity is called the verifier
The Schnorr identification experiment \textsf{Ident}_{\mathcal{A}, Schnorr}(n):
\mathcal{G}(1^n) is run to obtain pk = (G,q,g,y) and sk = x \in \mathbb{Z}_q
Adversary \mathcal{A} is given pk and access to an transcript oracle \textsf{Trans}_{sk} that it can query
At any point in the experiment,
The experiment outputs 1 if and only if g^s \cdot y^{-r} = I
The Schnorr identification scheme is secure against a passive attack, or just secure, if for all PPT adversaries \mathcal{A}, there is a negligible function such that: \begin{equation*} \Pr\left[ \textsf{Ident}_{\mathcal{A}, Schnorr}(n) = 1\right] \le \textsf{negl}(n). \end{equation*}
Adversary is allowed to observe a polynomial number of protocol transcripts
Anyone can simulate transcripts of honest executions only using the public key, without knowledge of the private key
Consider an adversary \mathcal{A} which outputs I, receives a uniform challenge r and responds with s
We use \mathcal{A} as a subroutine of another adversary \mathcal{A}' which is trying to solve the discrete logarithm problem
Popular technique to convert interactive protocols into non-interactive cryptographic schemes
Uniformly chosen challenges in the interactive protocol \rightarrow Cryptographic hash of the transcript values up to that point
Identification schemes can be converted to signature schemes by including message into transcript
Idea
\textsf{Gen}: Run \mathcal{G}(1^n) to obtain (G,q,g), chooses uniform x \in \mathbb{Z}_q, and sets y \coloneqq g^x. The public key is (G,q,g,y) and private key is x. A hash function H : \{0,1\}^* \mapsto \mathbb{Z}_q is chosen.
\textsf{Sign}: On input private key x and message m \in \{0,1\}^*, choose k \in \mathbb{Z}_q and set I \coloneqq g^k. Then compute r \coloneqq H(I,m) and s \coloneqq [rx+k] \bmod q. Output the signature as (r,s).
\textsf{Vrfy}: On input public key pk, a message m, and a signature (r,s), compute I \coloneqq g^s \cdot y^{-r} and output 1 if and only if H(I,m) \overset{?}{=} r
Theorem: Let \Pi be the Schnorr identification scheme, and let \Pi' be the signature scheme that results by applying the Fiat-Shamir transform to it.
If \Pi is secure and H is modeled as a random oracle, then \Pi' is secure.
Public-key cryptography can be used once public keys are securely distributed
Digital signatures are used to securely distribute public keys
Users have to trust one public key first, which can then authenticate other public keys
The “first” public keys can be embedded in browsers or operating systems
Certificates may need to be revoked
One solution is to include an expiry date in the signed message\textsf{cert}_{C \rightarrow B} = \textsf{Sign}_{sk_C} \left(``\text{Bob's key is } pk_B ", \text{date}\right)
This involves a delay in expiry
CAs can explicitly revoke a certificate
CA includes a serial number in every certificate it issues\textsf{cert}_{C \rightarrow B} = \textsf{Sign}_{sk_C} \left(``\text{Bob's key is } pk_B ", \texttt{\#\#\#}\right)
To revoke a certificate, CAs will add its serial number to certificate revocation list (CRL) and sign the list and current date
The signed CRL is widely distributed by the CA
Certificate verification now involves