Logo

Nola's Backyard

ElGamal署名

離散対数問題を安全性の根拠にするデジタル署名。
DSA の元になった方式。


署名者 A と検証者 B の間のやり取りを考える。

  1. 素数 pp と、Fp×\mathbb{F}_{p}^{\times} の生成元 gg を固定し、A と B で共有する
g∈Fp× g\in\mathbb{F}_{p}^{\times}
  1. A は秘密鍵 x∈{1,…,p−2}x\in\{1,\dots,p-2\} を決め、公開鍵 yy を共有する
y≡gx(modp) y\equiv g^{x}\pmod p
  1. A はメッセージ mm に署名 (r,s)(r,s) を作り、B に送る
k∈{1,…,p−2},gcd⁡(k,p−1)=1,r≡gk(modp),s≡k−1(H(m)−xr)(modp−1) \begin{aligned} k&\in\{1,\dots,p-2\},\quad \gcd(k,p-1)=1, \\ r&\equiv g^{k}\pmod p, \\ s&\equiv k^{-1}(H(m)-xr)\pmod {p-1} \end{aligned}
Note

k−1k^{-1} を  mod (p−1)\bmod (p-1) で考えるため、gcd⁡(k,p−1)=1\gcd(k,p-1)=1 が必要。

  1. B は (r,s)(r,s) を検証する
gH(m)≡yrrs(modp) g^{H(m)}\equiv y^{r}r^{s}\pmod p

これが成り立つなら正しい署名