ぺんぎんさんのおうち

トリトリトリ

複素数点を持つ楕円曲線は構成可能か

はじめに

これは妄想である. なにか明確な答えがあるわけではない.
現在, よく知られている楕円曲線は整数点\((x, y)\)を持つが, これを複素数点\((z_{1}, z_{2})\)で考えることは可能かという話.

この件に関して, 本を探したりネットで検索したりは一切していない. もしかしたら結論が出ているのかもしれないが, 結論を知ってしまったら面白くないだろう.
もし可能だったとして, 複素数で考えることによってセキュリティがどうこうとかそういう話をする予定もない. 単純に気になっただけである.


追記: 複素数点を持つ楕円曲線は構成可能なのか(ちゃんと点と点の足し算などを考えられるか)という話からスタートしたが, ある点と別の点を足して得られた点やある点を2倍して得られた点がちゃんと同じ曲線に乗っていることが確認できた.
これを"複素数楕円曲線"として定義しよう.



複素数

複素数\(z\)は実数\(a, b\)と虚数単位を意味する\(i\)を使って以下のように表される.

$$ z = a + bi; \, a, b \in \mathcal{R}
$$

複素数は体か?

  • 加法, 乗法において結合律を満たす
  • 加法における単位元0が存在する \((e = 0 + 0i)\)
  • 乗法における単位元1が存在する \((e = 1 + 0i)\)

あとは逆元である. まずは加法.
逆元\(-z\)は

$$ -z = -a + (-bi) $$ であり,

\begin{eqnarray} z + (-z) &=& (a + bi) + (-a - bi) \newline &=& 0 + 0i \end{eqnarray} となるため逆元が存在することが言える.
次に乗法. 乗法では零元を考えない.

逆元\(z^{-1}\)は

$$ z^{-1} = \frac{1}{a + bi} = \frac{a - bi}{a^{2} + b^{2}} \, (= \frac{a}{a^{2} + b^{2}} - \frac{b}{a^{2} + b^{2}} i ) $$

\(zz^{-1} = 1 + 0i\)となることを確認しよう.

\begin{eqnarray} zz^{-1} &=& (a + bi) \frac{a - bi}{a^{2} + b^{2}} \newline &=& \frac{a^{2} + b^{2}}{a^{2} + b^{2}} \newline &=& 1 + 0i \end{eqnarray}

したがって複素数\(\mathcal{C}\)は体であることがわかる.

複素数で剰余体を考える

剰余環でもいいが, 楕円曲線につなげることを考えると体の方が都合が良い.
基本的な演算は剰余を考えない場合と同じだが, \(z = a+bi; \, (a, b \in \mathcal{Z}) \)とする.

剰余を考えない場合と同様に確認していこう. Modulusを素数\(p\)とする.

  • 加法, 乗法において結合律を満たす
  • 加法における単位元0が存在する \((e = 0 + 0i)\)
  • 乗法における単位元1が存在する \((e = 1 + 0i)\)

逆元をみていこう.
加法
\begin{eqnarray} z + (-z) &=& (a + bi) + (-a - bi) \, mod \, p \newline &=& (a + bi) + ((p-a) + (p- b)i) \newline &=& a + (p-a) + (bi + pi- bi) \newline &=& p + pi \newline &=& 0 + 0i \end{eqnarray}

加法において\(-z = -a - bi \, mod \, p\)が逆元として存在する.
続いて乗法. やはり零元は考えない.

\begin{eqnarray} z^{-1} &=& \frac{1}{a + bi} \, mod \, p \newline &=& \frac{a}{a^{2} + b^{2}} - \frac{b}{a^{2} + b^{2}}i \newline &=& a(a^{2} + b^{2})^{-1} - bi(a^{2} + b^{2})^{-1} \newline &=& (a - bi)(a^{2} + b^{2})^{-1} \end{eqnarray}

\(zz^{-1} = 1 + 0i\)となればよい.

\begin{eqnarray} zz^{-1} &=& (a + bi)(a - bi)(a^{2} + b^{2})^{-1} \newline &=& (a^{2} + b^{2})(a^{2} + b^{2})^{-1} \newline &=& 1 + 0i \end{eqnarray}


ただし, \(a^{2} + b^{2} \neq 0 \, mod \, p \, \,(\forall a, b \in GF(p) )\)でなければならない.
このような\(p\)は, 複素数を使っても素因数分解できない素数を選べばいい気がしている.

たとえば, \(17 = (4 + i)(4 - i)\) や \(65537 = (256 + i)(256 - i)\)はだめ. \(17 = 4^{2} + (-i^{2}) \) なので正しそう.


Modulusである素数の選び方によっては複素数の剰余体を構成することが可能であることが言えそうな気がしてきた.
ではこれらを踏まえて, 今回の本題である楕円曲線の話に進んでいこう.

複素数点 on the Elliptic Curve

楕円曲線では, 点の座標を\((x, y); \, \, x, y \in GF(p) \) を使って表した.
これを \( (z_{1}, z_{2}) \) に置き換えてみる. ここで \( z_{1} = x_{1} + y_{1}i\), \( z_{2} = x_{2} + y_{2}i\) としよう.


$$ z_{2}^{2} = z_{1}^{3} + Az_{1} + B $$

$$ A := (a, 0) = a + 0i , B := (b, 0) = b + 0i $$

(左辺の実部 = 右辺の実部) & (左辺の虚部 = 右辺の虚部) となるような\( (z_{1}, z_{2}) \)を, この曲線の点とする.

\( (z_{1}, z_{2}) \)のそれぞれが実部と虚部を持つので4次元(?)空間になる. グラフで表現できないということが素晴らしい.

Golangで実装した. 点と点の足し算の定義などはしていないが, 実際に楕円曲線の式を満たす点は存在することがわかった.

\(P = (zx_{1}, zy_{1})\), \(Q = (zx_{2}, zy_{2})\) を \(P = (x_{1}, y_{1})\), \(Q = (x_{2}, y_{2})\) とみなして計算しても同じ曲線の上に点を持つ. ということは, これを複素数点を持つ楕円曲線として定義できたことになる.