ElGamal署名 (エルガマルしょめい)とは離散対数 問題の困難性に基づく電子署名 方式である。en:Taher ElGamal によって1984年 に提案された[ 1] 。
この記事に書かれているElGamal署名がそのまま実際に使われることはあまりない。NISTが定めたElGamal署名の改良型であるDigital Signature Algorithm (DSA) が用いられることが多い。他にもElGamal署名の改良型が数多く提案されている (例えば, K. Nyberg and R. A. Rueppel[ 2] )。また、同じくTaher ElGamalによって提案されたElGamal暗号 [ 1] と混同してはならない。
ElGamal署名では、安全でない通信路によって検証者が得たメッセージと署名の組から、検証者は署名者が送ったメッセージm の正当性を確認することができる。
H を暗号学的に安全なハッシュ関数 とする。
p を素数 p を法 とする整数 の乗法群
Z
p
∗
{\displaystyle Z_{p}^{*}}
上で離散対数 問題が困難であるような大きな素数とする。
g を
Z
p
∗
{\displaystyle Z_{p}^{*}}
のランダムな原始根 とする。
これらのパラメータはユーザ間で共有される。
1 < x < p -1なる整数x をランダムに選ぶ。
y = g x mod p を計算する。
公開鍵は (p , g , y )。
秘密鍵はx である。
署名を付けたいメッセージをm とする。
0 < k < p -1かつgcd(k ,p -1)=1となるk をランダムに選ぶ。
gcd(k ,p -1) を計算する際に拡張されたユークリッドの互除法 を使用すれば、bk + c (p -1) = 1 を満たす整数 b ,c も同時に得られる。この式を書き換えれば bk ≡ 1 (mod p -1) であり、b を k -1 と置く(つまり、k -1 は剰余類環
Z
p
−
1
{\displaystyle Z_{p-1}}
における 可逆元 k の逆元である)。
r ≡ g k (mod p ) を計算する。
s ≡ (H (m ) - x r ) k -1 (mod p -1) を計算する。
もしs =0であればk を選ぶところからやり直す(これは H (m ) - x r が p -1 の倍数の場合に起こる非常なレアケースであり、k を変えることにより r が変わり、s が 0 でなくなる可能性が高い)。
整数の組 (r , s )がm に対する署名となる。
メッセージ m と署名 (r , s ) の検証は以下のように行われる。
0 < r < p かつ 0 < s < p - 1かどうかを確かめる。
g H (m ) ≡ y r r s (mod p )かどうかを確かめる。
もし両方を通れば受理する。そうでなければ拒否する。
署名者が正しく署名したメッセージと署名の組は必ず検証を通るという意味で、このアルゴリズムは完全である。
署名生成アルゴリズムより、
H (m ) ≡ x r + s k (mod p -1)
が成立する。
フェルマーの小定理より、
g H (m ) ≡ g xr g ks (mod p )
が得られる。
右辺を計算すると、
g xr g ks ≡ y r r s (mod p )
が成立する。
署名を偽造するには、
署名者の秘密鍵x を求める
H (m ) ≡ H (M ) (mod p -1)が成立する(m , M )を得る
が必要であると思われる。両者とも難しいと思われている問題である。
1984年の提案ではH は使われていないため、存在的偽造が可能である。
署名者は毎回k をランダムに選ぶ必要がある。また、k の情報を部分的にでも漏らしてはいけない。
そうでない場合、攻撃者が秘密鍵x を得ることが簡単になり、現実的な時間でx が得られるかも知れない。
特に、二つの別々のメッセージに同じ乱数k で署名を行った場合、攻撃者は直接x を得ることが可能になる。
^ a b Elgamal, T. (1985-07). “A public key cryptosystem and a signature scheme based on discrete logarithms” (英語). IEEE Transactions on Information Theory 31 (4): 469–472. doi :10.1109/TIT.1985.1057074 . ISSN 0018-9448 . http://ieeexplore.ieee.org/document/1057074/ .
^ Nyberg, Kaisa; Rueppel, Rainer A. (1996-01). “Message recovery for signature schemes based on the discrete logarithm problem” (英語). Designs, Codes and Cryptography 7 (1-2): 61–81. doi :10.1007/BF00125076 . ISSN 0925-1022 . http://link.springer.com/10.1007/BF00125076 .