📚
xiyi
本質パートだと思っている場所
- p,q: 518 bit 素数 を自由にとる
-
とするn := p^2q, g := (n-1)/2 - 0 ≤ y < 2^256 が隠されている
- s を自由にとる。
が与えられるので、v := s^yg^r \mod p^2q を復元せよ。ただしy は生成される乱数で、こちらからはわからないr
アイデア
-
であるg = -1/2 \mod p^2, g = -1/2 \mod q - 問題を言い換えると、
-
を好きに決めるs_p \mod p^2, s_q \mod q v_p := s_p^y (-1/2)^r \mod p^2 v_q := s_q^y(-1/2)^r \mod q - が与えられる、 y を復元
-
-
をt_p,t_{p^2},t_q の-1/2 での order とする\mod p,p^2,q t_p | (p-1), t_q|(q-1) -
ort_{p^2} = t_p 普通後者t_p \cdot p
-
と取ってみるs_p = p+1 - 仮に
が小さいなら、t_{p^2} を全探索して破綻なく y が取れるかを確認できる(-1/2)^r \mod p^2 -
なら (つまり、 -1/2 を累乗して mod p で 1 になったタイミングで mod p^2 でも 1 になっているなら) 一意には定まるがt_{p^2} = t_p
- 仮に
-
側の情報をどう使うんだ?q -
にすれば、s_q = 1 を求められるけど(-1/2)^r \mod q - q の情報を使えるんだとしたら、この値から p に関してなにか言えるのか?
- だとすると、
あたりの gcd がでかい、みたいなことが必要?t_p, p, t_q
-
- そもそも p = (2 * 3 * 5 * … * prime_i) * k + 1 みたいな形の素数にすれば、離散対数が簡単に解ける by koba
- 確かに
- p も q もこんな感じのにすればどっちも離散対数が解ける
- ここでいう離散対数が解けるというのは要は
-
側では、q とすることでs_q = 1 がわかるr \mod t_q -
側では、p とすることでs_p = -1/2 がわかるy+r \mod t_{p^2}
-
- ここで
を上述の形にとればp,q が十分大きくなるので、\gcd(t_{p^2},t_q) が一意に復元可能y
Discussion