楕円曲線(だえんきょくせん、elliptic curve)とは、導入されたときから幅広い応用分野が存在し、近年の暗号技術においても重要な役割を果たす代表的な数学オブジェクトの一つである。

楕円曲線の定義

楕円曲線とは、以下のような形式の方程式で表される曲線のことである。

y2=x3+ax+by^2 = x^3 + ax + b

ここで、aabb は実数である。また、xxyy は複素数をとる(複素平面上の点である)。この方程式は、y2x3axb=0y^2 - x^3 - ax - b = 0 とも書かれる。

この曲線上の点を、座標 (x,y)(x,y) で表す。ただし、この座標系において、点 OO を原点とする。

楕円曲線上の演算

楕円曲線上の演算には、以下のようなものがある。

加算

楕円曲線上の点 P1P_1P2P_2 の加算 P3=P1+P2P_3 = P_1 + P_2 は、以下のように定義される。

  1. P1P_1P2P_2 を直線 ll で結ぶ(ただし、P1=P2P_1 = P_2 の場合は、接線を引く)。
  2. ll と楕円曲線との交点を求める。交点を P3P_3 とする。
  3. P3P_3yy 座標について、y=yy = -y' となるようにする。ただし、yy'P3P_3 における yy 座標である。

減算

楕円曲線上の点 P1P_1P2P_2 の減算 P3=P1P2P_3 = P_1 - P_2 は、以下のように定義される。

  1. P2P_2 を反転させた点を P2-P_2 とする。
  2. P1P_1P2-P_2 の加算を行う。

スカラー倍

楕円曲線上の点 PP のスカラー倍 Q=[k]PQ = [k]P は、以下のように定義される。

  1. kk を2進数で表し、それを反転させたものを ee とする。
  2. ee の各ビットについて、以下を繰り返す。
    1. 現在の点を2倍する。
    2. ee の現在のビットが1であれば、元の点を加算する。

このように、スカラー倍は2進数分解に基づく方法で計算することができる。このため、楕円曲線上の演算は、高速なアルゴリズムが存在する。

楕円曲線暗号

楕円曲線暗号とは、楕円曲線上の演算を利用して暗号化・復号化を行う暗号方式である。RSA暗号よりも同じ強度の暗号化に対して、より短い鍵長で済むため、セキュリティ面で有利とされる。

また、楕円曲線上の離散対数問題が、楕円曲線暗号において利用される。このため、楕円曲線上の離散対数問題の解法が発見された場合、楕円曲線暗号は破られることになる。

まとめ

楕円曲線は、代数幾何学において研究された数学オブジェクトである。楕円曲線上の演算は、スカラー倍、加算、減算が定義されており、これを利用して楕円曲線暗号が構築される。現在、楕円曲線暗号は、RSA暗号と並ぶ代表的な公開鍵暗号方式である。

リンク

elliptic curve[EN]