strong primeを使う理由.

今使っている教科書の話.
当初, 離散対数系の暗号や署名で使っている群は p:素数とし, Z_p^{*}. で, 特に説明もなく q:素数, p:素数, p=2kq+1 として, 使う群を Z_p^{*} 中の位数 q の巡回群 G にすると良いよ, という話が出てくる. G の生成元 g を作るのは楽で, 適当に Z_p^{*} の元 h を選んで, h^{(p-1)/q} としてそれが1でなければ使うと.
なぜ p=kq+1 (k:奇数)ではダメなのか? というのをゼミ中につっこもうとしたのだけれども, またDL仮定やCDH仮定しかしていないので, 出来なかった. IND系の安全性を言うときにDDH仮定が欲しくなる. このときに, 普通に Z_p^{*} を使ったり p=kq+1 の形の場合の G を使ったりしていると, DDH仮定が言えない. (気付いたのはつい先日だったりする.)
あと, 今日は DSS の DSA を見ると ElGamal署名と比べて署名長が短いという点が教科書には書いてある. しかし, 平文空間が小さくなる点に触れてないって, ダメですやん(;´Д`)