In this game, the adversary is given n+1 group elements,
and can query for n 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 being the only change:
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∣i=n+1)
Now, because each of these gives progressively weaker
capabilities, we have:
OMDL-Staticb≤OMDL-Dynamicb≤OMDL-Adapativeb
This can be proved via straight-line reductions.
The other direction is harder.
OMDL-Dynamicb≤OMDL-Staticb
The idea behind this reduction is that if the adversary
A for OMDL-Dynamic happens to ask
for i^=n+1, you can satisfy their query immediately.
At first, this seems like it would reduce your advantage by
a factor of n+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+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) chance of the adversary picking it.
Proof:
More formally, given this adversary A for OMDL-Dynamic, we construct an adversary B for
OMDL-Static, as follows:
Query Public and DLog to learn X0,…,Xn+1 and associated x0,…,xn. Let xn+1=⊥.
Retry the following steps until they succeed (resetting any state modifications):
Choose random r_0,…,r_n+1RZ/(q), and set xj←rj⋅xj, as well as Xj←rj⋅Xj.
Choose a random jR[1,…,n+1], and swap Xj and X_n+1, as well as xj and x_n+1.
Run A using these group elements and scalars to answer their queries,
dividing by rj before forwarding their answers to Challenge, and abort if they call DLog with i^=j.
Return what A returned.
The expected number of retries is n+1. This is because the
behavior of A is completely independent
of j, 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) chance that we have to abort
when running A.
□
OMDL-Adaptiveb≤OMDL-Staticb
It's actually not any easier to prove OMDL-Adaptive≤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 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+1,
we can look at the sequence of queries made by A, if they get
the answer each time. This defines a sequence of random variables i0,…,in,
which depends solely on Xi. We can also define a related random variable,
i^, represented the index which isn't queried. This is a function of i0,…,in,
and so depends solely on our choice of Xi.
In particular, i^ is independent from the random j we choose at each iteration,
because of the re-randomization, and so the analysis from the previous reduction
applies exactly.