1. Introduction
In the next few parts of this series, we look at various signature schemes and prove their security in the RO model. This part is dedicated to the analysis of Pointcheval and Stern Generic Signature Scheme of which the Schnorr scheme is an example. The generic scheme is built around a single pair. Later parts of this series will focus on ring signature schemes. Ring signatures embed the actual signer in a ring of other possible signers to hide her identity. We will discuss them in parts 3, 4, 5, 6, and 7.
2. Pointcheval and Stern generic signature scheme
For a given message , our generic scheme creates a signature
where
is a random element chosen from a pre-defined set,
(i.e., RO output on query
), and
is fully determined by
and
. By design, we require that the probability of selecting any particular
be upper-bounded by
for a given security parameter
.
Schnorr’s signature scheme is an example that fits this generic model. To see why, recall that chooses a random commitment
where
is a pre-defined prime number. It then assigns
where
denotes a chosen generator of
. Afterwards,
is set to
. Finally,
is calculated as
where
denotes the signer’s private key. Note that
can be any element of
and so the probability that it takes on a specific value is equal to
. By design, we choose the security parameter
. This choice of
guarantees that the aforementioned probability is upper-bounded by
.
3. Security analysis – Unforgeability vis-a-vis EFACM
For unforgeability proofs, we follow the 5-step approach mentioned in part 1 of this series.
Step 1: To prove that this generic scheme is secure against EFACM in the RO model, we proceed by contradiction and assume that there exists a PPT adversary such that:
![Rendered by QuickLaTeX.com P_{\omega,r, \mathcal{H}}[\mathcal{A}(\omega)^{\mathcal{H}, \Sigma^{\mathcal{H}}(r)}\ succeeds\ in\ EFACM] = \epsilon(k)\ (\epsilon](https://delfr.com/wp-content/ql-cache/quicklatex.com-d2310da12a4e748c25c82f39b6c9bde5_l3.png)
Step 2: Next, we build a simulator such that it:
- Does not have access to the private key of any signer.
- Has the same range as
(i.e., they output signatures taken from the same pool of potential signatures over all possible choices of RO functions and respective random tapes
and
).
- Has indistinguishable probability distribution from that of
over this range.
is specific to the particular instance of the generic scheme being used. In what follows, we build a simulator for the case of a Schnorr signature.
By construction, the output of will satisfy the verification equations. Moreover, it assigns a random value for
and bypasses the RO in doing so. Next, note the following:
does not use any private key.
and
both have a range
.
and
have the same probability distribution over
. Indeed,
we have:
- For
- For
- For
With adequately built for the Schnorr scheme, we conclude that (refer to section 6 of part 1 of this series for a justification):
![Rendered by QuickLaTeX.com P_{\omega,r,' \mathcal{H}}[\mathcal{A}(\omega)^{\mathcal{H}, \mathcal{S}(r')}\ succeeds\ in\ EFACM] = \epsilon(k)\ (\epsilon](https://delfr.com/wp-content/ql-cache/quicklatex.com-81b9a1337371483495555161feb24697_l3.png)
Step 3: We now show that the probability of faulty collisions is negligible (refer to section 6 of part 1 of this series for a description of collision types). The 2 types of collisions fo the generic scheme are:
: A tuple
that
encounters — it makes its own random assignment to
and bypasses RO — also appears in the list of queries that
sends to RO. A conflict in the 2 values will happen with overwhelming probability and the execution will halt.
: A tuple
that
encounters — it makes its own random assignment to
— is the same as another tuple
that
encountered at an earlier time instance — here too,
would have made its own random assignment to
. Since the 2 tuples are identical (i.e.,
), it must be that the 2 random assignments match (i.e.,
. With overwhelming probability, the 2 values will be different and the execution will halt.
The aforementioned collisions must be avoided. In order to do so, we first calculate the probability of their occurence. We assume that during an EFACM attack, can make a maximum of
queries to RO and a maximum of
queries to
.
and
are both assumed to be polynomial in the security parameter
, since the adversary is modeled as a PPT Turing machine.
![Rendered by QuickLaTeX.com P[Col_{Type\ 1}]\ = P[\cup_{all\ (m,r)}\{{(m,r)\ appeared\ in\ at\ least\ one\ of\ the](https://delfr.com/wp-content/ql-cache/quicklatex.com-10a60eb9af5d06a9b9d3752abb3e5114_l3.png)
![Rendered by QuickLaTeX.com Q_S\ queries\ to\ \mathcal{S}\ and\ Q\ queries\ to\ RO\}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-d8174849039a46a5deff31f0ffaa74a2_l3.png)

![Rendered by QuickLaTeX.com Q_S\ queries\ to\ \mathcal{S}\ and\ Q\ queries\ to\ RO\}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-d8174849039a46a5deff31f0ffaa74a2_l3.png)

![Rendered by QuickLaTeX.com \mathcal{S}\ and\ k^{th}\ queries\ to\ RO\}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-7561759e0f5278ba6c15285e4c0b67b5_l3.png)

![Rendered by QuickLaTeX.com \mathcal{S}\ and\ k^{th}\ queries\ to\ RO]](https://delfr.com/wp-content/ql-cache/quicklatex.com-4eaa420f2f83cc41c35bcb51b6cb2746_l3.png)





![Rendered by QuickLaTeX.com P[Col_{Type\ 1}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-c7cdb03189e3d9128096faf4802186fc_l3.png)

Next, we compute :
![Rendered by QuickLaTeX.com P[Col_{Type\ 2}]\ = P[\cup_{all\ (m, r)}\{{(m, r)\ appeared\ at\ least\ twice\ in](https://delfr.com/wp-content/ql-cache/quicklatex.com-619295384cc7d3a99c1991d334a102ce_l3.png)
![Rendered by QuickLaTeX.com some\ of\ the\ queries\ to\ \mathcal{S} \}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-a963ab48af039f37a5c31a2b739c90a7_l3.png)

![Rendered by QuickLaTeX.com 2\ queries\ to\ \mathcal{S} \}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-7c943b2068a5dff5bee1a31cfa8ce91a_l3.png)


![Rendered by QuickLaTeX.com P[Col_{Type\ 2}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-6b6dfeded1324a095ce5dae85ebad194_l3.png)

![Rendered by QuickLaTeX.com P[Col] = P[Col_{Type\ 1} \cup Col_{Type\ 2}] \leq P[Col_{Type\ 1}] + P[Col_{Type\ 2}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-30dd0d674806c46a6c627b97032d148a_l3.png)

![Rendered by QuickLaTeX.com P_{\omega,r,' \mathcal{H}}[\mathcal{A}(\omega)^{\mathcal{H}, \mathcal{S}(r')} succeeds\ in\ EFACM\ \cap \overline{Col}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-7a3628c08255a36889389f87b38e5c5f_l3.png)


Step 4: In this step, our objective is to show that if is a successful tuple that generated a first EFACM forgery, then the following quantity is non-negligible in
:


![Rendered by QuickLaTeX.com and\ (\rho_{i} = \rho^{*}_{i})\ for\ i \in \{{1,...\beta -1\}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-cdddc2a12414ee6d024a00599fc4d122_l3.png)
Here is an appropriate index that we will define in the proof. And to further simplify the notation, we let
and
. (
and
denote respectively the
query to
and
) for all
.
Let’s take a closer look at .
Any successful forgery must pass the verification test. One of the verification equations is to check if . So we distinguish between 2 scenarios (w.l.o.g. we assume that all
-queries sent to RO are distinct from each-other since
can keep a local copy of previous query results and avoid redundant calls):
- Scenario 1:
was successful in its forgery, and no collisions occured, and it never queried RO on input
.
- Scenario 2:
was successful in its forgery, and no collisions occured, and it queried RO on input
during its execution.
The probability of scenario 1 is upperbounded by the probability that picks a value for
that matches the value of
. Here,
is the value that RO returns to
(the verification algorithm) when verifying the validity of the forged signature. (It is upper-bounded because at the very least, the constraint
must be observed for a valid signature). And since
can be any value in
, we get:
![Rendered by QuickLaTeX.com P[Scenario\ 1] \leq \frac{1}{q} \leq \frac{1}{2^k}](https://delfr.com/wp-content/ql-cache/quicklatex.com-27a0c73238a290235d161a8842edfe29_l3.png)

So we assume that a successful forgery will likely be of the Scenario 2 type. We have:
![Rendered by QuickLaTeX.com P[Scenario\ 2] = P_{\omega,r,' \mathcal{H}}[\mathcal{A}(\omega)^{\mathcal{H}, \mathcal{S}(r')} succeeds\ in\ EFACM \cap \overline{Col}] -](https://delfr.com/wp-content/ql-cache/quicklatex.com-cf73a9037c63fc1331f342538a7fb543_l3.png)
![Rendered by QuickLaTeX.com P[Scenario\ 1]](https://delfr.com/wp-content/ql-cache/quicklatex.com-116b55aa2ef97701b8b296c299452e73_l3.png)


We then define to be the index of the query
sent by
to RO during execution. We let
if the query
was never asked by
. This definition allows us to build the following sets:
-
In other terms,
is the set of tuples
that yield a successful EFACM forgery when no collisions occur, and when
queried RO on input
at some point during its execution (i.e., scenario 2).
-
In other terms,
is the set of tuples
that yield a successful EFACM forgery when no collisions occur, and when the index of the
-query on input
sent to RO is equal to
.
Recall that, , which is non-negligible in
.
And partitions
. So
.
This implies that .
If this were not the case, then one would get the following contradiction:
![Rendered by QuickLaTeX.com 1 = \sum_{i=1}^Q P[(\omega, r', \mathcal{H}) \in S_i\ |\ (\omega, r', \mathcal{H}) \in S] < Q \times \frac{1}{2Q} = \frac{1}{2} < 1](https://delfr.com/wp-content/ql-cache/quicklatex.com-70c461b96f79e23521317e592dd34d01_l3.png)
So we introduce the set consisting of all indices that meet the
threshold, i.e.
![Rendered by QuickLaTeX.com I = \{{i \in \{{1,...Q \}}\ s.t.\ P[(\omega, r', \mathcal{H}) \in S_i\ |\ (\omega, r', \mathcal{H}) \in S] \geq \frac{1}{2Q}\}}](https://delfr.com/wp-content/ql-cache/quicklatex.com-81a6594230c4557b0890c93c5544c2e4_l3.png)
We claim that .
Proof: By definition of the sets we have:
![Rendered by QuickLaTeX.com P[Ind(\omega, r', \mathcal{H}) \in I\ |\ (\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-ad885e26a013515ae8fb05ba2237bd85_l3.png)
![Rendered by QuickLaTeX.com = \sum_{i \in I} P[(\omega, r', \mathcal{H}) \in S_i\ |\ (\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-2f4bb96009ca9e3630d890d8e36d0e77_l3.png)
![Rendered by QuickLaTeX.com = 1- \sum_{j \notin I} P[(\omega, r', \mathcal{H}) \in S_j\ |\ (\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-e6b350854a4aa0bbfa188161293ccd76_l3.png)

The next step is to apply the splitting lemma to each . First note that:
![Rendered by QuickLaTeX.com P_{\omega,r',\mathcal{H}}[(\omega, r', \mathcal{H}) \in S_i]](https://delfr.com/wp-content/ql-cache/quicklatex.com-ef7c708dcf7e5280dd65600f983975d4_l3.png)
![Rendered by QuickLaTeX.com = P[(\omega, r', \mathcal{H}) \in S_i\ |\ (\omega, r', \mathcal{H}) \in S] \times P_{\omega,r',\mathcal{H}}[(\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-13f6979dfd100d77893db6180a93c1eb_l3.png)

Referring to the notation used in the splitting lemma (section 7 of part 1), we let:





is defined as the space of tuples of all random tapes
, all random tapes
, and all possibe RO answers to the first
queries sent by
.
is defined as the space of all possible RO answers to the last
queries sent by
. The splitting lemma guarantees the existence of a subset
of tuples
such that:
, we have
, and so
We would like to compute the probability of finding a successful tuple
given that
was a successful
tuple and s.t.
. That means finding the following probability:
![Rendered by QuickLaTeX.com P_\mathcal{H}[ (\omega^{*}, r'^{*}, \mathcal{H}) \in S_i\ |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in S_i,\ \rho_1 = \rho_1^{*}, ..., \rho_{i-1} = \rho_{i-1}^{*}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-9f97eddce42c24a70600a864ee35f270_l3.png)
From the splitting lemma results, we have a (non-negligible in ) lower-bound on
.
Note however, that and
are generally distinct sets. And so we cannot conclude that
![Rendered by QuickLaTeX.com P_\mathcal{H}[ (\omega^{*}, r'^{*}, \mathcal{H}) \in S_i\ |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in S_i,\ \rho_1 = \rho_1^{*}, ..., \rho_{i-1} = \rho_{i-1}^{*}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-9f97eddce42c24a70600a864ee35f270_l3.png)
![Rendered by QuickLaTeX.com = P_\mathcal{H}[ (\omega^{*}, r'^{*}, \mathcal{H}) \in S_i\ |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in \Omega_i,\ \rho_1 = \rho_1^{*}, ..., \rho_{i-1} = \rho_{i-1}^{*}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-63d9f0925f6cdc7e5950f690eaffbef2_l3.png)
and therefore we cannot conclude that the following quantity is non-negligible in
![Rendered by QuickLaTeX.com P_\mathcal{H}[ (\omega^{*}, r'^{*}, \mathcal{H}) \in S_i\ |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in S_i,\ \rho_1 = \rho_1^{*}, ..., \rho_{i-1} = \rho_{i-1}^{*}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-9f97eddce42c24a70600a864ee35f270_l3.png)
In order to show that the above quantity is non-negligible in , we proceed differently. Suppose we can show that the following probability is non-negligible in
:
![Rendered by QuickLaTeX.com P_{(\omega, r', \mathcal{H})} [\exists \beta \in I\ s.t.\ (\omega, r', \mathcal{H}) \in (\Omega_{\beta} \cap S_{\beta})]](https://delfr.com/wp-content/ql-cache/quicklatex.com-3a01a4a6b5ccde413de4d2461b1f116f_l3.png)
This would imply that with non-negligible probability, we can find a tuple that belongs to (and hence corresponds to a successful forgery) and at the same time belongs to
. We can then invoke the splitting lemma result just mentioned, to find a second tuple coresponding to a second forgery and that has the desired properties.
To prove the above, we proceed as follows:
![Rendered by QuickLaTeX.com P[\exists \beta \in I\ s.t.\ (\omega, r', \mathcal{H}) \in (\Omega_{\beta} \cap S_{\beta})\ |\ (\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-f61df9c3e2fc18b6105448f49773a5a9_l3.png)
![Rendered by QuickLaTeX.com =P[\cup_{i \in I} \{{ (\omega, r', \mathcal{H}) \in (\Omega_{i} \cap S_{i})\ |\ (\omega, r', \mathcal{H}) \in S\}}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-faddfdb8a868ed0201d7d73e44953f20_l3.png)
![Rendered by QuickLaTeX.com =\sum_{i \in I} P[(\omega, r', \mathcal{H}) \in (\Omega_{i} \cap S_{i})\ |\ (\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-ca2ae02ae3628676e0701cd6d9562986_l3.png)


![Rendered by QuickLaTeX.com \sum_{i \in I} \{{P[(\omega, r', \mathcal{H}) \in \Omega_{i}\ |\ (\omega, r', \mathcal{H}) \in S_i] \times P[(\omega, r', \mathcal{H}) \in S_{i}\ |\ (\omega, r', \mathcal{H}) \in S]\}}](https://delfr.com/wp-content/ql-cache/quicklatex.com-c00eed2a14c89ef3d77acf9e899800fa_l3.png)
![Rendered by QuickLaTeX.com \geq \frac{1}{2} \sum_{i \in I} P[(\omega, r', \mathcal{H}) \in S_{i}\ |\ (\omega, r', \mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-8341f05934c2fa79a24e099566ef875c_l3.png)



And so we conclude that:
![Rendered by QuickLaTeX.com P_{(\omega, r', \mathcal{H})} [\exists \beta \in I\ s.t.\ (\omega, r', \mathcal{H}) \in (\Omega_{\beta} \cap S_{\beta})]=](https://delfr.com/wp-content/ql-cache/quicklatex.com-a04eec30f722123d52fdf1f3076a154f_l3.png)
![Rendered by QuickLaTeX.com P[\exists \beta \in I\ s.t.\ (\omega, r', \mathcal{H}) \in (\Omega_{\beta} \cap S_{\beta})\ |\ (\omega, r', \mathcal{H}) \in S] \times P_{(\omega, r', \mathcal{H})}[(\omega,r',\mathcal{H}) \in S]](https://delfr.com/wp-content/ql-cache/quicklatex.com-ef1da4cea40b4968bcd6a32472853bf7_l3.png)


So let be such an index and
such a tuple. From the result above, we know that finding such a
can be done with non-negligible probability. And since
, we must have
. We can then invoke the
consequence of the splitting lemma, and write:
![Rendered by QuickLaTeX.com P_\mathcal{H}[(\omega^{*}, r'^{*}, \mathcal{H}) \in S_{\beta}\ |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in \ S_{\beta} ,\ \rho_1 = \rho_1^{*}, ..., \rho_{\beta-1} = \rho_{\beta-1}^{*})]](https://delfr.com/wp-content/ql-cache/quicklatex.com-9b69f5481f2067f4f8b998592ed5e2ee_l3.png)

![Rendered by QuickLaTeX.com = \rho_{\beta-1}^{*})] \geq \frac{\nu(k)}{4Q}](https://delfr.com/wp-content/ql-cache/quicklatex.com-21538cf1af2c2afa39506080e935dd89_l3.png)
We still have one last constraint to impose and that is that . We show that the following quantity is non-negligible:
![Rendered by QuickLaTeX.com P_\mathcal{H}[((\omega^{*}, r'^{*}, \mathcal{H}) \in S_{\beta}) \cap (\rho_{\beta} \neq \rho_{\beta}^{*}) |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in S_{\beta},\ \rho_1 = \rho_1^{*},., \rho_{\beta - 1} = \rho_{\beta - 1}^{*})]](https://delfr.com/wp-content/ql-cache/quicklatex.com-36f28bdf2f050a9001e7943aafcc5ef4_l3.png)
To prove this, note that if and
are independent events, then we can write:
![Rendered by QuickLaTeX.com P[A|C] = P[A \cap B | C] + P[A \cap \overline{B} | C] \leq P[A \cap B | C] + P[\overline{B} | C]](https://delfr.com/wp-content/ql-cache/quicklatex.com-bd9a292bd4e28c00f8afa6aa7f2d325b_l3.png)
![Rendered by QuickLaTeX.com = P[A \cap B | C] + P[\overline{B}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-837b5831b8eb2b1a9b3f317d13d36647_l3.png)
And so we get . This results allows us to write:
![Rendered by QuickLaTeX.com P_\mathcal{H}[((\omega^{*}, r'^{*}, \mathcal{H}) \in S_{\beta})\ \cap\ (\rho_{\beta} \neq \rho_{\beta}^{*}) |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in S_{\beta},\ \rho_1 = \rho_1^{*}, ..., \rho_{\beta - 1} = \rho_{\beta - 1}^{*})]](https://delfr.com/wp-content/ql-cache/quicklatex.com-10085f438183e730469458a9b85cbb0f_l3.png)
![Rendered by QuickLaTeX.com \geq P_\mathcal{H}[(\omega^{*}, r'^{*}, \mathcal{H}) \in S_{\beta} |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in S_{\beta},\ \rho_1 = \rho_1^{*}, ..., \rho_{\beta - 1} = \rho_{\beta - 1}^{*})] - P_{\mathcal{H}}[\rho_{\beta} = \rho_{\beta}^{*}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-27107644971d895133efc3c465043446_l3.png)
![Rendered by QuickLaTeX.com = P_\mathcal{H}[(\omega^{*}, r'^{*}, \mathcal{H}) \in S_{\beta} |\ (\omega^{*}, r'^{*}, \mathcal{H}^{*}) \in \Omega_{\beta},\ \rho_1 = \rho_1^{*}, ..., \rho_{\beta - 1} = \rho_{\beta - 1}^{*})] - P_{\mathcal{H}}[\rho_{\beta} = \rho_{\beta}^{*}]](https://delfr.com/wp-content/ql-cache/quicklatex.com-96966eaf16216b3e0dadd0814470b7c0_l3.png)



Step 5: The final step uses the 2 forgeries obtained earlier to solve an instance of the Discrete Logarithm (DL) problem. Here is a recap of Step 4 results:
- With non-negligible probability of at least
we get a successful tuple
, s.t.
for some index
. So by running
a number of times polynomial in
, we can confidently find such a tuple.
- Once we find such a tuple, we’ve also shown that with non-negligible probability of at least
, we can find another successful tuple
such that
and
, but
.
W.l.o.g, let correspond to
, and
correspond to
.
Recall that is the index of the query
that
sends to the RO. Since the 2 experiments corresponding to the 2 successful tuples have the same random tapes
and
, and since the 2 corresponding ROs
and
behave the same way on the first
queries, we can be confident that the first
queries sent to the 2 ROs are identical. In particular the two
queries are the same (i.e.,
. Moreover by design,
.
So we have 2 successful forgeries and
, with
. Since both are valid signatures, they must satisfy the verification equations. For the particular case of a Schnorr signature scheme , they must satisfy the following 2 equations (1 verification equation per signature):
, where
is the public key of the signer whose signature
is forging.
, where
is the public key of the signer whose signature
is forging.
Writing (
is the secret key of the signer whose signature
is forging), we get:

Since, , we can solve for
(the DL of
) in polynomial time. This contradicts the intractability of DL on multiplicative cyclic groups and we conclude that our signature scheme (in this case the Schnorr’s scheme) is secure against EFACM in the RO model.
References
[1] D. Pointcheval and J. Stern. Security arguments for digital signatures and blind signatures. Journal of Cryptology, 2000.
Tags: Correctness, Privacy, Schnorr, Security, Signature, Unforgeability
No comments
Comments feed for this article
Trackback link: https://delfr.com/pointcheval-stern-generic-signature-scheme-monero-part-2-10/trackback/