コンテンツにスキップ

ElGamal署名

出典: フリー百科事典『ウィキペディア(Wikipedia)』

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の正当性を確認することができる。

署名方式

[編集]

システムパラメータ

[編集]

これらのパラメータはユーザ間で共有される。

鍵生成

[編集]
  • 1 < x < p-1なる整数xをランダムに選ぶ。
  • y = gx 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) であり、bk-1と置く(つまり、k-1剰余類環 における 可逆元 k の逆元である)。
  • rgk (mod p) を計算する。
  • s ≡ (H(m) - x r) k-1 (mod p-1) を計算する。
  • もしs=0であればkを選ぶところからやり直す(これは H(m) - x rp-1 の倍数の場合に起こる非常なレアケースであり、k を変えることにより r が変わり、s が 0 でなくなる可能性が高い)。
  • 整数の組 (r, s)がmに対する署名となる。

検証

[編集]

メッセージ m と署名 (r, s) の検証は以下のように行われる。

  • 0 < r < p かつ 0 < s < p - 1かどうかを確かめる。
  • gH(m)yr rs (mod p)かどうかを確かめる。

もし両方を通れば受理する。そうでなければ拒否する。

完全性

[編集]

署名者が正しく署名したメッセージと署名の組は必ず検証を通るという意味で、このアルゴリズムは完全である。

署名生成アルゴリズムより、

H(m) ≡ x r + s k (mod p-1)

が成立する。 フェルマーの小定理より、

gH(m)gxr gks (mod p)

が得られる。 右辺を計算すると、

gxr gksyr rs (mod p)

が成立する。

安全性

[編集]

署名を偽造するには、

  • 署名者の秘密鍵xを求める
  • H(m) ≡ H(M) (mod p-1)が成立する(m, M)を得る

が必要であると思われる。両者とも難しいと思われている問題である。 1984年の提案ではHは使われていないため、存在的偽造が可能である。

署名者は毎回kをランダムに選ぶ必要がある。また、kの情報を部分的にでも漏らしてはいけない。 そうでない場合、攻撃者が秘密鍵xを得ることが簡単になり、現実的な時間でxが得られるかも知れない。 特に、二つの別々のメッセージに同じ乱数kで署名を行った場合、攻撃者は直接xを得ることが可能になる。

脚注

[編集]
  1. ^ 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/. 
  2. ^ 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. 

関連項目

[編集]