(57)【特許請求の範囲】
【請求項１】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１とを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数１】
0003794266.tif 000085
【数２】
0003794266.tif 000086
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数３】
0003794266.tif 000087
におけるパラメタＢ
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラ
ー倍計算方法。
【請求項２】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１とを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数４】
0003794266.tif 000088
を計算することによってスカラー倍点の座標Yｄを求めることを特徴とするスカラー倍計算方法。
【請求項３】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ−１）Pの座標Xｄ-１、Zｄ−１を求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、Xｄ−１、Zｄ−１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数５】
0003794266.tif 000089
【数６】
0003794266.tif 000090
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数７】
0003794266.tif 000091
におけるパラメタＢ
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラ
ー倍計算方法。
【請求項４】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ−１）Pの座標Xｄ−１、Zｄ−１を求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、Xｄ−１、Zｄ−１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数８】
0003794266.tif 000092
を計算することによってスカラー倍点の座標Yｄを求めることを特徴とするスカラー倍計算方法。
【請求項５】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ楕円曲線においてアフィン座標で表されたスカラー倍点ｄPの座標ｘｄとアフィン座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標ｘｄ+１とアフィン座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標ｘｄ−１とを求め、
座標復元部によって、求められたｘｄ、ｘｄ+１、ｘｄ−１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数９】
0003794266.tif 000093
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数１０】
0003794266.tif 000094
におけるパラメタＢ
を計算することによってスカラー倍点の座標ｙｄを求めることを特徴とするスカラー倍計算方法。
【請求項６】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値と入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、射影座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ−1）Ｐの座標Xｄ−１、Zｄ−１とを求め、  座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、Xｄ−１、Zｄ−１と入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数１１】
0003794266.tif 000095
【数１２】
0003794266.tif 000096
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラ
ー倍計算方法。
【請求項７】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、射影座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ−1）Ｐの座標Xｄ−１、Zｄ−１とを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、Xｄ−１、Zｄ−１と入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数１３】
0003794266.tif 000097
を計算することによってスカラー倍点の座標Yｄを求めることを特徴とするスカラー倍計算方法。
【請求項８】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス楕円曲線においてアフィン座標で表されたスカラー倍点ｄPの座標ｘｄと、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ+1）Ｐの座標ｘｄ+１と、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ−1）Ｐの座標ｘｄ−１とを求め、  座標復元部によって、求められたｘｄ、ｘｄ+１、ｘｄ−１と入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数１４】
0003794266.tif 000098
を計算することによってスカラー倍点の座標Yｄを求めることを特徴とするスカラー倍計算方法。
【請求項９】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙに対するモンゴメリ型楕円曲線上の点ｘ、ｙとを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、ｘ、ｙから、
【数１５】
0003794266.tif 000099
【数１６】
0003794266.tif 000100
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数１７】
0003794266.tif 000101
におけるパラメタＢ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数１８】
0003794266.tif 000102
及び
【数１９】
0003794266.tif 000103
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラ
ー倍計算方法。
【請求項１０】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙに対するモンゴメリ型楕円曲線上の点ｘ、ｙとを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、ｘ、ｙから、
【数２０】
0003794266.tif 000104
【数２１】
0003794266.tif 000105
【数２２】
0003794266.tif 000106
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数２３】
0003794266.tif 000107
におけるパラメタＢ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数２４】
0003794266.tif 000108
及び
【数２５】
0003794266.tif 000109
の関係における変換パラメタｓ、α
を計算することによってワイエルシュトラスがた楕円曲線におけるスカラー倍点の座標XｄW、YｄW、ZｄWを求めることを特徴とするスカラー倍計算方法。
【請求項１１】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、  前記高速スカラー倍計算部によって、入力された前記スカラー値と入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ−1）Ｐの座標Xｄ-１、Zｄ−１と、入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙに対するモンゴメリ型楕円曲線上の点ｘ、ｙとを求め、  座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、Xｄ−Zｄ−１、ｘ、ｙから、
【数２６】
0003794266.tif 000110
【数２７】
0003794266.tif 000111
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数２８】
0003794266.tif 000112
におけるパラメタＢ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数２９】
0003794266.tif 000113
及び
【数３０】
0003794266.tif 000114
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラ
ー倍計算方法。
【請求項１２】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１と、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ−1）Ｐの座標Xｄ-１、Zｄ−１とを求め、  座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、Xｄ−１、Zｄ−１と、入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数３１】
0003794266.tif 000115
【数３２】
0003794266.tif 000116
【数３３】
0003794266.tif 000117
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数３４】
0003794266.tif 000118
におけるパラメタＢ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数３５】
0003794266.tif 000119
及び
【数３６】
0003794266.tif 000120
の関係における変換パラメタｓ、α
を計算することによってワイエルシュトラス型楕円曲線におけるスカラー倍点の座標XｄW、YｄW、ZｄWを求めることを特徴とするスカラー倍計算方法。
【請求項１３】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点ｄPの座標Xｄと、アフィン座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１と、アフィン座標で表されたモンゴメリ型楕円曲線上の点（ｄ−1）Ｐの座標Xｄ−１とを求め、
座標復元部によって、求められたXｄ、Xｄ+１、Xｄ−１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数３７】
0003794266.tif 000121
【数３８】
0003794266.tif 000122
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数３９】
0003794266.tif 000123
におけるパラメタＢ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数４０】
0003794266.tif 000124
及び
【数４１】
0003794266.tif 000125
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標ｘｄW、ｙｄWを求めることを特徴とするスカラー倍計算方法。
【請求項１４】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力されたスカラー値ｄと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１とを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数４２】
0003794266.tif 000126
【数４３】
0003794266.tif 000127
但し、Ａ、Ｂはモンゴメリ型楕円曲線の定義式
【数４４】
0003794266.tif 000128
におけるパラメタＡ、Ｂ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数４５】
0003794266.tif 000129
及び
【数４６】
0003794266.tif 000130
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラー倍計算方法。
【請求項１５】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１とを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数４７】
0003794266.tif 000131
但し、Ａはモンゴメリ型楕円曲線の定義式
【数４８】
0003794266.tif 000132
におけるパラメタＡ
を計算することによってスカラー倍点の座標Yｄを求めることを特徴とするスカラー倍計算方法。
【請求項１６】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、モンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点ｄPの座標ｘｄと、アフィン座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標ｘｄ+１とを求め、
座標復元部によって、求められたｘｄ、ｘｄ+１と入力されたモンゴメリ型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数４９】
0003794266.tif 000133
但し、Ａ、Ｂはモンゴメリ型楕円曲線の定義式
【数５０】
0003794266.tif 000134
におけるパラメタＡ、Ｂ
を計算することによってスカラー倍点の座標ｙｄを求めることを特徴とするスカラー倍計算方法。
【請求項１７】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、  前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１とを求め、  座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１と入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数５１】
0003794266.tif 000135
【数５２】
0003794266.tif 000136
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラー倍計算方法。
【請求項１８】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ+1）Ｐの座標Xｄ+１、Zｄ+１とを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１と入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数５３】
0003794266.tif 000137
を計算することによってスカラー倍点の座標Yｄを求めることを特徴とするスカラー倍計算方法。
【請求項１９】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力されたスカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点ｄPの座標ｘｄと、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ+1）Ｐの座標ｘｄ+１、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点（ｄ―1）Ｐの座標ｘｄ−１とを求め、  座標復元部によって、求められたｘｄ、ｘｄ+１、ｘｄ−１と入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙから、
【数５４】
0003794266.tif 000138
を計算することによってスカラー倍点の座標ｙｄを求めることを特徴とするスカラー倍計算方法。
【請求項２０】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Ｘｄ+１、Ｚｄ+１と、入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙに対するモンゴメリ型楕円曲線上の点ｘ、ｙとを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、ｘ、ｙから、
【数５５】
0003794266.tif 000139
【数５６】
0003794266.tif 000140
但し、Ｂはモンゴメリ型楕円曲線の定義式
【数５７】
0003794266.tif 000141
におけるパラメタＢ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数５８】
0003794266.tif 000142
及び
【数５９】
0003794266.tif 000143
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標ｘｄ、ｙｄを求めることを特徴とするスカラー倍計算方法。
【請求項２１】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標Xｄ、Zｄと、射影座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標Ｘｄ+１、Ｚｄ+１と、入力されたワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙに対するモンゴメリ型楕円曲線上の点ｘ、ｙとを求め、
座標復元部によって、求められたXｄ、Zｄ、Xｄ+１、Zｄ+１、ｘ、ｙから、
【数６０】
0003794266.tif 000144
【数６１】
0003794266.tif 000145
【数６２】
0003794266.tif 000146
但し、Ａ、Ｂはモンゴメリ型楕円曲線の定義式
【数６３】
0003794266.tif 000147
におけるパラメタＡ、Ｂ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数６４】
0003794266.tif 000148
及び
【数６５】
0003794266.tif 000149
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標Ｘｄｗ、Ｙｄｗ、Ｚｄｗを求めることを特徴とするスカラー倍計算方法。
【請求項２２】
楕円曲線暗号における標数５以上の有限体上に定義された楕円曲線において、スカラー値ｄ及び楕円曲線上の点Ｐからスカラー倍点を計算するスカラー倍計算方法であって、
予め記憶装置に記憶されたスカラー値ｄと、ワイエルシュトラス型楕円曲線上の点Ｐの座標ｘ、ｙとを高速スカラー倍計算部へ入力し、
前記高速スカラー倍計算部によって、入力された前記スカラー値ｄと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点ｄPの座標ｘｄと、アフィン座標で表されたモンゴメリ型楕円曲線上の点（ｄ+1）Ｐの座標ｘｄ+１と、入力されたモンゴメリ型楕円曲線上の点Ｐであるｘ、ｙとを求め、座標復元部によって、求められたｘｄ、ｘｄ+１、ｘ、ｙから、
【数６６】
0003794266.tif 000150
【数６７】
0003794266.tif 000151
但し、Ａ、Ｂはモンゴメリ型楕円曲線の定義式
【数６８】
0003794266.tif 000152
におけるパラメタＡ、Ｂ、
s、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
【数６９】
0003794266.tif 000153
及び
【数７０】
0003794266.tif 000154
の関係における変換パラメタｓ、α
を計算することによってスカラー倍点の座標ｘｄｗ、ｙｄｗを求めることを特徴とするスカラー倍計算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータネットワークにおけるセキュリティ技術に係り、特に楕円曲線暗号における暗号処理実行方法に関する。
【０００２】
【従来の技術】
楕円曲線暗号はN.Koblitz, V.S.Millerにより提案された公開鍵暗号の一種である。公開鍵暗号には、公開鍵と呼ばれる一般に公開してよい情報と、秘密鍵と呼ばれる秘匿しなければならない秘密情報がある。与えられたメッセージの暗号化や署名の検証には公開鍵を用い、与えられたメッセージの復号化や署名の作成には秘密鍵を用いる。楕円曲線暗号における秘密鍵は、スカラー値が担っている。また、楕円曲線暗号の安全性は楕円曲線上の離散対数問題の求解が困難であることに由来している。ここで楕円曲線上の離散対数問題とは、楕円曲線上のある点Pとそのスカラー倍の点dPが与えられた時、スカラー値dを求める問題である。ここにおいて、楕円曲線上の点とは、楕円曲線の定義方程式をみたす数の組をいい、楕円曲線上の点全体には、無限遠点という仮想的な点を単位元とした演算、すなわち楕円曲線上の加法（乃至は加算）が定義される。そして、同じ点同士の楕円曲線上の加法のことを、特に楕円曲線上の２倍算という。楕円曲線上の２点の加法は次のようにして計算される。２点を通る直線を引くとその直線は楕円曲線と他の点において交わる。その交わった点とｘ軸に関して対称な点を加法を行なった結果の点とする。楕円曲線上の点の２倍算は次のようにして計算される。楕円曲線上の点における接線をひくと、その接線は楕円曲線上の他の点において交わる。その交わった点とｘ座標に関して対称な点を２倍算を行なった結果の点とする。ある点に対し、特定の回数だけ加法を行なうことをスカラー倍といい、その結果をスカラー倍点、その回数のことをスカラー値という。
【０００３】
情報通信ネットワークの進展と共に電子情報に対する秘匿や認証の為に暗号技術は不可欠な要素となってきている。そこでは暗号技術の安全性とともに高速化が望まれている。楕円曲線上の離散対数問題が非常に困難である為に、素因数分解の困難性を安全性の根拠にしているＲＳＡ暗号と比べて、楕円曲線暗号は鍵長を比較的短くすることができる。そのため比較的高速な暗号処理が可能である。しかしながら、処理能力の制限されているスマートカードや大量の暗号処理を行なう必要のあるサーバ等においては、必ずしも満足できる程高速であるとは限らない。それゆえに暗号のさらなる高速化が必要となる。
【０００４】
楕円曲線暗号には、ワイエルシュトラス型楕円曲線と呼ばれる楕円曲線が通常用いられている。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514, Springer-Verlag, (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この計算方法は、スカラー倍点の座標を、省略することなく正確に表示している。すなわち、アフィン座標系であれば、ｘ座標及びｙ座標、射影座標乃至はヤコビアン座標であれば、Ｘ座標、Ｙ座標及びＺ座標の値を全て与えている。
【０００５】
一方でモンゴメリ型楕円曲線ＢＹ２＝Ｘ３＋ＡＸ２＋Ｘ（Ａ，Ｂ∈Ｆｐ）を用いるとワイエルシュトラス型楕円曲線よりも高速に演算を実行できることがP.L.Montgomery, Speeding the Pollard and Elliptic Curve Methods of Factorization, Math. Comp. 48 (1987) pp.243-264. に記載されている。これは、スカラー値の特定のビットの値に依存して、楕円曲線上の点の組(mP,(m+1)P)から点の組(2mP,(2m+1)P)乃至は点の組((2m+1)P,(2m+2)P)を繰り返し計算するスカラー倍計算方法において、モンゴメリ型楕円曲線を利用することにより、加算及び２倍算の計算時間が短縮されることに由来する。このスカラー倍計算法は、ワイエルシュトラス型楕円曲線における、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いた場合よりも、高速に計算することができる。しかしながら、この方法は楕円曲線上の点のｙ座標の値は計算しない。多くの暗号処理においては、本質的にy座標を用いないので、この事は問題にはならないが、一部の暗号処理を実行する又は完全な形で標準に準拠しようとすれば、y座標の値も必要となる。
【０００６】
以上は楕円曲線の定義体の標数が５以上の素数の場合であるが、他方、標数２の有限体上定義された楕円曲線に対しては、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法が J.Lopez, R.Dahab, Fast Multiplication on Elliptic Curves over GF(2m) without Precomputation, Cryptographics Hardware and Embedded Systems: Proceedings of CHES'99, LNCS 1717, Springer-Verlag, (1999) pp.316-327. に記載されている。
【０００７】
【発明が解決しようとする課題】
上記従来技術により、標数が５以上の有限体上定義された楕円曲線を用いて楕円曲線暗号を構成した場合、ワイエルシュトラス型楕円曲線においてウィンドウ法及び混合座標系を用いると、スカラー倍点の座標を完全に計算することができるが、モンゴメリ型楕円曲線のスカラー倍計算方法を用いた場合程高速に計算することはできない。モンゴメリ型楕円曲線におけるスカラー倍計算方法を用いると、ワイエルシュトラス型楕円曲線においてウィンドウ法及び混合座標系を用いた場合より高速に計算することが可能であるが、スカラー倍点の座標を完全に与えること、すなわちｙ座標を与えることができない。したがって、スカラー倍計算方法として、高速化を計ろうとするとスカラー倍点の座標を完全に与えることができず、スカラー倍点の座標を完全に与えようとすると高速に計算ができないという状態にあった。
【０００８】
本発明の目的は、標数が５以上の有限体上定義された楕円曲線において、モンゴメリ型楕円曲線におけるスカラー倍演算と同程度の高速さで、スカラー倍点の座標を完全に与えることができるスカラー倍計算方法を提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義された楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から完全な座標を復元するステップとを有することを特徴とする。
【００１０】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義された楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報からアフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【００１１】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義された楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から射影座標において完全な座標を復元するステップとを有することを特徴とする。
【００１２】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から完全な座標を復元するステップとを有することを特徴とする。
【００１３】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から完全な座標を復元するステップとを有することを特徴とする。
【００１４】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のＸ座標及びＺ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【００１５】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のＸ座標及びＺ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標を与え、射影座標において完全な座標を復元するステップとを有することを特徴とする。
【００１６】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のＸ座標及びＺ座標、前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を減算した点の射影座標におけるＸ座標及びＺ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【００１７】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のＸ座標及びＺ座標、前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を減算した点の射影座標におけるＸ座標及びＺ座標を与え、射影座標において完全な座標を復元するステップとを有することを特徴とする。
【００１８】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報としてアフィン座標で与えられた前記スカラー倍点のｘ座標、前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点のアフィン座標におけるｘ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を減算した点のアフィン座標におけるｘ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【００１９】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のＸ座標及びＺ座標、前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標並びに前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を減算した点の射影座標におけるＸ座標及びＺ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【００２０】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のＸ座標及びＺ座標、前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標並びに前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を減算した点の射影座標におけるＸ座標及びＺ座標を与え、射影座標において完全な座標を復元するステップとを有することを特徴とする。
【００２１】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報としてアフィン座標で与えられた前記スカラー倍点のｘ座標、前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を加算した点のアフィン座標におけるｘ座標並びに前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を減算した点のアフィン座標におけるｘ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【００２２】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報からワイエルシュトラス型楕円曲線において完全な座標を復元するステップとを有することを特徴とする。
【００２３】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報からモンゴメリ型楕円曲線において完全な座標を復元するステップと、前記モンゴメリ型楕円曲線において完全な座標が復元されたスカラー倍点からワイエルシュトラス型楕円曲線におけるスカラー倍点を計算するステップとを有することを特徴とする。
【００２４】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のＸ座標及びＺ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標を与え、ワイエルシュトラス型楕円曲線においてアフィン座標における完全な座標を復元するステップとを有することを特徴とする。
【００２５】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のＸ座標及びＺ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標を与え、ワイエルシュトラス型楕円曲線において射影座標における完全な座標を復元するステップとを有することを特徴とする。
【００２６】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のＸ座標及びＺ座標、前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を減算した点の射影座標におけるＸ座標及びＺ座標を与え、ワイエルシュトラス型楕円曲線においてアフィン座標における完全な座標を復元するステップとを含むことを特徴とする。
【００２７】
また本発明は、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のＸ座標及びＺ座標、前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるＸ座標及びＺ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を減算した点の射影座標におけるＸ座標及びＺ座標を与え、ワイエルシュトラス型楕円曲線において射影座標における完全な座標を復元するステップとを有することを特徴とする。
【００２８】
また上記目的を達する一手段として、楕円曲線暗号における標数５以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線においてアフィン座標で与えられたスカラー倍点のｘ座標、前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点のアフィン座標におけるｘ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を減算した点のアフィン座標におけるｘ座標を与え、ワイエルシュトラス型楕円曲線においてアフィン座標における完全な座標を復元するステップとを有することを特徴とする。
【００２９】
【発明の実施の形態】
以下、本発明の実施例を図面により説明する。
【００３０】
図１は暗号/復号処理装置の構成を示したものである。この暗号/復号処理装置１０１は、入力されたメッセージの暗号化、暗号化されたメッセージの復号化のいずれも行えるようにしたものである。尚、ここで扱う楕円曲線は標数５以上の楕円曲線とする。
【００３１】
入力されたメッセージを暗号化し、暗号化されたメッセージを復号化する場合、一般に次の数１が成立する。
【００３２】
【数１】
Ｐm＋ｋ（ａＱ）−ａ（ｋＱ）＝Ｐm                …数１
ここで、Ｐｍはメッセージであり、ｋは乱数、ａは秘密鍵を示す定数、Ｑは定点である。この式のＰm＋ｋ（ａＱ）のａＱは、公開鍵を示しており、入力されたメッセージを公開鍵によって暗号化することを示している。ａ（ｋＱ）のａは秘密鍵を示しており、秘密鍵により復号化することを示している。
【００３３】
従って、図１に示した暗号/復号処理装置１０１をメッセージの暗号化だけに用いる場合には、Ｐm＋ｋ（ａＱ）及びｋＱを計算して出力し、復号化だけに用いる場合には、秘密鍵ａ及びｋＱより−ａ（ｋＱ）を計算し、（Ｐm＋ｋ（ａＱ））−ａ（ｋＱ）を計算して出力するようにすればよい。
【００３４】
図１に示した暗号/復号処理装置１０１は、処理部１１０と、記憶部１２０、レジスタ部１３０とを有している。処理部１２０は、暗号化処理に必要な処理を機能ブロックで示しており、入力されたメッセージの暗号化や暗号化されたメッセージの復号化を行う暗号/復号処理部１０２、暗号/復号処理部１０２で暗号化や復号化を行うのに必要なパラメータを演算するスカラー倍計算部１０３とを有している。記憶部１２０は、定数、秘密情報（例えば、秘密鍵である。）などを記憶している。レジスタ部１３０は、暗号化又は復号化処理において演算の結果や、記憶部１２０に記憶された情報を一次的に記憶する。尚、処理部１１０、レジスタ部１３０は以下に説明する処理を行う専用の演算装置やＣＰＵなどにより実現することができ、記憶部１２０は、ＲＡＭ、ＲＯＭなどによって実現することができる。
【００３５】
次に、図１に示した暗号/復号処理装置１０１の動作について説明する。図３は、暗号/復号処理装置１０１において暗号化、復号化を行う場合の各部の情報の伝達を示したものである。
【００３６】
まず、図３０により入力されたメッセージを暗号化する場合の動作について説明する。
【００３７】
暗号/復号処理部１０２へメッセージが入力されると（３００１）、入力されたメッセージのビット長が予め定めたビット長か否かを判断する。予め定めたビット長より長い場合には、予め定めたビット長となるようにメッセージを区切る（以下、メッセージは所定のビット長に区切られているものとして説明する。）。次に、暗号/復号処理部１０２は、メッセージのビット列によって表される数値をｘ座標（ｘ1）にもつ楕円曲線上のｙ座標の値（ｙ1）を計算する。例えば、モンゴメリ型楕円曲線は、Ｂｙ1２＝ｘ1３＋Ａｘ1２＋ｘ1で表されるので、これよりｙ座標の値を求めることができる。尚、Ｂ、Ａはそれぞれ定数である。暗号化処理部１２０は、公開鍵ａＱ及びＱのｘ座標、ｙ座標の値をスカラー倍計算部１０３へ送る。このとき、暗号化処理部１２０は乱数を生成し、これをスカラー倍計算部１０３へ送る（３００２）。スカラー倍計算部１０３は、Ｑのｘ座標、ｙ座標の値、乱数によるスカラー倍点（ｘd1、ｙd1）と、公開鍵ａＱのｘ座標、ｙ座標の値、乱数によるスカラー倍点（ｘd2、ｙd2）とを計算し（３００３）、計算されたスカラー倍点を暗号化処理部１０２へ送る（３００４）。暗号化処理部１０２は、送られたスカラー倍点を用いて、暗号化処理を行う（３００５）。例えば、モンゴメリ型の楕円曲線については、次式により暗号化されたメッセージｘe1、ｘe2を得る。
【００３８】
【数２】
ｘe1＝Ｂ（（ｙd1−ｙ1）/（ｘd1−ｘ1））２−Ａ−ｘ1−ｘd1    …数２
【００３９】
【数３】
ｘe2＝ｘd2                                          …数3
暗号/復号処理装置１０１は暗号/復号処理部１０２で暗号化されたメッセージを出力する。
【００４０】
次に、図３２により暗号化されたメッセージを復号化する場合の動作について説明する。
【００４１】
暗号/復号処理部１０２へ暗号化されたメッセージが入力されると（３２０１）、暗号化されたメッセージのビット列によって表される数値をｘ座標にもつ楕円曲線上のｙ座標の値を計算する。ここで、暗号化されたメッセージがｘe1、ｘe2のビット列であり、モンゴメリ型楕円曲線の場合、ｙ座標の値（ｙe1）はＢｙe1２＝ｘe1３＋Ａｘe1２＋ｘe1から得られる。尚、Ｂ、Ａはそれぞれ定数である。暗号化処理部１２０は、ｘ座標、ｙ座標の値（ｘe1、ｙe1）をスカラー倍計算部１０３へ送る（３２０２）。スカラー倍計算部１０３は記憶部１２０から秘密情報を読み出し（３２０３）、ｘ座標、ｙ座標の値、秘密情報からスカラー倍点（ｘd3、ｙd3）を計算し（３２０４）、計算されたスカラー倍点を暗号/復号処理部１０２へ送る（３２０５）。暗号化処理部１０２は、送られたスカラー倍点を用いて、復号化処理を行う（３２０６）。例えば、暗号化されたメッセージが、ｘe1、ｘe2のビット列であり、モンゴメリ型の楕円曲線の場合は、次式によりｘf1を得る。
【００４２】
【数４】
ｘf1=B((ｙe2+ｙd3)/(ｘe2-ｘd3))２-Ａ-ｘe2-ｘd3  …数４
このｘf1は、暗号化される前のメッセージｘ１に相当するものである。
【００４３】
以上のようにして、暗号/復号処理部１０２により暗号化、または復号化処理が行われる。
【００４４】
次に、暗号化処理装置１０１のスカラー倍計算部１０３の処理について説明する。ここでは、暗号化処理装置１０１が、復号化処理を行う場合を例に以下、説明する。
【００４５】
図２は、スカラー倍計算部１０３の機能ブロックを示したものである。図２５は、スカラー倍計算部１０３の動作を示したものである。
【００４６】
高速スカラー倍計算部２０２が、秘密情報であるスカラー値及び暗号化されたメッセージと、暗号化されたメッセージがX座標となる楕円曲線上のY座標の値である楕円曲線上の点を受け取る（ステップ２５０１）と、高速スカラー倍計算部２０２は受け取ったスカラー値と楕円曲線上の点からスカラー倍点の座標の一部の値を計算し（ステップ２５０２）、その情報を座標復元部２０３に与える（ステップ２５０３）。座標復元部２０３は与えられたスカラー倍点の情報及び入力された楕円曲線上の点よりスカラー倍点の座標の復元を行なう（ステップ２５０４）。スカラー倍計算装置２０１は完全に座標が与えられたスカラー倍点を計算結果として出力する（ステップ２５０５）。ここで、完全に座標が与えられたスカラー倍点とは、y座標が計算されて出力されることを意味する（以下、同じ。）。
【００４７】
以下、スカラー倍計算部１０３の高速スカラー倍計算部２０２、座標復元部２０３についていくつかの実施例を説明する。
【００４８】
第１の実施例は、スカラー倍計算装置１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Ｐから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点（ｘd,ｙd）を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値ｄと与えられたモンゴメリ型楕円曲線上の点Ｐからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(ｘ,ｙ)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、ｘ及びｙよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【００４９】
次に図１１により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【００５０】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【００５１】
ステップ１１０１においてXd×xが計算され、レジスタＴ1に格納される。ステップ１１０２においてＴ1-Zdが計算される。ここでレジスタＴ1にはXdxが格納されており、したがってXdx-Zd が計算される。その結果がレジスタＴ1に格納される。ステップ１１０３においてZd×xが計算され、レジスタＴ2に格納される。ステップ１１０４においてXd-Ｔ2が計算される。ここでレジスタＴ2にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ2に格納される。ステップ１１０５においてXd+1×Ｔ2が計算される。ここでレジスタＴ2にはXd-xZdが格納されており、したがってXd+1(Xd-xZd)が計算される。その結果がレジスタＴ3に格納される。ステップ１１０６においてＴ2の２乗が計算される。ここでレジスタＴ2には(Xd-xZd)が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１１０７においてＴ2×Xd+1が計算される。ここでレジスタＴ2には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１１０８においてＴ2×Zd+1が計算される。ここでレジスタＴ2にはXd+1(Xd-xZd)2が格納されており、したがってZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１１０９においてＴ2×yが計算される。ここでレジスタＴ2にはZd+1Xd+1(Xd-xZd)2が格納されており、したがってyZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１１１０においてＴ2×Bが計算される。ここでレジスタＴ2にはyZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１１１１においてＴ2×Zdが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタＴ2に格納される。ステップ１１１２においてＴ2×Xdが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2ZdXdが計算される。その結果がレジスタＴ4に格納される。ステップ１１１３においてＴ2×Zdが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタＴ2に格納される。ステップ１１１４においてレジスタＴ2の逆元が計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2Zd2が格納されており、したがって1/ByZd+1Xd+1(Xd-xZd)2Zd2が計算される。その結果がレジスタＴ2に格納される。ステップ１１１５においてＴ2×Ｔ４が計算される。ここでレジスタＴ2には1/ByZd+1Xd+1(Xd-xZd)2Zd2がレジスタＴ４にはByZd+1Xd+1(Xd-xZd)2ZdXdがそれぞれ格納されており、したがって(ByZd+1Xd+1(Xd-xZd)2ZdXd)/(ByZd+1Xd+1(Xd-xZd)2Zd2)(＝Xd/Zd)が計算される。その結果がレジスタｘdに格納される。ステップ１１１６においてＴ1×Zd+1が計算される。ここでレジスタＴ1にはXdx-Zdが格納されており、したがってZd+1(Xdx-Zd)が計算される。その結果がレジスタＴ4に格納される。ステップ１１１７においてレジスタＴ1の２乗が計算される。ここでレジスタＴ1には(Xdx-Zd)が格納されており、したがって(Xdx-Zd)2が計算される。その結果がレジスタＴ1に格納される。ステップ１１１８においてＴ1×Ｔ２が計算される。ここでレジスタＴ1には(Xdx-Zd)2がレジスタＴ２には1/ByZd+1Xd+1(Xd-xZd)2がそれぞれ格納されており、したがって(Xdx-Zd)2/ByZd+1Xd+1(Xd-xZd)2Zd2 が計算される。その結果がレジスタＴ2に格納される。ステップ１１１９においてＴ3+Ｔ4が計算される。ここでレジスタＴ3にはXd+1(Xd-xZd) がレジスタＴ4にはZd+1 (Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)+Zd+1(Xdx-Zd)が計算される。その結果がレジスタＴ1に格納される。ステップ１１２０においてＴ3-Ｔ4が計算される。ここでレジスタＴ3にはXd+1(Xd-xZd)がレジスタＴ4にはZd+1(Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)-Zd+1(Xdx-Zd)が計算される。その結果がレジスタＴ3に格納される。ステップ１１２１においてＴ1×Ｔ3が計算される。ここでレジスタＴ1にはXd+1(Xd-xZd)+Zd+1(Xdx-Zd)がレジスタＴ3にはXd+1(Xd-xZd)-Zd+1(Xdx-Zd)がそれぞれ格納されており、したがって{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}が計算される。その結果がレジスタＴ1に格納される。ステップ１１２２においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}がレジスタＴ2には(Xdx-Zd)2/ByZd+1Xd+1(Xd-xZd)2Zd2がそれぞれ格納されており、したがって
【００５２】
【数５】
0003794266.tif 000002
【００５３】
が計算される。その結果がｙdに格納される。ｘdにはステップ１１１５において(ByZd+1Xd+1(Xd-xZd)2 ZdXd)/(ByZd+1Xd+1(Xd-xZd) 2 Xd2)が格納され、その後更新が行なわれないので、その値が保持されている。
【００５４】
上記手順により座標復元部２０３へ与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1からモンゴメリ型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の式を得る。
【００５５】
【数６】
0003794266.tif 000003
【００５６】
【数７】
0003794266.tif 000004
【００５７】
両辺を各々減算することにより、
【００５８】
【数８】
0003794266.tif 000005
【００５９】
を得る。したがって、
【００６０】
【数９】
0003794266.tif 000006
【００６１】
となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【００６２】
【数１０】
0003794266.tif 000007
【００６３】
モンゴメリ型楕円曲線の射影座標での加算公式は
【００６４】
【数１１】
0003794266.tif 000008
【００６５】
【数１２】
0003794266.tif 000009
【００６６】
である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのｍ倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのｎ倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、ｍ，ｎはｍ＞ｎをみたす正整数である。この式はXm/Zm＝ｘm、Xn/Zn＝ｘn、Xm-n/Zm-n＝ｘm-nが不変のとき、Xm+n/Zm+n＝ｘm+nも不変となるので、射影座標での公式としてうまく働いている。他方、
【００６７】
【数１３】
0003794266.tif 000010
【００６８】
【数１４】
0003794266.tif 000011
【００６９】
とおくと、この式でXm/Zm＝ｘm、Xn/Zn＝ｘn、Xm+n/Zm+n＝ｘm+nが不変のとき、X'm-n/Z'm-nも不変となる。また、X'm-n/Z'm-n＝Xm-n/Zm-nをみたすので、ｘm-nの射影座標としてX'm-n,Z'm-nをとってよい。m＝d、n＝1として上記公式を用いてｙdの式よりXd-1及びZd-1を消去し、X1＝x,Z1＝1とおくことにより、次の式を得る。
【００７０】
【数１５】
0003794266.tif 000012
【００７１】
ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、
【００７２】
【数１６】
0003794266.tif 000013
【００７３】
となる。ここで、xd，ydは図１１の処理により与えられている。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【００７４】
上記手順はステップ１１０１、ステップ１１０３、ステップ１１０５、ステップ１１０７、ステップ１１０８、ステップ１１０９、ステップ１１１０、ステップ１１１１、ステップ１１１２、ステップ１１１３、ステップ１１１５、ステップ１１１６、ステップ１１１８、ステップ１１２１及びステップ１１２２において有限体上の乗算の計算量を必要とする。また、ステップ１１０６及びステップ１１１７において有限体上の２乗算の計算量を必要とする。また、ステップ１１１４において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１５Ｍ＋２Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５６．６Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【００７５】
尚、上記手順をとらなくても、上記計算式により与えられたｘd,ｙdの値が計算できればｘd,ｙdの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ１１１０における乗算の計算量を削減することができる。
【００７６】
次に図４により、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理を説明する。
【００７７】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1を出力する。ステップ４０１として、変数Ｉに初期値１を代入する。ステップ４０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ４０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ４０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ４０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ４１３へ行く。一致しなければステップ４０５へ行く。ステップ４０５として、変数Ｉを１増加させる。ステップ４０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ４０６へ行く。そのビットの値が１であればステップ４１０へ行く。ステップ４０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ４０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ４０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４０９として、ステップ４０８で求めた点2mPとステップ４０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ４０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ４１０として、射影座標により表された点の組(mP,(m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ４１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ４１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４１１として、ステップ４１０で求めた点(2m+１)Pとステップ４１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ４０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ４１３として、射影座標で表された点の組(mP,(m+１)P)から、射影座標で表された点mP＝(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲��の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【００７８】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1＝１ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ４０７において加算の計算量、ステップ４０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ４１０において加算の計算量、ステップ４１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ４０４、ステップ４０５、ステップ４０６、ステップ４０７、ステップ４０８、ステップ４０９乃至はステップ４０４、ステップ４０５、ステップ４０６、ステップ４１０、ステップ４１１、ステップ４１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ４０２での２倍算の計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）（ｋ―１）＋３Ｍ＋２Ｓとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ―４．６）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１４６７Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６００Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【００７９】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Yd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【００８０】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１５Ｍ＋２Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―４．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５２４Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【００８１】
第２の実施例は、スカラー倍計算部１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【００８２】
次に図９により、座標x、y Xd、Zd、Xd+1、Zd+1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【００８３】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【００８４】
ステップ９０１においてXd×xが計算され、レジスタＴ1に格納される。ステップ９０２においてＴ1−Zdが計算される。ここでレジスタＴ1にはXdxが格納されており、したがってXdx−Zdが計算される。その結果がレジスタＴ1に格納される。ステップ９０３においてZd×xが計算され、レジスタＴ2に格納される。ステップ９０４においてXd−Ｔ2が計算される。ここでレジスタＴ2にはZdxが格納されており、したがってXd−xZdが計算される。その結果がレジスタＴ2に格納される。ステップ９０５においてZd+1×Ｔ1が計算される。ここでレジスタＴ1にはXdx−Zdが格納されており、したがってZd+1(Xdx−Zd)が計算される。その結果がレジスタＴ3に格納される。ステップ９０６においてXd+1×Ｔ2が計算される。ここでレジスタＴ2にはXd−xZdが格納されており、したがってXd+1(Xd−xZd)が計算される。その結果がレジスタＴ4に格納される。ステップ９０７においてＴ1の２乗が計算される。ここでレジスタＴ1にはXdx−Zdが格納されており、したがって(Xdx−Zd)2が計算される。その結果がレジスタＴ1に格納される。ステップ９０８においてＴ2の２乗が計算される。ここでレジスタＴ2にはXd−xZdが格納されており、したがって(Xd−xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ９０９においてＴ2×Zdが計算される。ここでレジスタＴ2には(Xd−xZd)2が格納されており、したがってZd (Xd−xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ９１０においてＴ2×Xd+1が計算される。ここでレジスタＴ2にはZd (Xd−xZd)2が格納されており、したがってXd+1Zd(Xd−xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ９１１においてＴ2×Zd+1が計算される。ここでレジスタＴ2にXd+1Zd(Xd−xZd)2が格納されており、したがってZd+1Xd+1Zd(Xd−xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ９１２においてＴ2×yが計算される。ここでレジスタＴ2にはZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってyZd+1Xd+1Zd(Xd−xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ９１３においてＴ2×Bが計算される。ここでレジスタＴ2にはyZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd−xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ９１４においてＴ2×Xdが計算される。ここでレジスタＴ2にはByZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd−xZd)2Xdが計算される。その結果がXdに格納される。ステップ９１５においてＴ2×Zdが計算される。ここでレジスタＴ2にはByZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd−xZd)2Zdが計算される。その結果がレジスタZdに格納される。ステップ９１６においてＴ3＋Ｔ4が計算される。ここでレジスタＴ3にはZd+1(Xdx−Zd)がレジスタＴ4にはXd+1(Xd−xZd)が格納されており、したがってZd+1(Xdx−Zd)＋Xd+1(Xd−xZd)が計算される。その結果がレジスタＴ2に格納される。ステップ９１７においてＴ3−Ｔ4が計算される。ここでレジスタＴ3にはZd+1(Xdx−Zd)がレジスタＴ4にはXd+1(Xd−xZd)が格納されており、したがってZd+1(Xdx−Zd)−Xd+1(Xd−xZd)が計算される。その結果がレジスタＴ3に格納される。ステップ９１８においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(Xdx−Zd)2がレジスタＴ2にはZd+1(Xdx−Zd)＋Xd+1(Xd−xZd)が格納されており、したがって{Zd+1(Xdx−Zd)＋Xd+1(Xd−xZd)}(Xdx−Zd)2が計算される。その結果がレジスタＴ1に格納される。ステップ９１９においてＴ1×Ｔ3が計算される。ここでレジスタＴ1には{Zd+1(Xdx−Zd)＋Xd+1(Xd−xZd)}(Xdx−Zd)2がレジスタＴ3にはZd+1(Xdx−Zd)−Xd+1(Xd−xZd)が格納されており、したがって{Zd+1(Xdx−Zd)＋Xd+1(Xd−xZd)}{Zd+1(Xdx−Zd)−Xd+1(Xd−xZd)}(Xdx−Zd)2が計算される。その結果がレジスタYdに格納される。したがってレジスタYdには{Zd+1(Xdx−Zd)＋Xd+1(Xd−xZd)}{Zd+1(Xdx−Zd)−Xd+1(Xd−xZd)}(Xdx−Zd)2が格納されている。レジスタXdにはステップ９１４においてByZd+1Xd+1Zd+1(Xd−xZd)2Xdが格納され、その後更新が行われないので、その値が保持されている。レジスタZdにはステップ９１５においてBy Zd+1Xd+1Zd+1(Xd−xZd)2Zdが格納され、その後更新が行われないので、その値が保持されている。
【００８５】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の数６、数７を得る。両辺を各々減算することにより、数８を得る。したがって、数９となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数１０を得る。
【００８６】
モンゴメリ型楕円曲線の射影座標での加算公式は数１１、数１２である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのｍ倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのｎ倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、ｍ，ｎはｍ＞ｎをみたす正整数である。この式はXm/Zm＝ｘm、Xn/Zn＝ｘn、Xm-n/Zm-n＝ｘm-nが不変のとき、Xm+n/Zm+n＝ｘm+nも不変となるので、射影座標での公式としてうまく働いている。他方、数１４、数１５とおくと、この式でXm/Zm＝ｘm、Xn/Zn＝ｘn、Xm+n/Zm+n＝ｘm+nが不変のとき、X'm-n/Z'm-nも不変となる。また、X'm-n/Z'm-n＝Xm-n/Zm-n＝ｘm-nをみたすので、ｘm-nの射影座標としてX'm-n,Z'm-nをとってよい。m＝d、n＝1として上記公式を用いてｙdの式よりXd-1及びZd-1を消去し、X1＝x,Z1＝1とおくことにより、数１５を得る。ｘd＝Xd/Zdであるが、ｙdの分母と通分することにより、数１６となる。
【００８７】
その結果として、
【００８８】
【数１７】
0003794266.tif 000014
【００８９】
とし、Xd及びZdをそれぞれ
【００９０】
【数１８】
0003794266.tif 000015
【００９１】
【数１９】
0003794266.tif 000016
【００９２】
により更新すればよい。ここで、Xd，Yd，Zdは図９の処理により与えられている。したがって、射影座標(Xd,Yd,Zd)の値が全て復元されていることになる。
【００９３】
上記手順はステップ９０１、ステップ９０３、ステップ９０５、ステップ９０６、ステップ９０９、ステップ９１０、ステップ９１１、ステップ９１２、ステップ９１３、ステップ９１４、ステップ９１５、ステップ９１８及びステップ９１９において有限体上の乗算の計算量を必要とする。また、ステップ９０７及びステップ９０８において有限体上の２乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１３Ｍ＋２Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１４．６Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【００９４】
尚、上記手順をとらなくても、上記計算式により与えられたXd、Yd、Zdの値が計算できればXd、Yd、Zdの値が復元できる。また、xd、ydが上記計算式により与えられる値を取るようにXd、Yd、Zdの値を選択し、その値が計算できればXd、Yd、Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ９１３における乗算の計算量を削減することができる。
【００９５】
次に、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムについて説明する。
【００９６】
第２実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第１実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記アルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【００９７】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１３Ｍ＋２Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―４．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１０）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１４８２Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【００９８】
第３の実施例は、スカラー倍計算装置１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d−1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、ｘ及びｙよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【００９９】
次に図１２により、座標x、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【０１００】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０１０１】
ステップ１２０１においてXd-1×Zd+1が計算され、レジスタＴ1に格納される。ステップ１２０２においてZd-1×Xd+1が計算され、レジスタＴ２に格納される。ステップ１２０３においてＴ1−Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1がレジスタＴ２にはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ１２０４においてZd×xが計算され、レジスタＴ２に格納される。ステップ１２０５においてXd-Ｔ２が計算さる。ここでレジスタＴ２にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ２に格納される。ステップ１２０６においてＴ２の２乗が計算される。ここでレジスタＴ２にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ２に格納される。ステップ１２０７においてＴ1×Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1-Zd-1Xd+1がレジスタＴ２には(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタＴ1に格納される。ステップ１２０８において4×Byが計算される。その結果がレジスタＴ２に格納される。ステップ１２０９においてＴ２×Zd+1が計算される。ここでレジスタＴ２には4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタＴ２に格納される。ステップ１２１０においてＴ２×Zd-1が計算される。ここでレジスタＴ２には4ByZd+1が格納されており、したがって4ByZd-1Zd+1が計算される。その結果がレジスタＴ２に格納される。ステップ１２１１においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1が格納されており、したがって4ByZd+1Zd-1Zdが計算される。その結果がレジスタＴ２に格納される。ステップ１２１２においてＴ２×Xdが計算される。ここでレジスタＴ２には4ByZd-1Zd+1Zdが格納されており、したがって4ByZd+1Zd-1ZdXdが計算される。その結果がレジスタＴ3に格納される。ステップ１２１３においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１２１４においてレジスタＴ２の逆元が計算される。ここでレジスタＴ２には4ByZd+1Zd-1ZdZdが格納されており、したがって1/4ByZd+1Zd-1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１２１５においてＴ２×Ｔ3が計算される。ここでレジスタＴ２には1/4ByZd+1Zd-1ZdZdがレジスタＴ3には4ByZd+1Zd-1ZdXd がそれぞれ格納されており、したがって(4ByZd+1Zd-1ZdXd)/(4ByZd+1Zd-1ZdZd)が計算される。その結果がレジスタxdに格納される。ステップ１２１６においてＴ1×Ｔ２が計算される。ここでレジスタＴ1には(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)がレジスタＴ２には1/4ByZd+1Zd-1ZdZdがそれぞれ格納されており、したがって(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4ByZd-1Zd+1Zd2が計算される。その結果がレジスタydに格納される。したがってレジスタydには(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4ByZd-1Zd+1Zd2が格納されている。レジスタxdにはステップ１２１５において(4ByZd+1Zd-1ZdXd)/(4ByZd+1Zd-1ZdZd)が格納され、その後更新が行なわれないので、その値が保持されている。
【０１０２】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からモンゴメリ型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。
【０１０３】
モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６、数７を得る。両辺を各々減算することにより、数８を得る。したがって、数９となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数１０を得る。
【０１０４】
ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、
【０１０５】
【数２０】
0003794266.tif 000017
【０１０６】
となる。このxd，ydは図１２で示した処理により与えられ、したがってアフィン座標(xd,yd)の値が全て復元されていることになる。
【０１０７】
上記手順はステップ１２０１、ステップ１２０２、ステップ１２０４、ステップ１２０７、ステップ１２０８、ステップ１２０９、ステップ１２１０、ステップ１２１１、ステップ１２１２、ステップ１２１３、ステップ１２１５及びステップ１２１６において有限体上の乗算の計算量を必要とする。また、ステップ１２０６において有限体上の２乗算の計算量を必要とする。また、ステップ１２１４において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１２Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５２．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０１０８】
尚、上記手順をとらなくても、上記計算式により与えられたｘd,ｙdの値が計算できればｘd,ｙdの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ１２０８における乗算の計算量を削減することができる。
【０１０９】
次に図５により、スカラー値d及びモンゴメリ型楕円曲線上の点PからXd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力する高速スカラー倍計算部の処理について説明する。
【０１１０】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)のうちXd-1及びZd-1を出力する。ステップ５０１として、変数Ｉに初期値１を代入する。ステップ５０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ５０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ５０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ５０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ５１４へ行く。一致しなければステップ５０５へ行く。ステップ５０５として、変数Ｉを１増加させる。ステップ５０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ５０６へ行く。そのビットの値が１であればステップ５１０へ行く。ステップ５０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ５０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ５０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ５０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ５０９として、ステップ５０８で求めた点2mPとステップ５０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ５０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ５１０として、射影座標により表された点の組(mP,(m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ５１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ５１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ５１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ５１１として、ステップ５１０で求めた点(2m+１)Pとステップ５１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ５０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ５１４として、射影座標で表された点の組(mP, (m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求め、それぞれXd-1及びZd-1とする。その後ステップ５１３へ行く。ステップ５���３として、射影座標で表された点mP＝(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、Xd-1及びZd-1と共に出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ５１４において(m-1)Pを求める際に、数１０、数１１の公式により求めてもよいし、ｍが奇数であれば、((m-1)/2)Pの値をステップ５１２の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の２倍算の公式より、(m-1)Pを求めてもよい。
【０１１１】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1＝１ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ５０７において加算の計算量、ステップ５０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ５１０において加算の計算量、ステップ５１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ５０４、ステップ５０５、ステップ５０６、ステップ５０７、ステップ５０８、ステップ５０９乃至はステップ５０４、ステップ５０５、ステップ５０６、ステップ５１０、ステップ５１１、ステップ５１２の繰り返しの回数は、（スカラー値ｄのビット長）―１回となるので、ステップ５０２での２倍算の計算量とステップ５１４での(m-1)Pの計算に必要な計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋Ｍとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋１）Ｍとなる。例えばスカラー値ｄが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１４７３Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６００Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０１１２】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd, Zd ,Xd+1, Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０１１３】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１２Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋１）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５３．８）Ｍと見積もることができる。例えばスカラー値ｄが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１５２６Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０１１４】
第４の実施例は、スカラー倍計算部１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力する。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、x及びyよりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【０１１５】
次に図１３により、座標x、y Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【０１１６】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０１１７】
ステップ１３０１においてXd-1×Zd+1が計算され、レジスタＴ1に格納される。ステップ１３０２においてZd-1×Xd+1が計算され、レジスタＴ２に格納される。ステップ１３０３においてＴ1−Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1がレジスタＴ２にはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ１３０４においてZd×xが計算され、レジスタＴ２に格納される。ステップ１３０５においてXd-Ｔ２が計算さる。ここでレジスタＴ２にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ２に格納される。ステップ１３０６においてＴ２の２乗が計算される。ここでレジスタＴ２にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ２に格納される。ステップ１３０７においてＴ1×Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1-Zd-1Xd+1がレジスタＴ２には(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタYdに格納される。ステップ１３０８において4×Byが計算される。その結果がレジスタＴ２に格納される。ステップ１３０９においてＴ２×Zd+1が計算される。ここでレジスタＴ２には4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタＴ２に格納される。ステップ１３１０においてＴ２×Zd-1が計算される。ここでレジスタＴ２には4ByZd+1が格納されており、したがって4ByZd+1Zd-1が計算される。その結果がレジスタＴ２に格納される。ステップ１３１１においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1が格納されており、したがって4ByZd+1Zd-1Zdが計算される。その結果がレジスタＴ２に格納される。ステップ１３１２においてＴ２×Xdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdXdが計算される。その結果がレジスタXdに格納される。ステップ１３１３においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdZdが計算される。その結果がZdに格納される。したがってZdには4ByZd+1Zd-1ZdZdが格納されている。レジスタYdにはステップ１３０７において(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が格納され、その後更新が行われないので、その値が保持されている。
【０１１８】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。これより、先に述べた数７を得ることができる。座標復元部２０３はスカラー倍点の射影座標で表された完全な座標として(Xd,Yd,Zd)を出力する。
【０１１９】
上記手順により与えられたx、y Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６、数７を得る。両辺を各々減算することにより、数８を得る。したがって、数９となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数７を得る。
【０１２０】
ｘd＝Xd/Zdであるが、ｙdの分母と通分することにより、数２０となる。その結果として、数１７、
【０１２１】
【数２１】
0003794266.tif 000018
【０１２２】
とし、Xd及びZdをそれぞれ
【０１２３】
【数２２】
0003794266.tif 000019
【０１２４】
【数２３】
0003794266.tif 000020
【０１２５】
により更新すればよい。ここで示したXd，Yd，Zd，は図１３で示した処理により与えられている。したがって、射影座標の値(Xd,Yd,Zd)が全て復元されていることになる。
【０１２６】
上記手順はステップ１３０１、ステップ１３０２、ステップ１３０４、ステップ１３０７、ステップ１３０８、ステップ１３０９、ステップ１３１０、ステップ１３１１、ステップ１３１２及びステップ１３１３において有限体上の乗算の計算量を必要とする。また、ステップ１３０６において有限体上の２乗算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１０Ｍ＋Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１０．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０１２７】
尚、上記手順をとらなくても、上記計算式により与えられたXd,Yd,Zdの値が計算できればXd,Yd,Zdの値が復元できる。また、xd,ydが上記計算式により与えられる値を取るようにXd,Yd,Zdの値を選択し、その値が計算できればXd,Yd,Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ１３０８における乗算の計算量を削減することができる。
【０１２８】
次に、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムについて説明する。
【０１２９】
第４実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第３実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０１３０】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１０Ｍ＋Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋１）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１１．８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１４８４Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０１３１】
第５の実施例は、スカラー倍計算装置１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値xd、xd+1、xd-1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０１３２】
次に図２６により、座標x、y、xd、xd+1、xd-1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【０１３３】
座標復元部２０３では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【０１３４】
ステップ２６０１においてxd−xが計算され、レジスタＴ1に格納される。ステップ２６０２においてＴ1の２乗すなわち(xd−x)2が計算され、レジスタＴ1に格納される。ステップ２６０３においてxd-1−xd+1が計算され、レジスタＴ2に格納される。ステップ２６０４においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xd−x)2がレジスタＴ2にはxd-1−xd+1がそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)が計算される。その結果がレジスタＴ1に格納される。ステップ２６０５において4B×yが計算され、レジスタＴ2に格納される。ステップ２６０６においてＴ2の逆元が計算される。ここでレジスタＴ2には4Byが格納されており、したがって1/4Byが計算される。その結果がレジスタＴ2に格納される。ステップ２６０７においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xd−x)2(xd-1−xd+1)がレジスタＴ2には1/4Byがそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)/4Byが計算される。その結果がレジスタydに格納される。したがってレジスタydには(xd−x)2(xd-1−xd+1)/4Byが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【０１３５】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６、数７を得る。
【０１３６】
両辺を各々減算することにより、数８を得る。したがって、数９となる。
【０１３７】
ここで、xd，ydは図２６の処理により与えられる。したがって、アフィン座標(xd,yd)の値は全て復元されたことになる。
【０１３８】
上記手順はステップ２６０４、ステップ２６０５及びステップ２６０７において有限体上の乗算の計算量を必要とする。また、ステップ２６０２において有限体上の２乗算の計算量を必要とする。さらにステップ２６０６において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、２乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ、有限体上の逆元演算の計算量をＩとすると、上記手順は３Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると座標復元の計算量は４３．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０１３９】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ２６０５における乗算の計算量を削減することができる。
【０１４０】
次に図６により、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1、xd-1を出力する高速スカラー倍計算部の処理について説明する。
【０１４１】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(xd-1,yd-1)のうちxd-1を出力する。ステップ６０１として、変数Ｉに初期値１を代入する。ステップ６０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ６０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ６０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ６０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ６１４へ行く。一致しなければステップ６０５へ行く。ステップ６０５として、変数Ｉを１増加させる。ステップ６０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ６０６へ行く。そのビットの値が１であればステップ６１０へ行く。ステップ６０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ６０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ６０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ６０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ６０９として、ステップ６０８で求めた点2mPとステップ６０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ６０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ６１０として、射影座標により表された点の組(mP,(m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ６１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ６１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ６１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ６１１として、ステップ６１０で求めた点(2m+１)Pとステップ６１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ６０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ６１４として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求め、それぞれXd-1及びZd-1とする。その後ステップ６１５へ行く。ステップ６１５として、射影���標で表された点mP＝(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。Xd-1，Zd-1，Xd，Zd，Xd+1，Zd+1より、
【０１４２】
【数２４】
0003794266.tif 000021
【０１４３】
【数２５】
0003794266.tif 000022
【０１４４】
【数２６】
0003794266.tif 000023
【０１４５】
としてxd-1，xd，xd+1を求める。その後ステップ６１３へ行く。ステップ６１３として、xd-1，xd，xd+1を出力する。上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ６１４において(m-1)Pを求める際に、数１３、数１４の公式により求めてもよいし、ｍが奇数であれば、((m-1)/2)Pの値をステップ６１２の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の２倍算の公式より、(m-1)Pを求めてもよい。
【０１４６】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1＝1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ６０７において加算の計算量、ステップ６０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ６１０において加算の計算量、ステップ６１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ６０４、ステップ６０５、ステップ６０６、ステップ６０７、ステップ６０８、ステップ６０９乃至はステップ６０４、ステップ６０５、ステップ６０６、ステップ６１０、ステップ６１１、ステップ６１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ６０２での２倍算の計算量及びステップ６１４での(m-1)Pの計算に必要な計算量及びアフィン座標への変換の計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋１１Ｍ＋Ｉとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度、計算量ＩはＩ＝４０Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋５１）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１５２３Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６４０Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０１４７】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1、xd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０１４８】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は３Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋５１）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋９４．８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１５６７Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０１４９】
第６の実施例は、楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置１０３の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置１０３の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d−1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、ｘ及びｙよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０１５０】
次に図１４により、座標x、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【０１５１】
座標復元部２０３では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０１５２】
ステップ１４０１においてXd-1×Zd+1が計算され、レジスタＴ1に格納される。ステップ１４０２においてZd-1×Xd+1が計算され、レジスタＴ２に格納される。ステップ１４０３においてＴ1−Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1がレジスタＴ２にはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ１４０４においてZd×xが計算され、レジスタＴ２に格納される。ステップ１４０５においてXd-Ｔ２が計算さる。ここでレジスタＴ２にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ２に格納される。ステップ１４０６においてＴ２の２乗が計算される。ここでレジスタＴ２にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ２に格納される。ステップ１４０７においてＴ1×Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1-Zd-1Xd+1がレジスタＴ２には(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタＴ1に格納される。ステップ１４０８において4×yが計算される。その結果がレジスタＴ２に格納される。ステップ１４０９においてＴ２×Zd+1が計算される。ここでレジスタＴ２には4yが格納されており、したがって4yZd+1が計算される。その結果がレジスタＴ２に格納される。ステップ１４１０においてＴ２×Zd-1が計算される。ここでレジスタＴ２には4yZd+1が格納されており、したがって4yZd+1Zd-1が計算される。その結果がレジスタＴ２に格納される。ステップ１４１１においてＴ２×Zdが計算される。ここでレジスタＴ２には4yZd+1Zd-1が格納されており、したがって4yZd+1Zd-1Zdが計算される。その結果がレジスタＴ２に格納される。ステップ１４１２においてＴ２×Xdが計算される。ここでレジスタＴ２には4yZd+1Zd-1Zdが格納されており、したがって4yZd+1Zd-1ZdXdが計算される。その結果がレジスタＴ3に格納される。ステップ１４１３においてＴ２×Zdが計算される。ここでレジスタＴ２には4yZd-1Zd+1Zdが格納されており、したがって4yZd+1Zd-1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１４１４においてレジスタＴ２の逆元が計算される。ここでレジスタＴ２には4yZd+1Zd-1ZdZdが格納されており、したがって1/4yZd+1Zd-1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１４１５においてＴ２×Ｔ3が計算される。ここでレジスタＴ２には1/4yZd+1Zd-1ZdZdがレジスタＴ3には4yZd-1Zd+1ZdXd がそれぞれ格納されており、したがって(4yZd+1Zd-1ZdXd)/(4yZd+1Zd-1ZdZd)が計算される。その結果がxdに格納される。ステップ１４１６においてＴ1×Ｔ２が計算される。ここでレジスタＴ1には(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)がレジスタＴ２には1/4yZd+1Zd-1ZdZdがそれぞれ格納されており、したがって(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4y Zd+1Zd-1Zd2が計算される。その結果がレジスタydに格納される。したがってレジスタydには(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4yZd-1Zd+1Zd2が格納されている。レジスタxdにはステップ１４１５において(4yZd-1Zd+1ZdXd)/(4yZd-1Zd+1ZdZd)が格納され、その後更新が行なわれないので、その値が保持されている。
【０１５３】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、次の式を得る。
【０１５４】
【数２７】
0003794266.tif 000024
【０１５５】
【数２８】
0003794266.tif 000025
【０１５６】
両辺を各々減算することにより、
【０１５７】
【数２９】
0003794266.tif 000026
【０１５８】
を得る。したがって、
【０１５９】
【数３０】
0003794266.tif 000027
【０１６０】
となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd=1＝Xd=1/Zd=1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【０１６１】
【数３１】
0003794266.tif 000028
【０１６２】
ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、
【０１６３】
【数３２】
0003794266.tif 000029
【０１６４】
となる。ここで、ｘd，ydは図１４で示した処理により与えられる。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【０１６５】
上記手順はステップ１４０１、ステップ１４０２、ステップ１４０４、ステップ１４０７、ステップ１４０９、ステップ１４１０、ステップ１４１１、ステップ１４１２、ステップ１４１３、ステップ１４１５及びステップ１４１６において有限体上の乗算の計算量を必要とする。ただし、ステップ１４０８の乗算は、被乗数の値が４と小さいので、その計算量は通常の乗算の計算量と比べて小さい為無視してよい。また、ステップ１４０６において有限体上の２乗算の計算量を必要とする。また、ステップ１４１４において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１１Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５１．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０１６６】
尚、上記手順をとらなくても、上記計算式により与えられたｘd，ydの値が計算できればｘd，ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。
【０１６７】
次に図７により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力する高速スカラー倍計算部の処理について説明する。
【０１６８】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)のうちXd-1及びZd-1を出力する。ステップ７１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ７０１として、変数Ｉに初期値１を代入する。ステップ７０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ７０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ７０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ７０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ７１４へ行く。一致しなければステップ７０５へ行く。ステップ７０５として、変数Ｉを１増加させる。ステップ７０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ７０６へ行く。そのビットの値が１であればステップ７１０へ行く。ステップ７０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ７０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ７０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ７０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ７０９として、ステップ７０８で求めた点2mPとステップ７０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ７０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ７１０として、射影座標により表された点の組(mP,(m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ７１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ７１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ７１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ７１１として、ステップ７１０で求めた点(2m+１)Pとステップ７１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ７０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標におい��表されている。ステップ７１４として、射影座標で表された点の組（mP,(m+1)P）から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求める。その後ステップ７１５へ行く。ステップ７１５として、モンゴメリ型楕円曲線における点(m-1)Pを、ワイエルシュトラス型楕円曲線上で射影座標により表された点に変換する。その点のX座標及びZ座標をそれぞれあらためてXm-1及びZm-1とおく。また、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上で射影座標で表された点に変換し、それぞれmP＝（Xm,Ym,Zm）及び(m+1)P＝（Xm+1,Ym+1,Zm+1）とあらためて置き直す。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。ステップ７１３として、ワイエルシュトラス型楕円曲線上で射影座標で表された点(m-1)PのX座標Xm-1及びZ座標Zm-1をそれぞれXd-1及びZd-1として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP＝（Xm,Ym,Zm）よりXm及びZmをそれぞれXd及びZｄとして、ワイエルシュトラス型楕円曲線上で射影座標で表された点(m+1)P＝（Xm+1,Ym+1,Zm+1）よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ７１４において(m-1)Pを求める際に、数１３、数１４の公式により求めてもよいし、ｍが奇数であれば、((m-1)/2)Pの値をステップ７１２の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の２倍算の公式より、(m-1)Pを求めてもよい。
【０１６９】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ７０７において加算の計算量、ステップ７０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ７１０において加算の計算量、ステップ７１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ７０４、ステップ７０５、ステップ７０６、ステップ７０７、ステップ７０８、ステップ７０９乃至はステップ７０４、ステップ７０５、ステップ７０６、ステップ７１０、ステップ７１１、ステップ７１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ７０２での２倍算の計算量とステップ７１６でのモンゴメリ型楕円曲線上の点への変換に必要な計算量及びステップ７１５でのワイエルシュトラス型楕円曲線上の点への変換に必要な計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋４Ｍとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋４）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１４７６Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６００Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０１７０】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０１７１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１１Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５５．８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１５２８Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０１７２】
第７の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置１０３の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置１０３の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算部１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【０１７３】
次に図１５により、座標x、y Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【０１７４】
座標復元部２０３では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０１７５】
ステップ１５０１においてXd-1×Zd+1が計算され、Ｔ1に格納される。ステップ１５０２においてZd-1×Xd+1が計算され、Ｔ２に格納される。ステップ１５０３においてＴ1−Ｔ２が計算される。ここでＴ1にはXd-1Zd+1がＴ２にはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がＴ1に格納される。ステップ１５０４においてZd×xが計算され、Ｔ２に格納される。ステップ１５０５においてXd-Ｔ２が計算さる。ここでＴ２にはZdxが格納されており、したがってXd-xZdが計算される。その結果がＴ２に格納される。ステップ１５０６においてＴ２の２乗が計算される。ここでＴ２にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がＴ２に格納される。ステップ１５０７においてＴ1×Ｔ２が計算される。ここでＴ1にはXd-1Zd+1-Zd-1Xd+1がＴ２には(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタYdに格納される。ステップ１５０８において4×yが計算される。その結果がＴ２に格納される。ステップ１５０９においてＴ２×Zd+1が計算される。ここでＴ２には4yが格納されており、したがって4yZd+1が計算される。その結果がＴ２に格納される。ステップ１５１０においてＴ２×Zd-1が計算される。ここでＴ２には4yZd+1が格納されており、したがって4yZd+1Zd-1が計算される。その結果がＴ２に格納される。ステップ１５１１においてＴ２×Zdが計算される。ここでＴ２には4yZd+1Zd-1が格納されており、したがって4yZd+1Zd-1Zdが計算される。その結果がＴ２に格納される。ステップ１５１２においてＴ２×Xdが計算される。ここでＴ２には4yZd+1Zd-1Zdが格納されており、したがって4yZd+1Zd-1ZdXdが計算される。その結果がレジスタXdに格納される。ステップ１５１３においてＴ２×Zdが計算される。ここでＴ２には4yZd+1Zd-1Zdが格納されており、したがって4yZd+1Zd-1ZdZdが計算される。その結果がレジスタZdに格納される。したがってレジスタZdには4y Zd+1Zd-1ZdZdが格納されている。レジスタYdにはステップ１５０７において(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が格納され、その後更新が行われないので、その値が保持されている。レジスタXdにはステップ１５１２において4yZd+1Zd-1ZdXdが格納され、その後更新が行われないので、その値が保持されている。
【０１７６】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数２７、数２８を得る。両辺を各々減算することにより、数２９を得る。したがって、数３０となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数３１を得る。ｘd＝Xd/Zdであるが、ydの分母と通分することにより、数３２となる。
【０１７７】
その結果として
【０１７８】
【数３３】
0003794266.tif 000030
【０１７９】
とし、Xd及びZdをそれぞれ
【０１８０】
【数３４】
0003794266.tif 000031
【０１８１】
【数３５】
0003794266.tif 000032
【０１８２】
により更新すればよい。
【０１８３】
ここで、Xd，Yd，Zdは図１５で示した処理により与えられる。したがって、射影座標(Xd,Yd,Zd)の値は全て復元されたことになる。
【０１８４】
上記手順はステップ１５０１、ステップ１５０５、ステップ１５０４、ステップ１５０７、ステップ１５０９、ステップ１５１０、ステップ１５１１、ステップ１５１２及びステップ１５１３において有限体上の乗算の計算量を必要とする。
【０１８５】
ただし、ステップ１５０８の乗算は、被乗数の値が４と小さいので、その計算量は通常の乗算の計算量と比べて小さい為無視してよい。また、ステップ１５０６において有限体上の２乗算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は９Ｍ＋Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は９．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０１８６】
尚、上記手順をとらなくても、上記計算式により与えられたXd,Yd,Zdの値が計算できればXd,Yd,Zdの値が復元できる。また、xd,ydが上記計算式により与えられる値を取るようにXd,Yd,Zdの値を選択し、その値が計算できればXd,Yd,Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。
【０１８７】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムについて説明する。
【０１８８】
第７実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第６実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０１８９】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は９Ｍ＋Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１３．８）Ｍと見積もることができる。例えばスカラー値ｄが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１４８６Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０１９０】
第８の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置１０３の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置１０３の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値xd、xd+1、xd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０１９１】
次に図１６により、座標x、y、xd、xd+1、xd-1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【０１９２】
座標復元部２０３では、ワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【０１９３】
ステップ１６０１においてxd−xが計算され、Ｔ1に格納される。ステップ１６０２においてＴ1の２乗すなわち(xd−x)2が計算され、Ｔ1に格納される。ステップ１６０３においてxd-1−xd+1が計算され、Ｔ2に格納される。ステップ１６０４においてＴ1×Ｔ2が計算される。ここでＴ1には(xd−x)2がＴ2にはxd-1−xd+1がそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)が計算される。その結果がＴ1に格納される。ステップ１６０５において4×yが計算され、Ｔ2に格納される。ステップ１６０６においてＴ2の逆元が計算される。ここでＴ2には4yが格納されており、したがって1/4yが計算される。その結果がＴ2に格納される。ステップ１６０７においてＴ1×Ｔ2が計算される。ここでＴ1には(xd−x)2(xd-1−xd+1)がＴ2には1/4yがそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)/4yが計算される。その結果がレジスタydに格納される。したがってレジスタydには(xd−x)2(xd-1−xd+1)/4yが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【０１９４】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数２７、数２８を得る。両辺を各々減算することにより、数２９を得る。したがって、数３０となる。ここでxd,ydは図１６の処理によって与えられる。したがって、アフィン座標(xd,yd)の値を全て復元していることになる。
【０１９５】
上記手順はステップ１６０４、ステップ１６０７において有限体上の乗算の計算量を必要とする。ただし、ステップ１６０５の乗算は、被乗数の値が４と小さいので、その計算量は通常の乗算の計算量と比べて小さい為無視してよい。また、ステップ１６０２において有限体上の２乗算の計算量を必要とする。さらにステップ１６０６において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、２乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ、有限体上の逆元演算の計算量をＩとすると、上記手順は２Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると座標復元の計算量は４２．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０１９６】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。
【０１９７】
次に図７により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd、xd+1、xd-1を出力するアルゴリズムについて説明する。
【０１９８】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(xd+1,yd+1)のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(xd-1,yd-1)のうちxd-1を出力する。ステップ７１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ７０１として、変数Ｉに初期値１を代入する。ステップ７０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ７０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ７０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ７０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ７１４へ行く。一致しなければステップ７０５へ行く。ステップ７０５として、変数Ｉを１増加させる。ステップ７０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ７０６へ行く。そのビットの値が１であればステップ７１０へ行く。ステップ７０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ７０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ７０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ７０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ７０９として、ステップ７０８で求めた点2mPとステップ７０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ７０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ７１０として、射影座標により表された点の組(mP, (m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ７１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ７１１として、射影座標により表された点の組(mP, (m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ７１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ７１１として、ステップ７１０で求めた点(2m+１)Pとステップ７１１で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ７０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ７１４として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求める。その後ステップ７１５へ行く。ステップ７１５として、モンゴメリ型楕円曲線における点(m-1)Pを、ワイエルシュトラス型楕円曲線上でアフィン座標により表された点に変換する。その点のx座標をそれぞれあらためてxm-1とおく。また、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上でアフィン座標で表された点に変換し、それぞれmP＝（xm,ym）及び(m+1)P＝（xm+1,ym+1）とあらためて置き直す。ここで、ym及びym+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。その後ステップ７１３へ行く。ステップ７１３として、ワイエルシュトラス型楕円曲線上でアフィン座標で表された点(m-1)Pのx座標xm-1をxd-1として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP＝（xm,ym）よりxmをxdとして、ワイエルシュトラス型楕円曲線上でアフィン座標で表された点(m+1)P＝（xm+1,ym+1）よりxm+1をxd+1として、出力する。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ７１４において(m-1)Pを求める際に、数１３、数１４の公式により求めてもよいし、ｍが奇数であれば、((m-1)/2)Pの値をステップ７１２の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の２倍算の公式より、(m-1)Pを求めてもよい。
【０１９９】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1＝１ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ７０７において加算の計算量、ステップ７０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ７１０において加算の計算量、ステップ７１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ７０４、ステップ７０５、ステップ７０６、ステップ７０７、ステップ７０８、ステップ７０９乃至はステップ７０４、ステップ７０５、ステップ７０６、ステップ７１０、ステップ７１１、ステップ７１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ７０２での２倍算の計算量とステップ７１６でのモンゴメリ型楕円曲線上への点への変換に必要な計算量及びステップ７１５でのワイエルシュトラス型楕円曲線上の点への必要な計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋１５Ｍ＋Ｉとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度、計算量Ｉは、Ｉ＝４０Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋５５）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１５２７Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６４０Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０２００】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd, xd+1,xd=1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０２０１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は２Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋５５）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋９７．８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５７０Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０２０２】
第９の実施例は、入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Ｐから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点（ｘd,ｙd）を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値ｄと与えられたワイエルシュトラス型楕円曲線上の点Ｐからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP＝(x,y)とおく。高速スカラー倍計算部２０２は、Xd、Zd、Xd+1、Zd+1、ｘ及びｙを座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、ｘ及びｙよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０２０３】
次に図１７により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【０２０４】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xdMon,ydMon)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０２０５】
ステップ１７０１においてXd×xが計算され、レジスタＴ1に格納される。ステップ１７０２においてＴ1-Zdが計算される。ここでレジスタＴ1にはXdxが格納されており、したがってXdx-Zd が計算される。その結果がレジスタＴ1に格納される。ステップ１７０３においてZd×xが計算され、レジスタＴ2に格納される。ステップ１１０４においてXd-Ｔ2が計算される。ここでレジスタＴ2にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ2に格納される。ステップ１７０５においてXd+1×Ｔ2が計算される。ここでレジスタＴ2にはXd-xZdが格納されており、したがってXd+1(Xd-xZd)が計算される。その結果がレジスタＴ3に格納される。ステップ１７０６においてＴ2の２乗が計算される。ここでレジスタＴ2には(Xd-xZd)が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１１０７においてＴ2×Xd+1が計算される。ここでレジスタＴ2には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１７０８においてＴ2×Zd+1が計算される。ここでレジスタＴ2にはXd+1(Xd-xZd)2が格納されており、したがってZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１７０９においてＴ2×yが計算される。ここでレジスタＴ2にはZd+1Xd+1(Xd-xZd)2が格納されており、したがってyZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１７１０においてＴ2×Bが計算される。ここでレジスタＴ2にはyZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１７１１においてＴ2×Zdが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタＴ2に格納される。ステップ１７１２においてＴ2×Xdが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2ZdXdが計算される。その結果がレジスタＴ4に格納される。ステップ１７１３においてＴ2×Zdが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタＴ2に格納される。ステップ１７１４においてレジスタＴ2×sが計算される。ここでレジスタＴ2にはByZd+1Xd+1(Xd-xZd)2Zd2が格納されており、したがってsByZd+1Xd+1(Xd-xZd)2Zd2が計算される。その結果がレジスタＴ2に格納される。ステップ１７１５においてＴ2の逆元が計算される。ここで、Ｔ2にはsByZd+1Xd+1(Xd-xZd)2Zd2が格納されており、したがって1/ sByZd+1Xd+1(Xd-xZd)2Zd2が計算される。その結果がＴ2に格納される。ステップ１７１６においてＴ2×Ｔ４が計算される。ここでレジスタＴ2には1/sByZd+1Xd+1(Xd-xZd)2Zd2がレジスタＴ４にはByZd+1Xd+1(Xd-xZd)2ZdXdがそれぞれ格納されており、したがって(ByZd+1Xd+1(Xd-xZd)2ZdXd)/(sByZd+1Xd+1(Xd-xZd)2Zd2)が計算される。その結果がレジスタＴ４に格納される。ステップ１７１７においてＴ４+αが計算される。ここでレジスタＴ４には(ByZd+1Xd+1(Xd-xZd)2ZdXd)/(sByZd+1Xd+1(Xd-xZd)2Zd2) が格納されており、従って、数３６が計算される。
【０２０６】
【数３６】
0003794266.tif 000033
【０２０７】
その結果が、レジスタxdに格納される。ステップ１７１８においてＴ1×Zd+1が計算される。ここでレジスタＴ1にはXdx-Zdが格納されており、したがってZd+1(Xdx-Zd)が計算される。その結果がレジスタＴ4に格納される。ステップ１７１９においてレジスタＴ1の２乗が計算される。ここでレジスタＴ1には(Xdx-Zd)が格納されており、したがって(Xdx-Zd)2が計算される。その結果がレジスタＴ1に格納される。ステップ１７２０においてＴ1×Ｔ２が計算される。ここでレジスタＴ1には(Xdx-Zd)2がレジスタＴ２には1/sByZd+1Xd+1(Xd-xZd)2Zd2がそれぞれ格納されており、したがって(Xdx-Zd)2/sByZd+1Xd+1(Xd-xZd)2 Zd2が計算される。その結果がレジスタＴ2に格納される。ステップ１７２１においてＴ3+Ｔ4が計算される。ここでレジスタＴ3にはXd+1(Xd-xZd) がレジスタＴ4にはZd+1 (Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)+Zd+1 (Xdx-Zd)が計算される。その結果がレジスタＴ1に格納される。ステップ１７２２においてＴ3-Ｔ4が計算される。ここでレジスタＴ3にはXd+1(Xd-xZd)がレジスタＴ4にはZd+1(Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)-Zd+1(Xdx-Zd)が計算される。その結果がレジスタＴ3に格納される。ステップ１７２３においてＴ1×Ｔ3が計算される。ここでレジスタＴ1にはXd+1(Xd-xZd)+Zd+1(Xdx-Zd)がレジスタＴ3にはXd+1(Xd-xZd)-Zd+1(Xdx-Zd)がそれぞれ格納されており、したがって{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}が計算される。その結果がレジスタＴ1に格納される。ステップ１７２４においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}がレジスタＴ2には(Xdx-Zd)2/sByZd+1Xd+1(Xd-xZd)2Zd2がそれぞれ格納されており、したがって
【０２０８】
【数３７】
0003794266.tif 000034
【０２０９】
が計算される。その結果がレジスタｙdに格納される。したがってレジスタｙdには数３７の値が格納されている。レジスタｘdにはステップ１７１７において数３６の値が格納され、その後更新が行なわれないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線におけるアフィン座標(ｘd,ｙd)の値が全て復元されている。
【０２１０】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の式を得る。
【０２１１】
【数３８】
0003794266.tif 000035
【０２１２】
【数３９】
0003794266.tif 000036
【０２１３】
両辺を各々減算することにより、
【０２１４】
【数４０】
0003794266.tif 000037
【０２１５】
を得る。したがって、
【０２１６】
【数４１】
0003794266.tif 000038
【０２１７】
となる。ここでｘdMon＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【０２１８】
【数４２】
0003794266.tif 000039
【０２１９】
モンゴメリ型楕円曲線の射影座標での加算公式は既に示した数１１、数１２である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのｍ倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのｎ倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、ｍ，ｎはｍ＞ｎをみたす正整数である。この式はXm/Zm＝ｘm、Xn/Zn＝ｘn、Xm-n/Zm-n＝ｘm-nが不変のとき、Xm+n/Zm+n＝ｘm+nも不変となるので、射影座標での公式としてうまく働いている。他方、数１３、数１４とおくと、この式もXm/Zm＝ｘm、Xn/Zn＝ｘn、Xm-n/Zm-n＝ｘm-nが不変のとき、Xm+n/Zm+n＝ｘm-nも不変となる。また、X'm-n/Z'm-n＝Xm-n/Zm-n＝ｘm-nをみたすので、ｘm-nの射影座標としてX'm-n,Z'm-nをとってよい。m＝d、n＝1として上記公式を用いてｙdMonの式よりXd-1及びZd-1を消去し、X1＝x,Z1＝1とおくことにより、次の式を得る。
【０２２０】
【数４３】
0003794266.tif 000040
【０２２１】
ｘdMon＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdModの分母と通分することにより、
【０２２２】
【数４４】
0003794266.tif 000041
【０２２３】
となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd=s-1ydMon及びxd=s-1xdMon+αの関係がある。結果として数４５、数４６を得る。
【０２２４】
【数４５】
0003794266.tif 000042
【０２２５】
【数４６】
0003794266.tif 000043
【０２２６】
ここで、xd,ydは図１７より与えられる。したがって、ワイエルシュトラス型楕円曲線におけるアフィン座標(xd,yd)の値が全て復元されていることになる。
【０２２７】
上記手順はステップ１７０１、ステップ１７０３、ステップ１７０５、ステップ１７０７、ステップ１７０８、ステップ１７０９、ステップ１７１０、ステップ１７１１、ステップ１７１２、ステップ１７１３、ステップ１７１４、ステップ１７１６、ステップ１７１８、ステップ１７２０、ステップ１７２３及びステップ１７２４において有限体上の乗算の計算量を必要とする。また、ステップ１７０６及びステップ１７１９において有限体上の２乗算の計算量を必要とする。また、ステップ１１１５において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１６Ｍ＋２Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５７．６Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０２２８】
尚、上記手順をとらなくても、上記計算式により与えられたxd，ydの値が計算できればxd，ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるBの値やモンゴメリ型楕円曲線への変換パラメタであるｓを小さくとることにより、ステップ１７１０における乗算の計算量やステップ１７１４における乗算の計算量を削減することができる。
【０２２９】
次に図８により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力する高速スカラー倍計算部の処理について説明する。
【０２３０】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1を出力する。ステップ８１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ８０１として、変数Ｉに初期値１を代入する。ステップ８０２として、点Pの２倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ８０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ８０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ８０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ８１３へ行く。一致しなければステップ８０５へ行く。ステップ８０５として、変数Ｉを１増加させる。ステップ８０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ８０６へ行く。そのビットの値が１であればステップ８１０へ行く。ステップ８０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ８０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ８０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算2(mP)を行ない、点2mPを計算する。その後ステップ８０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ８０９として、ステップ８０８で求めた点2mPとステップ８０７で求めた点(2m+1)Pを点の組(2mP,(2m+1)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ８０４へ戻る。ここで、点2mP、点(2m＋1)、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ８１０として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)を計算する。その後ステップ８１１へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ８１１として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの２倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ８１２へ行く。ここで、２倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ８１１として、ステップ８１０で求めた点(2m+1)Pとステップ８１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ８０４へ戻る。ここで、点(2m+1)P、点(2m+2)、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ８１３として、射影座標で表された点の組(mP,(m+1)P)から、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdと��て、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【０２３１】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ８０７において加算の計算量、ステップ８０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ８１０において加算の計算量、ステップ８１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ８０４、ステップ８０５、ステップ８０６、ステップ８０７、ステップ８０８、ステップ８０９乃至はステップ８０４、ステップ８０５、ステップ８０６、ステップ８１０、ステップ８１１、ステップ８１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ８０２での２倍算の計算量及びステップ８１６でのモンゴメリ型楕円曲線上の点への変換の計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）（ｋ―１）＋４Ｍ＋２Ｓとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ―３．６）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１４６８Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６００Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０２３２】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０２３３】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１６Ｍ＋２Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―３．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５４）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５２６Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０２３４】
第１０の実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点,(XdW,YdW,ZdW)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点d(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部２０２は、Xd，Zd，Xd+1，Zd+1，x及びyを座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd，Zd，Xd+1，Zd+1，x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(XdW,YdW,ZdW)の座標XdW、YdW及びZdWの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(XdW,YdW,ZdW)を計算結果として出力する。
【０２３５】
次に図１８により、座標x，y，Xd，Zd，Xd+1，Zd+1が与えられた場合にXdW、YdW、ZdWを出力する座標復元部の処理について説明する。
【０２３６】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上で射影座標おいて完全な座標が与えられたスカラー倍点(XdW,YdW,ZdW)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０２３７】
ステップ１８０１においてXd×xが計算され、レジスタＴ1に格納される。ステップ１８０２においてＴ1-Zdが計算される。ここでレジスタＴ1にはXdxが格納されており、したがってXdx-Zdが計算される。その結果がレジスタＴ1に格納される。ステップ１８０３においてZd×xが計算され、レジスタＴ2に格納される。ステップ１８０４においてXd-Ｔ2が計算される。ここでレジスタＴ2にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ2に格納される。ステップ１８０５においてZd+1×Ｔ1が計算される。ここでレジスタＴ1にはXdx-Zdが格納されており、したがってZd+1(Xdx-Zd)が計算される。その結果がレジスタＴ3に格納される。ステップ１８０６においてXd+1×Ｔ2が計算される。ここでレジスタＴ2にはXd-xZdが格納されており、したがってXd+1(Xd-xZd)が計算される。その結果がレジスタＴ4に格納される。ステップ１８０７においてＴ1の２乗が計算される。ここでレジスタＴ1にはXdx-Zdが格納されており、したがって(Xdx-Zd)2が計算される。その結果がレジスタＴ1に格納される。ステップ１８０８においてＴ2の２乗が計算される。ここでレジスタＴ2にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１８０９においてＴ2×Zdが計算される。ここでレジスタＴ2には(Xd-xZd)2が格納されており、したがってZd(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１８１０においてＴ2×Xd+1が計算される。ここでレジスタＴ2にはZd(Xd-xZd)2が格納されており、したがってXd+1Zd(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１８１１においてＴ2×Zd+1が計算される。ここでレジスタＴ2にはXd+1Zd(Xd-xZd)2が格納されており、したがってZd+1Xd+1Zd(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１８１２においてＴ2×yが計算される。ここでレジスタＴ2にはZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってyZd+1Xd+1Zd(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１８１３においてＴ2×Bが計算される。ここでレジスタＴ2にはyZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ１８１４においてＴ2×Xdが計算される。ここでレジスタＴ2にはByZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd-xZd)2Xdが計算される。その結果がレジスタＴ5に格納される。ステップ１８１５においてＴ2×Zdが計算される。ここでレジスタＴ2にはByZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd-xZd)2Zdが計算される。その結果がレジスタＴ2に格納される。ステップ１８１６においてＴ2×sが計算される。ここでレジスタＴ2にはByZd+1Xd+1Zd(Xd-xZd)2Zdが格納されており、したがってsByZd+1Xd+1Zd(Xd-xZd)2Zdが計算される。その結果がZdＷに格納される。ステップ１８１７においてα×ZdＷが計算される。ここでZdＷにはsByZd+1Xd+1Zd(Xd-xZd)2Zdが格納されており、したがってαsByZd+1Xd+1Zd(Xd-xZd)2Zdが計算される。その結果がレジスタＴ2に格納される。ステップ１８１８においてＴ2+Ｔ5が計算される。ここでレジスタＴ2にはαsByZd+1Xd+1Zd(Xd-xZd)2ZdがレジスタＴ5にはByZd+1Xd+1Zd(Xd-xZd)2Xdがそれぞれ格納されており、したがってαsByZd+1Xd+1Zd(Xd-xZd)2Zd+ByZd+1Xd+1Zd(Xd-xZd)2Xdが計算される。その結果がXdＷ���格納される。ステップ１８１９においてＴ3+Ｔ4が計算される。ここでレジスタＴ3にはZd+1(Xdx-Zd)がレジスタＴ4にはXd+1(Xd-xZd)が格納されており、したがってZd+1(Xdx-Zd)+Xd+1(Xd-xZd)が計算される。その結果がレジスタＴ2に格納される。ステップ１８２０においてＴ3-Ｔ4が計算される。ここでレジスタＴ3にはZd+1(Xdx-Zd)がレジスタＴ4にはXd+1(Xd-xZd)が格納されており、したがってZd+1(Xdx-Zd)- Xd+1(Xd-xZd)が計算される。その結果がレジスタＴ3に格納される。ステップ１８２１においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(Xdx-Zd)2がレジスタＴ2にはZd+1(Xdx-Zd)+Xd+1(Xd-xZd)が格納されており、したがって{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}(Xdx-Zd)2が計算される。その結果がレジスタＴ1に格納される。ステップ１８２２においてＴ1×Ｔ3が計算される。ここでレジスタＴ1には{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}(Xdx-Zd)2がレジスタＴ3にはZd+1(Xdx-Zd)- Xd+1(Xd-xZd)が格納されており、したがって{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}{Zd+1(Xdx-Zd)-Xd+1(Xd-xZd)}(Xdx-Zd)2が計算される。その結果がYdＷに格納される。したがってYdＷには{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}{Zd+1(Xdx-Zd)-Xd+1(Xd-xZd)}(Xdx-Zd)2が格納されている。XdＷにはステップ１８１８においてByZd+1Xd+1Zd(Xd-xZd)2Xd+αsByZd+1Xd+1Zd(Xd-xZd)2Zdが格納され、その後更新が行われないので、その値が保持されている。XdＷにはステップ１８１６においてsByZd+1Xd+1Zd(Xd-xZd)2Zdが格納され、その後更新が行われないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線における射影座標(XdW,YdW,ZdW)の値が全て復元されている。
【０２３８】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(XdW,YdW,ZdW)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６、数７を得る。数６、数７の両辺を各々減算することにより、数８を得る。したがって、数９のようになる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数１０を得る。モンゴメリ型楕円曲線の射影座標での加算公式は数１１、数１２である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのｍ倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのｎ倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、ｍ，ｎはｍ＞ｎをみたす正整数である。この式はXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となるので、射影座標での公式としてうまく働いている。他方、数１３、数１４とおくと、この式もXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となる。また、X'm-n/Z'm-n=Xm-n/Zm-n=xm-nをみたすので、xm-nの射影座標としてX'm-n,Z'm-nをとってよい。m=d,n=1として上記公式を用いてydの式よりXd-1及びZd-1を消去し、X1=x,Z1=1とおくことにより、数１５を得る。xd=Xd/Zdであるが、ydの分母と通分することにより、数１６となる。その結果として、
【０２３９】
【数４７】
0003794266.tif 000044
【０２４０】
とし、
【０２４１】
【数４８】
0003794266.tif 000045
【０２４２】
【数４９】
0003794266.tif 000046
【０２４３】
とすると(X'd,Y'd,Z'd)=(Xd,Yd,Zd)となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをsαとして、YdW=Y'd、XdW=X'd+αZdW、及びZdW=sZ'dという関係がある。結果として次の式を得る。
【０２４４】
【数５０】
0003794266.tif 000047
【０２４５】
【数５１】
0003794266.tif 000048
【０２４６】
【数５２】
0003794266.tif 000049
【０２４７】
により更新すればよい。ここで、XdW,YdW,ZdWは図１８の処理により与えられている。したがって、ワイエルシュトラス型楕円曲線における射影座標(XdW,YdW,ZdW)の値が全て復元されていることになる。
【０２４８】
上記手順はステップ１８０１、ステップ１８０３、ステップ１８０５、ステップ１８０６、ステップ１８０９、ステップ１８１０、ステップ１８１１、ステップ１８１２、ステップ１８１３、ステップ１８１４、ステップ１８１５、ステップ１８１６、ステップ１８１７、ステップ１８２１及びステップ１８２２において有限体上の乗算の計算量を必要とする。また、ステップ１８０７及びステップ１８０８において有限体上の２乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１５Ｍ＋２Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１６．６Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０２４９】
尚、上記手順をとらなくても、上記計算式により与えられたXdW、YdW、ZdWの値が計算できればXdW、YdW、ZdWの値が復元できる。また、ワイエルシュトラス型楕円曲線においてアフィン座標におけるスカラー倍点dPをdP=(xdW,ydW)とすると、xdW、ydWが上記計算式により与えられる値を取るようにXdW、YdW、ZdWの値を選択し、その値が計算できればXdW、YdW、ZdWが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるBの値やモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ１８１３乃至はステップ１８１６における乗算の計算量を削減することができる。
【０２５０】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムについて説明する。
【０２５１】
第１０実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第９実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記アルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０２５２】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１５Ｍ＋２Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―３．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１３）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１４８５Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０２５３】
第１１実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３が、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部２０２は、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1，x及びyを座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1，x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置１０３はワイエルシュトラス型楕円曲線上でアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０２５４】
次に図１９により、座標x，y，Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【０２５５】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xdMon,ydMon)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０２５６】
ステップ１９０１においてXd-1×Zd+1が計算され、レジスタＴ1に格納される。ステップ１９０２においてZd-1×Xd+1が計算され、レジスタＴ２に格納される。ステップ１９０３においてＴ1−Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1がレジスタＴ２にはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ１９０４においてZd×xが計算され、レジスタＴ２に格納される。ステップ１９０５においてXd-Ｔ２が計算さる。ここでレジスタＴ２にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ２に格納される。ステップ１９０６においてＴ２の２乗が計算される。ここでレジスタＴ２にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ２に格納される。ステップ１９０７においてＴ1×Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1-Zd-1Xd+1がレジスタＴ２には(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタＴ1に格納される。ステップ１９０８において4B×yが計算される。その結果がレジスタＴ２に格納される。ステップ１９０９においてＴ２×Zd+1が計算される。ここでレジスタＴ２には4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタＴ２に格納される。ステップ１９１０においてＴ２×Zd-1が計算される。ここでレジスタＴ２には4ByZd+1が格納されており、したがって4ByZd-1Zd+1が計算される。その結果がレジスタＴ２に格納される。ステップ１９１１においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd-1Zd+1が格納されており、したがって4ByZd-1Zd+1Zdが計算される。その結果がレジスタＴ２に格納される。ステップ１９１２においてＴ２×Xdが計算される。ここでレジスタＴ２には4ByZd-1Zd+1Zdが格納されており、したがって4ByZd-1Zd+1ZdXdが計算される。その結果がレジスタＴ3に格納される。ステップ１９１３においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd-1Zd+1Zdが格納されており、したがって4ByZd-1Zd+1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１９１４において、Ｔ２×sが計算される。ここでレジスタＴ２には4ByZd-1Zd+1ZdZdが格納されており、したがって4sByZd-1Zd+1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１９１５においてレジスタＴ２の逆元が計算される。ここでレジスタＴ２には4sByZd-1Zd+1ZdZdが格納されており、したがって1/4sByZd-1Zd+1ZdZdが計算される。その結果がレジスタＴ２に格納される。ステップ１４１６においてＴ２×Ｔ3が計算される。ここでレジスタＴ２には1/4sByZd-1Zd+1ZdZdがレジスタＴ3には4ByZd-1Zd+1ZdXd がそれぞれ格納されており、したがって(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)が計算される。その結果がレジスタＴ3に格納される。ステップ１９１７においてＴ3＋αが計算される。ここでレジスタＴ3には(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)が格納されており、したがって(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)＋αが計算される。その結果がレジスタxdに格納される。ステップ１９１８においてレジスタＴ1×Ｔ２が計算される。ここでレジスタＴ1には(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)がレジスタＴ２には1/4sByZd-1Zd+1ZdZdがそれぞれ格納されており、したがって(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4sByZd-1Zd+1Zd2が計算される。その結果がレジスタydに格納される。したがってレジスタydには(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4sByZd-1Zd+1Zd2が格納されている。レジスタxdにはステップ１９１７において(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)+αが格納され、その後更新が行なわれないので、その値が保持されている。
【０２５７】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数３８、数３９を得る。両辺を各々減算することにより、数４０を得る。したがって、数４１となる。ここでｘdMon＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd=1＝Xd=1/Zd=1であり、この値を代入することにより射影座標の値へと変換すると、数４２を得る。
【０２５８】
ｘdMon＝Xd/Zdであるが、逆元演算の回数を減らす目的でydMonの分母と通分することにより、数５３となる。
【０２５９】
【数５３】
0003794266.tif 000050
【０２６０】
モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd=s-1ydMon及びxd=s-1xdMon+αの関係がある。結果として次の式を得る。
【０２６１】
【数５４】
0003794266.tif 000051
【０２６２】
【数５５】
0003794266.tif 000052
【０２６３】
ここで、ｘd,ｙdは図１９により与えられる。したがって、ワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元されることになる。
【０２６４】
上記手順はステップ１９０１、ステップ１９０２、ステップ１９０４、ステップ１９０７、ステップ１９０８、ステップ１９０９、ステップ１９１０、ステップ１９１１、ステップ１９１２、ステップ１９１３、ステップ１９１４、ステップ１９１６及びステップ１９１８において有限体上の乗算の計算量を必要とする。また、ステップ１９０６において有限体上の２乗算の計算量を必要とする。また、ステップ１９１４において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１３Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５３．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０２６５】
尚、上記手順をとらなくても、上記計算式により与えられたxd，ydの値が計算できればxd，ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるBの値乃至はモンゴメリ型楕円曲線への変換パラメタであるsの値をを小さくとることにより、ステップ１９０８乃至はステップ１９１４における乗算の計算量を削減することができる。
【０２６６】
次に図１０により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd+1，Zd-1を出力する高速スカラー倍計算部の処理について説明する。
【０２６７】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)のうちXd-1及びZd-1を出力する。ステップ１０１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ１００１として、変数Ｉに初期値１を代入する。ステップ１００２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ１００３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ１００２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ１００４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ１０１４へ行く。一致しなければステップ１００５へ行く。ステップ１００５として、変数Ｉを１増加させる。ステップ１００６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ１００６へ行く。そのビットの値が１であればステップ１０１０へ行く。ステップ１００７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ１００８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ１００８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ１００９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ１００９として、ステップ１００８で求めた点2mPとステップ１００７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ１００４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ１０１０として、射影座標により表された点の組(mP, (m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ１０１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ１０１１として、射影座標により表された点の組(mP, (m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ１０１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ１０１１として、ステップ１０１０で求めた点(2m+１)Pとステップ１０１１で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ１００４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP���び点(m+1)Pは全て射影座標において表されている。ステップ１０１４として、射影座標で表された点の組(mP,(m+１)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標をZm-1求め、それぞれXd-1及びZd-1とする。その後ステップ１０１３へ行く。ステップ１０１３として、射影座標で表された点mP＝(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、Xd-1及びZd-1と共に出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【０２６８】
また、ステップ１０１４において(m-1)Pを求める際に、数１３、数１４の公式より求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ１０１２の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の２倍の公式より、(m-1)Pを求めてもよい。
【０２６９】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ１００７において加算の計算量、ステップ１００８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ１０１０において加算の計算量、ステップ１０１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ１００４、ステップ１００５、ステップ１００６、ステップ１００７、ステップ１００８、ステップ１００９乃至はステップ１００４、ステップ１００５、ステップ１００６、ステップ１０１０、ステップ１０１１、ステップ１０１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ１００２での２倍算の計算量とステップ１０１４での(m-1)Pの計算に必要な計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋Ｍとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋３）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１４７５Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６００Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０２７０】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Yd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０２７１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１３Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋１）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５６．８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１５２９Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０２７２】
第１２実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いる。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(XdW,YdW,ZdW)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd=1及びZd-1を計算し、射影座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部２０３に与える。座標変換部２０３は与えられた座標の値Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1，x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(XdW,YdW,ZdW)の座標XdW、YdW及びZdWの復元を行なう。スカラー倍計算装置１０３はワイエルシュトラス型楕円曲線上で座標射影座標において完全に座標が与えられたスカラー倍点(XdW,YdW,ZdW)を計算結果として出力する。
【０２７３】
次に図１３により、座標x，y，Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1が与えられた場合にXdW、YdW、ZdWを出力する座標復元部の処理について説明する。
【０２７４】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを射影座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上で射影座標おいて完全な座標が与えられたスカラー倍点(XdW,YdW,ZdW)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０２７５】
ステップ２００１においてXd-1×Zd+1が計算され、レジスタＴ1に格納される。ステップ２００２においてZd-1×Xd+1が計算され、レジスタＴ２に格納される。ステップ２００３においてＴ1−Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1がレジスタＴ２にはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ２００４においてZd×xが計算され、レジスタＴ２に格納される。ステップ２００５においてXd-Ｔ２が計算さる。ここでレジスタＴ２にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタＴ２に格納される。ステップ２００６においてＴ２の２乗が計算される。ここでレジスタＴ２にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ２に格納される。ステップ２００７においてＴ1×Ｔ２が計算される。ここでレジスタＴ1にはXd-1Zd+1-Zd-1Xd+1がレジスタＴ２には(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がYdWに格納される。ステップ２００８において4B×yが計算される。その結果がレジスタＴ２に格納される。ステップ２００９においてＴ２×Zd+1が計算される。ここでレジスタＴ２には4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタＴ２に格納される。ステップ２０１０においてＴ２×Zd-1が計算される。ここでレジスタＴ２には4ByZd+1が格納されており、したがって4ByZd＋1Zd-1が計算される。その結果がレジスタＴ２に格納される。ステップ２０１１においてＴ２×Zdが計算される。ここでレジスタＴ２には4yZd+1Zd-1が格納されており、したがって4ByZd+1Zd-1Zdが計算される。その結果がレジスタＴ２に格納される。ステップ２０１２においてＴ２×Xdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdXdが計算される。その結果がレジスタＴ1に格納される。ステップ２０１３においてＴ２×Zdが計算される。ここでレジスタＴ２には4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdZdが計算される。その結果がレジスタＴ2に格納される。ステップ２０１４においてＴ2×sが計算される。ここでレジスタＴ2には4ByZd+1Zd-1ZdZdが格納されており、したがって4sByZd+1Zd-1ZdZdが計算される。その結果がレジスタZdW格納される。ステップ２０１５においてα×ZdWが計算される。ここでレジスタZdWには4sByZd+1Zd-1ZdZdが格納されており、したがって4αsByZd+1Zd-1ZdZdが計算される。その結果がレジスタＴ2に格納される。ステップ２０１６においてＴ1+Ｔ2が計算される。ここでレジスタＴ1には4ByZd+1Zd-1ZdXdがレジスタＴ2には4αsByZd+1Zd-1ZdZdがそれぞれ格納されており、したがって4ByZd+1Zd-1ZdXd+4αsByZd+1Zd-1ZdZdが計算される。その結果がレジスタXdWに格納される。したがってレジスタXdWには4ByZd+1Zd-1ZdXd+4αsByZd+1Zd-1ZdZdが格納されている。レジスタYdWにはステップ２００７において(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が格納され、その後更新が行なわれないので、その値が保持されている。レジスタZdWにはステップ２０１４において4sByZd+1Zd-1ZdZdが格納され、その後更新が行なわれないので、その値が保持されている。
【０２７６】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(XdW, YdW, ZdW)における値が全て復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６、数７を得る。両辺を各々減算することにより、数８を得る。したがって、数９となる。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1、ｘd-1＝Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数１０を得る。
【０２７７】
ｘd＝Xd/Zdであるが、ｙdの分母と通分することにより、数２０となる。その結果として、
【０２７８】
【数５６】
0003794266.tif 000053
【０２７９】
とし、
【０２８０】
【数５７】
0003794266.tif 000054
【０２８１】
【数５８】
0003794266.tif 000055
【０２８２】
とすると(X'd, Y'd, Z'd)=(Xd, Xd, Xd)となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、YdW = Y'd、XdW=X'd＋αZdW及びZdW=sZ'dの関係がある。結果として次の式を得る。
【０２８３】
【数５９】
0003794266.tif 000056
【０２８４】
【数６０】
0003794266.tif 000057
【０２８５】
【数６１】
0003794266.tif 000058
【０２８６】
となる。ここで、XdW, YdW, ZdWは図２０により与えられる。したがって、ワイエルシュトラス型楕円曲線における射影座標(XdW, YdW, ZdW)の値が全て復元されていることになる。
【０２８７】
上記手順はステップ２００１、ステップ２００２、ステップ２００４、ステップ２００７、ステップ２００８、ステップ２００９、ステップ２０１０、ステップ２０１１、ステップ２０１２、ステップ２０１３、ステップ２０１４及びステップ２０１５において有限体上の乗算の計算量を必要とする。また、ステップ２００６において有限体上の２乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１２Ｍ＋Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１２．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０２８８】
尚、上記手順をとらなくても、上記計算式により与えられたXdW、YdW、ZdWの値が計算できればXdW、YdW、ZdWの値が復元できる。また、ワイエルシュトラス型楕円曲線においてアフィン座標におけるスカラー倍点dPをdP=(xdW、,ydW)とすると、xdW、ydWが上記計算式により与えられる値を取るようにXdW、YdW、ZdWの値を選択し、その値が計算できればXdW、YdW、ZdWが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBやモンゴメリ型楕円曲線への変換パラメタであるｓの値を小さくとることにより、ステップ２００８乃至はステップ２０１４における乗算の計算量を削減することができる。
【０２８９】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムについて説明する。
【０２９０】
第１２実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第１１実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1，Xd-1，Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０２９１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１２Ｍ＋Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋１）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１３．８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１４８６Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０２９２】
第１３実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３が、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xdW,ydW)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値xd、xd+1、xd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xdW,ydW)の座標ydWの復元を行なう。スカラー倍計算装置１０３はワイエルシュトラス型楕円曲線上でアフィン座標において完全に座標が与えられたスカラー倍点(xdW,ydW)を計算結果として出力する。
【０２９３】
次に図２１により、座標x、y、xd、xd+1、xd-1が与えられた場合に、xdW、ydWを出力する座標復元部の処理について説明する。
【０２９４】
座標復元部２０３では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xdW,ydW)を出力する。
【０２９５】
ステップ２１０１においてxd−xが計算され、レジスタＴ1に格納される。ステップ２１０２においてＴ1の２乗すなわち(xd−x)2が計算され、レジスタＴ1に格納される。ステップ２１０３においてxd-1−xd+1が計算され、レジスタＴ2に格納される。ステップ２１０４においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xd−x)2がレジスタＴ2にはxd-1−xd+1がそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)が計算される。その結果がレジスタＴ1に格納される。ステップ２１０５において4B×yが計算され、レジスタＴ2に格納される。ステップ２１０６においてＴ2の逆元が計算される。ここでレジスタＴ2には4Byが格納されており、したがって1/4Byが計算される。その結果がレジスタＴ2に格納される。ステップ２１０７においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xd−x)2(xd-1−xd+1)がレジスタＴ2には1/4Byがそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)/4Byが計算される。その結果がレジスタＴ1に格納される。ステップ２１０８においてＴ1×s-1が計算される。ここでレジスタＴ1には(xd−x)2(xd-1−xd+1)/4Byが格納されており、したがって(xd−x)2(xd-1−xd+1)/4sByが計算される。その結果がレジスタydWに格納される。尚、sはあらかじめ与えられている値であり、したがってあらかじめs-1を計算できる。ステップ２１０９においてxd×s-1が計算される。その結果がレジスタＴ1に格納される。ステップ２１１０においてＴ1+αが計算される。ここでレジスタＴ1にはs-1xdが格納されており、したがってs-1xd+αが計算される。その結果がレジスタxdWに格納される。したがってレジスタxdWにはs-1xd+αが格納されている。レジスタydWはステップ２１０８において(xd−x)2(xd-1−xd+1)/4sByが格納され、その後更新されないので、その値が保持されている。
【０２９６】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６、数７を得る。両辺を各々減算することにより、数８を得る。したがって、数９となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、ydW=s-1yd及びxdW=s-1xd+αの関係がある。結果として次の式を得る。
【０２９７】
【数６２】
0003794266.tif 000059
【０２９８】
【数６３】
0003794266.tif 000060
【０２９９】
ここで、xdW，ydWは図２１により与えられる。したがって、アフィン座標(xdW, ydW)の値は全て復元されていることになる。
【０３００】
上記手順はステップ２１０４、ステップ２１０５、ステップ２１０７、ステップ２１０８及びステップ２１０９において有限体上の乗算の計算量を必要とする。また、ステップ２１０２において有限体上の２乗算の計算量を必要とする。さらにステップ２１０６において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ、有限体上の逆元演算の計算量をＩとすると、上記手順は５Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると座標復元の計算量は４５．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３０１】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydWの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBやモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ２１０５、ステップ２１０８乃至はステップ２１０９における乗算の計算量を削減することができる。
【０３０２】
次に図２４により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd，xd+1，xd=1を出力する高速スカラー倍計算部の処理について説明する。
【０３０３】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)のうちxd-1を出力する。ステップ２４１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ２４０１として、変数Ｉに初期値１を代入する。ステップ２４０２として、点Pの２倍点2Pを計算する。ここで点Pは射影座標において(x,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ２４０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ２４０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ２４０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ２４１４へ行く。一致しなければステップ２４０５へ行く。ステップ２４０５として、変数Ｉを１増加させる。ステップ２４０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ２４０６へ行く。そのビットの値が１であればステップ２４１０へ行く。ステップ２４０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ２４０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ２４０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算2(mP)を行ない、点2mPを計算する。その後ステップ２４０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ２４０９として、ステップ２４０８で求めた点2mPとステップ２４０７で求めた点(2m+１)Pを点の組(2mP,(2m+１)P)として、点の組(mP,(m+１)P)の代わりに格納する。その後ステップ２４０４へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ２４１０として、射影座標により表された点の組(mP, (m+１)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ２４１１へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ２４１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ２４１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ２４１１として、ステップ２４１０で求めた点(2m+１)Pとステップ２４１１で求めた点(2m+2)Pを点の組((2m+１)P, (2m+2)P)として、点の組(mP,(m+1)Pの代わりに格納する。その後ステップ２４０４へ戻る。ここで、点(2m+１)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標におい��表されている。ステップ２４１４として、射影座標で表された点の組(mP,(m+１)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求め、それぞれXd-1及びZd-1とする。その後ステップ２４１５へ行く。ステップ２４１５として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。Xd-1，Z d+1，X d，Z d，X d+1，Z d+1より、数２４、数２５、数２６としてxd-1，xd，xd+1を求める。その後ステップ２４１３へ行く。ステップ２４１３として、xd-1，xd，xd+1を出力する。上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ２４１４において(m-1)Pを求める際に、数１３、数１４の公式により求めてもよいし、ｍが奇数であれば、((m-1)/2)Pの値をステップ２４１２の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の２倍算の公式より、(m-1)Pを求めてもよい。
【０３０４】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ２４０７において加算の計算量、ステップ２４０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ２４１０において加算の計算量、ステップ２４１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ２４０４、ステップ２４０５、ステップ２４０６、ステップ２４０７、ステップ２４０８、ステップ２４０９乃至はステップ２４０４、ステップ２４０５、ステップ２４０６、ステップ２４１０、ステップ２４１１、ステップ２４１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ２４０２での２倍算の計算量、ステップ２４１４での(m-1)Pの計算に必要な計算量及びステップ２４１５でのアフィン座標への変換の計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋１１Ｍ＋Ｉとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度、計算量ＩはＩ＝４０Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋５１）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１５２３Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６４０Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０３０５】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd-1，xd，xd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３０６】
第１４の実施例は、スカラー倍計算装置１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Ｐから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点（ｘd,ｙd）を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値ｄと与えられたモンゴメリ型楕円曲線上の点Ｐからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(ｘ,ｙ)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、ｘ及びｙよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０３０７】
次に図３４により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【０３０８】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０３０９】
ステップ３４０１においてx×Zdが計算され、レジスタＴ1に格納される。ステップ３４０２においてXd+Ｔ1が計算される。ここでレジスタＴ1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタＴ2に格納される。ステップ３４０３においてXd-Ｔ1が計算され、ここでレジスタＴ1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタＴ3に格納される。ステップ３４０４においてレジスタＴ3の２乗が計算される。ここでレジスタＴ3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３４０５においてＴ3×Xd+1が計算される。ここでレジスタＴ3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３４０６において2A×Zdが計算され、レジスタＴ1に格納される。ステップ３４０７においてＴ2+Ｔ1が計算される。ここでレジスタＴ2にはxZd+XdがレジスタＴ1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタＴ2に格納される。ステップ３４０８においてx×Xdが計算され、レジスタＴ4に格納される。ステップ３４０９においてＴ4+Zdが計算される。ここでレジスタＴ4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタＴ4に格納される。ステップ３４１０においてＴ2×Ｔ4が計算される。ここでレジスタＴ2にはxZd+Xd+2AZdがレジスタＴ4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタＴ2に格納される。ステップ３４１１においてＴ1×Zdが計算される。ここでレジスタＴ1には2AZdが格納されており、したがって2AZd2が計算される。その結果がレジスタＴ1に格納される。ステップ３４１２においてＴ2-Ｔ1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタＴ1には2AZd2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が計算される。その結果がレジスタＴ2に格納される。ステップ３４１３においてＴ2×Zd+1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)が計算される。その結果がレジスタＴ2に格納される。ステップ３４１４においてＴ2-Ｔ3が計算される。ここでレジスタＴ2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)がレジスタＴ3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ３４１５において2B×yが計算され、レジスタＴ1に格納される。ステップ３４１６においてＴ1×Zdが計算される。ここでレジスタＴ1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタＴ1に格納される。ステップ３４１７においてＴ1×Zd+1が計算される。ここでレジスタＴ1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタＴ1に格納される。ステップ３４１８においてＴ1×Zdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタＴ3に格納される。ステップ３４１９においてレジスタＴ3の逆元が計算される。ここでレジスタＴ3には2ByZdZd+1Zdが格納されており、したがって1/2ByZdZd+1Zdが計算される。その結果がレジスタＴ3に格納される。ステップ３４２０においてＴ2×Ｔ3が計算される。ここでレジスタＴ2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2がレジスタＴ3には1/2ByZdZd+1Zdがそれぞれ格納されており、したがって{Zd+1 ((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2}/2ByZdZd+1 Zdが計算される。その結果がレジスタydに格納される。ステップ３４２１においてＴ1×Xdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZd Zd+1Xdが計算される。その結果がレジスタＴ1に格納される。ステップ３４２２においてＴ1×Ｔ3が計算される。ここでレジスタＴ1には2ByZdZd+1XdがレジスタＴ3には1/2ByZdZd+1Zdがそれぞれ格納されており、したがって2ByZdZd+1Xd /2ByZdZd+1Zd(＝Xd/Zd)が計算される。その結果がxdに格納される。ydにはステップ３４２０において{Zd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2}/2By ZdZd+1Zdが格納され、その後更新が行なわれないので、その値が保持されている。
【０３１０】
上記手順により座標復元部２０３へ与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1からモンゴメリ型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd2=xd3+Axd2+xd及びBy2=x3+Ax2+xをみたす。数６に代入し、Byd2及びBy2を消去し、式を整理すると、
【０３１１】
【数６４】
0003794266.tif 000061
【０３１２】
を得る。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【０３１３】
【数６５】
0003794266.tif 000062
【０３１４】
ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、
【０３１５】
【数６６】
0003794266.tif 000063
【０３１６】
となる。ここで、xd，ydは図３４の処理により与えられている。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【０３１７】
上記手順はステップ３４０１、ステップ３４０５、ステップ３４０６、ステップ３４０８、ステップ３４１０、ステップ３４１１、ステップ３４１３、ステップ３４１５、ステップ３４１６、ステップ３４１７、ステップ３４１８、ステップ３４２０、ステップ３４２１及びステップ３４２２において有限体上の乗算の計算量を必要とする。また、ステップ３４０４において有限体上の２乗算の計算量を必要とする。また、ステップ３４１９において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１４Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５４．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３１８】
尚、上記手順をとらなくても、上記計算式により与えられたｘd,ｙdの値が計算できればｘd,ｙdの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるA乃至はBの値を小さくとることにより、ステップ３４０６乃至はステップ３４１５における乗算の計算量を削減することができる。
【０３１９】
次にスカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理を説明する。
【０３２０】
第１４実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第１実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記アルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３２１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１４Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―４．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５０）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５２２Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０３２２】
第１５の実施例は、スカラー倍計算部１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【０３２３】
次に図３５により、座標x、y Xd、Zd、Xd+1、Zd+1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【０３２４】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０３２５】
ステップ３５０１においてx×Zdが計算され、レジスタＴ1に格納される。ステップ３５０２においてXd+Ｔ1が計算される。ここでレジスタＴ1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタＴ2に格納される。ステップ３５０３においてXd-Ｔ1が計算され、ここでレジスタＴ1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタＴ3に格納される。ステップ３５０４においてレジスタＴ3の２乗が計算される。ここでレジスタＴ3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３５０５においてＴ3×Xd+1が計算される。ここでレジスタＴ3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３５０６において2A×Zdが計算され、レジスタＴ1に格納される。ステップ３５０７においてＴ2+Ｔ1が計算される。ここでレジスタＴ2にはxZd+XdがレジスタＴ1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタＴ2に格納される。ステップ３５０８においてx×Xdが計算され、レジスタＴ4に格納される。ステップ３５０９においてＴ4+Zdが計算される。ここでレジスタＴ4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタＴ4に格納される。ステップ３５１０においてＴ2×Ｔ4が計算される。ここでレジスタＴ2にはxZd+Xd+2AZdがレジスタＴ4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタＴ2に格納される。ステップ３５１１においてＴ1×Zdが計算される。ここでレジスタＴ1には2AZdが格納されており、したがって2AZd2が計算される。その結果がレジスタＴ1に格納される。ステップ３５１２においてＴ2-Ｔ1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタＴ1には2AZd2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が計算される。その結果がレジスタＴ2に格納される。ステップ３５１３においてＴ2×Zd+1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)が計算される。その結果がレジスタＴ2に格納される。ステップ３５１４においてＴ2-Ｔ3が計算される。ここでレジスタＴ2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)がレジスタＴ3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタYdに格納される。ステップ３５１５において2B×yが計算され、レジスタＴ1に格納される。ステップ３５１６においてＴ1×Zdが計算される。ここでレジスタＴ1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタＴ1に格納される。ステップ３５１７においてＴ1×Zd+1が計算される。ここでレジスタＴ1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタＴ1に格納される。ステップ３５１８においてＴ1×Xdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Xdが計算される。その結果がレジスタXdに格納される。ステップ３５１９においてＴ1×Zdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレ��スタZdに格納される。Xdにはステップ３５１８において2ByZdZd+1Xdが格納され、その後更新が行なわれないので、その値が保持されている。Ydにはステップ３５１４においてZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2が格納され、その後更新が行なわれないので、その値が保持されている。
【０３２６】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の数６を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd2=xd3+Axd2+xd及びBy2=x3+Ax2+xをみたす。数６に代入し、Byd2及びBy2を消去し、式を整理すると、数６４を得る。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、数６５を得る。ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、数６６となる。その結果として、
【０３２７】
【数６７】
0003794266.tif 000064
【０３２８】
とし、Xd及びZdをそれぞれ
【０３２９】
【数６８】
0003794266.tif 000065
【０３３０】
【数６９】
0003794266.tif 000066
【０３３１】
により更新すればよい。ここで、Xd，Yd，Zdは図３５の処理により与えられている。したがって、射影座標(Xd,Yd,Zd)の値が全て復元されていることになる。
【０３３２】
上記手順はステップ３５０１、ステップ３５０５、ステップ３５０６、ステップ３５０８、ステップ３５１０、ステップ３５１１、ステップ３５１３、ステップ３５１５、ステップ３５１６、ステップ３５１７、ステップ３５１８及びステップ３５１９において有限体上の乗算の計算量を必要とする。また、ステップ３５０４において有限体上の２乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１２Ｍ＋Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１２．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３３３】
尚、上記手順をとらなくても、上記計算式により与えられたXd、Yd、Zdの値が計算できればXd、Yd、Zdの値が復元できる。また、xd、ydが上記計算式により与えられる値を取るようにXd、Yd、Zdの値を選択し、その値が計算できればXd、Yd、Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるA乃至はBの値を小さくとることにより、ステップ３５０６乃至はステップ３５１５における乗算の計算量を削減することができる。
【０３３４】
次に、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムについて説明する。
【０３３５】
第１５実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第１実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記アルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３３６】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１２Ｍ＋Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―４．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋８）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１４８０Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０３３７】
第１６の実施例は、スカラー倍計算装置１０３がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値xd、xd+1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０３３８】
次に図３６により、座標x、y、xd、xd+1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【０３３９】
座標復元部２０３では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【０３４０】
ステップ３６０１においてxd×xが計算され、レジスタＴ1に格納される。ステップ３６０２においてＴ1+1が計算される。ここでレジスタＴ1にはxdxが格納されており、したがってxdx+1が計算される。その結果がレジスタＴ1に格納される。ステップ３６０３においてxd+xが計算され、レジスタＴ2に格納される。ステップ３６０４においてＴ2+2Aが計算される。ここでレジスタＴ2にはxd+xが格納されており、したがってxd+x+2Aが計算される。その結果がレジスタＴ2に格納される。ステップ３６０５においてＴ1×Ｔ2が計算される。ここでレジスタＴ1にはxdx+1がレジスタＴ2にはxd+x+2Aがそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)が計算される。その結果がレジスタＴ1に格納される。ステップ３６０６においてＴ1-2Aが計算される。ここでレジスタＴ1には(xdx+1)(xd+x+2A)が格納されており、したがって(xdx+1)(xd+x+2A)-2Aが計算される。その結果がレジスタＴ1に格納される。ステップ３６０７においてxd-xが計算され、レジスタＴ2に格納される。ステップ３６０８においてＴ2の２乗が計算される。ここでレジスタＴ2にはxd-xが格納されており、したがって(xd−x)2が計算される。その結果がレジスタＴ2に格納される。ステップ３６０９においてＴ2×xd+1が計算される。ここでレジスタＴ2には(xd−x)2が格納されており、したがって(xd−x)2xd+1が計算される。その結果がレジスタＴ2に格納される。ステップ３６１０においてＴ1-Ｔ2が計算される。ここでレジスタＴ1には(xdx+1)(xd+x+2A)-2AがレジスタＴ2には(xd−x)2xd+1がそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ３６１１において2B×yが計算され、レジスタＴ2に格納される。ステップ３６１２においてＴ2の逆元が計算される。ここでレジスタＴ2には2Byが格納されており、したがって1/2Byが計算される。その結果がレジスタＴ2に格納される。ステップ３６１３においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1がレジスタＴ2には1/2Byがそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1/2Byが計算される。その結果がレジスタydに格納される。したがってレジスタydには(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1/2Byが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【０３４１】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd2=xd3+Axd2 +xd及びBy2=x3+Ax2+xをみたす。数６に代入し、Byd2及びBy2を消去し、式を整理すると、数６４を得る。ここで、xd，ydは図３６の処理により与えられる。したがって、アフィン座標(xd,yd)の値は全て復元されたことになる。
【０３４２】
上記手順はステップ３６０１、ステップ３６０５、ステップ３６０９、ステップ３６１１及びステップ３６１３において有限体上の乗算の計算量を必要とする。また、ステップ３６０８において有限体上の２乗算の計算量を必要とする。さらにステップ３６１２において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、２乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ、有限体上の逆元演算の計算量をＩとすると、上記手順は５Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると座標復元の計算量は４５．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３４３】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ２６０５における乗算の計算量を削減することができる。
【０３４４】
次に図４３により、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1を出力する高速スカラー倍計算部の処理について説明する。
【０３４５】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)のうちxd+1を出力する。ステップ４３０１として、変数Ｉに初期値１を代入する。ステップ４３０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ４３０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ４３０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ４３０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ４３１５へ行く。一致しなければステップ４３０５へ行く。ステップ４３０５として、変数Ｉを１増加させる。ステップ４３０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ４３０６へ行く。そのビットの値が１であればステップ４３１０へ行く。ステップ４３０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ４３０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４３０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ４３０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４３０９として、ステップ４３０８で求めた点2mPとステップ４３０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ４３０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ４３１０として、射影座標により表された点の組(mP,(m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ４３１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４３１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ４３１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４３１１として、ステップ４３１０で求めた点(2m+１)Pとステップ４３１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ４３０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ６１５として、射影座標で表された点mP＝(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射��座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。Xd，Zd，Xd+1，Zd+1より、xd=XdZd+1/ZdZd+1, xd+1=ZdXd+1/Zd Zd+1としてxd，xd+1を求める。その後ステップ４３１３へ行く。ステップ４３１３として、xd，xd+1を出力する。上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【０３４６】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1＝1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ４３０７において加算の計算量、ステップ４３０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ４３１０において加算の計算量、ステップ４３１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ４３０４、ステップ４３０５、ステップ４３０６、ステップ４３０７、ステップ４３０８、ステップ４３０９乃至はステップ４３０４、ステップ４３０５、ステップ４３０６、ステップ４３１０、ステップ４３１１、ステップ４３１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ４３０２での２倍算の計算量及びアフィン座標への変換の計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋２Ｍ―２Ｓ＋Ｉとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度、計算量ＩはＩ＝４０Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋４０．４）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１５１２Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６４０Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０３４７】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３４８】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は５Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋４０．４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋８６．２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１５５８Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０３４９】
第１７の実施例は、楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置１０３の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置１０３の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値値Xd、Zd、Xd+1、Zd+1、ｘ及びｙよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０３５０】
次に図３７により、座標x、y、Xd、Zd、Xd+1、Zd+1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【０３５１】
座標復元部２０３では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０３５２】
ステップ３７０１においてx×Zdが計算され、レジスタＴ1に格納される。ステップ３７０２においてXd+Ｔ1が計算される。ここでレジスタＴ1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタＴ2に格納される。ステップ３７０３においてXd-Ｔ1が計算され、ここでレジスタＴ1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタＴ3に格納される。ステップ３７０４においてレジスタＴ3の２乗が計算される。ここでレジスタＴ3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３７０５においてＴ3×Xd+1が計算される。ここでレジスタＴ3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３７０６においてx×Xdが計算され、レジスタＴ1に格納される。ステップ３７０７においてa×Zdが計算され、レジスタＴ4に格納される。ステップ３７０８においてＴ1+Ｔ4が計算される。ここでレジスタＴ1にはxXdがレジスタＴ4にはaZdがそれぞれ格納されており、したがってxXd+aZdが計算される。その結果がレジスタＴ1に格納される。ステップ３７０９においてＴ1×Ｔ2が計算される。ここでレジスタＴ1にはxXd+aZdがレジスタＴ2にはxZd+Xdがそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)が計算される。その結果がレジスタＴ1に格納される。ステップ３７１０においてレジスタZdの２乗が計算され、レジスタＴ2に格納される。ステップ３７１１においてＴ2×2bが計算される。ここでレジスタＴ2にはZd2が格納されており、したがって2bZd2が計算される。その結果がレジスタＴ2に格納される。ステップ３７１２においてＴ1+Ｔ2が計算される。ここでレジスタＴ1には(xXd+aZd)(xZd+Xd)がレジスタＴ2には2bZd2がそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)+2bZd2が計算される。その結果がレジスタＴ1に格納される。ステップ３７１３においてＴ1×Zd+1が計算される。ここでレジスタＴ1には(xXd+aZd)(xZd+Xd)+2bZd2が格納されており、したがってZd+1((xXd+aZd) (xZd+Xd)+2bZd2)が計算される。その結果がレジスタＴ1に格納される。ステップ３７１４においてＴ1-Ｔ3が計算される。ここでレジスタＴ1にはZd+1((xXd+aZd)(xZd+Xd)+2bZd2)がレジスタＴ3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xXd+aZd)(xZd+Xd)+2bZd2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ1に格納される。ステップ３７１５において2y×Zdが計算され、レジスタＴ2に格納される。ステップ３７１６においてＴ2×Zd+1が計算される。ここでレジスタＴ2には2yZdが格納されており、したがって2yZdZd+1が計算される。その結果がレジスタＴ2に格納される。ステップ３７１７においてＴ2×Zdが計算される。ここでレジスタＴ2には2yZdZd+1が格納されており、したがって2yZdZd+1Zdが計算される。その結果がレジスタＴ3に格納される。ステップ３７１８においてレジスタＴ3の逆元が計算される。ここでレジスタＴ3には2yZdZd+1Zdが格納されており、したがって1/2yZdZd+1Zd が計算される。その結果がレジスタＴ3に格納される。ステップ３７１９においてＴ1×Ｔ3が計算される。ここでレジスタＴ1にはZd+1((xXd+aZd)(xZd+Xd)+2bZd2) -Xd+1(Xd-xZd)2がレジスタＴ3には1/2yZdZd+1Zdがそれぞれ格納されており、したがって(Zd+1((xXd+aZd)(xZd+Xd)+2bZd2)-Xd+1(Xd-xZd)2)/2yZdZd+1Zdが計算される。その結��がレジスタydに格納される。ステップ３７２０においてＴ2×Xdが計算される。ここでレジスタＴ2には2yZdZd+1が格納されており、したがって2yZdZd+1Xdが計算される。その結果がレジスタＴ2に格納される。ステップ３７２１においてＴ2×Ｔ3が計算される。ここでレジスタＴ2には2yZdZd+1XdがレジスタＴ3には1/2yZdZd+1Zdがそれぞれ格納されており、したがって2yZdZd+1 Xd/2yZdZd+1Zdが計算される。その結果がレジスタxdに格納される。したがってレジスタxdには2yZdZd+1Xd/2yZdZd+1Zdが格納されている。レジスタydにはステップ３７１９において(Zd+1((xXd+aZd)(xZd+Xd)+2bZd2)-Xd+1(Xd-xZd)2)/2yZdZd+1 Zdが格納され、その後更新が行なわれないので、その値が保持されている。
【０３５３】
上記手順により、与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数２７を得る。点P及び点dPはワイエルシュトラス型楕円曲線上の点であるので、yd2=xd3+axd+b及びy2=x3+ax+bをみたす。数２７に代入し、yd2及びy2を消去し、式を整理すると、
【０３５４】
【数７０】
0003794266.tif 000067
【０３５５】
を得る。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【０３５６】
【数７１】
0003794266.tif 000068
【０３５７】
ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、
【０３５８】
【数７２】
0003794266.tif 000069
【０３５９】
となる。ここで、ｘd，ydは図３７で示した処理により与えられる。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【０３６０】
上記手順はステップ３７０１、ステップ３７０５、ステップ３７０６、ステップ３７０７、ステップ３７０９、ステップ３７１０、ステップ３７１１、ステップ３７１３、ステップ３７１５、ステップ３７１６、ステップ３７１７、ステップ３７１９、ステップ３７２０及びステップ３７２１において有限体上の乗算の計算量を必要とする。また、ステップ３７０４において有限体上の２乗算の計算量を必要とする。また、ステップ３７１８において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１４Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５４．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３６１】
尚、上記手順をとらなくても、上記計算式により与えられたｘd，ydの値が計算できればｘd，ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。
【０３６２】
次に図４４により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理について説明する。
【０３６３】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1を出力する。ステップ４４１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ４４０１として、変数Ｉに初期値１を代入する。ステップ４４０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ４４０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ４４０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ４４０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ４４１５へ行く。一致しなければステップ４４０５へ行く。ステップ４４０５として、変数Ｉを１増加させる。ステップ４４０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ４４０６へ行く。そのビットの値が１であればステップ４４１０へ行く。ステップ４４０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ４４０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４４０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ４４０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４４０９として、ステップ４４０８で求めた点2mPとステップ４４０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ４４０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ４４１０として、射影座標により表された点の組(mP,(m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ４４１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４４１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ４４１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４４１１として、ステップ４４１０で求めた点(2m+１)Pとステップ４４１１で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ４４０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ４４１��として、モンゴメリ型楕円曲線における点(m-1)Pを、ワイエルシュトラス型楕円曲線上で射影座標により表された点に変換する。その点のX座標及びZ座標をそれぞれあらためてXm-1及びZm-1とおく。また、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上で射影座標で表された点に変換し、それぞれmP＝（Xm,Ym,Zm）及び(m+1)P＝（Xm+1,Ym+1,Zm+1）とあらためて置き直す。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。ステップ４４１３として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP＝（Xm,Ym,Zm）よりXm及びZmをそれぞれXd及びZｄとして、ワイエルシュトラス型楕円曲線上で射影座標で表された点(m+1)P＝（Xm+1,Ym+1,Zm+1）よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【０３６４】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ４４０７において加算の計算量、ステップ４４０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ４４１０において加算の計算量、ステップ４４１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ４４０４、ステップ４４０５、ステップ４４０６、ステップ４４０７、ステップ４４０８、ステップ４４０９乃至はステップ４４０４、ステップ４４０５、ステップ４４０６、ステップ４４１０、ステップ４４１１、ステップ４４１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ４４０２での２倍算の計算量とステップ４４１６でのモンゴメリ型楕円曲線上の点への変換に必要な計算量及びステップ４４１５でのワイエルシュトラス型楕円曲線上の点への変換に必要な計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋２Ｍ―２Ｓとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋０．４）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１４７２Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６００Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０３６５】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd、Zd、Xd+1、Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３６６】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１４Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋０．４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５５．２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１５２７Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０３６７】
第１８の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置１０３の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置１０３の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算部１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【０３６８】
次に図３８により、座標x、y Xd、Zd、Xd+1、Zd+1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【０３６９】
座標復元部２０３では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０３７０】
ステップ３８０１においてx×Zdが計算され、レジスタＴ1に格納される。ステップ３８０２においてXd+Ｔ1が計算される。ここでレジスタＴ1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタＴ2に格納される。ステップ３８０３においてXd-Ｔ1が計算され、ここでレジスタＴ1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタＴ3に格納される。ステップ３８０４においてレジスタＴ3の２乗が計算される。ここでレジスタＴ3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３８０５においてＴ3×Xd+1が計算される。ここでレジスタＴ3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ３８０６においてx×Xdが計算され、レジスタＴ1に格納される。ステップ３８０７においてa×Zdが計算され、レジスタＴ4に格納される。ステップ３８０８においてＴ1+Ｔ4が計算される。ここでレジスタＴ1にはxXdがレジスタＴ4にはaZdがそれぞれ格納されており、したがってxXd+aZdが計算される。その結果がレジスタＴ1に格納される。ステップ３８０９においてＴ1×Ｔ2が計算される。ここでレジスタＴ1にはxXd+aZdがレジスタＴ2にはxZd+Xdがそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)が計算される。その結果がレジスタＴ1に格納される。ステップ３８１０においてレジスタZdの２乗が計算され、レジスタＴ2に格納される。ステップ３８１１においてＴ2×2bが計算される。ここでレジスタＴ2にはZd2が格納されており、したがって2bZd2が計算される。その結果がレジスタＴ2に格納される。ステップ３８１２においてＴ1+Ｔ2が計算される。ここでレジスタＴ1には(xXd+aZd)(xZd+Xd)がレジスタＴ2には2bZd2がそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)+2bZd2が計算される。その結果がレジスタＴ1に格納される。ステップ３８１３においてＴ1×Zd+1が計算される。ここでレジスタＴ1には(xXd+aZd)(xZd+Xd)+2bZd2が格納されており、したがってZd+1((xXd+aZd) (xZd+Xd)+2bZd2)が計算される。その結果がレジスタＴ1に格納される。ステップ３８１４においてＴ1-Ｔ3が計算される。ここでレジスタＴ1にはZd+1((xXd+aZd)(xZd+Xd)+2bZd2)がレジスタＴ3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xXd+aZd)(xZd+Xd)+2bZd2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタYdに格納される。ステップ３８１５において2y×Zdが計算され、レジスタＴ2に格納される。ステップ３８１６においてＴ2×Zd+1が計算される。ここでレジスタＴ2には2yZdが格納されており、したがって2yZdZd+1が計算される。その結果がレジスタＴ2に格納される。ステップ３８１７においてＴ2×Xdが計算される。ここでレジスタＴ2には2yZdZd+1が格納されており、したがって2yZdZd+1Xdが計算される。その結果がレジスタXdに格納される。ステップ３８１９においてＴ2×Zdが計算される。ここでレジスタＴ2には2yZdZd+1が格納されており、したがって2yZdZd+1Zdが計算される。その結果がレジスタZdに格納される。したがってレジスタZdには2yZdZd+1Zdが格納されている。レジスタYdにはステップ３８１４においてZd+1((xXd+aZd)(xZd+Xd)  +2bZd2)+Xd+1(Xd-xZd)2が格納され、その後更新が行なわれないので、その値が保持されている。レジスタXdにはステップ３８１７において2yZdZd+1Xdが格納��れ、その後更新が行なわれないので、その値が保持されている。
【０３７１】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数２７を得る。点P及び点dPはワイエルシュトラス型楕円曲線上の点であるので、yd2=xd3+axd+b及びy2=x3+ax+bをみたす。数２７に代入し、yd2及びy2を消去し、式を整理すると、数７０を得る。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、数７１を得る。ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、数７２となる。その結果として
【０３７２】
【数７３】
0003794266.tif 000070
【０３７３】
とし、Xd及びZdをそれぞれ
【０３７４】
【数７４】
0003794266.tif 000071
【０３７５】
【数７５】
0003794266.tif 000072
【０３７６】
により更新すればよい。ここで、Xd，Yd，Zdは図３８で示した処理により与えられる。したがって、射影座標(Xd,Yd,Zd)の値は全て復元されたことになる。
【０３７７】
上記手順はステップ３８０１、ステップ３８０５、ステップ３８０６、ステップ３８０７、ステップ３８０９、ステップ３８１１、ステップ３８１３、ステップ３８１５、ステップ３８１６、ステップ３８１７及びステップ３８１８において有限体上の乗算の計算量を必要とする。また、ステップ３８０４およびステップ３８１０において有限体上の２乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１１Ｍ＋２Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１２．６Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３７８】
尚、上記手順をとらなくても、上記計算式により与えられたXd,Yd,Zdの値が計算できればXd,Yd,Zdの値が復元できる。また、xd,ydが上記計算式により与えられる値を取るようにXd,Yd,Zdの値を選択し、その値が計算できればXd,Yd,Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。
【０３７９】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムについて説明する。
【０３８０】
第１８実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第１７実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３８１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１１Ｍ＋２Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋０．４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１３）Ｍと見積もることができる。例えばスカラー値ｄが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量はおおよそ１４８５Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０３８２】
第１９の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置１０３の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置１０３の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P＝(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値xd、xd+1、xd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０３８３】
次に図３９により、座標x、y、xd、xd+1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【０３８４】
座標復元部２０３では、ワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【０３８５】
ステップ３９０１においてxd×xが計算され、レジスタＴ1に格納される。ステップ３９０２においてＴ1+aが計算される。ここでレジスタＴ1にはxdxが格納されており、したがってxdx+aが計算される。その結果がレジスタＴ1に格納される。ステップ３９０３においてxd+xが計算され、レジスタＴ2に格納される。ステップ３９０４においてＴ1×Ｔ2が計算される。ここでレジスタＴ1にはxdx+aがレジスタＴ2にはxd+xがそれぞれ格納されており、したがって(xdx+a)(xd+x)が計算される。その結果がレジスタＴ1に格納される。ステップ３９０５においてＴ1+2bが計算される。ここでレジスタＴ1には(xdx+a)(xd+x)が格納されており、したがって(xdx+a)(xd+x)+2bが計算される。その結果がレジスタＴ1に格納される。ステップ３９０６においてxd-xが計算され、レジスタＴ2に格納される。ステップ３９０７においてＴ2の２乗が計算される。ここでレジスタＴ2にはxd-xが格納されており、したがって(xd−x)2が計算される。その結果がレジスタＴ2に格納される。ステップ３９０８においてＴ2×x2d+1が計算される。ここでレジスタＴ2には(xd−x)2が格納されており、したがってxd+1(xd−x)2が計算される。その結果がレジスタＴ2に格納される。ステップ３９０９においてＴ1-Ｔ2が計算される。ここでレジスタＴ1には(xdx+a)(xd+x)+2bがレジスタＴ2にはxd+1(xd−x)2がそれぞれ格納されており、したがって(xdx+a)(xd+x)+2b-xd+1(xd−x)2が計算される。その結果がレジスタＴ1に格納される。ステップ３９１０において2yの逆元が計算され、レジスタＴ2に格納される。ステップ３９１１においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xdx+a)(xd+x)+2b-xd+1(xd−x)2がレジスタＴ2には1/2yがそれぞれ格納されており、したがって((xdx+a)(xd+x)+2b-xd+1(xd−x)2)/2yが計算される。その結果がレジスタydに格納される。したがってレジスタydには((xdx+a)(xd+x)+2b-xd+1(xd−x)2)/2yが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【０３８６】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数２７を得る。点P及び点dPはワイエルシュトラス型楕円曲線上の点であるので、yd2=xd3+axd+b及びy2=x3+ax+bをみたす。数２７に代入し、yd2及びy2を消去し、式を整理すると、数７０を得る。ここでxd,ydは図３９の処理によって与えられる。したがって、アフィン座標(xd,yd)の値を全て復元していることになる。
【０３８７】
上記手順はステップ３９０１、ステップ３９０４、ステップ３９０８及びステップ３９１１において有限体上の乗算の計算量を必要とする。また、ステップ３９０７において有限体上の２乗算の計算量を必要とする。さらにステップ３９１０において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ、有限体上の逆元演算の計算量をＩとすると、上記手順は４Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると座標復元の計算量は４４．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０３８８】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。
【０３８９】
次に図４４により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd、xd+1を出力するアルゴリズムについて説明する。
【０３９０】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P＝(xd+1,yd+1)のうちxd+1を出力する。ステップ４４１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ４４０１として、変数Ｉに初期値１を代入する。ステップ４４０２として、点Pの２倍点２Pを計算する。ここで点Pは射影座標において(ｘ,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ４４０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ４４０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ４４０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ４４１５へ行く。一致しなければステップ４４０５へ行く。ステップ４４０５として、変数Ｉを１増加させる。ステップ４４０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ４４０６へ行く。そのビットの値が１であればステップ４４１０へ行く。ステップ４４０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ４４０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４４０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算２(mP)を行ない、点2mPを計算する。その後ステップ４４０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４４０９として、ステップ４４０８で求めた点2mPとステップ４４０７で求めた点(2m+１)Pを点の組(2mP, (2m+１)P)として、点の組(mP, (m+１)P)の代わりに格納する。その後ステップ４４０４へ戻る。ここで、点２mP、点(２m+１)P、点mP及び点(m+１)Pは全て射影座標において表されている。ステップ４４１０として、射影座標により表された点の組(mP, (m+１)P)から点mPと点(m+１)Pの加算mP+(m+１)Pを行ない、点(2m+１)Pを計算する。その後ステップ４４１１へ行く。ここで、加算mP+(m+１)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４４１１として、射影座標により表された点の組(mP, (m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ４４１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４４１１として、ステップ４４１０で求めた点(2m+１)Pとステップ４４１１で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ４４０４へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ４４１５として、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上でアフィン座標で表された点に変換し、それぞれmP＝（xm,ym）及び(m+1)P＝（xm+1,ym+1）とあらためて置き直す。ここで、ym及びym+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。その後ステップ４４１３へ行く。ステップ４４１３として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP＝（xm,ym）よりxmをxdとして、ワイエルシュトラス型楕円曲線上でアフィン座標で表された点(m+1)P＝（xm+1,ym+1）よりxm+1をxd+1として、出力する。また上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【０３９１】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1＝１ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ４４０７において加算の計算量、ステップ４４０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ４４１０において加算の計算量、ステップ４４１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ４４０４、ステップ４４０５、ステップ４４０６、ステップ４４０７、ステップ４４０８、ステップ４４０９乃至はステップ４４０４、ステップ４４０５、ステップ４４０６、ステップ４４１０、ステップ４４１１、ステップ４４１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ４４０２での２倍算の計算量とステップ４４１６でのモンゴメリ型楕円曲線上への点への変換に必要な計算量及びステップ４４１５でのワイエルシュトラス型楕円曲線上の点への必要な計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋４Ｍ―２Ｓ＋Ｉとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度、計算量Ｉは、Ｉ＝４０Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋４２．４）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１５１４Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６４０Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０３９２】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd, xd+1,xd=1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０３９３】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は４Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋４２．４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋８７．２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５５９Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０３９４】
第２０の実施例は、入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Ｐから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点（ｘd,ｙd）を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値ｄと与えられたワイエルシュトラス型楕円曲線上の点Ｐからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP＝(x,y)とおく。高速スカラー倍計算部２０２は、Xd、Zd、Xd+1、Zd+1、ｘ及びｙを座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd、Zd、Xd+1、Zd+1、ｘ及びｙよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標ｘd及びｙdの復元を行なう。スカラー倍計算装置１０３はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【０３９５】
次に図４０により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【０３９６】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP＝(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X１,Y１,Z１)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xdMon,ydMon)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０３９７】
ステップ４００１においてx×Zdが計算され、レジスタＴ1に格納される。ステップ４００２においてXd+Ｔ1が計算される。ここでレジスタＴ1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタＴ2に格納される。ステップ４００３においてXd-Ｔ1が計算され、ここでレジスタＴ1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタＴ3に格納される。ステップ４００４においてレジスタＴ3の２乗が計算される。ここでレジスタＴ3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ４００５においてＴ3×Xd+1が計算される。ここでレジスタＴ3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ４００６において2A×Zdが計算され、レジスタＴ1に格納される。ステップ４００７においてＴ2+Ｔ1が計算される。ここでレジスタＴ2にはxZd+XdがレジスタＴ1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタＴ2に格納される。ステップ４００８においてx×Xdが計算され、レジスタＴ4に格納される。ステップ４００９においてＴ4+Zdが計算される。ここでレジスタＴ4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタＴ4に格納される。ステップ４０１０においてＴ2×Ｔ4が計算される。ここでレジスタＴ2にはxZd+Xd+2AZdがレジスタＴ4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタＴ2に格納される。ステップ４０１１においてＴ1×Zdが計算される。ここでレジスタＴ1には2AZdが格納されており、したがって2AZd2が計算される。その結果がレジスタＴ1に格納される。ステップ４０１２においてＴ2-Ｔ1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタＴ1には2AZd2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が計算される。その結果がレジスタＴ2に格納される。ステップ４０１３においてＴ2×Zd+1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)が計算される。その結果がレジスタＴ2に格納される。ステップ４０１４においてＴ2-Ｔ3が計算される。ここでレジスタＴ2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)がレジスタＴ3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタＴ2に格納される。ステップ４０１５において2B×yが計算され、レジスタＴ1に格納される。ステップ４０１６においてＴ1×Zdが計算される。ここでレジスタＴ1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタＴ1に格納される。ステップ４０１７においてＴ1×Zd+1が計算される。ここでレジスタＴ1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタＴ1に格納される。ステップ４０１８においてＴ1×Zdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタＴ3に格納される。ステップ４０１９においてＴ3×sが計算される。ここでレジスタＴ3には2ByZdZd+1Zdが格納されており、したがって2ByZdZd+1Zdsが計算される。その結果���レジスタＴ3に格納される。ステップ４０２０においてレジスタＴ3の逆元が計算される。ここでレジスタＴ3には2ByZdZd+1Zdsが格納されており、したがって1/2ByZdZd+1 Zdsが計算される。その結果がレジスタＴ3に格納される。ステップ４０２１においてＴ2×Ｔ3が計算される。ここでレジスタＴ2にはZd+1((xZd+Xd+2AZd)  (xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2がレジスタＴ3には1/2ByZdZd+1Zdsがそれぞれ格納されており、したがって{Zd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2}  /2ByZdZd+1Zdsが計算される。その結果がレジスタydに格納される。ステップ４０２２においてＴ1×Xdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Xdが計算される。その結果がレジスタＴ1に格納される。ステップ４０２３においてＴ1×Ｔ3が計算される。ここでレジスタＴ1には2ByZdZd+1XdがレジスタＴ3には1/2ByZdZd+1Zdsがそれぞれ格納されており、したがって2ByZdZd+1Xd/2ByZdZd+1Zds(＝Xd/Zds)が計算される。その結果がＴ1に格納される。ステップ４０２４においてＴ1+αが計算される。ここでレジスタＴ1にはXd/Zdsが格納されており、したがって(Xd/Zds)+αが計算される。その結果がxdに格納される。したがってレジスタxdには(Xd/Zds)+αの値が格納されている。ydにはステップ４０２１において{Zd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2}/2ByZdZd+1Zdsが格納され、その後更新が行なわれないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線におけるアフィン座標(ｘd,ｙd)の値が全て復元されている。
【０３９８】
上記手順により与えられたｘ、ｙ、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(ｘd,ｙd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数３８を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、BydMon 2=xdMon 3+AxdMon 2+xdMon及びBy2=x3+Ax2+xをみたす。 数３８に代入し、BydMon 2及びBy2を消去し、式を整理すると、
【０３９９】
【数７６】
0003794266.tif 000073
【０４００】
を得る。ここでｘdMon＝Xd/Zd、ｘd+1＝Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【０４０１】
【数７７】
0003794266.tif 000074
【０４０２】
ｘdMon＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdMonの分母と通分することにより、
【０４０３】
【数７８】
0003794266.tif 000075
【０４０４】
となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd=s-1ydMon及びxd=s-1xdMon+αの関係がある。結果として数７９、数８０を得る。
【０４０５】
【数７９】
0003794266.tif 000076
【０４０６】
【数８０】
0003794266.tif 000077
【０４０７】
ここで、xd,ydは図４０より与えられる。したがって、ワイエルシュトラス型楕円曲線におけるアフィン座標(xd,yd)の値が全て復元されていることになる。
【０４０８】
上記手順はステップ４００１、ステップ４００５、ステップ４００６、ステップ４００８、ステップ４０１０、ステップ４０１１、ステップ４０１３、ステップ４０１５、ステップ４０１６、ステップ４０１７、ステップ４０１８、ステップ４０１９、ステップ４０２１、ステップ４０２２及びステップ４０２３において有限体上の乗算の計算量を必要とする。また、ステップ４００４において有限体上の２乗算の計算量を必要とする。また、ステップ４０２０において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ及び有限体上の逆元演算の計算量をＩとすると、上記手順は１５Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ、Ｉ＝４０Ｍと仮定すると座標復元の計算量は５５．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０４０９】
尚、上記手順をとらなくても、上記計算式により与えられたxd，ydの値が計算できればxd，ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるA乃至はBの値やモンゴメリ型楕円曲線への変換パラメタであるｓを小さくとることにより、ステップ４００６乃至はステップ４０１５における乗算の計算量やステップ４０１９における乗算の計算量を削減することができる。
【０４１０】
次に図８により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力する高速スカラー倍計算部の処理について説明する。
【０４１１】
第２０実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第９実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記アルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０４１２】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１５Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―３．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋５２．２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５２４Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０４１３】
第２１の実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点,(XdW,YdW,ZdW)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点d(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部２０２は、Xd，Zd，Xd+1，Zd+1，x及びyを座標復元部２０３に与える。座標復元部２０３は与えられた座標の値Xd，Zd，Xd+1，Zd+1，x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(XdW,YdW,ZdW)の座標XdW、YdW及びZdWの復元を行なう。スカラー倍計算装置１０３は射影座標において完全に座標が与えられたスカラー倍点(XdW,YdW,ZdW)を計算結果として出力する。
【０４１４】
次に図４１により、座標x，y，Xd，Zd，Xd+1，Zd+1が与えられた場合にXdW、YdW、ZdWを出力する座標復元部の処理について説明する。
【０４１５】
座標復元部２０３では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上で射影座標おいて完全な座標が与えられたスカラー倍点(XdW,YdW,ZdW)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【０４１６】
ステップ４１０１においてx×Zdが計算され、レジスタＴ1に格納される。ステップ４１０２においてXd+Ｔ1が計算される。ここでレジスタＴ1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタＴ2に格納される。ステップ４１０３においてXd-Ｔ1が計算され、ここでレジスタＴ1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタＴ3に格納される。ステップ４１０４においてレジスタＴ3の２乗が計算される。ここでレジスタＴ3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ４１０５においてＴ3×Xd+1が計算される。ここでレジスタＴ3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタＴ3に格納される。ステップ４１０６において2A×Zdが計算され、レジスタＴ1に格納される。ステップ４１０７においてＴ2+Ｔ1が計算される。ここでレジスタＴ2にはxZd+XdがレジスタＴ1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタＴ2に格納される。ステップ４１０８においてx×Xdが計算され、レジスタＴ4に格納される。ステップ４１０９においてＴ4+Zdが計算される。ここでレジスタＴ4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタＴ4に格納される。ステップ４１１０においてＴ2×Ｔ4が計算される。ここでレジスタＴ2にはxZd+Xd+2AZdがレジスタＴ4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタＴ2に格納される。ステップ４１１１においてＴ1×Zdが計算される。ここでレジスタＴ1には2AZdが格納されており、したがって2AZd2が計算される。その結果がレジスタＴ1に格納される。ステップ４１１２においてＴ2-Ｔ1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタＴ1には2AZd2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が計算される。その結果がレジスタＴ2に格納される。ステップ４１１３においてＴ2×Zd+1が計算される。ここでレジスタＴ2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)が計算される。その結果がレジスタＴ2に格納される。ステップ４１１４においてＴ2-Ｔ3が計算される。ここでレジスタＴ2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)がレジスタＴ3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタYdWに格納される。ステップ４１１５において2B×yが計算され、レジスタＴ1に格納される。ステップ４１１６においてＴ1×Zdが計算される。ここでレジスタＴ1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタＴ1に格納される。ステップ４１１７においてＴ1×Zd+1が計算される。ここでレジスタＴ1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタＴ1に格納される。ステップ４１１８においてＴ1×Zdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタＴ3に格納される。ステップ４１１９においてＴ3×sが計算される。ここでレジスタＴ3には2ByZdZd+1Zdが格納されており、したがって2ByZdZd+1Zdsが計算される。その結果��レジスタZdWに格納される。ステップ４１２０においてＴ1×Xdが計算される。ここでレジスタＴ1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Xdが計算される。その結果がレジスタＴ1に格納される。ステップ４１２１においてZdW×αが計算される。ここでレジスタZdWには2ByZdZd+1Zdsが格納されており、したがって2ByZdZd+1Zdsαが計算される。その結果がＴ3に格納される。ステップ４１２２においてＴ1+Ｔ3が計算される。ここでレジスタＴ1には2ByZdZd+1XdがレジスタＴ3には2ByZdZd+1Zdsαがそれぞれ格納されており、したがって2ByZdZd+1Xd +2ByZdZd+1Zdsαが計算される。その結果がXdW に格納される。したがってレジスタxdには2ByZdZd+1Xd+2ByZdZd+1Zdsαの値が格納されている。YdWにはステップ４１１４においてZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd2)-Xd+1(Xd-xZd)2が格納され、その後更新が行なわれないので、その値が保持されている。ZdWにはステップ４１１９において2ByZdZd+1Zdsが格納され、その後更新が行なわれないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線における射影座標(XdW,YdW,ZdW)の値が全て復元されている。
【０４１７】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(XdW,YdW,ZdW)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd2=xd3+Axd2+xd及びBy2=x3+Ax2+xをみたす。 数６に代入し、Byd2及びBy2を消去し、式を整理すると、数６４をを得る。ここでｘd＝Xd/Zd、ｘd+1＝Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、数６５を得る。ｘd＝Xd/Zdであるが、逆元演算の回数を減らす目的でｙdの分母と通分することにより、数６６となる。その結果として、
【０４１８】
【数８１】
0003794266.tif 000078
【０４１９】
とし、
【０４２０】
【数８２】
0003794266.tif 000079
【０４２１】
【数８３】
0003794266.tif 000080
【０４２２】
とすると(X'd,Y'd,Z'd)=(Xd,Yd,Zd)となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをsαとして、YdW=Y'd、XdW=X'd+αZdW、及びZdW=sZ'dという関係がある。結果として次の式を得る。
【０４２３】
【数８４】
0003794266.tif 000081
【０４２４】
【数８５】
0003794266.tif 000082
【０４２５】
【数８６】
0003794266.tif 000083
【０４２６】
により更新すればよい。ここで、XdW,YdW,ZdWは図４１の処理により与えられている。したがって、ワイエルシュトラス型楕円曲線における射影座標(XdW,YdW,ZdW)の値が全て復元されていることになる。
【０４２７】
上記手順はステップ４１０１、ステップ４１０５、ステップ４１０６、ステップ４１０８、ステップ４１１０、ステップ４１１１、ステップ４１１３、ステップ４１１５、ステップ４１１６、ステップ４１１７、ステップ４１１８、ステップ４１１９、ステップ４１２０及びステップ４１２１において有限体上の乗算の計算量を必要とする。また、ステップ４１０４において有限体上の２乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳとすると、上記手順は１４Ｍ＋Ｓの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍと仮定すると座標復元の計算量は１４．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０４２８】
尚、上記手順をとらなくても、上記計算式により与えられたXdW、YdW、ZdWの値が計算できればXdW、YdW、ZdWの値が復元できる。また、ワイエルシュトラス型楕円曲線においてアフィン座標におけるスカラー倍点dPをdP=(xdW,ydW)とすると、xdW、ydWが上記計算式により与えられる値を取るようにXdW、YdW、ZdWの値を選択し、その値が計算できればXdW、YdW、ZdWが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるA乃至はBの値やモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ４１０６、ステップ４１１５乃至はステップ４１１９における乗算の計算量を削減することができる。
【０４２９】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムについて説明する。
【０４３０】
第２１実施例の高速スカラー倍計算部２０２の高速スカラー倍計算方法として、第９実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部２０２において上記アルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd，Zd，Xd+1，Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０４３１】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は１４Ｍ＋Ｓであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ―３．６）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋１１．２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１４８３Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ１６００Ｍであり、これと比べて必要となる計算量は削減されている。
【０４３２】
第２２実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置１０３が、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xdW,ydW)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置１０３に入力すると高速スカラー倍計算部２０２がそれを受け取る。高速スカラー倍計算部２０２は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P＝(x,y)と共にその情報を座標復元部２０３に与える。座標復元部２０３は与えられた座標の値xd、xd+1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xdW,ydW)の座標ydWの復元を行なう。スカラー倍計算装置１０３はワイエルシュトラス型楕円曲線上でアフィン座標において完全に座標が与えられたスカラー倍点(xdW,ydW)を計算結果として出力する。
【０４３３】
次に図４２により、座標x、y、xd、xd+1が与えられた場合に、xdW、ydWを出力する座標復元部の処理について説明する。
【０４３４】
座標復元部２０３では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP＝(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P＝(xd+1,yd+1)の座標のうちxd+1、スカラー倍計算装置１０３に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xdW,ydW)を出力する。
【０４３５】
ステップ４２０１においてxd×xが計算され、レジスタＴ1に格納される。ステップ４２０２においてＴ1+1が計算される。ここでレジスタＴ1にはxdxが格納されており、したがってxdx+1が計算される。その結果がレジスタＴ1に格納される。ステップ４２０３においてxd+xが計算され、レジスタＴ2に格納される。ステップ４２０４においてＴ2+2Aが計算される。ここでレジスタＴ2にはxd+xが格納されており、したがってxd+x+2Aが計算される。その結果がレジスタＴ2に格納される。ステップ４２０５においてＴ1×Ｔ2が計算される。ここでレジスタＴ1にはxdx+1がレジスタＴ2にはxd+x+2Aがそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)が計算される。その結果がレジスタＴ1に格納される。ステップ４２０６においてＴ1-2Aが計算される。ここでレジスタＴ1には(xdx+1)(xd+x+2A)が格納されており、したがって(xdx+1)(xd+x+2A)-2Aが計算される。その結果がレジスタＴ1に格納される。ステップ４２０７においてxd-xが計算され、レジスタＴ2に格納される。ステップ４２０８においてＴ2の２乗が計算される。ここでレジスタＴ2にはxd-xが格納されており、したがって(xd−x)2が計算される。その結果がレジスタＴ2に格納される。ステップ４２０９においてＴ2×xd+1が計算される。ここでレジスタＴ2には(xd−x)2が格納されており、したがって(xd−x)2xd+1が計算される。その結果がレジスタＴ2に格納される。ステップ４２１０においてＴ1-Ｔ2が計算される。ここでレジスタＴ1には(xdx+1)(xd+x+2A)-2AがレジスタＴ2には(xd−x)2xd+1がそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1が計算される。その結果がレジスタＴ1に格納される。ステップ４２１１において2B×yが計算され、レジスタＴ2に格納される。ステップ４２１２においてＴ2の逆元が計算される。ここでレジスタＴ2には2Byが格納されており、したがって1/2Byが計算される。その結果がレジスタＴ2に格納される。ステップ４２１３においてＴ1×Ｔ2が計算される。ここでレジスタＴ1には(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1がレジスタＴ2には1/2Byがそれぞれ格納されており、したがって{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Byが計算される。その結果がレジスタT1に格納される。ステップ４２１４においてＴ1×(1/s)が計算される。ここでレジスタＴ1には{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Byが格納されており、したがって{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Bysが計算される。その結果がレジスタydWに格納される。ステップ４２１５においてxd×(1/s)が計算され、レジスタT1に格納される。ステップ４２１６においてＴ1+αが計算される。ここでレジスタＴ1にはxd/sが格納されており、したがって(xd/s)+αが計算される。その結果がレジスタxdWに格納される。したがってレジスタxdWには(xd/s)+αが格納されている。レジスタydWはステップ４２１４において{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Bysが格納され、その後更新されないので、その値が保持されている。
【０４３６】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数６を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd2=xd3+Axd2+xd及びBy2=x3+Ax2+xをみたす。 数６に代入し、Byd2及びBy2を消去し、式を整理すると、数６４を得る。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、ydW=s-1yd及びxdW=s-1xd+αの関係がある。結果として数８７、数６３を得る。
【０４３７】
【数８７】
0003794266.tif 000084
【０４３８】
ここで、xdW，ydWは図４２により与えられる。したがって、アフィン座標(xdW, ydW)の値は全て復元されていることになる。
【０４３９】
上記手順はステップ４２０１、ステップ４２０５、ステップ４２０９、ステップ４２１１、ステップ４２１３、ステップ４２１４及びステップ４２１５において有限体上の乗算の計算量を必要とする。また、ステップ４２０８において有限体上の２乗算の計算量を必要とする。さらにステップ４２１２において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、２乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をＭ、有限体上の２乗算の計算量をＳ、有限体上の逆元演算の計算量をＩとすると、上記手順は７Ｍ＋Ｓ＋Ｉの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが１６０ビットであれば、高速スカラー倍計算の計算量はおおよそ１５００Ｍ弱と見積もられる。Ｓ＝０．８Ｍ及びＩ＝４０Ｍと仮定すると座標復元の計算量は４７．８Ｍであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【０４４０】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydWの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるA乃至はBやモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ４２０６、ステップ４２１１、ステップ４２１４乃至はステップ４２１５における乗算の計算量を削減することができる。
【０４４１】
次に図４５により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd，xd+1を出力する高速スカラー倍計算部の処理について説明する。
【０４４２】
高速スカラー倍計算部２０２では、スカラー倍計算装置１０３に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1を出力する。ステップ４５１６として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ４５０１として、変数Ｉに初期値１を代入する。ステップ４５０２として、点Pの２倍点2Pを計算する。ここで点Pは射影座標において(x,ｙ,1)として表し、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて２倍点2Pを計算する。ステップ４５０３として、スカラー倍計算装置１０３に入力された楕円曲線上の点Pとステップ４５０２で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ４５０４として、変数Ｉとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ４５１５へ行く。一致しなければステップ４５０５へ行く。ステップ４５０５として、変数Ｉを１増加させる。ステップ４５０６として、スカラー値のＩ番目のビットの値が０であるか１であるかを判定する。そのビットの値が０であればステップ４５０６へ行く。そのビットの値が１であればステップ４５１０へ行く。ステップ４５０７として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ４５０８へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４５０８として、射影座標により表された点の組(mP,(m+1)P)から点mPの２倍算2(mP)を行ない、点2mPを計算する。その後ステップ４５０９へ行く。ここで、２倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４５０９として、ステップ４５０８で求めた点2mPとステップ４５０７で求めた点(2m+１)Pを点の組(2mP,(2m+１)P)として、点の組(mP,(m+１)P)の代わりに格納する。その後ステップ４５０４へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ４５１０として、射影座標により表された点の組(mP, (m+１)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ４５１１へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ４５１１として、射影座標により表された点の組(mP,(m+１)P)から点(m+１)Pの２倍算2((m+１)P)を行ない、点(2m+2)Pを計算する。その後ステップ４５１２へ行く。ここで、２倍算2((m+１)P)は、モンゴメリ型楕円曲線の射影座標における２倍算の公式を用いて計算される。ステップ４５１１として、ステップ４５１０で求めた点(2m+１)Pとステップ４５１１で求めた点(2m+2)Pを点の組((2m+１)P, (2m+2)P)として、点の組(mP,(m+1)Pの代わりに格納する。その後ステップ４５０４へ戻る。ここで、点(2m+１)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ４５１５として、射影座標で表された点mP=(Xm,Ym,Zm)よ��Xm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P＝(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び２倍算の公式ではY座標を求める事ができないので、求まっていない。X d，Z d，X d+1，Z d+1より、xd=XdZd+1/ZdZd+1, xd+1=ZdXd+1/ZdZd+1としてxd，xd+1を求める。その後ステップ４５１３へ行く。ステップ４５１３として、xd，xd+1を出力する。上記手順により、ｍとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【０４４３】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより３Ｍ＋２Ｓとなる。ここでＭは有限体上の乗算の計算量、Ｓは有限体上の２乗算の計算量である。モンゴメリ型楕円曲線の射影座標における２倍算の公式の計算量は、３Ｍ＋２Ｓである。スカラー値のＩ番目のビットの値が０であれば、ステップ４５０７において加算の計算量、ステップ４５０８において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要となる。スカラー値のＩ番目のビットの値が１であれば、ステップ４５１０において加算の計算量、ステップ４５１１において２倍算の計算量が必要となる。すなわち６Ｍ＋４Ｓの計算量が必要である。いずれの場合においても６Ｍ＋４Ｓの計算量が必要である。ステップ４５０４、ステップ４５０５、ステップ４５０６、ステップ４５０７、ステップ４５０８、ステップ４５０９乃至はステップ４５０４、ステップ４５０５、ステップ４５０６、ステップ４５１０、ステップ４５１１、ステップ４５１２の繰り返しの回数は、（スカラー値dのビット長）―１回となるので、ステップ４５０２での２倍算の計算量及びステップ４５１５でのアフィン座標への変換の計算量を考慮に入れると、全体の計算量は（６Ｍ＋４Ｓ）ｋ＋３Ｍ―２Ｓ＋Ｉとなる。ここでｋはスカラー値dのビット長である。一般的には、計算量Ｓは、Ｓ＝０．８Ｍ程度、計算量ＩはＩ＝４０Ｍ程度と見積もられるので、全体の計算量はおおよそ（９．２ｋ＋４１．４）Ｍとなる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、上記手順のアルゴリズムの計算量はおおよそ１５１３Ｍとなる。スカラー値dのビットあたりの計算量としてはおよそ９．２Ｍとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology  Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ１０Ｍと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算方法の計算量はおおよそ１６４０Ｍとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【０４４４】
尚、高速スカラー倍計算部２０２において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd，xd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【０４４５】
スカラー倍計算装置１０３における座標復元部２０３の座標復元に必要な計算量は７Ｍ＋Ｓ＋Ｉであり、これは高速スカラー倍計算部２０２の高速スカラー倍計算に必要な計算量の（９．２ｋ＋４１．４）Ｍとに比べてはるかに小さい。したがって、スカラー倍計算装置１０３のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。Ｉ＝４０Ｍ、Ｓ＝０．８Ｍと仮定すると、この計算量はおおよそ（９．２ｋ＋８９．２）Ｍと見積もることができる。例えばスカラー値dが１６０ビット（ｋ＝１６０）であれば、このスカラー倍計算に必要な計算量は１５６１Ｍとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ１６４０Ｍであり、これと比べて必要となる計算量は削減されている。
【０４４６】
以上、図１に示した暗号／復号処理装置を復号化処理を行う装置として第１から第２２の実施例を説明したが、同様に暗号化処理を行う装置としても利用できる。その場合には、既に説明したように暗号／復号処理装置のスカラー倍計算部１０３は、既に説明した楕円曲線上の点Ｑ、乱数ｋによるスカラー倍点と、公開鍵ａＱと乱数ｋによるスカラー倍点を出力する。このとき、実施例１から２２で説明したスカラー値ｄを乱数ｋ、楕円曲線上の点Ｐを楕円曲線上の点Ｑ、公開鍵ａＱとして同様の処理を行うことにより、それぞれのスカラー倍点を求めることができる。
【０４４７】
尚、図１に示した暗号／復号処理装置は、暗号化、復号化の両方を行えるように示したが、暗号化の処理のみ、あるいは復号化の処理のみを行えるように構成してもよい。
【０４４８】
また、第１から第２２の実施例で説明した処理については、コンピュータ読み取り可能な記憶媒体に格納されたプログラムであってもよい。この場合は、そのプログラムを図１の記憶部へ読み込み、処理部であるＣＰＵなどの演算装置がこのプログラムに従って、処理を行う。
【０４４９】
図２７は、図１の暗号処理システムにおける秘密情報を用いた暗号処理において、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法の実施例を示す図である。図３３は、図２７のスカラー倍計算方法の実施例における処理の流れを示すフローチャートである。
【０４５０】
図３３において、図２７のスカラー倍計算装置２７０１は以下のようにして、スカラー値及びワイエルシュトラス型楕円曲線上の点から、ワイエルシュトラス型楕円曲線上で完全な座標が与えられたスカラー倍点を計算し出力する。スカラー値及びワイエルシュトラス型楕円曲線上の点をスカラー倍計算装置２７０１に入力すると、楕円曲線変換部２７０４がワイエルシュトラス型楕円曲線上の点をモンゴメリ型楕円曲線上の点に変換する。（ステップ３３０１）。高速スカラー倍計算部２７０２はスカラー倍計算装置２７０１に入力されたスカラー値及び楕円曲線変換部２７０４が変換したモンゴメリ型楕円曲線上の点を受け取る（ステップ３３０２）。高速スカラー倍計算部３３０２は受け取ったスカラー値とモンゴメリ型楕円曲線上の点からモンゴメリ型楕円曲線上のスカラー倍点の座標の一部の値を計算し（ステップ３３０３）、その情報を座標復元部２７０３に与える（ステップ３３０４）。座標復元部２７０３は与えられたモンゴメリ型楕円曲線上のスカラー倍点の情報及び楕円曲線変換部２７０４により変換されたモンゴメリ型楕円曲線上の点よりモンゴメリ型楕円曲線上のスカラー倍点の座標の復元を行なう（ステップ３３０５）。楕円曲線逆変換部２７０５は、座標復元部２７０３により復元されたモンゴメリ型楕円曲線上のスカラー倍点をワイエルシュトラス型楕円曲線上のスカラー倍点に変換する（ステップ３３０６）。スカラー倍計算装置２７０１はワイエルシュトラス型楕円曲線上で完全に座標が与えられたスカラー倍点を計算結果として出力する。（ステップ３３０７）。
【０４５１】
スカラー倍計算装置２７０１における高速スカラー倍計算部２７０２及び座標復元部２７０３が実行するモンゴメリ型楕円曲線上のスカラー倍計算は、上述した第１〜第５及び第１４〜第１６実施例で説明したモンゴメリ型楕円曲線上におけるスカラー倍計算方法がそのまま適応される。したがってこのスカラー倍計算は、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法である。
【０４５２】
図２２は、図１の本実施形態の暗号処理システムを署名作成装置として利用する場合の構成を示す。図１の暗号処理部１０２は、図２２の署名作成装置２２０１では署名部２２０２になる。図２８は、図２２の署名作成装置における処理の流れを示すフローチャートである。図２９は、図２２の署名作成装置における処理の流れを示すシーケンス図である。
【０４５３】
図２８において、署名作成装置２２０１は以下のようにして、与えられたメッセージ２２０５から署名が付随しているメッセージ２２０６を出力する。メッセージ２２０５を署名作成装置２２０１に入力すると署名部２２０２がそれを受け取る（ステップ２８０１）。署名部２２０２はスカラー倍計算部２２０３に受け取ったメッセージ２２０５に応じて楕円曲線上の点を与える（ステップ２８０２）。スカラー倍計算部２２０３は秘密情報格納部２２０４より秘密情報であるスカラー値を受け取る（ステップ２８０３）。スカラー倍計算部２２０３は受け取った楕円曲線上の点とスカラー値よりスカラー倍点を計算し（ステップ２８０４）、そのスカラー倍点を署名部２２０２に送る（ステップ２８０５）。署名部２２０２はスカラー倍計算部２２０３より受け取ったスカラー倍点をもとにして署名作成処理を行なう（ステップ２８０６）。その結果を署名が付随したメッセージ２２０６として出力する（ステップ２８０７）。
【０４５４】
上記処理手順を図２９のシーケンス図を用いて説明する。まず、署名部２９０１（図２２の２２０２）の実行する処理について説明する。署名部２９０１は、入力メッセージを受け取る。署名部２９０１は、入力メッセージをもとに楕円曲線上の点を選び、スカラー倍計算部２９０２に楕円曲線上の点を与え、そしてスカラー倍計算部２９０２からスカラー倍点を受け取る。署名部２９０１は、受け取ったスカラー倍点を用いて署名作成処理を行ない、その結果を出力メッセージとして出力する。
【０４５５】
次にスカラー倍計算部２９０２（図２２の２２０３）の実行する処理について説明する。スカラー倍計算部２９０２は、署名部２９０１より楕円曲線上の点を受け取る。スカラー倍計算部２９０２は、秘密情報格納部２９０３よりスカラー値を受け取る。スカラー倍計算部２９０２は、受け取った楕円曲線上の点及びスカラー値から、完全な座標を与え且つ高速なスカラー倍計算方法により、スカラー倍点を計算し、署名部２９０１にスカラー倍点を送る。
【０４５６】
最後に秘密情報格納部２９０３（図２２の２２０４）の実行する処理について説明する。秘密情報格納部２９０３は、スカラー倍計算部２９０２がスカラー倍を計算できるように、スカラー値をスカラー倍計算部２９０２に送る。
【０４５７】
スカラー倍計算部２２０３が実行するスカラー倍計算は、上述した第１〜第２２実施例で説明したものがそのまま適応される。したがってこのスカラー倍計算は、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法である。そのため署名部２２０２において、署名作成処理を行なう際に、スカラー倍点の完全な座標を用いることができ、その上高速に実行できる。
【０４５８】
図２３は、図１の本実施形態の暗号処理システムを復号化装置として利用する場合の構成を示す。図１の暗号処理部１０２は、図２３の復号化装置２３０１では復号部２３０２になる。図３０は、図２３の復号化装置における処理の流れを示すフローチャートである。図３１は、図２３の復号化装置における処理の流れを示すシーケンス図である。
【０４５９】
図３０において、復号装置２３０１は以下のようにして、与えられたメッセージ２３０５から復号化されたメッセージ２３０６を出力する。メッセージ２３０５を復号装置２３０１に入力すると復号部２３０２がそれを受け取る（ステップ３００１）。復号部２３０２はスカラー倍計算部２３０３に受け取ったメッセージ２３０５に応じて楕円曲線上の点を与える（ステップ３００２）。スカラー倍計算部２３０３は秘密情報格納部２３０４より秘密情報であるスカラー値を受け取る（ステップ３００３）。スカラー倍計算部２３０３は受け取った楕円曲線上の点とスカラー値よりスカラー倍点を計算し（ステップ３００４）、そのスカラー倍点を復号部２３０２に送る（ステップ３００５）。復号部２３０２はスカラー倍計算部２３０３より受け取ったスカラー倍点をもとにして復号化処理を行なう（ステップ３００６）。その結果を復号化されたメッセージ２３０６として出力する（ステップ３００７）。
【０４６０】
上記処理手順を図３１のシーケンス図を用いて説明する。まず、復号化部３１０１（図２３の２３０２）の実行する処理について説明する。復号化部３１０１は、入力メッセージを受け取る。復号化部３１０１は、入力メッセージをもとに楕円曲線上の点を選び、スカラー倍計算部３１０２に楕円曲線上の点を与え、そしてスカラー倍計算部３１０２からスカラー倍点を受け取る。復号化部３１０１は、受け取ったスカラー倍点を用いて復号化処理を行ない、その結果を出力メッセージとして出力する。
【０４６１】
次にスカラー倍計算部３１０２（図２３の２３０３）の実行する処理について説明する。スカラー倍計算部３１０２は、復号化部３１０１より楕円曲線上の点を受け取る。スカラー倍計算部３１０２は、秘密情報格納部３１０３よりスカラー値を受け取る。スカラー倍計算部３１０２は、受け取った楕円曲線上の点及びスカラー値から、完全な座標を与え且つ高速なスカラー倍計算方法により、スカラー倍点を計算し、復号化部３１０１にスカラー倍点を送る。
【０４６２】
最後に秘密情報格納部３１０３（図２３の２３０４）の実行する処理について説明する。秘密情報格納部３１０３は、スカラー倍計算部３１０２がスカラー倍を計算できるように、スカラー値をスカラー倍計算部３１０２に送る。
【０４６３】
スカラー倍計算部２３０３が実行するスカラー倍計算は、上述した第１〜第２２実施例で説明したものがそのまま適応される。したがってこのスカラー倍計算は、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法である。そのため復号部２３０２において、復号化処理を行なう際に、スカラー倍点の完全な座標を用いることができ、その上高速に実行できる。
【０４６４】
【発明の効果】
以上述べたように本発明によれば、暗号処理システムにおける秘密情報を用いた暗号処理において用いられるスカラー倍計算が高速化されており、暗号処理の高速化が計れる。また、スカラー倍点の座標を完全に与えることができるので、全ての暗号処理を行なうことができる。
【図面の簡単な説明】
【図１】本発明の暗号処理システムの構成図である。
【図２】本発明の実施例におけるスカラー倍計算方法及び装置における処理の流れを示す図である。
【図３】図１の暗号処理システムでの処理の流れを示すシーケンス図である。
【図４】本発明の第１、第２、第１４及び第１５実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図５】本発明の第３及び第４実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図６】本発明の第５実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図７】本発明の第６、第７及び第８実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図８】本発明の第９、第１０、第２０及び第２１実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図９】本発明の第２実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１０】本発明の第１１及び第１２実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図１１】本発明の第１実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１２】本発明の第３実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１３】本発明の第４実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１４】本発明の第６実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１５】本発明の第７実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１６】本発明の第８実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１７】本発明の第９実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１８】本発明の第１０実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図１９】本発明の第１１実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図２０】本発明の第１２実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図２１】本発明の第１３実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図２２】本発明の実施の形態に係る署名作成装置の構成図である。
【図２３】本発明の実施の形態に係る復号化装置の構成図である。
【図２４】本発明の第１３実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図２５】図２のスカラー倍計算装置におけるスカラー倍計算方法を示すフローチャートである。
【図２６】本発明の第５実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図２７】本発明の実施例におけるスカラー倍計算方法及び装置における処理の流れを示す図である。
【図２８】図２２の署名作成装置における署名作成方法を示すフローチャートである。
【図２９】図２２の署名作成装置における処理の流れを示すシーケンス図である。
【図３０】図２３の復号化装置における復号化方法を示すフローチャートである。
【図３１】図２３の復号化装置における処理の流れを示すシーケンス図である。
【図３２】図１の暗号処理システムにおける暗号処理方法を示すフローチャートである。
【図３３】図２７のスカラー倍計算装置におけるスカラー倍計算方法を示すフローチャートである。
【図３４】本発明の第１４実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図３５】本発明の第１５実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図３６】本発明の第１６実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図３７】本発明の第１７実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図３８】本発明の第１８実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【鯥鎼볯醀鳦몙飦꺁곧醼볯龮雦设臣릂苣ꦃ菣趀꣨鞮雦閳臣誁臣讂뫥馨뻥莅雦閳苣몤臣閃菣벃菣ꎃ菣袃鯥ꞁ臣讂胣㲂牢ਾ胣뎛볯邼胣겜駧躘臣견볯邼껥붖뻤꺁苣ꮂ菣벃胥袨껧릖돦ꮁ臣醁苣Ꞻ꣦ꦾ藥릖돦銂ꓧ馁菣궃菣膃菣벃菣뎛臣芁苣芀戼㹲邀鯥钼볯醀鳦몙飦꺁곧銼볯龮雦设臣릂苣ꦃ菣趀꣨鞮雦閳臣誁臣讂뫥馨뻥莅雦閳苣몤臣閃菣벃菣ꎃ菣袃鯥ꞁ臣讂胣㲂牢ਾ胣뎛볯銼胣겜駧躘臣견볯銼껥붖뻤꺁苣ꮂ菣벃胥袨껧릖돦ꮁ臣醁苣Ꞻ꣦ꦾ藥릖돦銂ꓧ馁菣궃菣膃菣벃菣뎛臣芁苣芀戼㹲邀鯥钼볯醀鳦몙飦꺁곧醼볯龮雦设臣릂苣ꦃ菣趀꣨鞮雦閳臣誁臣讂ꯩ龀苣ꮂ菣벃胥袨껧릖돦銂ꓧ馁菣궃菣膃菣벃菣뎛臣芁苣芀戼㹲邀鯥钼볯醀鳦몙飦꺁곧醼볯膀곧醼볯誏臣견볯馼껥붖뻤꺁苣ꮂ菣벃胥袨껧릖돦ꮁ臣醁苣颫胩릂苣ꦃ菣趀꣨鞮雦閳苣몤臣閃菣벃菣ꎃ菣袃鯥ꞁ臣讂胣㲂牢ਾ胣뎛볯閼胣겜駧躘臣견볯銼껥붖뻤꺁苣ꮂ菣벃胥袨껧릖돦ꮁ臣醁苣颫胩릂苣ꦃ菣趀꣨鞮雦閳苣몤臣閃菣벃菣ꎃ菣袃鯥ꞁ臣讂胣㲂牢ਾ胣ꚬ迥꺁ꫨ躘胣㲑牢ਾ볯邼볯ₑ髦랏蟥蚐苣릂菣ꂃ戼㹲醼볯銼鞚迥ꚇ郧ꢃ戼㹲醼볯鎼릂苣ꦃ菣趀꣨鞮菩㲨牢ਾ볯邼볯ₔ꟧蚯菦놠ꃦ趴菩㲨牢ਾ볯邼볯ₕ藥鮊菣莃苣벃苣㲸牢ਾ볯邼볯ₖ蟥鮊菣莃苣벃苣㲸牢ਾ볯邼볯ₑ苣ꮂ菣벃胥袨껧薣뷧㲮牢ਾ볯邼볯ₒꯩ龀苣ꮂ菣벃胥袨껧ꢃ戼㹲銼볯鎼Ꞻ꣦ꦾ藥ꢃ戼㹲銼볯邼볯ₑ뷧趐뷤邈ꏨ꺽戼㹲銼볯邼볯ₒ뷧趐菩㲨牢ਾ볯銼볯鎼릂苣ꦃ菣趀꣨鞮菩㲨牢ਾ볯銼볯钼颧꿥薃ꃥ베듧ꢃ戼㹲銼볯邼볯ₕ藥鮊菣莃苣벃苣㲸牢ਾ볯銼볯隼몇諥ꆃ菣뮂菣뢂戼㹲銼볯邼볯ₑ뻥랏賥薣뷧㲮牢ਾ볯鎼볯銼ꦾ迥ꢃ戼㹲銼볯邼볯ₓ苣ꮂ菣벃胥袨껧ꢃ戼㹲銼볯邼볯ₔ꟧蚯菦놠ꃦ趴菩㲨牢ਾ볯鎼볯閼ꖅ諥ꆃ菣뮂菣뢂戼㹲銼볯邼볯ₖ蟥鮊菣莃苣벃苣㲸牢ਾ볯鞼볯醼릂苣ꦃ菣趀꣨鞮ꏨ꺽戼㹲銼볯邼볯ₒꯩ龀苣ꮂ菣벃胥袨껧ꢃ戼㹲銼볯邼볯ₓ뫥馨뻥莅菩㲨牢ਾ볯鞼볯钼閥蛥늛럧覤迦ꢃ戼㹲銼볯邼볯ₕꗦ蚆鯦骷胩覤迦ꢃ⼼䥄㹖㰊䥄㹖䐼噉邀鯥醼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㔵⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醀⼼䥄㹖 †††††㰠䥄㹖愼栠敲㵦〢〰㜳㐹㘲⸶楴≦〾〰㜳㐹㘲⸶楴쉦゠〰㔱㰶愯㰾䐯噉ਾ††††䐼噉邀鯥鎼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㜵⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醀⼼䥄㹖 †††††㰠䥄㹖愼栠敲㵦〢〰㜳㐹㘲⸶楴≦〾〰㜳㐹㘲⸶楴쉦゠〰㔱㰸愯㰾䐯噉ਾ††††䐼噉邀鯥閼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㤵⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醀⼼䥄㹖 †††††㰠䥄㹖愼栠敲㵦〢〰㜳㐹㘲⸶楴≦〾〰㜳㐹㘲⸶楴쉦゠〰㘱㰰愯㰾䐯噉ਾ††††䐼噉邀鯥鞼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰ㄶ⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醀⼼䥄㹖 †††††㰠䥄㹖愼栠敲㵦〢〰㜳㐹㘲⸶楴≦〾〰㜳㐹㘲⸶楴쉦゠〰㘱㰲愯㰾䐯噉ਾ††††䐼噉邀鯥馼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㌶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯邼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㐶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㔶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯銼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㘶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鎼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㜶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯钼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㠶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯閼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㤶⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯隼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰〷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鞼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰ㄷ⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯颼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㈷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯馼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㌷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯邼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㐷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㔷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯銼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㘷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鎼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㜷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯钼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㠷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯閼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㤷⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯隼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰〸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鞼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰ㄸ⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯颼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㈸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯馼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㌸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯邼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㐸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㔸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯銼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㘸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鎼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㜸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯钼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㠸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯閼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㤸⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯隼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰〹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鞼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰ㄹ⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯颼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㈹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯馼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㌹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯邼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㐹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯醼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㔹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯銼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㘹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯鎼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㜹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯钼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㠹⼼㹡⼼䥄㹖 †††㰠䥄㹖胣뎛볯閼胣㲑䐯噉ਾ††††††䐼噉㰾⁡牨晥∽〰㌰㤷㈴㘶琮晩㸢〰㌰㤷㈴㘶琮晩ꃂ〰㄰㤹⼼㹡⼼䥄㹖 †††㰠䐯噉ਾ⼼潢祤ਾ⼼瑨汭ਾ