Department of Electrical Engineering, IIT Bombay
October 25, 2023
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})
The key-generation algorithm \textsf{Gen} takes as input the security parameter 1^n and outputs a pair of keys (pk, sk).
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).
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), it holds that \textsf{Vrfy}_{pk}(m, \textsf{Sign}_{sk}(m))=1 for every (legal) 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*}
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
We will consider only three-round identification protocols
Theorem: If the discrete-logarithm problem is hard relative to \mathcal{G}, then the Schnorr identification scheme is secure
We only consider identification schemes that are non-degenerate
Definition: An identification scheme is non-degenerate if for every private key sk and any fixed initial message I, the probability that \mathcal{P}_1(sk) outputs I is negligible.
Let \Pi = (\textsf{Gen}, \mathcal{P}_1, \mathcal{P}_2, \mathcal{V}) be an identification scheme
A PPT adversary who does not know the prover’s secret key should be unable to fool the verifier into accepting
Adversary is allowed to observe multiple executions of the protocol
The identification experiment \textsf{Ident}_{\mathcal{A}, \Pi}(n):
\textsf{Gen}(1^n) is run to obtain keys (pk, sk)
Adversary \mathcal{A} is given pk and access to an oracle \textsf{Trans}_{sk} that it can query
At any point in the experiment,
The experiment outputs 1 if and only if \mathcal{V}(pk,r,s) \overset{?}{=} I
An identification scheme \Pi = (\textsf{Gen},\mathcal{P}_1, \mathcal{P}_2, \mathcal{V}) 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}, \Pi}(n) = 1\right] \le \textsf{negl}(n). \end{equation*}
Note that we are not considering active attacks where the adversary can impersonate the verifier and send maliciouly chosen values for r
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
Let (\textsf{Gen}_{\textsf{id}}, \mathcal{P}_1, \mathcal{P}_2, \mathcal{V}) be an identification scheme
On input 1^n, simply run \textsf{Gen}_{\textsf{id}}(1^n) to obtain keys pk, sk
As part of key generation, a function H: \{0,1\}^* \mapsto \Omega_{pk} is specified
On input a private key sk and a message m \in \{0,1\}^*
Output the signature (r,s)
Theorem: Let \Pi be an 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.
Set \alpha \coloneqq H(m) for a message m where H is a cryptographic hash function
Set r \coloneqq F(I) for a function F: G \mapsto \mathbb{Z}_q
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