On Defining the One More Discrete Logarithm Problem

Here are three slightly different notions of the "One More Discrete Logarithm Problem" (OMDL), formulated as games.

[!note] Note: I'll be using the formalism of State-Separable proofs, as I wrote about recently.

First, the classic notion:

OMDL-Adaptiveb x_0,,x_n+1RZ/(q)X_0,,X_n+1xiGPublic(): return (X_0,,X_n+1)count1DLog(i): assert count++<n+1 return xiChallenge(x^_0,,x^_n+1): return b=0i. x^i=xi\boxed{ \begin{aligned} &\colorbox{#FBCFE8}{\large $\text{OMDL-Adaptive}_b$ }\cr \cr &x\_0, \ldots, x\_{n + 1} \xleftarrow{R} \mathbb{Z}/(q)\cr &X\_0, \ldots, X\_{n + 1} \gets x_i \cdot G\cr \cr &\underline{\texttt{Public()}:}\cr &\ \texttt{return } (X\_0, \ldots, X\_{n + 1})\cr \cr &\text{count} \gets 1\cr &\underline{\texttt{DLog(}i\texttt{)}:}\cr &\ \texttt{assert } \text{count++} < n + 1\cr &\ \texttt{return } x_i\cr \cr &\underline{\texttt{Challenge(}\hat{x}\_0, \ldots, \hat{x}\_{n + 1}\texttt{)}:}\cr &\ \texttt{return } b = 0 \land \forall i.\ \hat{x}_i = x_i\cr \end{aligned} }

In this game, the adversary is given n+1n + 1 group elements, and can query for nn of the discrete logarithms, adaptively.

Another variant allows queries for elements of the adversary's choice, but not adaptively. This game is identical, with the DLog\texttt{DLog} being the only change:

OMDL-Dynamicb count1DLog(i^): assert count++=1 return (xi  ii^)\boxed{ \begin{aligned} &\colorbox{#FBCFE8}{\large $\text{OMDL-Dynamic}_b$ }\cr &\ldots \cr &\text{count} \gets 1\cr &\underline{\texttt{DLog(}\hat{i}\texttt{)}:}\cr &\ \texttt{assert } \text{count++} = 1\cr &\ \texttt{return } (x_i\ |\ i \neq \hat{i})\cr \end{aligned} }

Finally, you can also make it so that the adversary doesn't get to choose which group elements they get the logarithm for:

OMDL-Staticb DLog(): return (xi  in+1)\boxed{ \begin{aligned} &\colorbox{#FBCFE8}{\large $\text{OMDL-Static}_b$ }\cr &\ldots \cr &\underline{\texttt{DLog(}\texttt{)}:}\cr &\ \texttt{return } (x_i\ |\ i \neq n + 1)\cr \end{aligned} }

Now, because each of these gives progressively weaker capabilities, we have:

OMDL-StaticbOMDL-DynamicbOMDL-Adapativeb\text{OMDL-Static}_b \leq \text{OMDL-Dynamic}_b \leq \text{OMDL-Adapative}_b

This can be proved via straight-line reductions.

The other direction is harder.

OMDL-DynamicbOMDL-Staticb\text{OMDL-Dynamic}_b \leq \text{OMDL-Static}_b

The idea behind this reduction is that if the adversary A\mathcal{A} for OMDL-Dynamic\text{OMDL-Dynamic} happens to ask for i^=n+1\hat{i} = n + 1, you can satisfy their query immediately. At first, this seems like it would reduce your advantage by a factor of n+1n + 1, since you need to get lucky.

The trick is that you can reset the adversary, and try again. The adversary may not ever pick n+1n + 1 in their strategy, so instead you need to rearrange the group elements yourself, picking where you place the "hole" randomly, so that there's always a 1/(n+1)1 / (n + 1) chance of the adversary picking it.

Proof:

More formally, given this adversary A\mathcal{A} for OMDL-Dynamic\text{OMDL-Dynamic}, we construct an adversary B\mathcal{B} for OMDL-Static\text{OMDL-Static}, as follows:

  1. Query Public\texttt{Public} and DLog\texttt{DLog} to learn X0,,Xn+1X_0, \ldots, X_{n + 1} and associated x0,,xnx_0, \ldots, x_n. Let xn+1=x_{n + 1} = \bot.
  2. Retry the following steps until they succeed (resetting any state modifications):
  3. Choose random r_0,,r_n+1RZ/(q)r\_0, \ldots, r\_{n + 1} \xleftarrow{R} \mathbb{Z}/(q), and set xjrjxjx_j \gets r_j \cdot x_j, as well as XjrjXjX_j \gets r_j \cdot X_j.
  4. Choose a random jR[1,,n+1]j \xleftarrow{R} [1, \ldots, n + 1], and swap XjX_j and X_n+1X\_{n + 1}, as well as xjx_j and x_n+1x\_{n + 1}.
  5. Run A\mathcal{A} using these group elements and scalars to answer their queries, dividing by rjr_j before forwarding their answers to Challenge\texttt{Challenge}, and abort if they call DLog\texttt{DLog} with i^j\hat{i} \neq j.
  6. Return what A\mathcal{A} returned.

The expected number of retries is n+1n + 1. This is because the behavior of A\mathcal{A} is completely independent of jj, particularly because we randomize the group elements at each iteration, so that they're indistinguishable from freshly sampled group elements. Thus, at each try, there's at most an n/(n+1)n / (n + 1) chance that we have to abort when running A\mathcal{A}.

\square

OMDL-AdaptivebOMDL-Staticb\text{OMDL-Adaptive}_b \leq \text{OMDL-Static}_b

It's actually not any easier to prove OMDL-AdaptiveOMDL-Dynamic\text{OMDL-Adaptive} \leq \text{OMDL-Dynamic}, so we'll prove this one instead.

The basic idea of the reduction is the same, it's just that the analysis is more complicated. We re-randomize and shuffle the group elements as in the previous reduction, and we abort the adversary A\mathcal{A} if it ever queries the group element we have no scalar for. Analyzing this is trickier because of the adaptivity.

The idea is that given our choices of group elements X_0,,X_n+1X\_0, \ldots, X\_{n + 1}, we can look at the sequence of queries made by A\mathcal{A}, if they get the answer each time. This defines a sequence of random variables i0,,ini_0, \ldots, i_n, which depends solely on XiX_i. We can also define a related random variable, i^\hat{i}, represented the index which isn't queried. This is a function of i0,,ini_0, \ldots, i_n, and so depends solely on our choice of XiX_i.

In particular, i^\hat{i} is independent from the random jj we choose at each iteration, because of the re-randomization, and so the analysis from the previous reduction applies exactly.

\square