楕円曲線とモジュラー形式が同じものになる理由とついでにフェルマーの最終定理
目次
ブラウザでHTTPSのサイトを開いたときのTLSハンドシェイクは、いまほぼ確実に楕円曲線を使って鍵交換と署名をしている。Bitcoin・Ethereumの署名(secp256k1)、Signal や WhatsApp のメッセージ暗号化(Curve25519)、SSH の公開鍵(Ed25519)、TLS 1.3 の鍵交換(X25519、P-256)、これらの裏で「楕円曲線」と呼ばれる曲線の仲間が動いている。RSAより短い鍵長で同等以上の安全性が出るので、ここ10年で標準的な選択肢になった。
その安全性の根拠は、曲線上の「点の加法」を逆向きに解く問題(楕円曲線離散対数問題)がコストに対して指数的に重いという代数構造に支えられている。前向きに を 倍する計算は速く、逆に「 となる 」を求める計算は指数的に重い。この非対称性で鍵の秘匿が成り立つ。
自分は「楕円曲線」という単語を何度も見ていただけで、なぜ曲線で暗号が組めるのか、形はどんなものか、楕円とどう違うのかを真面目に追ったことはなかった。調べてみると、暗号で使われる「点の加法」という構造がそのまま、フェルマーの最終定理の証明にも使われた道具だった、という地続きの話だった。
この記事では楕円曲線とは何かを図と数式で追って、点の加法がなぜ暗号アルゴリズムの中で動けるかを示す。同じ加法構造がモジュラー形式と結ばれること(谷山-志村予想)まで延長すれば、フライの曲線でフェルマーの最終定理が証明されるところまで一本の線で繋がる。前提は群論と複素関数を少しかじったことがある程度。完全に理解するには専門書が必要になる。
群・環・体を軽くおさらい
以降「有理数体 」「アーベル群」「」のような言葉がそのまま出てくるので、最小限の対応表を置いておく。すでに知ってる人は読み飛ばしていい。
| 構造 | できること | 主な性質 | 例 |
|---|---|---|---|
| 群 | 演算が1つ(加法 or 乗法のどちらか) | 結合則・単位元・逆元 | 、楕円曲線の点全体 |
| アーベル群 | 群+順番を入れ替えてもいい | 、 | |
| 環 | 加法と乗法 | 加法はアーベル群、乗法は結合則と分配則 | 、 |
| 体 | 加法・減法・乗法・除法( 除く) | 環+ 以外で乗法の逆元あり | 、、、 |
は素数 で割った余りの世界()で、加法・乗法・除法すべて で閉じている。後で楕円曲線を「素数で還元する」場面で出てくる。
楕円曲線とはどんな曲線か
楕円曲線は、有理数体 (あるいは別の体)の上で
と書ける曲線のうち、右辺が重根を持たないもの。条件は
(判別式が非ゼロ)。これが破れると曲線に尖りや自己交差ができて「特異」になる。楕円曲線では避ける。
形を見てもらうのが早い。
これは判別式が正の場合で、ひとつながりの曲線になる。 を変えると形は変わる。
楕円曲線という名前は楕円とは無関係。歴史的経緯で、楕円の弧長を求める積分(楕円積分)の解析から派生した名前なので、形は楕円ではない。
楕円曲線には加法がある
楕円曲線の上の点には「加法」を入れることができる。これによって曲線上の点全体が群になる。
2点 を取って直線 を引く。曲線は3次なので、直線は曲線と(多重度込みで)ちょうど3点で交わる。第3の交点を とし、 を 軸で折り返した点を と定める。
座標を素直に足しているわけではないことに注意。「加法」と呼んではいるが、 の座標は と の座標の足し算にはなっていない。 と から幾何的な作図で決まる別の点になる。
これは一番素直なケースで、点の取り方によって計算は変わる。
のときは直線 が一意に決まらないので、 における曲線の接線を使う。接線の傾きは陰関数微分から で出る。
と が同じ 座標で の符号だけが逆(つまり )のときは、直線が垂直になる。曲線との第3の交点は 方向の無限遠にしかない。
ここで定義した加法が本当に「群」を作るかを見ていく。曲線上の任意の2点 について、直線 は1本に決まり、3次曲線との第3の交点 も(重複度込みで)一意に決まり、 軸で折り返した も一意に決まる。「2点を入力すると曲線上の点が1つ返ってくる」演算が矛盾なく定義できている。曲線 の上には基本的に無限個の有理点があり、その間にこの加法が1つ定まる。
を固定して を動かしたときも、 は曲線上を漏れなく重なりなく動く( を足せば元に戻るので、 は1対1対応)。
群が満たすべき条件を順に並べると、いずれもこの加法で成立する。
- 閉じている。 なら も の点。第3の交点は定義から曲線上にあり、折り返した点も曲線が 軸対称なので曲線上に残る。
- 可換。。直線 と直線 は同じ直線なので、第3の交点も同じになる。
- 単位元 がある。 と を結ぶ「直線」は を通る垂直線で、曲線と で交わる。第3の交点 を折り返すと に戻るので、。
- 逆元がある。 に対して が逆元。図3で見た通り 。
残るは結合則 。これだけは図を見ただけでは納得しにくく、証明には射影平面の代数幾何(ベズーの定理の系)を要する。
この加法は曲線の幾何構造に従って の取り方ごとに計算式が分岐するもので、座標を成分ごとに足したものとは別物になる。前向きの計算(「 を 倍した点 を求める」)はバイナリ展開と倍化を組み合わせて 回の加法で済む。一方、逆問題(「 を何倍したら になるか求める」)は素朴な探索だと指数的なコストがかかる。
この加法のもとで、有理点( に係数を持つ点)の集合 がアーベル群になる。モーデル・ヴェイユの定理により、これは有限生成。つまり
の形に書ける( は階数、 はねじれ部分)。「楕円曲線の有理点の構造を理解する」という問題が、群論の問題になる。
楕円曲線が暗号として動く仕組み
ここまでで「曲線上の点に加法が入って群になる」「前向き は速く、逆問題は指数的に重い」という構造が手元にある。この非対称性を直接利用すれば、曲線そのものから暗号アルゴリズムが組み立てられる。
実際の暗号で使うのは、有理数体上の楕円曲線 ではなく、有限体 上の楕円曲線 ( は大きな素数)。方程式は同じ で、座標が で計算される。点の集合 は有限個の点からなる有限アーベル群で(点の数はおおむね 個前後)、ここまで述べた加法はそのまま使える。
楕円曲線ディフィー・ヘルマン鍵交換(ECDH)はこういう手順で動く。
sequenceDiagram
participant A as Alice
participant B as Bob
Note over A,B: 公開パラメータ = 曲線 E/F_p と基点 G
A->>A: 秘密鍵 a を生成、aG を計算
B->>B: 秘密鍵 b を生成、bG を計算
A->>B: 公開鍵 aG を送信
B->>A: 公開鍵 bG を送信
A->>A: a × bG = abG
B->>B: b × aG = abG
Note over A,B: 共有秘密 abG が両者の手元に
公開パラメータとして曲線 と基点 を全員に共有しておく。Alice は秘密鍵 (整数)を選んで を計算し、Bob に送る。Bob は逆に を選んで を送る。受け取った相手の公開鍵に自分の秘密鍵を掛けると、両者とも同じ点 にたどり着き、これが共有秘密になる。
盗聴者は 、、 を見ているが、ここから や を復元するには「 を何倍したら になるか」を解く必要がある。これが楕円曲線離散対数問題(ECDLP)で、最良の汎用アルゴリズム(Pollard’s rho など)でも のコストがかかる。256ビット程度の を取れば現実的な計算資源では解けない。
同等の安全性を出すのに RSA なら2048ビット程度の鍵が必要なところ、ECCでは256ビットで済む。鍵が短い分、計算量も通信量も小さくなる。TLS 1.3 で ECDHE がデフォルトになり、Signal や Bitcoin、SSH の Ed25519 が標準になっていった背景には、この性能差がある。
署名(ECDSA / Ed25519)も同じ群構造を使って組まれていて、流れ自体は ECDH と同じく「秘密鍵から公開鍵を作って群演算で検証する」形になる。
ここまでで暗号への接続は説明できた。次は同じ加法構造が、暗号とは別の方向に伸びていく話になる。
モジュラー形式とは何か
ここから複素関数論の領域に入る。下流(谷山-志村以降)で使うのは、このセクションの最後に出てくる「フーリエ係数列 」というデータだけなので、定義の細部が重く感じたら、係数列の式が出てくるところまで読み飛ばして構わない。
ここで一見まったく無関係に見える対象を導入する。モジュラー形式は、上半平面
上の正則関数 で、強い対称性を持つもの。具体的には、整数行列
による作用
に対して、
を満たす(重さ のモジュラー形式)。さらに で有界。係数 (無限遠点で消える)ものを「カスプ形式」と呼ぶ。
何が「対称性が強い」かというと、 で が不変、 で 倍にしか変わらない、という条件が同時に課されている。これだけ強い条件を満たす関数の空間は次元が小さく、重さ とレベル( ではなくその部分群 にする)でほぼ決まる。
ここで使うのが「フーリエ展開」。 で不変なので、 と置けば は
の形に書ける(カスプ形式なら )。この係数列 が、次のセクションで楕円曲線側のデータと一致する対象になる。
楕円曲線とモジュラー形式は同じL関数を作る(谷山-志村予想)
楕円曲線 に対して、各素数 で
を定める。 を素数 で還元(係数を )して、 上の点を数える。 上だと有限個に収まるので、その個数の「ずれ」を とする。
これを使って 関数を作る。
楕円曲線の数論的データ(各素数での点の数)が、ディリクレ級数の係数 として並ぶ。
一方、モジュラー形式 からも 関数が作れる。
谷山-志村予想(現在は定理、ワイルズ・テイラー 1995 + ブルイユ・コンラッド・ダイヤモンド・テイラー 2001 で完全証明)はこう主張する。
任意の楕円曲線 に対し、重さ2のカスプ形式 で となるものが存在する。 は の導手と呼ばれる量で、悪い還元を持つ素数だけから決まる。
楕円曲線から作った数列 と、あるモジュラー形式のフーリエ係数 が完全に一致する。「同じものになる」というのは、 関数を経由した、この係数列の一致を指す。
幾何的対象(楕円曲線)と解析的対象(モジュラー形式)が、 関数という数列レベルで重なる。なぜそんなことが起きるのかには、ガロワ表現を経由した深い理由があるが、本稿では「事実としてそうなる」と認めておく。
フライの曲線でフェルマーの解を楕円曲線に押し込む
フェルマーの最終定理: の整数で
を満たす互いに素な正整数 は存在しない。
合成数の指数は素因数で割れた話に帰着するので、 が素数 の場合と の場合だけ示せば足りる。 などは19世紀までに別々の代数的整数論で個別に証明されていたが、すべての を一気に証明する道具がなかった。それが楕円曲線とモジュラー形式の同一視で、フライの曲線がその対応を発動させる入口になる。
フライのアイデアは、もし仮に解 が存在したら、その解から楕円曲線を一つ組み立ててしまえ、という発想だった。
右辺が3つの1次式の積で、 で になる楕円曲線である。
この曲線が特殊なのは、判別式の形に表れる。
判別式が「 乗」の塊で構成されている。これは普通の楕円曲線では起きない構造で、各素因数の現れ方に強い偏りがあり、ガロワ表現の側に強い制約を生む。
リベットの定理で矛盾に追い込む
仮にフェルマーの解が存在したとして、フライの曲線 が登場した。谷山-志村予想(が証明されているとすれば)により、 はあるモジュラー形式 に対応する。
ここでリベットのレベル下げ定理(1990)を使う。リベットは、 の -進ガロワ表現の性質から、対応するモジュラー形式 のレベル( の )を 2 まで下げられることを示した。直感的には、フライの曲線の判別式の特殊な形が、「悪い還元の素数」を 2 だけに絞り込ませる。
つまり、フェルマーの解が存在するなら、重さ 2、レベル 2 のカスプ形式
が存在しなければならない。
ところが の次元は
つまり、そんなカスプ形式は存在しない。「存在しないモジュラー形式に対応せざるを得ない」という矛盾が出てくる。
全体の論理の流れはこうなる。
graph TD
A["フェルマー解 a^p + b^p = c^p が存在と仮定"]
B["フライの曲線 E_F<br/>y^2 = x(x - a^p)(x + b^p)"]
C["谷山-志村<br/>E_F に対応する重さ2のカスプ形式 f が存在"]
D["リベットのレベル下げ<br/>f のレベルは 2 まで下げられる"]
E["だから重さ2・レベル2 のカスプ形式 f が必要"]
F["S_2(Γ_0(2)) は 0 次元"]
G["矛盾<br/>したがってフェルマー解は存在しない"]
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
実際のワイルズの仕事は、谷山-志村予想を、フライの曲線が属する「半安定」と呼ばれるクラスに対して証明することだった(リベットはそれを使ってフェルマーの最終定理を証明するために必要な前段階を1986年に整えた)。残り(半安定でない楕円曲線への一般化)はブルイユ・コンラッド・ダイヤモンド・テイラーが1999-2001年に完成させた。
「楕円曲線」「モジュラー形式」という、形も場所も違う2つの対象が、L関数を経由して同一視できる。その同一視は、フェルマーの方程式から作ったうそ臭い楕円曲線を、存在しないモジュラー形式と紐付けて、矛盾を出すために使える。同じになる理由がそのまま、フェルマーの最終定理が成り立つ理由となり、そして同じ加法構造が、いま開いているブラウザのTLSセッションの中でも動いている。