(57)【特許請求の範囲】
【請求項１】
楕円曲線の定義体の標数が３よりも大であり、３値を用いたヤコビ座標で表現される Ｙ２＝Ｘ３＋ａＸＺ４＋ｂＺ６を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、ｕ１＝Ｘ１Ｚ２２、ｕ２＝Ｘ２Ｚ１２、Ｈ＝ｕ２−ｕ１、ｓ１＝Ｙ１Ｚ２３、ｓ２＝Ｙ２Ｚ１３、ｒ＝ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）、Ｚ３＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力する楕円加算演算部と、
上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、ｒ‘＝−ｓ２−ｓ１、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）を演算するとともにＺ４＝Ｚ３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力する付加部と
を備える楕円加減算装置。
【請求項２】
楕円曲線の定義体の標数が３よりも大であり、３値を用いたヤコビ座標で表現される Ｙ２＝Ｘ３＋ａＸＺ４＋ｂＺ６を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、ｕ１＝Ｘ１Ｚ２２、ｕ２＝Ｘ２Ｚ１２、Ｈ＝ｕ２−ｕ１、ｓ１＝Ｙ１Ｚ２３、ｓ２＝Ｙ２Ｚ１３、ｒ＝ｓ２−ｓ１、ｒ‘＝−ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）、Ｚ４＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力する楕円減算演算部と、
上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、ｒ＝ｓ２−ｓ１、Ｘ３＝Ａ＋ｒ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）を演算するとともにＺ３＝Ｚ４とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力する付加部と
を備える楕円加減算装置。
【請求項３】
楕円曲線の定義体の標数が３よりも大であり、５値を用いた変形ヤコビ座標で表現されるＹ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）、点Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、ｕ1 ＝Ｘ1(Ｚ22）、ｕ2 ＝Ｘ2(Ｚ12） 、Ｈ＝ｕ2 −ｕ1 、ｓ1 ＝Ｙ1(Ｚ23）、ｓ２ ＝Ｙ２(Ｚ１3）、ｒ＝ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）、Ｚ３＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３及びＺ３２、Ｚ３３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３ ，Ｙ３ ，Ｚ３ ，Ｚ３2，Ｚ３3）を出力する楕円加算演算部と、  上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３、Ｚ３２、Ｚ３３が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、ｒ‘＝−ｓ２−ｓ１、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）を演算するとともにＺ４＝Ｚ３、Ｚ４２＝Ｚ３２、Ｚ４３＝Ｚ３３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４，Ｚ４2，Ｚ４3）を出力する付加部と
を備える楕円加減算装置。
【請求項４】
楕円曲線の定義体の標数が３よりも大であり、５値を用いた変形ヤコビ座標で表現されるＹ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）、点Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）が入力され、乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、ｕ１＝Ｘ１Ｚ２２、ｕ２＝Ｘ２Ｚ１２、Ｈ＝ｕ２−ｕ１、ｓ１＝Ｙ１Ｚ２３、ｓ２＝Ｙ２Ｚ１３、ｒ＝ｓ２−ｓ１、ｒ‘＝−ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）、Ｚ４＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４及びＺ４２、Ｚ４３を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４，Ｚ４2，Ｚ４3）を出力する楕円減算演算部と、
上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４、Ｚ４２、Ｚ４３が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、ｒ＝ｓ２−ｓ１、Ｘ３＝Ａ＋ｒ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）を演算するとともにＺ３＝Ｚ４、Ｚ３２＝Ｚ４２、Ｚ３３＝Ｚ４３とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３，Ｚ３2，Ｚ３3）を出力する付加部と
を備える楕円加減算装置。
【請求項５】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた射影座標で表現される Ｙ２＝Ｘ３＋ａＸＺ２＋ｂＺ３を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、Ｓ1 ＝Ｘ1 Ｚ2 、Ｓ2 ＝Ｘ2 Ｚ1 、ｖ＝Ｓ2 −Ｓ1 、Ｔ1 ＝Ｙ1 Ｚ2 、Ｔ2 ＝Ｙ2 Ｚ1 、ｕ＝Ｔ2 −Ｔ1 、Ｃ＝Ｚ１Ｚ２、Ｄ＝−ｖ３Ｔ１、Ｅ＝−ｖ２Ｓ１、Ｂ＝−ｖ３−２Ｅ、Ａ＝ｕ２Ｃ＋Ｂ、Ｘ３＝ｖＡ、Ｙ３＝ｕ（Ｅ−Ａ）＋Ｄ、Ｚ３＝ｖ３Ｃを演算し、上記ｖ、Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力する楕円加算演算部と、  上記ｖ、Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ３が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、ｕ‘＝−Ｔ２−Ｔ１、Ａ‘＝ｕ‘２Ｃ＋Ｂ、Ｘ４＝ｖＡ’、Ｙ４＝ｕ‘（Ｅ−Ａ‘）＋Ｄを演算するとともにＺ４＝Ｚ３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力する付加部と
を備える楕円加減算装置。
【請求項６】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた射影座標で表現される Ｙ２＝Ｘ３＋ａＸＺ２＋ｂＺ３を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、Ｓ1 ＝Ｘ1 Ｚ2 、Ｓ2 ＝Ｘ2 Ｚ1 、ｖ＝Ｓ2 −Ｓ1 、Ｔ1 ＝Ｙ1 Ｚ2 、Ｔ2 ＝Ｙ2 Ｚ1 、ｕ‘＝−Ｔ２−Ｔ１、Ｃ＝Ｚ１Ｚ２、Ｄ＝−ｖ３Ｔ１、Ｅ＝−ｖ２Ｓ１、Ｂ＝−ｖ３−２Ｅ、Ａ‘＝ｕ‘２Ｃ＋Ｂ、Ｘ４＝ｖＡ’、Ｙ４＝ｕ‘（Ｅ−Ａ‘）＋Ｄ、Ｚ４＝ｖ３Ｃを演算し、上記Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ４を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力する楕円減算演算部と、
上記Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ４が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、ｕ＝Ｔ2 −Ｔ1 、Ａ＝ｕ２Ｃ＋Ｂ、Ｘ３＝ｖＡ、Ｙ３＝ｕ（Ｅ−Ａ）＋Ｄを演算するとともにＺ３＝Ｚ４とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力する付加部と
を備える楕円加減算装置。
【請求項７】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた変形射影座標で表現されるＹ2 ＋ＸＹＺ＝Ｘ3 Ｚ＋ａＸ2 Ｚ2 ＋ｂＺ4を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、Ａ１ ＝Ｙ2 Ｚ1２ 、Ａ２ ＝Ｙ1 Ｚ2２ 、Ｂ１ ＝Ｘ2 Ｚ1 、Ｂ２ ＝Ｘ1 Ｚ2 、Ｃ＝Ａ１＋Ａ２、Ｄ＝Ｂ１＋Ｂ２、Ｅ＝Ｚ１Ｚ２、Ｆ＝ＤＥ、Ｋ＝Ｂ１Ｅ、Ｌ＝Ｄ２Ｋ、Ｇ＝Ｄ２（Ｆ＋ａＥ２）、Ｈ＝ＣＦ、Ｉ＝Ｌ＋Ｘ３、Ｍ＝Ｄ２Ａ１、Ｘ３＝Ｃ２＋Ｈ＋Ｇ、Ｊ＝Ｍ＋Ｘ３、Ｚ３＝Ｆ２、Ｙ３＝ＨＩ＋Ｚ３Ｊを演算し、上記Ａ1、Ａ2、Ｆ、Ｇ、Ｋ、Ｌ、Ｍ、Ｚ３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力する楕円加算演算部と、  上記Ａ1、Ａ2、Ｆ、Ｇ、Ｋ、Ｌ、Ｍ、Ｚ３が入力され、上記楕円加算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、Ａ１‘＝Ａ１＋Ｋ、Ｃ‘＝Ａ１‘＋Ａ2、Ｈ‘＝Ｃ‘Ｆ、Ｘ４＝Ｃ‘２＋Ｈ‘＋Ｇ、Ｉ‘＝Ｌ＋Ｘ４、Ｊ‘＝Ｍ＋Ｌ＋Ｘ４、Ｙ４＝Ｈ‘Ｉ‘＋Ｚ３Ｊ‘を演算するとともにＺ４＝Ｚ３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力する付加部と
を備える楕円加減算装置。
【請求項８】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた変形射影座標で表現されるＹ2 ＋ＸＹＺ＝Ｘ3 Ｚ＋ａＸ2 Ｚ2 ＋ｂＺ4を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）が入力され、乗算、加減算のいずれかを行う複数の部分演算部により構成され、これらの部分演算部により、Ａ１ ＝Ｙ2 Ｚ1２、Ａ２ ＝Ｙ1 Ｚ2２ 、Ｂ１ ＝Ｘ2 Ｚ1 、Ｂ２ ＝Ｘ1 Ｚ2 、Ｄ＝Ｂ１＋Ｂ２、Ｅ＝Ｚ１Ｚ２、Ｆ＝ＤＥ、Ｋ＝Ｂ１Ｅ、Ｌ＝Ｄ２Ｋ、Ｇ＝Ｄ２（Ｆ＋ａＥ２）、Ｍ＝Ｄ２Ａ１、Ｚ４＝Ｆ２を演算し、上記Ａ1、Ａ2、Ｆ、Ｇ、Ｌ、Ｍ、Ｚ４を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力する楕円減算演算部と、
上記Ａ1、Ａ2、Ｆ、Ｇ、Ｌ、Ｍ、Ｚ４が入力され、上記楕円減算演算部の部分演算部より少ない複数の部分演算部により構成され、これらの部分演算部により、Ｃ＝Ａ１＋Ａ２、Ｈ＝ＣＦ、Ｘ３＝Ｃ２＋Ｈ＋Ｇ、Ｉ＝Ｌ＋Ｘ３、Ｊ＝Ｍ＋Ｘ３、Ｙ３＝ＨＩ＋Ｚ４Ｊを演算するとともにＺ３＝Ｚ４とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力する付加部と
を備える楕円加減算装置。
【請求項９】
楕円曲線の定義体の標数が３よりも大であり、３値を用いたヤコビ座標で表現される Ｙ２＝Ｘ３＋ａＸＺ４＋ｂＺ６を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｐ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点Ｐ（Ｘ１，Ｙ１，Ｚ１）、上記点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、ｕ１＝Ｘ１Ｚ２２、ｕ２＝Ｘ２Ｚ１２、Ｈ＝ｕ２−ｕ１、ｓ１＝Ｙ１Ｚ２３、ｓ２＝Ｙ２Ｚ１３、ｒ＝ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）、Ｚ３＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３について、ｒ‘＝−ｓ２−ｓ１、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）を演算するとともにＺ４＝Ｚ３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１０】
楕円曲線の定義体の標数が３よりも大であり、３値を用いたヤコビ座標で表現される Ｙ２＝Ｘ３＋ａＸＺ４＋ｂＺ６を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｐ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点Ｐ（Ｘ１，Ｙ１，Ｚ１）、上記点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、ｕ１＝Ｘ１Ｚ２２、ｕ２＝Ｘ２Ｚ１２、Ｈ＝ｕ２−ｕ１、ｓ１＝Ｙ１Ｚ２３、ｓ２＝Ｙ２Ｚ１３、ｒ＝ｓ２−ｓ１、ｒ‘＝−ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）、Ｚ４＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力するステップと、
上記楕円減算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４について、ｒ＝ｓ２−ｓ１、Ｘ３＝Ａ＋ｒ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）を演算するとともにＺ３＝Ｚ４とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１１】
楕円曲線の定義体の標数が３よりも大であり、５値を用いた変形ヤコビ座標で表現されるＹ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）、点Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）について、Ｐ＋Ｑ＝Ｒ（Ｘ３ ，Ｙ３ ，Ｚ３ ，Ｚ３2，Ｚ３3）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４，Ｚ４2，Ｚ４3）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）、上記点Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）について、ｕ1 ＝Ｘ1(Ｚ22）、ｕ2 ＝Ｘ2(Ｚ12） 、Ｈ＝ｕ2 −ｕ1 、ｓ1 ＝Ｙ1(Ｚ23）、ｓ２ ＝Ｙ２(Ｚ１3）、ｒ＝ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）、Ｚ３＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３及びＺ３２、Ｚ３３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３ ，Ｙ３ ，Ｚ３ ，Ｚ３2，Ｚ３3）を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部からなる付加部が、付加部に入力された上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ３、Ｚ３２、Ｚ３３について、ｒ‘＝−ｓ２−ｓ１、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）を演算するとともにＺ４＝Ｚ３、Ｚ４２＝Ｚ３２、Ｚ４３＝Ｚ３３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４，Ｚ４2，Ｚ４3）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１２】
楕円曲線の定義体の標数が３よりも大であり、５値を用いた変形ヤコビ座標で表現されるＹ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）、点Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）について、Ｐ＋Ｑ＝Ｒ（Ｘ３ ，Ｙ３ ，Ｚ３ ，Ｚ３2，Ｚ３3）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４，Ｚ４2，Ｚ４3）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算及び乗算と減算の両方のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）、上記点Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）について、ｕ１＝Ｘ１Ｚ２２、ｕ２＝Ｘ２Ｚ１２、Ｈ＝ｕ２−ｕ１、ｓ１＝Ｙ１Ｚ２３、ｓ２＝Ｙ２Ｚ１３、ｒ＝ｓ２−ｓ１、ｒ‘＝−ｓ２−ｓ１、Ａ＝−Ｈ３−２ｕ１Ｈ２、Ｘ３＝Ａ＋ｒ２、Ｂ＝−ｓ１Ｈ３、Ｃ＝ｕ１Ｈ２、Ｘ４＝Ａ＋ｒ’２、Ｙ４＝Ｂ＋ｒ‘（Ｃ−Ｘ４）、Ｚ４＝Ｚ１Ｚ２Ｈを演算し、上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４及びＺ４２、Ｚ４３を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４，Ｚ４2，Ｚ４3）を出力するステップと、
付加部に入力された上記ｓ１、ｓ２、Ａ、Ｂ、Ｃ、Ｚ４、Ｚ４２、Ｚ４３について、付加部を構成する上記楕円減算演算部の部分演算部より少ない複数の部分演算部において、これらの部分演算部により、ｒ＝ｓ２−ｓ１、Ｘ３＝Ａ＋ｒ２、Ｙ３＝Ｂ＋ｒ（Ｃ−Ｘ３）を演算するとともにＺ３＝Ｚ４、Ｚ３２＝Ｚ４２、Ｚ３３＝Ｚ４３とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３，Ｚ３2，Ｚ３3）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１３】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた射影座標で表現される Ｙ２＝Ｘ３＋ａＸＺ２＋ｂＺ３を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｐ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点Ｐ（Ｘ１，Ｙ１，Ｚ１）、上記点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｓ1 ＝Ｘ1 Ｚ2 、Ｓ2 ＝Ｘ2 Ｚ1 、ｖ＝Ｓ2 −Ｓ1 、Ｔ1 ＝Ｙ1 Ｚ2 、Ｔ2 ＝Ｙ2 Ｚ1 、ｕ＝Ｔ2 −Ｔ1 、Ｃ＝Ｚ１Ｚ２、Ｄ＝−ｖ３Ｔ１、Ｅ＝−ｖ２Ｓ１、Ｂ＝−ｖ３−２Ｅ、Ａ＝ｕ２Ｃ＋Ｂ、Ｘ３＝ｖＡ、Ｙ３＝ｕ（Ｅ−Ａ）＋Ｄ、Ｚ３＝ｖ３Ｃを演算し、上記ｖ、Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部からなる付加部が、付加部に入力された上記ｖ、Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ３について、ｕ‘＝−Ｔ２−Ｔ１、Ａ‘＝ｕ‘２Ｃ＋Ｂ、Ｘ４＝ｖＡ’、Ｙ４＝ｕ‘（Ｅ−Ａ‘）＋Ｄを演算するとともにＺ４＝Ｚ３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１４】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた射影座標で表現される Ｙ２＝Ｘ３＋ａＸＺ２＋ｂＺ３を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｐ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点Ｐ（Ｘ１，Ｙ１，Ｚ１）、上記点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｓ1 ＝Ｘ1 Ｚ2 、Ｓ2 ＝Ｘ2 Ｚ1 、ｖ＝Ｓ2 −Ｓ1 、Ｔ1 ＝Ｙ1 Ｚ2 、Ｔ2 ＝Ｙ2 Ｚ1 、ｕ‘＝−Ｔ２−Ｔ１、Ｃ＝Ｚ１Ｚ２、Ｄ＝−ｖ３Ｔ１、Ｅ＝−ｖ２Ｓ１、Ｂ＝−ｖ３−２Ｅ、Ａ‘＝ｕ‘２Ｃ＋Ｂ、Ｘ４＝ｖＡ’、Ｙ４＝ｕ‘（Ｅ−Ａ‘）＋Ｄ、Ｚ４＝ｖ３Ｃを演算し、上記Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ４を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力するステップと、
上記楕円減算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記Ｔ1、Ｔ2、Ｂ、Ｃ、Ｄ、Ｅ、Ｚ４について、ｕ＝Ｔ2 −Ｔ1 、Ａ＝ｕ２Ｃ＋Ｂ、Ｘ３＝ｖＡ、Ｙ３＝ｕ（Ｅ−Ａ）＋Ｄを演算するとともにＺ３＝Ｚ４とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１５】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた変形射影座標で表現されるＹ2 ＋ＸＹＺ＝Ｘ3 Ｚ＋ａＸ2 Ｚ2 ＋ｂＺ4を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｐ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円加算演算部が、楕円加算演算部に入力された上記点Ｐ（Ｘ１，Ｙ１，Ｚ１）、上記点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ａ１ ＝Ｙ2 Ｚ1２ 、Ａ２ ＝Ｙ1 Ｚ2２ 、Ｂ１ ＝Ｘ2 Ｚ1 、Ｂ２ ＝Ｘ1 Ｚ2 、Ｃ＝Ａ１＋Ａ２、Ｄ＝Ｂ１＋Ｂ２、Ｅ＝Ｚ１Ｚ２、Ｆ＝ＤＥ、Ｋ＝Ｂ１Ｅ、Ｌ＝Ｄ２Ｋ、Ｇ＝Ｄ２（Ｆ＋ａＥ２）、Ｈ＝ＣＦ、Ｉ＝Ｌ＋Ｘ３、Ｍ＝Ｄ２Ａ１、Ｘ３＝Ｃ２＋Ｈ＋Ｇ、Ｊ＝Ｍ＋Ｘ３、Ｚ３＝Ｆ２、Ｙ３＝ＨＩ＋Ｚ３Ｊを演算し、上記Ａ1、Ａ2、Ｆ、Ｇ、Ｋ、Ｌ、Ｍ、Ｚ３を出力すると共に加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力するステップと、
上記楕円加算演算部の部分演算部より少ない複数の部分演算部からなる付加部が、付加部に入力された上記Ａ1、Ａ2、Ｆ、Ｇ、Ｋ、Ｌ、Ｍ、Ｚ３について、Ａ１‘＝Ａ１＋Ｋ、Ｃ‘＝Ａ１‘＋Ａ2、Ｈ‘＝Ｃ‘Ｆ、Ｘ４＝Ｃ‘２＋Ｈ‘＋Ｇ、Ｉ‘＝Ｌ＋Ｘ４、Ｊ‘＝Ｍ＋Ｌ＋Ｘ４、Ｙ４＝Ｈ‘Ｉ‘＋Ｚ３Ｊ‘を演算するとともにＺ４＝Ｚ３とし、減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【請求項１６】
楕円曲線の定義体の標数が３よりも大であり、３値を用いた変形射影座標で表現されるＹ2 ＋ＸＹＺ＝Ｘ3 Ｚ＋ａＸ2 Ｚ2 ＋ｂＺ4を満たす点Ｐ（Ｘ１，Ｙ１，Ｚ１）、点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ｐ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）とＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を求める演算をコンピュータに実行させるプログラムであって、
乗算、加減算のいずれかを行う複数の部分演算部により構成される楕円減算演算部が、楕円減算演算部に入力された上記点Ｐ（Ｘ１，Ｙ１，Ｚ１）、上記点Ｑ（Ｘ２，Ｙ２，Ｚ２）について、Ａ１ ＝Ｙ2 Ｚ1２、Ａ２ ＝Ｙ1 Ｚ2２ 、Ｂ１ ＝Ｘ2 Ｚ1 、Ｂ２ ＝Ｘ1 Ｚ2 、Ｄ＝Ｂ１＋Ｂ２、Ｅ＝Ｚ１Ｚ２、Ｆ＝ＤＥ、Ｋ＝Ｂ１Ｅ、Ｌ＝Ｄ２Ｋ、Ｇ＝Ｄ２（Ｆ＋ａＥ２）、Ｍ＝Ｄ２Ａ１、Ｚ４＝Ｆ２を演算し、上記Ａ1、Ａ2、Ｆ、Ｇ、Ｌ、Ｍ、Ｚ４を出力すると共に減算結果としてＰ−Ｑ＝Ｒ’（Ｘ４，Ｙ４，Ｚ４）を出力するステップと、
上記楕円減算演算部の部分演算部より少ない複数の部分演算部よりなる付加部が、付加部に入力された上記Ａ1、Ａ2、Ｆ、Ｇ、Ｌ、Ｍ、Ｚ４について、Ｃ＝Ａ１＋Ａ２、Ｈ＝ＣＦ、Ｘ３＝Ｃ２＋Ｈ＋Ｇ、Ｉ＝Ｌ＋Ｘ３、Ｊ＝Ｍ＋Ｘ３、Ｙ３＝ＨＩ＋Ｚ４Ｊを演算するとともにＺ３＝Ｚ４とし、加算結果としてＰ＋Ｑ＝Ｒ（Ｘ３，Ｙ３，Ｚ３）を出力するステップと、
を有することを特徴とした楕円加減算プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えば、情報セキュリティ技術（楕円曲線暗号／署名、素因数分解）を実現するために用いられる楕円曲線上の演算を行う装置及びそのプログラムに関する。
【０００２】
【従来の技術】
楕円曲線上の演算により公開鍵暗号やデジタル署名を実現する場合、その処理時間のほとんどは楕円曲線上のｋ倍演算に費やされる。
一般に、暗号や署名には有限体ＧＦ（ｑ）上で定義される楕円曲線を使う。これをＥ／ＧＦ（ｑ）と表記する。ｑは素数または素数のべき乗である。この発明は、いかなるｑに対しても適用することが出来る。
楕円曲線上の点Ｐに対する加算、減算を定義できる。通常の加算と区別するためにこれを、「楕円加算」「楕円減算」「楕円２倍演算」と呼ぶ。いずれも、有限体ＧＦ（ｑ）上の加減乗除算を組み合わせることで行うことが出来る。
【０００３】
一般に楕円加算、楕円減算はほぼ同じ演算量で実現することが出来る。楕円２倍演算に必要な演算量は、場合によって異なるが楕円加算と同程度である。
通常、ｋ倍演算を構成するために、「楕円加算」「楕円減算」「楕円２倍演算」を組み合わせて行なう方法が用いられており、いずれもｌｏｇ（ｋ）に比例する回数行う必要がある。
従来の楕円加算において、楕円曲線上の点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1 ），Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ）がヤコビ座標（Ｙ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす（Ｘ，Ｙ，Ｚ）の３値を用いて点を表す）で表わされている場合は以下の演算によりＰとＱの和Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3 ）＝Ｐ＋Ｑが求められる。
【０００４】
ｕ1 ＝Ｘ1 Ｚ22  ，  ｕ2 ＝Ｘ2 Ｚ12
ｓ1 ＝Ｙ1 Ｚ23  ，  ｓ2 ＝Ｙ2 Ｚ13
Ｈ＝ｕ2 −ｕ1   ，  ｒ＝ｓ2 −ｓ1 
Ｘ3 ＝−Ｈ3 −２ｕ1 Ｈ2 ＋ｒ2 
Ｙ3 ＝−ｓ1 Ｈ3 ＋ｒ（ｕ1 Ｈ2 −Ｘ3)
Ｚ3 ＝Ｚ1 Ｚ2 Ｈ
この場合、楕円加算１回を行なうのに、有限体上の乗算１２回と自乗４回が必要となる。なおＹ1 Ｚ23の演算はＺ22がｘ1 Ｚ22の演算の際に、既に計算されているから、その値を用いる。よってｙ1 Ｚ23はＺ22Ｚとｙ1 Ｚ23との各１回の乗算で求まることになる。
【０００５】
点ＰとＱが変形ヤコビ座標（Ｙ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす（Ｘ，Ｙ，Ｚ，Ｚ2 ，Ｚ3)の５値を用いて点をあらわす）で表わされている場合は以下の演算によりＰ（Ｘ1 ，Ｙ1 ，Ｚ1 ，Ｚ12，Ｚ13）＋Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2 ，Ｚ22，Ｚ23）＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3 ，Ｚ32，Ｚ33）が求められる。
ｕ1 ＝Ｘ1(Ｚ22）  ，  ｕ2 ＝Ｘ2(Ｚ12）
ｓ1 ＝Ｙ1(Ｚ23）  ，  ｓ2 ＝Ｙ2(Ｚ13）
Ｈ＝ｕ2 −ｕ1   ，  ｒ＝ｓ2 −ｓ1 
Ｘ3 ＝−Ｈ3 −２ｕ1 Ｈ2 ＋ｒ2 
Ｙ3 ＝−ｓ1 Ｈ3 ＋ｒ（ｕ1 Ｈ2 −Ｘ3)
Ｚ3 ＝Ｚ1 Ｚ2 Ｈ  ，Ｚ32＝Ｚ32  ，  Ｚ33＝Ｚ33
この場合の楕円加算に必要な演算量は有限体上の乗算１１回と自乗３回である。
【０００６】
点ＰとＱが射影座標（Ｙ2 Ｚ＝Ｘ3 ＋ａＸＺ2 ＋ｂＺ3 を満たす（Ｘ，Ｙ，Ｚ
）の３値を用いて点を表わす）で表わされている場合は以下の演算によりＰ＋Ｑ
＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3 ）が求められる。
ｕ＝Ｙ2 Ｚ1 −Ｙ1 Ｚ2 ，  ｖ＝Ｘ2 Ｚ1 −Ｘ1 Ｚ2 
Ａ＝ｕ2 Ｚ1 Ｚ2 −ｖ3 −２ｖ2 Ｘ1 Ｚ2 
Ｘ3 ＝ｖＡ
Ｙ3 ＝ｕ（ｖ2 Ｘ1 Ｚ2 −Ａ）−ｖ3 Ｙ1 Ｚ2 
Ｚ3 ＝ｖ3 Ｚ1 Ｚ2 
この場合の楕円加算の１回に必要な演算量は、有限体上の乗算１２回と自乗２回である。
【０００７】
以上の楕円加算演算は例えば文献H.Cohen他“Efficient elliptic curves exponentation using mixed coordinates”Advances in Cryoptology-ASIACRYPT'98, LNCS1514, pp.51〜65,Springer-Verlag,1998中の式（５），（８），（３）に示されている。
これら楕円加算において、Ｙ2 を−Ｙ2 とすれば楕円減算Ｐ−Ｑを演算することができることも知られている。
また楕円曲線上の点をＹ2 ＋ＸＹＺ＝Ｘ3 Ｚ＋ａＸ2 Ｚ2 ＋ｂＺ4 を満たす（Ｘ，Ｙ，Ｚ）の３値で用いて表わすＧＦ（２m)変形射影座標で表わされた点ＰとＱの楕円加算Ｐ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3 ）は以下の演算により求められる。
【０００８】
Ａ1 ＝Ｙ2 Ｚ12  ，Ａ2 ＝Ｙ1 Ｚ12
Ｂ1 ＝Ｘ2 Ｚ1   ，  Ｂ2 ＝Ｘ1 Ｚ2 
Ｃ＝Ａ1 ＋Ａ2   ，Ｄ＝Ｂ1 ＋Ｂ2 
Ｅ＝Ｚ1 Ｚ2  ，Ｆ＝ＤＥ
Ｚ3 ＝Ｆ2   ，  Ｇ＝Ｄ2 （Ｆ＋ａＥ2 ）
Ｈ＝ＣＦ  ，  Ｘ3 ＝Ｃ2 ＋Ｈ＋Ｇ
Ｉ＝Ｄ2 Ｂ1 Ｅ＋Ｘ3   ，  Ｊ＝Ｄ2 Ａ1 ＋Ｘ3 
Ｙ3 ＝ＨＩ＋Ｚ3 Ｊ
この場合の楕円加算１回に必要な演算量は、有限体上の乗算１４回と自乗６回である。
【０００９】
またＰ（Ｘ，Ｙ，Ｚ）点に対する−Ｐ点は（Ｘ，ＸＺ＋Ｙ，Ｚ）として与えられることが例えば、文献JulioLopez他“Improved Algorithms for Elliptic Curve Arithmetic in GF(2m)”SAC'98,LNCS1556,pp.201-212,Springer-Verlag,1999の２０８頁に示されている。従って楕円減算もＰ−Ｑの場合はＱのＹとしてＸＺ＋Ｙとおいて楕円加算演算を行えばよい。
所で従来において情報セキュリティ（安全性）技術に用いられる楕円曲線上の演算においては、主として楕円加算が用いられ、楕円減算はほとんど用いられていなかった。楕円減算は点ＰとＱが例えばヤコビ座標で表わされている場合は下記の演算によりＰ−Ｑ＝Ｒ（Ｘ4 ，Ｙ4 ，Ｚ4 ）が求められる。
ｕ1 ＝Ｘ1 Ｚ22  ，  ｕ2 ＝Ｘ2 Ｚ12
ｓ1 ＝Ｙ1 Ｚ23  ，  ｓ′2 ＝−Ｙ2 Ｚ13
Ｈ＝ｕ2 −ｕ1   ，  ｒ′＝ｓ′2 −ｓ1 
Ｘ4 ＝−Ｈ3 −２ｕ1 Ｈ2 ＋ｒ′2 
Ｙ4 ＝−ｓ1 Ｈ3 ＋ｒ′（ｕ1 Ｈ2 −Ｘ４)
Ｚ4 ＝Ｚ1 Ｚ2 Ｈ
この楕円減算の１回に必要とする演算量は、有限体上の乗算１２回と自乗４回であり、楕円加算と同一である。他の座標で表わされた点ＰとＱの楕円減算も対応する楕円加算とほぼ同一の演算量を必要とする。
【００１０】
【発明が解決しようとする課題】
楕円加算と楕円減算を両方同時に行う場合に、片方ずつ行うと演算量がほぼ倍になる。所で例えば、ｋ倍演算を構成するのに多く使われるＷｉｎｄｏｗ法では
ステップ１：まず、ある決まった整数ｗに対して２Ｐ，３Ｐ，…，（ｗ−１）Ｐを求める。
ステップ２：ｋをｗ進展開した数列ｋ0 ，ｋ1 ，…，ｋn を求める。（０＜ｋi ＜ｗ，ｋ＝Σi=0nｋi ｗi ）
ステップ３：その後、以下の式によってｋＰを求める。
【００１１】
ｋＰ＝ｋ0 Ｐ＋ｗ（ｋ1 Ｐ＋ｗ（ｋ2 Ｐ＋ｗ（…＋ｗｋn Ｐ）…））
上記Ｗｉｎｄｏｗ法におけるステップ１の部分に注目する。従来、２Ｐ，３Ｐ，…，（ｗ−１）Ｐを求めるためには、２Ｐ＝Ｐ＋Ｐ，３Ｐ＝２Ｐ＋Ｐ，４Ｐ＝３Ｐ＋Ｐ，…，（ｗ−１）Ｐ＝（ｗ−２）Ｐ＋Ｐと（ｗ−２）回の楕円加算（または楕円２倍演算）を行なっていた。つまり従来は楕円加算による演算を行っており、楕円減算はあまり用いられていなかった。しかし例えば、４Ｐを求めてから４Ｐ＋Ｐと４Ｐ−Ｐを演算することにより３Ｐと５Ｐを求めることが出来るが、４Ｐ＋Ｐと４Ｐ−Ｐの各演算を独立に行えばそれぞれにほぼ同一の演算量を必要とする。このように点ＰとＱの楕円加算Ｐ＋Ｑと楕円減算Ｐ−Ｑを同時に演算する場合に、演算を可成り減少する楕円加減算装置を提供することを、この発明は目的とするものである。
【００１２】
【課題を解決するための手段】
この発明では、Ｐ，ＱからＰ＋Ｑを求める楕円加算演算と、Ｐ，ＱからＰ−Ｑを求める楕円減算演算とに、共通化できる部分があることに着目し、ＰとＱを入力し、共通部分演算部を複数設け、Ｐ＋ＱおよびＰ−Ｑの演算の大部分をこれら共通部分演算部で行ってＰ＋ＱおよびＰ−Ｑを出力する楕円加減算演算装置を構成する。
例えば点Ｐ，Ｑがヤコビ座標で表わされている場合、楕円加算１回を行うため有限体上の乗算１２回と自乗４回を必要としたが、この発明を適用すると楕円加算Ｐ＋Ｑと、楕円減算Ｐ−Ｑとを同時に行うことができ、その楕円加減算のコストは有限体上の乗算１３回と自乗５回であり、楕円加算２回とくらべて少ないコストで演算できる。
【００１３】
ここでは、ヤコビ座標を用いた点どうしの楕円加算の場合の例をあげたが、プロジェクティブ座標を用いた点どうしの楕円加算や、ヤコビ座標＋アフィン座標の混合座標の楕円加算の場合にも同様に構成することができる。
また、楕円曲線の定義体の標数が３よりも大きい楕円曲線の場合を例とした。標数が２の楕円曲線の場合にも適用することができる。
さらに、ヤコビ座標を用いた点どうしの演算には、（Ｘ，Ｙ，Ｚ）の３値だけでなく、（Ｘ，Ｙ，Ｚ，Ｚ2)の４値、（Ｘ，Ｙ，Ｚ，ａＺ4)の４値、（Ｘ，Ｙ，Ｚ，Ｚ2 ，Ｚ3)の５値を用いて楕円曲線上の点をあらわすことによって楕円加算や楕円２倍演算を高速に行う改良版が存在するが、その場合にもこの発明を適用することが出来る。
【００１４】
楕円曲線暗号や楕円曲線署名を行う装置を構成する場合は、楕円ｋ倍演算を行う必要があるが、上記楕円加算や楕円２倍を組み合わせて行うことによって、楕円ｋ倍演算の処理全体を効率化することができる。この場合、この発明による楕円加算と楕円減算の同時実行を適用することにより処理効率を一層上げることができる。
【００１５】
【発明の実施の形態】
第１の実施例［楕円加減算（ヤコビ座標）］
図１は、定義体の標数が３よりも大きい楕円曲線のＥ上で入力された楕円曲線上の点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1)，Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2)に対してＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3)およびＰ−Ｑ＝Ｒ′(Ｘ4 ，Ｙ4 ，Ｚ4)を出力する装置の機能構成を表している。
ただし、各楕円曲線上の点はヤコビ座標（Ｙ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす（Ｘ，Ｙ，Ｚ）の３値を用いて点を表す）を用いて表現している。
【００１６】
Ｚ1 ，Ｚ2 はそれぞれ自乗部１１，１２で自乗され、これら結果Ｚ22，Ｚp2とＸ1 ，Ｘ2 が乗算部１３，１４で乗算され、ｕ1 ，ｕ2 が得られる。Ｚ1 ，Ｚ2 とＺ12，Ｚ22とがそれぞれ乗算部１５，１６で乗算され、これら結果Ｚ23，Ｚ13とＹ1 ，Ｙ2 が乗算部１７，１８で乗算され、ｓ1 ，ｓ2 が得られる。
ｕ2 −ｕ1 ，ｓ2 −ｓ1 がそれぞれ引算部２１，２２で引算され、これら結果Ｈ，ｒが得られ、Ｈ，ｒがそれぞれ自乗部２３，２４で自乗され、ｕ1 が倍算部２５で倍算され、Ｈ，２ｕ1 にそれぞれＨ2 が乗算部２６，２７で乗算され、これら結果が加算部２８で加算されると共に符号が反転されて結果Ａが得られる。ｕ1 とＨ2 の乗算が乗算部２９で行われ、結果Ｃが得られる。ｓ1 とＨ3 が乗算され、その結果の符号が反転された結果Ｂが乗算部３１により得られる。
【００１７】
Ａとｒ2 が加算部３２で加算され、結果Ｘ3 が得られ、減算・乗算部３４でＣからＸ3が減算された値にｒが乗算され、その結果ｒ（Ｃ−Ｘ3）とＢが加算部３５で加算されてＹ3 が得られる。Ｚ1とＨが乗算部３６で乗算され、更にこれにＺ2 が乗算部３７で乗算されてＺ3 が得られる。
以上の演算によりＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3)が得られる。つまり部分演算部１１〜３７により楕円加算演算部が構成されている。
更に加算部４１でｓ2 とｓ1 が加算されて符号が反転され、その結果ｒ′は自乗部４２で自乗され、加算部４３でＡとｒ′2 が加算されてＸ4 が得られる。減算・乗算部４４でＣからＸ４が減算された値にｒ′が乗算され、その結果に加算部４５でＢを加算してＹ4 が得られる。またＺ3 がＺ4 として出力される。つまり楕円加算演算部に対し、わずかな５個の部分演算部４１〜４５が付加されて楕円減算Ｐ−Ｑ＝Ｒ′(Ｘ4 ，Ｙ4 ，Ｚ4 ）が得られる。逆に楕円減算演算部を主体に見れば、これに対し、同様に５個の部分演算部２２，２４，３２，３４，３５を付加すれば楕円加算も行われることになる。要するに楕円加算演算部又は楕円減算演算部に部分演算結果ｓ1 とｓ2 に対する加減算部４１又は２２、その結果の自乗部４２又は２４、その結果と部分演算結果Ａとの加算部４３又は３２、部分演算結果ＣからＸ４又はＸ３を減算し、その値を加減算部４１又は２２の結果と乗算する減算・乗算部４４又は３４、その結果と部分演算結果Ｂとの加算部４５又は３５を設ければよい。
【００１８】
この楕円加減算装置においては下記の演算を行っている。
ｕ1 ＝Ｘ1 Ｚ22  ，  ｕ2 ＝Ｘ2 Ｚ12
ｓ1 ＝Ｙ1 Ｚ23  ，  ｓ2 ＝Ｙ2 Ｚ13
Ｈ＝ｕ2 −ｕ1   ，  ｒ＝ｓ2 −ｓ1 
Ｈ2 ＝Ｈ2   ，  Ｈ3 ＝ＨＨ2 
Ａ＝−Ｈ3 −２ｕ1 Ｈ2   ，  Ｘ3 ＝Ａ＋ｒ2 
Ｂ＝−ｓ1 Ｈ3   ，  Ｃ＝ｕ1 Ｈ2  
Ｙ3 ＝Ｂ＋ｒ（Ｃ−Ｘ３）  ，  Ｚ3 ＝Ｚ1 Ｚ2 Ｈ
ｒ′＝−ｓ2 −ｓ1   ，  Ｘ4 ＝Ａ＋ｒ′2
Ｙ4 ＝Ｂ＋ｒ′（Ｃ−Ｘ４）  ，  Ｚ4 ＝Ｚ3 
これと従来の技術の項で述べたヤコビ座標表現の楕円加算演算と比較すれば直ちに理解されるように、加算部２８のＡ＝−Ｈ3 −２ｕ1 Ｈ2 と、乗算部３１のＢ＝−ｓ1 Ｈ3 と乗算部２９のＣ＝ｕ1 Ｈ2 をも共通部分演算部として特に設けたことにより、演算の共通化を一層高めている。
【００１９】
図１に示した装置は図２に示すように、制御装置１０１、メモリ１０２、加算器１０３、減算器１０４、乗算器１０５を備え、入力Ｐ，Ｑに対し、制御装置１０１が各部を順次制御して、図１中の各部分演算部の演算を順次行わせるように構成することもできる。
更にこの装置をコンピュータにプログラムを実行させて機能させることもできる。つまり図３に示すように、入力部１１０にＰ，Ｑが入力されると、ＣＰＵ又はマイクロプロセッサ１１１がプログラムメモリ１１２内の楕円加減算プログラムを実行してＰ，Ｑを記憶部１１３に取り込み、このＰ，Ｑに対し順次部分演算を行って、最終的にＰ＋Ｑ＝Ｒ，Ｐ−Ｑ＝Ｒ′を得て出力部１１４から出力する。
【００２０】
この楕円加減算プログラムの実行により処理される手順の例を図４に示す。入力部１１０にＰ，Ｑが入力されると、記憶部１１３に記憶し（Ｓ１）、Ｚ2 を記憶部１１３から取出し（以下単に取出しと記述する）、Ｚ22を演算し（Ｓ２）、更にＸ1 を取出してｕ1 ＝Ｘ1 Ｚ22を演算して記憶部１１３に記憶する（Ｓ３）。以下記憶部に記憶することを単に記憶すると記述する。
Ｚ1 を取出してＺ12を演算し（Ｓ４）、Ｘ2 を取出して、ｕ2 ＝Ｘ2 Ｚ12を演算して記憶する（Ｓ５）。
【００２１】
Ｚ2 を取出してＺ23とを演算し（Ｓ６）、Ｙ1 を取出し、ｓ1 ＝Ｙ1 Ｚ23を演算して記憶する（Ｓ７）。Ｚ1 を取出してＺ13を演算し（Ｓ８）、Ｙ2 を取出してｓ2 ＝Ｙ2 Ｚ13を演算して記憶する（Ｓ９）。
ｕ1 とｕ2 を取出してＨ＝ｕ2 −ｕ1 を演算して記憶する（Ｓ１０）。ｓ1 とｓ2 を取出してｒ＝ｓ2 −ｓ1 を演算して記憶する（Ｓ１１）。Ｈを取出してＨ2 を演算し（Ｓ１２）、更にＨ3 ＝ＨＨ2 を演算して記憶する（Ｓ１３）。
ｕ1 とＨ2 を取出して２ｕ1 Ｈ2 を演算し（Ｓ１４）、更にＨ3 を取出してＡ＝−Ｈ3 −２ｕ1 Ｈ2 を演算して記憶する（Ｓ１５）。ｒを取出し、ｒ2 を演算し（Ｓ１６）、Ａを取出し、Ｘ3 ＝Ａ＋ｒ2 を演算して記憶する（Ｓ１７）。
【００２２】
ｓ1 とＨ3 を取出しＢ＝−ｓ1 Ｈ3 を演算して記憶する（Ｓ１８）。ｕ1 とＨ2を取出してＣ＝ｕ1 Ｈ2を演算して記憶する（Ｓ１９）。ｒとＣとＸ3を取出してｒ（Ｃ−Ｘ3）を演算し（Ｓ２１）、更にＢを取出してＹ3 ＝Ｂ＋ｒ（Ｃ−Ｘ3）を演算して記憶する（Ｓ２２）。Ｚ1 ，Ｚ2 ，Ｈを取出してＺ3 ＝Ｚ1 Ｚ2 Ｈを演算して記憶する（Ｓ２３）。
ｓ1 ，ｓ2 を取出し、ｒ′＝−ｓ2 −ｓ1 を演算し（Ｓ２４）、更にｒ′2 を演算して記憶する（Ｓ２５）、ｒ′とＡを取出してＸ4 ＝Ａ＋ｒ′2 を演算して記憶する（Ｓ２６）。ｒ′とＣとＸ4を取出してｒ′（Ｃ−Ｘ4）を演算し（Ｓ２７）、更にＢを取出してＹ4 ＝Ｂ＋ｒ′（Ｃ−Ｘ4）を演算して記憶する（Ｓ２８）。Ｚ3 を取出してＺ4 とし（Ｓ２９）、Ｘ3 ，Ｙ3 ，Ｚ3 を取出してＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3 ）として、Ｘ4 ，Ｙ4 ，Ｚ4 を取出してＰ−Ｑ＝Ｒ′（Ｘ4 ，Ｙ4 ，Ｚ4 ）として出力部より出力する（Ｓ３０）。
【００２３】
ステップ（Ｓ２，Ｓ３）とステップ（Ｓ４，Ｓ５）、ステップ（Ｓ６，Ｓ７）、ステップ（Ｓ８，Ｓ９）の順番は任意でよい。またステップＳ１０はｕ1 とｕ2 が求まれば直ちに行ってもよい。同様にステップＳ１１もｓ1 とｓ2 が求まれば直ちに行ってもよい。Ｈを求めればステップＳ１２，１３、必要に応じてステップＳ１５を順次行ってもよい。ステップＳ１８はステップＳ２０の後に行ってもよい。ステップ（Ｓ２５，Ｓ２６）とステップ（Ｓ２７，Ｓ２８）は何れを先に行ってもよい。
【００２４】
この構成による楕円加減算は、有限体上の乗算１３回と自乗５回で演算できることは図１の構成から直ちに理解される。楕円加算に必要な演算量は、有限体上の乗算１２回と自乗４回であるのに対し、乗算と自乗が各１回増加するのみであり、楕円加算を２回或は楕円加算と楕円減算とを独立に行う場合と比較して演算量が著しく少なくて済む。
上述では一般の楕円加減算の場合を示したが、入力されたＺ1 ，Ｚ2 の片方または両方が１の場合にＺ1 ，Ｚ2 による乗算処理を簡略化するなどの変形も可能である。
第２の実施例［楕円加減算（変形ヤコビ座標）］
定義体の標数が３よりも大きい楕円曲線のＥ上で入力された楕円曲線上の点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1，Ｚ12，Ｚ13)，Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2，Ｚ22，Ｚ23)に対してＰ＋ＱおよびＰ−Ｑを出力する実施例を説明する。この場合、各楕円曲線上の点は変形ヤコビ座標（Ｙ2 ＝Ｘ3 ＋ａＸＺ4 ＋ｂＺ6 を満たす（Ｘ，Ｙ，Ｚ，Ｚ2 ，Ｚ3)の５値を用いて点を表す）を用いて表現している。
【００２５】
この楕円加減算装置の機能構成を図５に示す。なお、図１と対応する部分に同一参照番号を付けて重複する部分の説明は省略する。図１中の部分演算部１１，１２，１５，１６が省略乗算部１３′でＸ1 とＱのＺ22との乗算によりｕ1 が求められ、乗算部１４′でＸ2 とＰのＺ12との乗算が行われてｕ2 とされ乗算部１７′，１８′でそれぞれＹ1 ，Ｙ2 とＱのＺ23，ＰのＺ13との乗算がそれぞれ行われてｓ1 ，ｓ2 とされる。また乗算部３７よりのＺ3 が自乗部４６で自乗されてＺ32とされ、乗算部４７でＺ32とＺ3 が乗算されてＺ33とされ、これらがＲの要素として出力されると共に、Ｚ32，Ｚ33がそれぞれＲ′の要素Ｚ42，Ｚ43として出力される。その他は図１と同一構成、同一動作がなされる。
【００２６】
この場合も図２に示した機能構成により動作させることもできる。またコンピュータによりプログラムを実行させて機能させることもできる。その処理手順の例を図６に図４に示したステップと同一部分に同一ステップ番号を付けて示す。図４中のステップＳ２，Ｓ４，Ｓ６，Ｓ８が省略され、ステップＳ３の代りにステップＳ３′としてＸ1 とＱのＺ22を取出してこれらの乗算を行ってｕ1 として記憶し、ステップＳ５の代りにステップＳ５′でＸ2 とＰのＺ12を取出してこれらの乗算を行ってｕ2 として記憶し、ステップＳ７の代りにステップＳ７′でＹ1 とＱのＺ23を取出して、これらを乗算してｓ1 として記憶し、ステップＳ９の代りにステップＳ９′でＹ2 とＰのＺ13を取出してｓ2 として記憶する。またステップＳ２３でＺ3 を求めた後、Ｚ32を演算して記憶し（Ｓ３１）、更にＺ33を演算して記憶し（Ｓ３２）、Ｚ32をＺ42とし（Ｓ３３）、Ｚ33をＺ43とし（Ｓ３４）、ステップＳ３０の代りに、ステップＳ３０′で出力としてＲ（Ｘ3 ，Ｙ3 ，Ｚ3 ，Ｚ32，Ｚ33），Ｒ′（Ｘ4 ，Ｙ4 ，Ｚ4 ，Ｚ42，Ｚ43）を出力する点が図４に示した処理と異なる。なおステップＳ３１，Ｓ３２はステップＳ２８の後に行ってもよい。
【００２７】
以上の各部分演算は、以下の通りであり、これは従来の技術の項で示した変形ヤコビ座標表現のＰ，Ｑの演算と同一結果となることは直ちに理解されよう。また第１の実施例と同様に、楕円加算演算部又は楕円減算演算部にわずかな部分演算部を付加するだけで楕円加減算装置が構成されている。
ｕ1 ＝Ｘ1(Ｚ22)  ，  ｕ2 ＝Ｘ2(Ｚ12)
ｓ1 ＝Ｙ1(Ｚ23)  ，  ｓ2 ＝Ｙ2(Ｚ13)
Ｈ＝ｕ2 −ｕ1   ，  ｒ＝ｓ2 −ｓ1 
Ｈ2 ＝Ｈ2   ，  Ｈ3 ＝ＨＨ2 
Ａ＝−Ｈ3 −２ｕ1 Ｈ2   ，  Ｘ3 ＝Ａ＋ｒ2 
Ｂ＝−ｓ1 Ｈ3   ，  Ｃ＝ｕ1 Ｈ2  
Ｙ3 ＝Ｂ＋ｒ（Ｃ−Ｘ３）  ，  Ｚ3 ＝Ｚ1 Ｚ2 Ｈ
（Ｚ32）＝Ｚ32  ，  （Ｚ33）＝Ｚ33
ｒ′＝−ｓ2 −ｓ1   ，  Ｘ4 ＝Ａ＋ｒ′2
Ｙ4 ＝Ｂ＋ｒ′（Ｃ−Ｘ４）  ，  Ｚ4 ＝Ｚ3 
（Ｚ42）＝（Ｚ32）  ，  （Ｚ43）＝（Ｚ33）
この構成による楕円加減算は、有限体上の乗算１２回と自乗４回で演算できる。楕円加算に必要な演算量は、有限体上の乗算１１回と自乗３回であるのに対し、各１回増加するのみである。
【００２８】
この場合も、入力されたＺ1 ，Ｚ2 の片方または両方が１の場合にＺ1 ，Ｚ2による乗算処理を簡略化するなどの変形も可能である。
第３の実施例［楕円加減算（射影座標）］
定義体の標数が３よりも大きい楕円曲線のＥ上で入力された楕円曲線上の点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1)，Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2)に対してＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3)およびＰ−Ｑ＝Ｒ′(Ｘ4 ，Ｙ4 ，Ｚ4)を出力する装置として、各楕円曲線上の点は射影座標（Ｙ2 Ｚ＝Ｘ3 ＋ａＸＺ2 ＋ｂＺ3 を満たす（Ｘ，Ｙ，Ｚ)の３値を用いて点をあらわす）を用いて表現している、実施例について図７を参照して説明する。
【００２９】
乗算部５１，５２でＸ1 ，Ｘ2 とＺ2 ，Ｚ1 とがそれぞれ乗算されてＳ1 ，Ｓ2 が出力され、乗算部５３，５４でＹ1 ，Ｙ2とＺ2 ，Ｚ1 がそれぞれ乗算されてＴ1 ，Ｔ2 が出力され、減算部５５，５６でそれぞれＳ2 ，Ｔ2 からＳ1 ，Ｔ1 が減算されてｖ，ｕが出力され乗算部５７でＺ1 とＺ2 が乗算されてＣが出力され、ｖが自乗部５８で自乗され、更にこれに乗算部５９でｖが乗算されてｖ3 とされ、自乗部６１でｕが自乗され、乗算部６２，６３でそれぞれ、Ｔ1 ，Ｓ1 と−ｖ3 ，ｖ2 が乗算されてそれぞれＤ，Ｅが出力される。
【００３０】
加算部６４でｖ3 と２Ｅが加算され、その結果が符号反転されてＢとして出力され、乗算部６５でｕ2 とＣが乗算され、更にこれとＢが加算部６６で加算され、Ａが出力される。このＡとｖが乗算部６７で乗算されてＸ3 が出力される。減算部６８でＥからＡが減算されその結果に対し、乗算部６９でｕが乗算され、更にその結果に対し加算部７１でＤが加算されて、Ｙ3 が出力される。乗算部７２でｖ3 とＣが乗算されＺ3 が出力される。
つまり、これら部分演算部５１〜７２は楕円加算演算部を構成し、これらよりＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3）が得られる。これに対し、次のものが付加される。加算部７３でＴ2 とＴ1 が加算され、その結果が符号反転されてｕ′として出力され、ｕ′は自乗部７４で自乗され、その結果とＣが乗算部７５で乗算され、更にその結果にＢが加算部７６で加算されてＡ′として出力され、このＡ′にｖが乗算部７７で乗算されてＸ4 が出力される。減算部７８でＥからＡ′が減算され、その結果にｕ′が乗算部７９で乗算され、更にその結果にＤが加算部８１で加算されてＹ4 が出力される。またＺ3 がＺ4 としても出力される。これら部分演算部７３〜８１の付加により、楕円加算演算部の部分演算結果を利用して楕円減算Ｐ−Ｑ＝Ｒ′(Ｘ4 ，Ｙ4 ，Ｚ4)が得られる。
【００３１】
これは楕円加算演算における部分演算結果Ｔ1 ，Ｔ2 ，ｖ，Ｂ＝−ｖ3 −２Ｅ，Ｃ＝Ｚ1 Ｚ2 ，Ｄ＝−ｖ3 Ｔ1 ，Ｅ＝ｖ2 Ｓ1 を利用可能なようにしたことにより、わずかの部分演算部７３〜８１の付加により楕円減算Ｐ−Ｑが可能となった。
この図７に示した装置も図２に示したような機能構成により構成することもでき、またコンピュータによりプログラムを実行させて機能させることもできる。その場合の処理手順の例を図８に示す。
【００３２】
入力部はＰ，Ｑが入力されると記憶部に記憶し（Ｓ１）、Ｘ1 とＺ2 を取出してこれらを乗算してＳ1 として記憶し（Ｓ２）、Ｘ2 とＺ1 を取出してこれらを乗算してＳ2 として記憶し（Ｓ３）、Ｙ1 とＺ2 を取出し、これらを乗算してＴ1 として記憶し（Ｓ４）、Ｙ2 とＺ1 を取出し、これらを乗算してＴ2 として記憶する（Ｓ５）。
Ｔ1 とＴ2 を取出し、Ｔ2 −Ｔ1 を演算してｕとして記憶し（Ｓ６）、Ｓ1 とＳ2 を取出しＳ2 −Ｓ1 を演算してｖとして記憶し（Ｓ７）、Ｚ1 とＺ2 を取出し乗算してＣとして記憶する（Ｓ８）。ｖを取出し自乗して記憶すると共に（Ｓ９）、ｖ2 にｖを乗算してｖ3 を記憶する（Ｓ１０）。そのｖ3 に、Ｔ1 を取出して乗算して−ｖ3 Ｔ1 をＤとして記憶し（Ｓ１２）、ｖ2 とＳ1 を取出して乗算しＥとして記憶し（Ｓ１２）、ｖ3 とＥを取出し、−ｖ3 −２Ｅを演算してＢとして記憶する（Ｓ１３）。
【００３３】
ｕを取出し自乗し（Ｓ１４）、これに取出したＣを乗算し（Ｓ１５）、更に、その結果に取出したＢを加算してＡとして記憶し（Ｓ１６）、これと共にｖを取出してＡに乗算してＸ3 として記憶する（Ｓ１７）。
ＥとＡを取出し、Ｅ−Ａを演算し（Ｓ１８）、これに取出したｕを乗算し（Ｓ１９）、更にその結果に取出したＤを加算してＹ3 として記憶する（Ｓ２０）。またｖ3 とＣを取出し乗算してＺ3 として記憶する（Ｓ２１）。以上により楕円加算Ｐ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3）が求まる。
【００３４】
更に、Ｔ1 とＴ2 を取出し、−Ｔ2 −Ｔ1 を演算し、ｕ′として記憶し（Ｓ２２）、これと共にｕ′の自乗を演算し（Ｓ２３）、更にこれに取出したＣを乗算し（Ｓ２４）、この結果に取出したＢを加算してＡ′として記憶し（Ｓ２５）、これと共にＡ′に取出したｖを乗算してＸ4 として記憶する（Ｓ２６）。
ＥとＡ′を取出し、Ｅ−Ａ′を演算し（Ｓ２７）、これに取出したｕ′を乗算し（Ｓ２８）、更にその結果に取出したＤを加算してＹ4 として記憶する（Ｓ２９）。既に求めたＺ3 をＺ4 としても記憶する（Ｓ３０）。Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3）を取出しＰ＋Ｑの演算結果として、またＲ′（Ｘ4 ，Ｙ4 ，Ｚ4）を取出しＰ−Ｑの演算結果として出力部より出力する（Ｓ３１）。
【００３５】
ステップＳ２〜Ｓ５の順は任意でよい。ステップＳ６のｕはＴ1 とＴ2 が得られたら直ちに行ってもよい。同様にステップＳ７のｖはＳ3 ，Ｓ2 が得られたら直ちに行ってもよい。ステップＳ８のＣはステップＳ１５でｕ2 Ｃを求める前であれば何時行ってもよい。ステップＳ１１とＳ１２は何れを先に行ってもよい。
以上の演算は下記の通りである。
Ｓ1 ＝Ｘ1 Ｚ2   ，  Ｓ2 ＝Ｘ2 Ｚ1 
Ｔ1 ＝Ｙ1 Ｚ2   ，  Ｔ2 ＝Ｙ2 Ｚ1 
ｕ＝Ｔ2 −Ｔ1   ，  ｖ＝Ｓ2 −Ｓ1 
Ｃ＝Ｚ1 Ｚ2   ，  Ｄ＝−ｖ3 Ｔ1 
Ｅ＝ｖ2 Ｓ1   ，  Ｂ＝−ｖ3 −２Ｅ
Ａ＝ｕ2 Ｃ ＋Ｂ  ，  Ｘ3 ＝ｖＡ
Ｙ3 ＝ｕ（Ｅ−Ａ）＋Ｄ  ，  Ｚ3 ＝ｖ3 Ｃ
ｕ′＝−Ｔ2 −Ｔ1   ，  Ａ′＝ｕ′2 Ｃ＋Ｂ
Ｘ4 ＝ｖＡ′  ，  Ｙ4 ＝ｕ′（Ｅ−Ａ′）＋Ｄ
Ｚ4 ＝Ｚ3 
この演算によりＰ＋Ｑ，Ｐ−Ｑが正しく行われることは、従来の技術の項で示した対応する加算演算の式と比較すれば容易に理解されよう。
【００３６】
この構成による楕円加減算は、有限体上の乗算１４回と自乗３回で演算できる。対応する従来の技術の楕円加算に必要な演算量は、有限体上の乗算１２回と自乗２回であり、乗算２回、自乗１回を多くするだけで楕円加算と楕円減算とを同時に行うことができる。
この場合も入力されたＺ1 ，Ｚ2 の片方または両方が１の場合にＺ1 ，Ｚ2 による乗算処理を簡略化するなどの変形も可能である。
第４の実施例［楕円加減算（ＧＦ（２m）変形射影座標）］
定義体の標数が２の楕円曲線のＥ上で入力された楕円曲線上の点Ｐ（Ｘ1 ，Ｙ1 ，Ｚ1），Ｑ（Ｘ2 ，Ｙ2 ，Ｚ2）に対してＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3）およびＰ−Ｑ＝Ｒ′（Ｘ4 ，Ｙ4 ，Ｚ4）を出力する装置の実施例を説明する。この場合は各楕円曲線上の点は変形射影座標（Ｙ2 ＋ＸＹＺ＝Ｘ3 Ｚ＋ａＸ2 Ｚ2 ＋ｂＺ4 を満たす（Ｘ，Ｙ，Ｚ）の３値を用いて点を表す）を用いて表現している。
【００３７】
図９に示すように、自乗部１９１，１９２でＺ1 ，Ｚ2 がそれぞれ自乗され、乗算部２０１，２０２でこれ等の結果Ｚ12，Ｚ22とＹ2 ，Ｙ1 とがそれぞれ乗算され、Ａ1 ，Ａ2 が出力され、乗算部２０３，２０４でＺ1 ，Ｚ2 とＸ2 ，Ｘ1 がそれぞれ乗算され、Ｂ1 ，Ｂ2 が出力され、加算部２０５，２０６でそれぞれＡ1 ，Ｂ1 とＡ2 ，Ｂ2 が加算されてＣ，Ｄが出力され、乗算部２０７でＺ1 とＺ2 が乗算されてＥが出力され、乗算部２０８でＤとＥが乗算されてＦが出力され、自乗部２０９，２１１，２１２及び２１３でそれぞれＣ，Ｄ，Ｅ及びＦが自乗され、Ｆ2 はＺ3 として出力される。
【００３８】
乗算部２１４でＥ2 が楕円曲線の係数ａ倍され、これとＦが加算部２１５で加算され、その結果に対しＤ2 が乗算部２１６で乗算されてＧが出力される。乗算部２１７でＣとＦが乗算されてＨが出力され、加算部２１８でＣ2 とＨとＧが加算されてＸ3 が出力される。
乗算部２１９でＢ1 とＥが乗算されてＫが出力され、乗算部２２１でＤ2 とＫが乗算されてＬが出力され、乗算部２２２でＤ2 とＡ1 が乗算されてＭが出力され、加算部２２３，２２４でＬ，ＭとＸ5 がそれぞれ加算されてＩ，Ｊが出力され、乗算部２２５，２２６でＩ，ＪとＨ，Ｚ3 がそれぞれ乗算され、これら乗算結果が加算部２２７で加算されてＹ3 が出力される。
【００３９】
以上によりＰ＋Ｑ＝Ｒ（Ｘ3 ，Ｙ3 ，Ｚ3）の演算結果が得られる。加算部２２８でＡ1 とＫが加算されてＡ1 ′が出力され、これにＡ2 が加算部２２９で加算されてＣ′が出力される。乗算部２３１でＣ′とＦが乗算されてＨ′が出力され、自乗部２３２でＣ′が自乗され、加算部２３３でＣ′2 とＨ′とＧが加算されてＸ4 が出力される。
加算部２３４でＬとＸ4 が加算されてＩ′が出力され、加算部２３５でＭとＬとＸ4 が加算されて、Ｊ′が出力される。乗算部２３６，２３７でＨ′，Ｚ3 とそれぞれＩ′，Ｊ′が乗算され、これ等乗算結果が加算部２３８で加算されてＹ4 が出力される。またＺ3 がＺ4 としても出力される。よってＰ−Ｑ＝Ｒ′（Ｘ4 ，Ｙ4 ，Ｚ4）の演算結果が得られる。
【００４０】
このＰ−Ｑの演算はＰ＋Ｑの演算の際に部分演算Ｋ＝Ｂ，Ｅ、Ｌ＝Ｄ2 Ｋ、Ｍ＝Ｄ2 Ａ1 を求め、これらを利用するようにしたため、わずかの部分演算部２２８〜２３８を付加することにより、Ｐ−Ｑの演算も同時に得られる。
なおこの装置における各部分演算は下記の通りである。
Ａ1 ＝Ｙ2 Ｚ12  ，  Ａ2 ＝Ｙ1 Ｚ22
Ｂ1 ＝Ｘ2 Ｚ1   ，  Ｂ2 ＝Ｘ1 Ｚ2 
Ｃ＝Ａ1 ＋Ａ2   ，  Ｄ＝Ｂ1 ＋Ｂ2 
Ｅ＝Ｚ1 Ｚ2   ，  Ｆ＝ＤＥ  ，  Ｚ3 ＝Ｆ2
Ｇ＝Ｄ2(Ｆ＋ａＥ2)，  Ｈ＝ＣＦ
Ｘ3 ＝Ｃ2 ＋Ｈ＋Ｇ  ，  Ｋ＝Ｂ1 Ｅ
Ｌ＝Ｄ2 Ｋ  ，  Ｉ＝Ｌ＋Ｘ3   ，  Ｍ＝Ｄ2 Ａ1 
Ｊ＝Ｍ＋Ｘ3 ，Ｙ3 ＝ＨＩ＋Ｚ3 Ｊ ，Ａ1 ′＝Ａ1 ＋Ｋ
Ｃ′＝Ａ1 ′＋Ａ2 ，Ｈ′＝Ｃ′Ｆ ，Ｘ4 ＝Ｃ′2 ＋Ｈ′＋Ｇ
Ｉ′＝Ｌ＋Ｘ4   ，  Ｊ′＝Ｍ＋Ｌ＋Ｘ4 
Ｙ4 ＝Ｈ′Ｉ′ ＋Ｚ3 Ｊ′  ，  Ｚ4 ＝Ｚ3 
これら部分演算によりＰ＋Ｑ，Ｐ−Ｑの演算が正しく行われることはこれらと、従来の技術の項で述べた対応する式と比較すれば直ちに理解されよう。
【００４１】
この楕円加減算装置も図２に示したように構成することもでき、またコンピュータにプログラムを実行させて機能させることもできる。その場合の処理手順の例を図１０及び図１１に示す。
ＰとＱが入力されると記憶部に記憶し（Ｓ１）、Ｚ1 を取出して自乗し（Ｓ２）、これに取出したＹ2 を乗算してＡ1 として記憶する（Ｓ３）。Ｚ2 を取出し自乗して、これに取出したＹ1 を乗算してＡ2 として記憶する（Ｓ５）。Ｘ2 とＺ1 を取出し、これらを乗算してＢ1 として記憶し（Ｓ６）、Ｘ1 とＺ2 を取出し、これらを乗算してＢ2 として記憶し（Ｓ７）、Ａ1 とＡ2 を取出し、これらを加算してＣとして記憶し（Ｓ８）、Ｂ1 とＢ2 を取出し、これらを加算してＤとして記憶し（Ｓ９）、Ｚ1 とＺ2 を取出しこれらを乗算してＥとして記憶し（Ｓ１０）、これと共にＥに取出したＤを乗算してＦとして記憶し（Ｓ１１）、これと共にＦを自乗してＺ3 として記憶する（Ｓ１２）。
【００４２】
Ｄを取出して自乗して記憶し（Ｓ１３）、Ｅを取出し自乗し、これに係数ａを乗算し（Ｓ１５）、更にその結果に取出したＦを加算し（Ｓ１６）、この結果に取出したＤ2 を乗算してＧとして記憶する（Ｓ１７）。ＣとＦを取出し、これらを乗算してＨとして記憶する（Ｓ１８）。Ｃを取出し自乗し（Ｓ１９）、その結果に取出したＨとＧを加算してその結果をＸ3 として記憶する（Ｓ２０）。
Ｂ1 とＥを取出し、これらを乗算してＫとして記憶し（Ｓ２１）、これと共にＤ2 を取出してそのＫに乗算してＬとして記憶する（Ｓ２２）。図１１に示すように、ＬとＸ3 を取出し、これらを加算してＩとして記憶し（Ｓ２３）、Ｄ2 とＡ1 を取出し、これらを乗算してＭとして記憶し（Ｓ２４）、これと共にＭに取出したＸ3 を加算してＪとし（Ｓ２５）、このＪに取出したＺ3 を乗算して記憶する（Ｓ２６）。またＨとＩを取出し、これらを乗算し（Ｓ２７）、この結果と取出したＺ3 Ｊを加算してＹ3 として記憶する（Ｓ２８）。
【００４３】
Ａ1 とＫを取出し、これらを加算してＡ1 ′とし（Ｓ２９）、このＡ1 ′に取出したＡ2 を加算してＣ′として記憶する（Ｓ３０）。これと共にＣ′に取出したＦを乗算してＨ′として記憶する（Ｓ３１）。Ｃ′を取出し、自乗して記憶し（Ｓ３２）、これと共にそのＣ′2 に取出したＨ′とＧを加算してＸ4 として記憶する（Ｓ３３）。
ＬとＸ4 を取出し、これらを加算しＩ′として記憶し（Ｓ３４）、ＭとＬとＸ4 を取出し、これらを加算しＪ′とし（Ｓ３５）、このＪ′と取出したＺ3 を乗算して記憶する（Ｓ３６）。Ｈ′とＩ′を取出し、これらを乗算し（Ｓ３７）、この結果と取出したＺ３Ｊ′を加算してＹ4 として記憶する（Ｓ３８）。Ｚ3 をＺ4 にも利用し（Ｓ３９）、Ｐ＋Ｑの演算結果としてＲ（Ｘ3 ，Ｙ3 ，Ｚ3）を取出し、Ｐ−Ｑの演算結果としてＲ′（Ｘ4 ，Ｙ4 ，Ｚ4）を取出して出力部より出力する（Ｓ４０）。
【００４４】
ステップ（Ｓ２，Ｓ３）、（Ｓ４，Ｓ５）、（Ｓ６，Ｓ７）の順は任意でよい。同様に他のステップにおいても、そのステップで処理に必要とするものを、そのステップの前に処理しておけばよく、その順は図１０及び図１１に示す順に限られるものでない。
この構成による楕円加減算は、有限体上の乗算１７回と自乗７回で演算できる。対応する従来の楕円加算に必要な演算量は、有限体上の乗算１４回と自乗６回であり、これに対し乗算を３回、自乗を１回多くするだけで楕円加算のみならず楕円減算も同時に行うことができる。
【００４５】
この場合も、入力されたＺ1 ，Ｚ2 の片方または両方が１の場合にＺ1 ，Ｚ2 による乗算処理を簡略化するなどの変形も可能である。
上述の各実施例において、コンピュータにプログラムを実行させて機能させる場合はこの発明の楕円加減算プログラムをコンピュータのプログラムメモリに、ＣＤ−ＲＯＭ、可撓性磁気ディスクなどからインストールさせ、又は通信回線を介してダウンロードさせて行えばよい。
【００４６】
【発明の効果】
以上述べたように従来においては楕円加算のみ又は楕円減算のみを独立に行っていたが、この発明によれば楕円曲線上の加算と減算の両方の結果を出力し、しかも楕円加算・減算を独立に行う場合よりも演算を高速化することができる。
たとえば、標数３以上の楕円曲線においてヤコビ座標を用いる場合、楕円加算および楕円減算には、有限体上の乗算と自乗をあわせて１６回必要としていた。この発明の方法を適用すれば、楕円加減算を有限体上の乗算と自乗をあわせて１８回で行うことができる。
【００４７】
したがってこの場合、従来の別々に演算する方法（有限体上の乗算・自乗３２回）に比べて約１．７８倍高速に演算できる。また、この方法はヤコビ座標以外の座標（射影座標など）に適用することや、標数２の楕円曲線に適用することも可能であり、応用範囲が広い。
【図面の簡単な説明】
【図１】  ヤコビ座標の場合に適用したこの発明による楕円加減算装置の機能構成例を示す図。
【図２】  この発明装置の一般的機能構成の他の例を示す図。
【図３】  この発明装置をコンピュータにより機能される場合の機能構成例を示す図。
【図４】  図１に示した実施例の処理手順の例を示す流れ図。
【図５】  変形ヤコビ座標に適用したこの発明による楕円加減算装置の機能構成例を示す図。
【図６】  その処理手順の例を示す流れ図。
【図７】  射影座標に適用したこの発明の楕円加減算装置の機能構成例を示す図。
【図８】  その処理手順の例を示す流れ図。
【図９】  ＧＦ（２m）変形射影座標に適用したこの発明の楕円加減算装置の機能構成例を示す図。
【図１０】  その処理手順の例を示す流れ図。
【図１１】  図１０に示す手順の続きを示す流れ図。
【図１】
0003863021.tif 000002
【図２】
0003863021.tif 000003
【図３】
0003863021.tif 000004
【図４】
0003863021.tif 000005
【図５】
0003863021.tif 000006
【図６】
0003863021.tif 000007
【図７】
0003863021.tif 000008
【図８】
0003863021.tif 000009
【図９】
0003863021.tif 000010
【図１０】
0003863021.tif 000011
【図１１】
0003863021.tif 000012