楕円曲線演算の高速化

楕円曲線演算の計算量

楕円点の k 倍算

楕円曲線における点の $k$ 倍算 (スカラー倍算) は,アーベル群における一般のべき乗計算問題の特別な場合である.そのため,一般の整数における演算の高速化手法が適用可能である.

Frobenius 写像を用いる方法については,Frobenius 写像を用いた $k$ 倍算 を参照.

二進展開法 (Binary method)

入力: 点 $P$,$n$ ビット整数 $k = \sum_{j=0}^{l-1}k_j2^j,\ k_j \in \{0, 1\}$

出力: 点 $Q=[k]P$

  1. $Q \leftarrow {\cal O}$
  2. For $j = n - 1$ to $0$ by $-1$ do
  3.  $Q \leftarrow [2]Q$
  4.  If $k_j = 1$ then $Q \leftarrow Q + P$
  5. Return $Q$

二進展開法では,$n$ を $k$ の二進展開の長さ,$w$ を $k$ における1の個数とするとき,$n - 1$ 回の2倍算と $w - 1$ 回の加算を必要とする.平均的に $w = n/2$ とすれば,これらの回数はそれぞれ,$n - 1$,$n/2 - 1$ となる.

$m$ 進展開法

$m$ 進展開法は,$k$ の $m$ 進展開を利用する.ある $r \ge 1$ に対し,$m=2^r$ とする.$r = 1$ の場合は二進展開法になる.

入力: 点 $P$,整数 $k = \sum_{j=0}^{d-1}k_jm^j,\ k_j \in \{0,1,\ldots,m-1\}$

出力: 点 $Q=[k]P$

事前計算

  1. $P_1 \leftarrow P$
  2. For $i = 2$ to $m - 1$ do $P_i \leftarrow P_{i-1} + P$$\quad$ ($P_i = [i]P$ を計算)
  3. $Q \leftarrow {\cal O}$

主計算

  1. For $j = d - 1$ to $0$ by $-1$ do
  2.  $Q \leftarrow [m]Q$ $\quad$($2$ 倍算を $r(m=2^r)$ 回実行)
  3.   $Q \leftarrow Q + P_{k_j}$
  4. Return $Q$

移動窓法(Sliding window method)

移動窓法では,乗数 $k$ のビットは,長さ $r$ のブロック(窓)の中で処理される.$r \gt 1$ を仮定する.

入力: 点 $P$,整数 $k = \sum_{j=0}^{l-1}k_j2^j,\ k_j \in \{0,1\}$

出力: 点 $Q=[k]P$

事前計算

  1. $P_1 \leftarrow P,\ P_2 \leftarrow [2]P$
  2. For $i = 1$ to $2^{r-1} - 1$ do $P_{2i+1} \leftarrow P_{2i-1} + P_2$
  3. $j \leftarrow l-1, \ Q \leftarrow {\cal O}$

主計算

  1. While $j \ge 0 $ do
  2.  If $k_j = 0$ then $Q \leftarrow [2]Q$, \ $j \leftarrow j-1$
  3.  Else do
  4.   $t$ を $j-t+1 \le r$ と $k_t=1$ である最小の整数とする
  5.   $h_j \leftarrow (k_jk_{j-1} \cdots k_t)_2$
  6.   $Q \leftarrow [2^{j-t+1}]Q + P_{h_j}$
  7.   $j \leftarrow t -1$
  8. Return $Q$

符号付きm進展開窓法

演算法の比較

楕円点の $k$ 倍算 $P=[k]Q$ を計算する場合,$k$ の値は次のように分割されて処理される.

\[ k = 1001010110110100010100100010 \]

$2$進展開法では全てのビットが順番に処理されるが,$m$進展開法では4ビットの窓7個に対して処理が行われる.また,移動窓法では6個の窓に対して処理が行われる.


inserted by FC2 system