For a prime p, given g, x=g2r(modp), and y such that y2≡x(modp), is it possible to determine if y≡gr(modp) without calculating the discrete logarithm? Comparing numbers by size doesn't seem to help.
For example, with p=107, g=2, and x=292≡33(mod107), the square roots are 56 and 51modp. Is there a way to determine that 56≡246 just from the values of p,g,x without computing/knowing r?
EDIT: Could this be possible if r is restricted to some range? like 0≤r<p2 or p2≤r<p? Thanks!
Answer
No. Suppose that you can find "true" (with respect to g) square root in T(p) time (denote "true" square root of x as fg(x)). Then you can find discrete logarithm (for simplicity, let it take values 1,2,…,p−1 instead of usual choice 0,1,…,p−2) of any non-zero remainder modulo p in O(T(p)poly(logp)) time:
loggx={1 if x=g 2loggfg(x) if x is a quadratic residue2loggfg(gx)−1 if x is a quadratic non-residue and is not equal to g.
Notice that loggfg(x)=loggx2 and loggfg(gx)=loggx+12, so computation of loggx using this recursive formula halts in O(logp) iterations. Also, making each recursive call takes
O(poly(logp)) time.
(Checking whether number is quadratic residue or not can be easily done in O(poly(logp)) time, for example one may calculate x(p−1)/2modp and check whether it is 1 or −1).
No comments:
Post a Comment