楕円曲線演算の実装

楕円曲線の選択とパラメータ

楕円曲線暗号で用いる楕円曲線のパラメータは,暗号の安全性に関わるため十分注意して選択する必要がある. $\mathrm{GF}(q)$ 上の楕円曲線 $E$ をランダムに選んだ時,その $E$ が楕円曲線暗号に適しているかの判定は,主に位数 $N = \#E(\mathrm{GF}(q))$ の値で判定される. 例えば, $N$ が小さな素数の積に分解されるような場合は,既存の(一般の有限群に適用できる) 離散対数計算アルゴリズムが適用されるので好ましくない.

また,楕円曲線を定義する体の選択により,実装の容易性や性能が変化する.

座標系の選択

楕円曲線上の演算を行う上で,どのような座標系を選択するかにより演算性能に差が現れる. 座標系により,楕円のスカラー倍算に使用する逆元と乗算の回数が異なり,利用するプラットフォーム上での逆元と乗算の性能の影響を受けるからである.

以下のような座標系がある.

座標点の圧縮

楕円曲線暗号においては,楕円曲線上の点を保存したり鍵交換のために送信したりすることが必要になる.このとき,記憶領域や送信データ量を減らすために点を表現するビット数を減少させることが行われる.これを点圧縮 (Point compression)と呼ぶ.

有限体 $\mathrm{GF}(q)$ ($q$ が $2^m$ または $m$ ビットの素数)において,アフィン座標系で点の情報を保持するためには $2m$ ビット必要になる.しかし,曲線上の点の $x$ 座標が分かれば,$y$ 座標は $y$ に関する二次方程式を解くことにより求めることができる.このとき,二次方程式の2つの解を区別するために1ビットあれば十分である.したがって,$m+1$ ビットで点を表現することができる.

$y$ 座標は以下に示すように常に圧縮することが可能であり,これを $\tilde{y}$ (1ビット)で表す.

楕円曲線上の点の圧縮形式から $y$ 座標を復元するアルゴリズム

楕円点データ変換

楕円点とオクテット列の相互変換を行う方法である.


inserted by FC2 system