楕円曲線:点を足すと曲線上を跳ねる
弦と接線で点を「足し算」する楕円曲線。実数体では作図で、有限体では kG の散らばりで離散対数の難しさを体感します。
モード
-1.0
1.6
-0.80
1.20
キャンバスを左右にドラッグすると P を、グレーの点を動かすと Q を動かせます。
点 P
—
点 Q
—
直線の傾き λ
—
和 R = P + Q
—
弦と接線の作図
楕円曲線
楕円曲線
P = Q のときは直線の代わりに接線を引きます(2P の計算)。この奇妙な規則で点同士を足すと、点は曲線上をぴょんぴょん跳ねます。
暗号では座標を有限体(mod p)に置き換えます。G を k 回足した
y² = x³ + a·x + b 上の 2 点 P, Q を結ぶ直線は、必ずもう 1 点で曲線と交わります。
その交点を x 軸で折り返した点が「足し算」の結果 R = P + Q です。P = Q のときは直線の代わりに接線を引きます(2P の計算)。この奇妙な規則で点同士を足すと、点は曲線上をぴょんぴょん跳ねます。
暗号では座標を有限体(mod p)に置き換えます。G を k 回足した
P = kG は簡単に作れるのに、P と G から k を逆算するのは猛烈に難しい ── これが楕円曲線離散対数問題で、ECDSA / ECDH の安全性の土台です。
いま何が起きている?
ここがポイント
- 幾何で足し算 ── P と Q を通る直線の第 3 交点を x 軸で反転したものが P+Q。同じ点なら接線を使う。
- 無限遠点 O が単位元 ── 垂直な直線は「無限遠点」O で交わり、P + (-P) = O(足し算のゼロ)になる。
- kG は簡単・逆算は困難 ── 倍々法で kG はすぐ出るが、点の並びはランダムに見え k は当てられない(離散対数の壁)。
- 順方向が公開鍵 ── 秘密鍵 k → 公開鍵 P=kG。トイ素数では総当たりで解けるが、実用では p が約 256bit で全数探索は不可能。