logo

エルガマル公開鍵暗号方式の証明 📂整数論

エルガマル公開鍵暗号方式の証明

ビルドアップ

20190221_153017.png

左から順に、アリスボブイブとしよう。アリスとボブはメッセージを交換する当事者で、イブはメッセージに興味を持つ消極的な攻撃者だ。オレンジ色の箱はアリスだけが知っている情報を、水色の箱はボブだけが知っている情報を、黒色の箱は公開されている(イブも知っている)情報を示している。

アリスにはボブから受け取るべきメッセージmNm \in \mathbb{N}がある。

アルゴリズム 1

Fp=Fp{0}={1,g,g2,,gp2}\mathbb{F}_{p}^{ \ast } = \mathbb{F}_{p} \setminus \left\{ 0 \right\} = \left\{ 1, g , g^2 , \cdots , g^{p-2} \right\} は要素数が(p1)(p-1)個の巡回群としよう。


キー設定: 非常に大きな素数ppordp(g)\text{ord}_{p} (g)が大きな素数であるgFpg \in \mathbb{F}_{p}^{ \ast }を選んで公開する。

アリスは自分だけが知っているキー1ap11 \le a \le p-1を決めて、Aga(modp)A \equiv g^{a} \pmod{p}を計算して公開する。

20190221_153225.png


暗号化: 一回用のランダムキーkkを生成する。ボブはc1gk(modp)c_{1} \equiv g^{k} \pmod{p}c2mAk(modp)c_{2} \equiv m A^{k} \pmod{p}を計算して(c1,c2)(c_{1} , c_{2})をアリスに送信する。

20190221_153238.png


復号化: アリスが(c1,c2)(c_{1} , c_{2})を使ってx(c1a)1c2m(modp)x \equiv (c_{1}^{a} )^{-1} c_{2} \equiv m \pmod{p}を計算するとx=mx = mを得る。イブは現実的にaaを知ることができないため、mmを知ることができない。

20190221_153317.png

説明

実際、体系自体でgg位数ordp(g)\text{ord}_{p} (g)が大きくなければならない理由はないが、単純に計算する場合の偶然の可能性を下げるためには、位数が大きい数を選ぶ方が良い。

証明

復号化

アリスはaaを知っておりc1gk(modp)c_{1} \equiv g^{k} \pmod{p}c2mAk(modp)c_{2} \equiv m A^{k} \pmod{p}であるためkkを知らなくても (c1a)1c2(gak)1c2(gak)1(mAk)(gak)1(m(ga)k)m(gak)1gakm(modp) \begin{align*} (c_{1}^{a} )^{-1} c_{2} & \equiv \left( g^{ak} \right)^{-1} \cdot c_{2} \\ & \equiv \left( g^{ak} \right)^{-1} \cdot \left( m A^{k} \right) \\ & \equiv \left( g^{ak} \right)^{-1} \cdot \left( m \left( g^{a} \right)^{k} \right) \\ & \equiv m \left( g^{ak} \right)^{-1} \cdot g^{ak} \\ & \equiv m \pmod{p} \end{align*} を簡単に計算することができる。

暗号化

イブはc1c_{1}c2c_{2}しか知らずaakkを知らないため、離散対数問題gxc1a(modp){g}^{x} \equiv c_{1}^{a} \pmod{p}を知ることができず、知ったとしても直接解かなければならない。これは非常に難しいため、ボブはメッセージmmを安全にアリスに伝えることができる。

参照

離散対数問題の困難さを利用したセキュリティアルゴリズム

離散対数問題に対する攻撃アルゴリズム


  1. Hoffstein. (2008). An Introduction to Mathematical Cryptography: p70. ↩︎