(57)【特許請求の範囲】
【請求項１】
暗号処理装置において実行する素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理方法であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
【請求項２】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理ステップとして実行することを特徴とする請求項１に記載の楕円曲線暗号処理方法。
【請求項３】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記繰り返し演算処理ステップは、
算出済みの４点の集合Ｇｉ＋１から、次の４点の集合Ｇｉを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ０を算出する処理ステップとして実行し、４点の集合Ｇ０を構成する１点をＷ＝ｋＰ＋ｌＱとして算出することを特徴とする請求項１に記載の楕円曲線暗号処理方法。
【請求項４】
暗号処理装置において実行する素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理方法であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
【請求項５】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理ステップとして実行することを特徴とする請求項４に記載の楕円曲線暗号処理方法。
【請求項６】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記繰り返し演算処理ステップは、
算出済みの３点の集合Ｇ'ｉ＋１から、次の３点の集合Ｇ'ｉを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ'１を算出する処理ステップとして実行し、さらに３点の集合Ｇ'１からＷ＝ｋＰ＋ｌＱを算出することを特徴とする請求項４に記載の楕円曲線暗号処理方法。
【請求項７】
暗号処理装置において実行する２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理方法であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
【請求項８】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理ステップとして実行することを特徴とする請求項７に記載の楕円曲線暗号処理方法。
【請求項９】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記繰り返し演算処理ステップは、
算出済みの４点の集合Ｇｉ＋１から、次の４点の集合Ｇｉを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ０を算出する処理ステップとして実行し、４点の集合Ｇ０を構成する１点をＷ＝ｋＰ＋ｌＱとして算出することを特徴とする請求項７に記載の楕円曲線暗号処理方法。
【請求項１０】
暗号処理装置において実行する２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理方法であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法。
【請求項１１】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理ステップとして実行することを特徴とする請求項１０に記載の楕円曲線暗号処理方法。
【請求項１２】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記繰り返し演算処理ステップは、
算出済みの３点の集合Ｇ'ｉ＋１から、次の３点の集合Ｇ'ｉを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ'１を算出する処理ステップとして実行し、さらに３点の集合Ｇ'１からＷ＝ｋＰ＋ｌＱを算出することを特徴とする請求項１０に記載の楕円曲線暗号処理方法。
【請求項１３】
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
【請求項１４】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理として実行する構成であることを特徴とする請求項１３に記載の楕円曲線暗号処理装置。
【請求項１５】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの４点の集合Ｇｉ＋１から、次の４点の集合Ｇｉを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ０を算出する処理ステップとして実行し、４点の集合Ｇ０を構成する１点をＷ＝ｋＰ＋ｌＱとして算出する処理を実行する構成であることことを特徴とする請求項１３に記載の楕円曲線暗号処理装置。
【請求項１６】
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出処理を実行し、
前記ビット値検出処理において検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理を実行する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
【請求項１７】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理として実行する構成であることを特徴とする請求項１６に記載の楕円曲線暗号処理装置。
【請求項１８】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの３点の集合Ｇ'ｉ＋１から、次の３点の集合Ｇ'ｉを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ'１を算出する処理ステップとして実行し、さらに３点の集合Ｇ'１からＷ＝ｋＰ＋ｌＱを算出することを特徴とする請求項１６に記載の楕円曲線暗号処理装置。
【請求項１９】
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
【請求項２０】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理として実行する構成であることを特徴とする請求項１９に記載の楕円曲線暗号処理装置。
【請求項２１】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの４点の集合Ｇｉ＋１から、次の４点の集合Ｇｉを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ０を算出する処理ステップとして実行し、４点の集合Ｇ０を構成する１点をＷ＝ｋＰ＋ｌＱとして算出する処理を実行する構成であることことを特徴とする請求項１９に記載の楕円曲線暗号処理装置。
【請求項２２】
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出処理を実行し、
前記ビット値検出処理において検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理を実行する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置。
【請求項２３】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理として実行する構成であることを特徴とする請求項２２に記載の楕円曲線暗号処理装置。
【請求項２４】
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍｉＰ＋ｎｉＱ
ｍｉＰ＋（ｎｉ＋１）Ｑ
（ｍｉ＋１）Ｐ＋ｎｉＱ
（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの３点の集合Ｇ'ｉ＋１から、次の３点の集合Ｇ'ｉを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ'１を算出する処理ステップとして実行し、さらに３点の集合Ｇ'１からＷ＝ｋＰ＋ｌＱを算出することを特徴とする請求項２２に記載の楕円曲線暗号処理装置。
【請求項２５】
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理において、前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行させることを特徴とするプログラム。
【請求項２６】
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理において、前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行させることを特徴とするプログラム。
【請求項２７】
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理において、前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行させることを特徴とするプログラム。
【請求項２８】
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理において、前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楕円曲線暗号における高速化を実現する楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラムに関する。
【０００２】
【従来の技術】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
暗号化方式には、大別して共通鍵方式、公開鍵方式がある。共通鍵方式は、対称暗号方式ともよばれ、発信者、受信者の双方で共通の鍵を保有する。共通鍵方式の代表的な方法として、ＤＥＳ（Data Encryption Standard）がある。ＤＥＳアルゴリズムの特徴は、暗号化と復号とをほぼ同じアルゴリズムで実行可能なことである。
【０００４】
この共通鍵暗号に対して、発信者と受信者の鍵を異なるものとした構成が公開鍵方式または非対称暗号方式である。公開鍵暗号方式では、暗号化、復号化に共通の鍵を用いる共通鍵暗号方式と異なり、秘密に保つ必要のある秘密鍵は、特定の１人が持てばよいため鍵の管理において有利である。ただし、公開鍵暗号方式は共通鍵暗号方式に比較してデータ処理速度が遅く、一般には、秘密鍵の配送、ディジタル署名等のデータ量の少ない対象に多く用いられている。公開鍵暗号方式の代表的なものにはＲＳＡ（Rivest-Shamir-Adleman）暗号がある。これは非常に大きな２つの素数（例えば１５０桁）の積を用いるものであり、大きな２つの素数（例えば１５０桁）の積の素因数分解する処理の困難さを利用している。
【０００５】
公開鍵暗号方式では、不特定多数に公開鍵を使用可能とする構成であり、配布する公開鍵が正当なものであるか否かを証明する証明書、いわゆる公開鍵証明書を使用する方法が多く用いられている。例えば、利用者Ａが公開鍵、秘密鍵のペアを生成して、生成した公開鍵を認証局に対して送付して公開鍵証明書を認証局から入手する。利用者Ａは公開鍵証明書を一般に公開する。不特定のユーザは公開鍵証明書から所定の手続きを経て公開鍵を入手して文書等を暗号化して利用者Ａに送付する。利用者Ａは秘密鍵を用いて暗号化文書等を復号する等のシステムである。また、利用者Ａは、秘密鍵を用いて文書等に署名を付け、不特定のユーザが公開鍵証明書から所定の手続きを経て公開鍵を入手して、その署名の検証を行なうシステムである。
【０００６】
公開鍵証明書は、公開鍵暗号方式における認証局あるいは発行局（ＣＡ：Certificate AuthorityまたはＩＡ：Issuer Authority）が発行する証明書であり、ユーザが自己のＩＤ、公開鍵等を認証局に提出することにより、認証局側が認証局のＩＤや有効期限等の情報を付加し、さらに認証局による署名を付加して作成される証明書である。
【０００７】
公開鍵暗号方式としては、上述したＲＳＡ方式の他にｎが素数の場合の離散対数問題の困難さを利用した離散対数暗号が知られている。米国標準のディジタル署名方式として知られるＤＳＡ（Digital Signature Standard）には、この離散対数暗号が用いられている。また、V.Miller, N.Koblitzによって提案された楕円曲線暗号（ＥＣＣ：Ellipitic Curve Cryptography）が、安全性および高速性の点で昨今注目されている。楕円曲線暗号は、１６０ｂｉｔの鍵でＲＳＡ１０２４ｂｉｔの鍵と同等の強度を持つと言われる。
【０００８】
一般に、楕円曲線暗号（Elliptic Curve Cryptography）は、素体上の楕円曲線ｙ2＝ｘ3＋ａｘ＋ｂ（４ａ3＋２７ｂ2≠０）や、２の拡大体上の楕円曲線ｙ2＋ｘｙ＝ｘ3＋ａｘ2＋ｂ（ｂ≠０）などを用いる。これらの曲線上の点に無限遠点（Ｏ）を加えた集合は、加法に関して有限群をなし、無限遠点（Ｏ）はその単位元となる。以下、この有限群上の点の加法を＋で表す。この有限群上の異なる２点Ｐ，Ｑの加算Ｐ＋Ｑを「点の加算」、点Ｐと点Ｐの加算Ｐ＋Ｐ＝２Ｐを「点の２倍算」と呼ぶ。また、点Ｐをｋ回加算した点Ｐ＋Ｐ＋…＋Ｐ＝ｋＰを求める演算を「点のスカラー倍算」と呼ぶ。
【０００９】
点のスカラー倍算は、点の加算、および点の２倍算を用いて構成できることが知られている。素体上の楕円曲線や２の拡大体上の楕円曲線上のアフィン座標系（ｘ，ｙ）や射影座標（Ｘ，Ｙ，Ｚ）における点の加算法、点の２倍算法、および点のスカラー倍算法は、ＩＥＥＥ  P1363/D13 Standard Specifications for Public Key Cryptographyに記されている。
【００１０】
また、素因数分解を行なうために導入された素体上のモンゴメリ型楕円曲線Ｂｙ2＝ｘ3＋Ａｘ2＋ｘ（（Ａ2−４）Ｂ≠０）を用いて点のスカラー倍算法を高速に行なう方法（P.Montgomery “Speeding the Pollard and Elliptic Curve Method of Factorization”,Mathematics of Computation,Vol.48,No.177,pp.243-264(1987)）が提案されている。以下、この手法を素体上の楕円曲線におけるモンゴメリ法と呼ぶ。
【００１１】
この手法によれば、アフィン座標系において、異なる２点：Ｐ0（ｘ0，ｙ0），Ｐ1（ｘ1，ｙ1）の加算点を点Ｐ2＝Ｐ1＋Ｐ0とすると、Ｐ3（ｘ3，ｙ3）＝Ｐ1（ｘ1，ｙ1）−Ｐ0（ｘ0，ｙ0）が既知であれば、
ｘ2＝（ｘ0ｘ1−１）2／（ｘ3（ｘ0−ｘ1）2）
により、ｘ2を求めることができる。
【００１２】
また、点Ｐ0（ｘ0，ｙ0）の２倍算点を点Ｐ2（ｘ2，ｙ2）＝２Ｐ0とすると、
ｘ2＝（ｘ02−１）2／（４ｘ0（ｘ02＋Ａｘ0＋１））
により、ｘ2を求めることができる。このように、ｙ座標を用いないで、点の加算法、および点の２倍算法を構成することができる。
【００１３】
ここで、一般に素体上の除算は素体上の乗算に比べると計算コストが高いため、ｘ＝Ｘ／Ｚ，ｙ＝Ｙ／Ｚとして射影座標系（Ｘ，Ｙ，Ｚ）に変換すると、モンゴメリ型楕円曲線は、
ＢＹ2Ｚ＝Ｘ3＋ＡＸ2Ｚ＋ＸＺ2
となる。
【００１４】
このとき、異なる２点、Ｐ0（Ｘ0，Ｙ0，Ｚ0）、Ｐ1（Ｘ1，Ｙ1，Ｚ1）の加算点をＰ2（Ｘ2，Ｙ2，Ｚ2）＝Ｐ1（Ｘ1，Ｙ1，Ｚ1）＋Ｐ0（Ｘ0，Ｙ0，Ｚ0）とすると、Ｐ3（Ｘ3，Ｙ3，Ｚ3）＝Ｐ1（Ｘ1，Ｙ1，Ｚ1）−Ｐ0（Ｘ0，Ｙ0，Ｚ0）が既知であれば、
【００１５】
Ｘ2＝Ｚ3（（Ｘ0−Ｚ0）（Ｘ1＋Ｚ1）＋（Ｘ0＋Ｚ0）（Ｘ1−Ｚ1））2
Ｚ2＝Ｘ3（（Ｘ0−Ｚ0）（Ｘ1＋Ｚ1）−（Ｘ0＋Ｚ0）（Ｘ1−Ｚ1））2
【００１６】
により、（Ｘ2，Ｚ2）を求めることができる。また、点Ｐ0（Ｘ0，Ｙ0，Ｚ0）の２倍算点を点Ｐ2（Ｘ2，Ｙ2，Ｚ2）＝２Ｐ0とすると、Ｃ＝（Ａ＋２）／４として、
【００１７】
Ｘ2＝（Ｘ0＋Ｚ0）2（Ｘ0−Ｚ0）2
Ｚ2＝（（Ｘ0＋Ｚ0）2−（Ｘ0−Ｚ0）2）（（Ｘ0−Ｚ0）2＋Ｃ（（（Ｘ0＋Ｚ0）2−（Ｘ0−Ｚ0）2）））
【００１８】
により、（Ｘ2，Ｚ2）を求めることができる。このように、Ｙ座標を用いないで、点の加算法、および点の２倍算法を構成することができる。
【００１９】
素体上のモンゴメリ型楕円曲線において、以上の点の加算法および点の２倍算法を用いて点のスカラー倍算ｋＰを構成するためには、点の加算において２点の差分となる点が既知である必要があることに注意して、以下のようにする。初期の２点を｛Ｔ０，Ｔ１｝＝｛Ｐ，２Ｐ｝とし、ｋを２進展開する。ｋの最上位ビットの次ビットから最下位ビットまで、そのビットが０の場合には、｛Ｔ０，Ｔ１｝から｛２Ｔ０，Ｔ０＋Ｔ１｝を求めて新たな｛Ｔ０，Ｔ１｝とし、そのビットが１の場合は、｛Ｔ０，Ｔ１｝から｛Ｔ０＋Ｔ１，２Ｔ１｝を求めて新たな｛Ｔ０，Ｔ１｝とすることを繰り返す。すると最後のＴ０がｋＰとなる。このとき、Ｔ１−Ｔ０＝Ｐが常に成立している。
【００２０】
楕円曲線暗号を用いた電子署名方式としては、ＥＣＤＳＡ（Elliptic Curve Digital Signature Algorithm）が代表的である。ＥＣＤＳＡの署名検証処理においては、異なる２点のスカラー倍点の加算点ｋＰ＋ｌＱのｘ座標を求める計算が必要となる。
【００２１】
素体上の楕円曲線におけるモンゴメリ法を用いて、ｋＰ＋ｌＱのｘ座標を計算するためには以下のようにする。まず、前述した手法に従って、素体上の楕円曲線におけるモンゴメリ法でｋＰおよびｌＱを求める。その後、点ｋＰと点ｌＱを加算するが、２点の差分の点が既知ではないため、前述の点の加算法を適用することができない。そのため、ｋＰ，ｌＱそれぞれのｙ座標またはＹ座標を復元してから、別の加算法を用いてｋＰ＋ｌＱのｘ座標を求める必要がある。
【００２２】
また、２の拡大体上の楕円曲線ｙ2＋ｘｙ＝ｘ3＋ａｘ2＋ｂ（ｂ≠０）において、素体上のモンゴメリ型楕円曲線と同様の手法で高速に点のスカラー倍を行なう手法（J.Lopez and R. Dahab,“Fast Multiplication on Elliptic Curves over GF(2m) without Precomputation”Cryptographic Hardware and Embedded Systems, LNCS 1717,pp.316-327(1999)）が提案されている。以下、これを２の拡大体上の楕円曲線におけるモンゴメリ法とよぶ。この手法においても、ｋＰ＋ｌＱのｘ座標を計算するためには、ｋＰ，ｌＱそれぞれのｙ座標またはＹ座標を復元してから、ｋＰ＋ｌＱのｘ座標を求める必要がある。
【００２３】
【発明が解決しようとする課題】
上述のように、素体上の楕円曲線におけるモンゴメリ法および２の拡大体上の楕円曲線におけるモンゴメリ法では点のスカラー倍算を高速に計算できるが、ＥＣＤＳＡの署名生成時に必要なｋＰ＋ｌＱの計算ではｋＰ，ｌＱのｙ座標またはＹ座標を復元する処理が必要となる。
【００２４】
本発明は、上述の素体上の楕円曲線におけるモンゴメリ法および２の拡大体上の楕円曲線におけるモンゴメリ法における問題点に鑑みてなされたものであり、２つのスカラー倍算ｋＰ，ｌＱを別々に実行せずに楕円曲線上の４点を計算しながらｋＰ＋ｌＱの演算処理を同時に実行することで楕円曲線暗号処理における高速化を実現した楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラムを提供することを目的とする。
【００２５】
さらに、本発明は、上述の素体上の楕円曲線におけるモンゴメリ法および２の拡大体上の楕円曲線において、ｋＰ＋ｌＱの演算処理を行なう際に、楕円曲線上の３点を計算しながらｋＰ＋ｌＱの演算処理を同時に実行することで楕円曲線暗号処理における高速化を実現した楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラムを提供することを目的とする。
【００２６】
本発明の第１の側面は、
暗号処理装置において実行する素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理方法であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【００２７】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理ステップとして実行することを特徴とする。
【００２８】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
４点の集合Ｇiは、前記点Ｐ，点Ｑを用いて、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
として示される４点であり、
前記繰り返し演算処理ステップは、
算出済みの４点の集合Ｇi+1から、次の４点の集合Ｇiを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ0を算出する処理ステップとして実行し、４点の集合Ｇ0を構成する１点をＷ＝ｋＰ＋ｌＱとして算出することを特徴とする。
【００２９】
さらに、本発明の第２の側面は、
暗号処理装置において実行する素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理方法であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【００３０】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理ステップとして実行することを特徴とする。
【００３１】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
３点の集合Ｇ’iは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋi-1，ｌi-1）の組合わせに基づいて選択される３点であり、
前記繰り返し演算処理ステップは、
算出済みの３点の集合Ｇ’i+1から、次の３点の集合Ｇ’iを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ’1を算出する処理ステップとして実行し、さらに３点の集合Ｇ’1からＷ＝ｋＰ＋ｌＱを算出することを特徴とする。
【００３２】
さらに、本発明の第３の側面は、
暗号処理装置において実行する２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理方法であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【００３３】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理ステップとして実行することを特徴とする。
【００３４】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
４点の集合Ｇiは、前記点Ｐ，点Ｑを用いて、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
として示される４点であり、
前記繰り返し演算処理ステップは、
算出済みの４点の集合Ｇi+1から、次の４点の集合Ｇiを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ0を算出する処理ステップとして実行し、４点の集合Ｇ0を構成する１点をＷ＝ｋＰ＋ｌＱとして算出することを特徴とする。
【００３５】
さらに、本発明の第４の側面は、
暗号処理装置において実行する２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理方法であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出において、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを有し、
前記初期点算出ステップは、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行することを特徴とする楕円曲線暗号処理方法にある。
【００３６】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記初期点算出ステップは、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理ステップとして実行することを特徴とする。
【００３７】
さらに、本発明の楕円曲線暗号処理方法の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
３点の集合Ｇ’iは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋi-1，ｌi-1）の組合わせに基づいて選択される３点であり、
前記繰り返し演算処理ステップは、
算出済みの３点の集合Ｇ’i+1から、次の３点の集合Ｇ’iを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ’1を算出する処理ステップとして実行し、さらに３点の集合Ｇ’1からＷ＝ｋＰ＋ｌＱを算出することを特徴とする。
【００３８】
さらに、本発明の第５の側面は、
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【００３９】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理として実行する構成であることを特徴とする。
【００４０】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
４点の集合Ｇiは、前記点Ｐ，点Ｑを用いて、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの４点の集合Ｇi+1から、次の４点の集合Ｇiを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ0を算出する処理ステップとして実行し、４点の集合Ｇ0を構成する１点をＷ＝ｋＰ＋ｌＱとして算出する処理を実行する構成であることことを特徴とする。
【００４１】
さらに、本発明の第６の側面は、
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出処理を実行し、
前記ビット値検出処理において検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理を実行する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【００４２】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理として実行する構成であることを特徴とする。
【００４３】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
３点の集合Ｇ’iは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋi-1，ｌi-1）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの３点の集合Ｇ’i+1から、次の３点の集合Ｇ’iを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ’1を算出する処理ステップとして実行し、さらに３点の集合Ｇ’1からＷ＝ｋＰ＋ｌＱを算出することを特徴とする。
【００４４】
さらに、本発明の第７の側面は、
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【００４５】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
４点の集合Ｇｉは、前記点Ｐ，点Ｑを用いて、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として設定する処理として実行する構成であることを特徴とする。
【００４６】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、
前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
４点の集合Ｇiは、前記点Ｐ，点Ｑを用いて、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
として示される４点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの４点の集合Ｇi+1から、次の４点の集合Ｇiを算出する処理を繰り返し実行し、最終的に４点の集合Ｇ0を算出する処理ステップとして実行し、４点の集合Ｇ0を構成する１点をＷ＝ｋＰ＋ｌＱとして算出する処理を実行する構成であることことを特徴とする。
【００４７】
さらに、本発明の第８の側面は、
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理を実行する楕円曲線暗号処理装置であり、
前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出を実行する演算処理手段を有し、該演算処理手段は、
前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出処理を実行し、
前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出処理を実行し、
前記ビット値検出処理において検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理を実行する構成を有し、
前記演算処理手段は、前記初期点算出処理において、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理として実行することを特徴とする楕円曲線暗号処理装置にある。
【００４８】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるときの上位ｔ〜ｉの上位ビット値をｍｉ＝（ｋｔ…ｋｉ）２，ｎｉ＝（ｌｔ…ｌｉ）２としたとき、
３点の集合Ｇ'ｉは、
前記点Ｐ，点Ｑを用いて示される、下式、
Ｔ０［ｉ］＝ｍｉＰ＋ｎｉＱ
Ｔ１［ｉ］＝ｍｉＰ＋（ｎｉ＋１）Ｑ
Ｔ２［ｉ］＝（ｍｉ＋１）Ｐ＋ｎｉＱ
Ｔ３［ｉ］＝（ｍｉ＋１）Ｐ＋（ｎｉ＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋｉ−１，ｌｉ−１）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記初期点算出処理において、
ｉ＝ｔ＋１として、ｍｔ＋１＝ｋｔ＋１＝０、ｎｔ＋１＝ｌｔ＋１＝０から、上記式により算出される４点としての、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として設定する処理として実行する構成であることを特徴とする。
【００４９】
さらに、本発明の楕円曲線暗号処理装置の一実施態様において、前記ｋ，ｌの２進表現データの各ビットがｋ：（ｋt…ｋ0）2，ｌ：（ｌt…ｌ0）2であるときの上位ｔ〜ｉの上位ビット値をｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2としたとき、
３点の集合Ｇ’iは、
前記点Ｐ，点Ｑを用いて示される、下式、
ｍiＰ＋ｎiＱ
ｍiＰ＋（ｎi＋１）Ｑ
（ｍi＋１）Ｐ＋ｎiＱ
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
の４点から、前記２進表現データのｋ，ｌのビット値（ｋi-1，ｌi-1）の組合わせに基づいて選択される３点であり、
前記演算処理手段は、
前記繰り返し演算処理において、
算出済みの３点の集合Ｇ’i+1から、次の３点の集合Ｇ’iを算出する処理を繰り返し実行し、最終的に３点の集合Ｇ’1を算出する処理ステップとして実行し、さらに３点の集合Ｇ’1からＷ＝ｋＰ＋ｌＱを算出することを特徴とする。
【００５０】
さらに、本発明の第９の側面は、
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理において、前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【００５１】
さらに、本発明の第１０の側面は、
素体上のモンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘを適用した楕円曲線暗号処理において、前記モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該モンゴメリ（Montgomery）型楕円曲線Ｂｙ２＝ｘ３＋Ａｘ２＋ｘ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【００５２】
さらに、本発明の第１１の側面は、
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理において、前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記点Ｐと点Ｑに基づいて初期点とする４点の集合Ｇｔ＋１を計算する初期点算出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点４点の集合Ｇｔ＋１に基づく次の４点の集合Ｇｔの算出関係式を選択し、選択された関係式に従って次の４点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行し、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記４点の集合Ｇｔ＋１を、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【００５３】
さらに、本発明の第１２の側面は、
２の拡大体上の楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを適用した楕円曲線暗号処理において、前記楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｐのスカラー量（ｋ）倍の点：ｋＰと、該楕円曲線ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂ上の点：Ｑのスカラー量（ｌ）倍の点：ｌＱとの加算点：ｋＰ＋ｌＱの算出処理をコンピュータ・システム上で実行せしめるプログラムであって、前記プログラムは、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データの各ビットが、ｋ：（ｋｔ…ｋ０）２，ｌ：（ｌｔ…ｌ０）２であるとしたとき、ｋ，ｌの各ビット値の組み合わせを検出するビット値検出ステップと、
暗号処理演算部において、前記スカラー量ｋ，ｌの２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて、初期点とする３点の集合Ｇ'ｔ＋１を前記Ｐ，Ｑを用いて算出する初期点算出ステップと、
暗号処理演算部において、前記ビット値検出ステップにおいて検出したｋ，ｌの２進表現データのビット値の組合わせ（ｋｔ，ｌｔ）に応じて、前記初期点３点の集合Ｇ'ｔ＋１に基づく次の３点の集合Ｇ'ｔの算出関係式を選択し、選択された関係式に従って次の３点の算出処理を、前記２進表現データのｋまたはｌのビット数ｔ＋ｌに応じて繰り返し実行、最終的にｋＰ＋ｌＱを算出する繰り返し演算処理ステップとを実行させ、
前記初期点算出ステップにおいては、前記３点の集合Ｇ'ｔを、
Ｔ０［ｔ＋１］＝Ｏ（無限遠点）
Ｔ１［ｔ＋１］＝Ｑ
Ｔ２［ｔ＋１］＝Ｐ
Ｔ３［ｔ＋１］＝Ｐ＋Ｑ
の４点から、前記２進表現データのｋ，ｌの最上位ビット値（ｋｔ，ｌｔ）の組合わせに基づいて選択される３点として算出する処理ステップとして実行させることを特徴とするプログラムにある。
【００５４】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供されるコンピュータ・プログラムである。
【００５５】
このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。コンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の他の側面と同様の作用効果を得ることができるのである。
【００５６】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００５７】
【発明の実施の形態】
本発明の楕円曲線暗号処理方法および楕円曲線暗号処理装置、すなわち、素体上のモンゴメリ型楕円曲線、および２の拡大体上の楕円曲線において異なる２点のスカラー倍点の加算点：ｋＰ＋ｌＱを同時に計算する構成について、以下説明する。なお、以下の説明においては、素体上のモンゴメリ型楕円曲線、および２の拡大体上の楕円曲線において異なる２点のスカラー倍点の加算点：ｋＰ＋ｌＱを同時に計算する方法をスカラー倍同時計算方法と呼ぶ。
【００５８】
上述の従来技術の欄で説明したモンゴメリ法によるスカラー倍算は要約すると次のような計算法であると言える。すなわち、従来のモンゴメリ法によるスカラー倍算ｋＰ（ｋ＝（ｋt…ｋ0）2，ｋt＝１）では、ｍi＝（ｋt…ｋi）2に対して、常にｍiＰと（ｍi＋１）Ｐの２点を計算しながら演算を進めていく方式である。
【００５９】
［第１実施例］
本発明に係る第１実施例について説明する。本実施例構成においては、楕円曲線における異なる２点のスカラー倍点の加算点：ｋＰ＋ｌＱに含まれるスカラー量ｋ，ｌの２進表現を（ｋt…ｋ0）2，（ｌt…ｌ0）2とし、ｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2、（ただし、ｋt＝１またはｌt＝１）としたとき、楕円曲線上の４点の集合Ｇiを以下のように定義する。
【００６０】
【数１】
Ｇi＝｛ｍiＰ＋ｎiＱ，
ｍiＰ＋（ｎi＋１）Ｑ，
（ｍi＋１）Ｐ＋ｎiＱ，
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
【００６１】
このとき、（ｋi，ｌi）＝（０，０）の場合、ｍi＝２ｍi+1，ｎi＝２ｎi+1となるから、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係が下式（２）に基づいて求められる。
【００６２】
【数２】
ｍiＰ＋ｎiＱ＝２（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
……式（２）
【００６３】
また、（ｋi，ｌi）＝（０，１）の場合、ｍi＝２ｍi+1，ｎi＝２ｎi+1＋１となるから、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係が下式（３）に基づいて求められる。
【００６４】
【数３】
ｍiＰ＋ｎiＱ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ））＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝２（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（３）
【００６５】
また、（ｋi，ｌi）＝（１，０）の場合、ｍi＝２ｍi+1＋１，ｎi＝２ｎi+1となるから、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係が下式（４）に基づいて求められる。
【００６６】
【数４】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝２（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
……式（４）
【００６７】
また、（ｋi，ｌi）＝（１，１）の場合、ｍi＝２ｍi+1＋１，ｎi＝２ｎi+1＋１となるから、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係が下式（５）に基づいて求められる。
【００６８】
【数５】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ））＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝２（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）
……式（５）
【００６９】
以上の各式（２）、（３）、（４）、（５）に基づいて、Ｇi+1からＧiを求めることができる。
【００７０】
ここで、
Ｔ0［ｉ］＝ｍiＰ＋ｎiＱ
Ｔ1［ｉ］＝ｍiＰ＋（ｎi＋１）Ｑ
Ｔ2［ｉ］＝（ｍi＋１）Ｐ＋ｎiＱ
Ｔ3［ｉ］＝（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ
として、
Ｇi＝｛Ｔ0［ｉ］，Ｔ1［ｉ］，Ｔ2［ｉ］，Ｔ3［ｉ］｝
と表現する。
【００７１】
ｍt+1＝０、ｎt+1＝０であるから、Ｇiの初期値Ｇt+1を、
Ｔ0［ｔ＋１］＝Ｏ（無限遠点）
Ｔ1［ｔ＋１］＝Ｑ
Ｔ2［ｔ＋１］＝Ｐ
Ｔ3［ｔ＋１］＝Ｐ＋Ｑとおいて、
図１のフローに従った処理を実行しｋＰ＋ｌＱ（＝Ｗ）を求める。
【００７２】
以下、図１のフローに従って本発明の楕円曲線暗号処理方法を適用した処理について説明する。
【００７３】
まず、ステップＳ１０１において、Ｐ，Ｑ，ｋ，ｌ，ｒを入力する。次に、ステップＳ１０２、Ｓ１０３において、ｋＰが無限遠点（Ｏ）である場合についての判定を行なう。
【００７４】
具体的には、ステップＳ１０２において、点Ｐが無限遠点（Ｏ）であると判定された場合には、ｋＰは無限遠点（Ｏ）となるから、Ｗ＝ｌＱとなり、ｌＱの計算を行なうためにステップＳ１０８へ進む。同様に、ステップＳ１０３において、ｋが０と判定された場合には、ｋＰは無限遠点（Ｏ）となるから、Ｗ＝ｌＱとなり、ｌＱの計算を行なうためにステップＳ１０８へ進む。ステップＳ１０８では、ＱをＰに、ｌをｋに代入してｌＱをｋＰの計算に変換し、ステップＳ１１１へ進む。
【００７５】
次に、ステップＳ１０４、Ｓ１０５において、ｌＱが無限遠点（Ｏ）である場合についての判定を行なう。
【００７６】
具体的には、ステップＳ１０４において、点Ｑが無限遠点（Ｏ）であると判定された場合には、ｌＱは無限遠点（Ｏ）となるから、Ｗ＝ｋＰとなり、ｋＰの計算を行なうためにステップＳ１１１へ進む。同様に、ステップＳ１０５において、ｌが０と判定された場合には、ｌＱは無限遠点（Ｏ）となるから、Ｗ＝ｋＰとなり、ｋＰの計算を行なうためにステップＳ１１１へ進む。
【００７７】
ステップＳ１０６では、Ｐ＝Ｑかを判定する。Ｐ＝Ｑであれば、Ｗ＝ｋＰ＋ｌＱ＝（ｋ＋ｌ）Ｐとなるから、ステップＳ１０９において、ｋ＝ｋ＋ｌｍｏｄｒとして、（ｋ＋ｌ）ＰをｋＰの計算に変換し、ステップＳ１１１へ進む。ステップＳ１０７では、Ｐ＝−Ｑかを判定する。Ｐ＝−Ｑであれば、Ｗ＝ｋＰ＋ｌＱ＝（ｋ−ｌ）Ｐとなるから、ステップＳ１１０において、ｋ＝ｋ−ｌｍｏｄｒとして、（ｋ−ｌ）ＰをｋＰの計算に変換し、ステップＳ１１１へ進む。
【００７８】
ステップＳ１１１では、ステップＳ１０２〜Ｓ１０７において「Ｙｅｓ」と判定されている場合においては、ｋＰ＋ｌＱの計算は、ステップＳ１０８〜Ｓ１１０において、ｋＰの計算に変換されているから、Ｐ，ｋを入力としてスカラー倍計算を行ない、出力Ｗを得て終了する。
【００７９】
ステップＳ１１２では、Ｐ，Ｑの加算点Ｐ＋Ｑを求める。ステップＳ１１３では、ｋを２進展開し、ステップＳ１１４ではｌを２進展開する。このとき、ｋt＝１、または、ｌt＝１である。ステップＳ１１５ではＧiの初期値Ｇt+1を
Ｔ0［ｔ＋１］＝Ｏ（無限遠点）
Ｔ1［ｔ＋１］＝Ｑ
Ｔ2［ｔ＋１］＝Ｐ
Ｔ3［ｔ＋１］＝Ｐ＋Ｑとおいて、
ステップＳ１１６では、ｉ＝ｔと初期化する。
【００８０】
ステップＳ１１７〜Ｓ１２５においては、２進展開したｋ，ｌの各ビット（ｋi，ｌi）に応じてＧi+1からＧiを計算し、最終的にＧ0を求める。
【００８１】
すなわち、ステップＳ１１７で、（ｋi，ｌi）＝（０，０）と判定された場合には、前述の式（２）に従って、ステップＳ１２０において、
Ｔ0［ｉ］＝２Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ3［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ0［ｉ＋１］
とし、Ｇi+1からＧiを計算する。
【００８２】
また、ステップＳ１１８で、（ｋi，ｌi）＝（０，１）と判定された場合には、前述の式（３）に従って、ステップＳ１２１において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝２Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ3［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ1［ｉ＋１］
とし、Ｇi+1からＧiを計算する。
【００８３】
また、ステップＳ１１９で、（ｋi，ｌi）＝（１，０）と判定された場合には、前述の式（４）に従って、ステップＳ１２２において、
Ｔ0［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝２Ｔ2［ｉ＋１］
Ｔ3［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ2［ｉ＋１］
とし、Ｇi+1からＧiを計算する。
【００８４】
また、ステップＳ１１７〜Ｓ１１９でＮｏと判定された場合、すなわち、（ｋi，ｌi）＝（１，１）と判定された場合には、前述の式（５）に従って、ステップＳ１２３において、
Ｔ0［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ3［ｉ＋１］＋Ｔ2［ｉ＋１］
Ｔ3［ｉ］＝２Ｔ3［ｉ＋１］
とし、Ｇi+1からＧiを計算する。
【００８５】
ステップＳ１２４では、ｉにｉ−１を代入し、ステップＳ１２５では、ｉ≧０を判定し、ｉ≧０である場合には、ステップＳ１１７に戻り、同様の処理を繰り返し実行する。
【００８６】
ステップＳ１２５でｉ≧０がＮｏと判定された場合は、Ｇ0が算出されたことになり、ステップＳ１２６に進む。
【００８７】
モンゴメリ法を用いた点の加算においては、差分点が既知であることが必要であるが、
Ｔ1［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｑ
Ｔ2［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ
Ｔ3［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ＋Ｑ
Ｔ3［ｉ＋１］−Ｔ1［ｉ＋１］＝Ｐ
Ｔ3［ｉ＋１］−Ｔ2［ｉ＋１］＝Ｑ
により、差分点は既知となっている。
【００８８】
ここで、ｍ0＝ｋ，ｎ0＝ｌであるから、Ｔ0［０］＝ｋＰ＋ｌＱとなり、ステップＳ１２６でＷにＴ0［０］を代入して、２点のスカラー倍の加算点ｋＰ＋ｌＱ＝Ｗ＝Ｔ0［０］として終了する。
【００８９】
なお、Ｔ3［ｉ＋１］＋Ｔ0［ｉ＋１］は、Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］とすることもできる。この場合、Ｔ2［ｉ＋１］−Ｔ1［ｉ＋１］＝Ｐ−Ｑとなるため、Ｐ，Ｑの差分Ｐ−Ｑを事前に計算する必要がある。
【００９０】
上述したように、本発明の構成においては、スカラー倍算：ｋＰ＋ｌＱを、楕円上の４点の集合Ｇiを定義して実行することにより、高速に結果を出力することができる。
【００９１】
［第２実施例］
次に、第１の実施例をさらに高速化した処理構成について第２実施例として説明する。第１実施例と同様、楕円曲線における異なる２点のスカラー倍点の加算点：ｋＰ＋ｌＱに含まれるスカラー量ｋ，ｌの２進表現を（ｋt…ｋ0）2，（ｌt…ｌ0）2とし、ｍi＝（ｋt…ｋi）2，ｎi＝（ｌt…ｌi）2、（ただし、ｋt＝１またはｌt＝１）としたとき、楕円曲線上の４点の集合Ｇiを第１実施例と同様、以下のように定義する。
Ｇi＝｛ｍiＰ＋ｎiＱ，
ｍiＰ＋（ｎi＋１）Ｑ，
（ｍi＋１）Ｐ＋ｎiＱ，
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
【００９２】
このとき、（ｋi，ｌi）＝（０，０）の場合、ｍi＝２ｍi+1，ｎi＝２ｎi+1となるから、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係は、前述の式（２）、すなわち下式に基づいて求められる。
【００９３】
ｍiＰ＋ｎiＱ＝２（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
……式（２）
【００９４】
この式（２）は、以下のように変形することができる。
【００９５】
【数６】
ｍiＰ＋ｎiＱ＝２（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（６）
【００９６】
この式（６）において、Ｇi+1の要素（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑは、Ｇiを求めるためには必要のない要素である。
【００９７】
また、（ｋi，ｌi）＝（０，１）の場合、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係は前述の式（３）で示されるが、式（３）において、Ｇi+1の要素（ｍi+1＋１）Ｐ＋ｎi+1Ｑは、Ｇiを求めるためには必要のない要素である。
【００９８】
また、（ｋi，ｌi）＝（１，０）の場合、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係は前述の式（４）で示されるが、式（４）において、Ｇi+1の要素ｍi+1Ｐ＋（ｎi+1＋１）Ｑは、Ｇiを求めるためには必要のない要素である。
【００９９】
また、（ｋi，ｌi）＝（１，１）の場合、４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係は前述の式（５）で示されるが、式（５）は、以下のように変形することができる。
【０１００】
【数７】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ））＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝２（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）
……式（７）
【０１０１】
上記式（７）から明らかなように、Ｇi+1の要素ｍi+1Ｐ＋ｎi+1Ｑは、Ｇiを求めるためには必要のない要素である。
【０１０２】
上述のように、第１実施例において説明した、（ｋi，ｌi）の各場合における４点の集合Ｇi+1と、４点の集合Ｇiとの対応関係式において、Ｇi+1の要素（ｍi+1＋１−ｋi）Ｐ＋（ｎi+1＋１−ｌi）ＱをＧiを求めるためには必要のない要素として定義することができる。
【０１０３】
そこで、第１実施例で適用した４点の集合Ｇiを３点の集合Ｇ’iとして、以下の式（８）のように定義する。
【０１０４】
【数８】
Ｇ’i＝Ｇi−｛（ｍi＋１−ｋi-1）Ｐ＋（ｎi＋１−ｌi-1）Ｑ｝
……式（８）
【０１０５】
このとき、Ｇ’i+1からＧiを計算することができるから、Ｇ’i+1からＧ’iを計算することができる。ここで、Ｇ’i+1からＧ’iを計算する際には、その計算方法は、（ｋi，ｌi）に依存するが、さらに、ＧiからＧ’iを定義する際に（ｋi-1，ｌi-1）に依存するため、Ｇ’i+1からＧ’iを計算する際には、その計算方法は、（ｋi，ｌi，ｋi-1，ｌi-1）に依存する。
【０１０６】
以下、（ｋi，ｌi，ｋi-1，ｌi-1）に応じたＧ’i+1からＧ’iを計算する手法について説明する。
【０１０７】
まず、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，０，０，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ｝
となるから、前述の式（６）に基づいて、下式（９）に従って、Ｇ’i+1からＧ’iを計算する。
【０１０８】
【数９】
ｍiＰ＋ｎiＱ＝２（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
……式（９）
【０１０９】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，０，０，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（６）に基づいて、下式（１０）に従って、Ｇ’i+1からＧ’iを計算する。
【０１１０】
【数１０】
ｍiＰ＋ｎiＱ＝２（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（１０）
【０１１１】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，０，１，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+１＋１）Ｐ＋ｎi+1Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（６）に基づいて、下式（１１）に従って、Ｇ’i+1からＧ’iを計算する。
【０１１２】
【数１１】
ｍiＰ＋ｎiＱ＝２（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（１１）
【０１１３】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，０，１，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ｝
Ｇ’i＝｛ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（６）に基づいて、下式（１２）に従って、Ｇ’i+1からＧ’iを計算する。
【０１１４】
【数１２】
ｍiＰ＋（ｎi＋１）Ｑ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（１２）
【０１１５】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，１，０，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ｝
となるから、前述の式（３）に基づいて、下式（１３）に従って、Ｇ’i+1からＧ’iを計算する。
【０１１６】
【数１３】
ｍiＰ＋ｎiＱ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝２（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
……式（１３）
【０１１７】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，１，０，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（３）に基づいて、下式（１４）に従って、Ｇ’i+1からＧ’iを計算する。
【０１１８】
【数１４】
ｍiＰ＋ｎiＱ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝２（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（１４）
【０１１９】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，１，１，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（３）に基づいて、下式（１５）に従って、Ｇ’i+1からＧ’iを計算する。
【０１２０】
【数１５】
ｍiＰ＋ｎiＱ＝（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（１５）
【０１２１】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（０，１，１，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（３）に基づいて、下式（１６）に従って、Ｇ’i+1からＧ’iを計算する。
【０１２２】
【数１６】
ｍiＰ＋（ｎi＋１）Ｑ＝２（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
……式（１６）
【０１２３】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，０，０，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ｝
となるから、前述の式（４）に基づいて、下式（１７）に従って、Ｇ’i+1からＧ’iを計算する。
【０１２４】
【数１７】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝２（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
……式（１７）
【０１２５】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，０，０，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（４）に基づいて、下式（１８）に従って、Ｇ’i+1からＧ’iを計算する。
【０１２６】
【数１８】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
……式（１８）
【０１２７】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，０，１，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（４）に基づいて、下式（１９）に従って、Ｇ’i+1からＧ’iを計算する。
【０１２８】
【数１９】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝２（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
……式（１９）
【０１２９】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，０，１，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（４）に基づいて、下式（２０）に従って、Ｇ’i+1からＧ’iを計算する。
【０１３０】
【数２０】
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝２（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
……式（２０）
【０１３１】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，１，０，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ｝
となるから、前述の式（７）に基づいて、下式（２１）に従って、Ｇ’i+1からＧ’iを計算する。
【０１３２】
【数２１】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
……式（２１）
【０１３３】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，１，０，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（７）に基づいて、下式（２２）に従って、Ｇ’i+1からＧ’ｉを計算する。
【０１３４】
【数２２】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝２（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）
……式（２２）
【０１３５】
次に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，１，１，０）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋ｎiＱ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（７）に基づいて、下式（２３）に従って、Ｇ’i+1からＧ’iを計算する。
【０１３６】
【数２３】
ｍiＰ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝２（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）
……式（２３）
【０１３７】
最後に、（ｋi，ｌi，ｋi-1，ｌi-1）＝（１，１，１，１）の場合、
Ｇ’i+1＝｛ｍi+1Ｐ＋（ｎi+1＋１）Ｑ，（ｍi+1＋１）Ｐ＋ｎi+1Ｑ，（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ｝
Ｇ’i＝｛ｍiＰ＋（ｎi＋１）Ｑ，（ｍi＋１）Ｐ＋ｎiＱ，（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ｝
となるから、前述の式（７）に基づいて、下式（２４）に従って、Ｇ’i+1からＧ’iを計算する。
【０１３８】
【数２４】
ｍiＰ＋（ｎi＋１）Ｑ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（ｍi+1Ｐ＋（ｎi+1＋１）Ｑ）
（ｍi＋１）Ｐ＋ｎiＱ＝（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）＋（（ｍi+1＋１）Ｐ＋ｎi+1Ｑ）
（ｍi＋１）Ｐ＋（ｎi＋１）Ｑ＝２（（ｍi+1＋１）Ｐ＋（ｎi+1＋１）Ｑ）
……式（２４）
【０１３９】
以上の各式により、（ｋi，ｌi，ｋi-1，ｌi-1）の取り得るすべての場合について、Ｇ’i+1からＧ’iが算出できる。
【０１４０】
第２実施例を適用してＷ＝ｋＰ＋ｌＱを求める処理について、図３以下に示すフローチャートを用いて説明する。なお、当フローの概略は、Ｇ’iをＧ’i＝｛Ｔ0［ｉ］，Ｔ1［ｉ］，Ｔ2［ｉ］｝と表現し、ｍt+1＝０、ｎt+1＝０により、Ｇ’i+1の初期値を定めてＧ’iを計算してＷ＝ｋＰ＋ｌＱを求める処理である。
【０１４１】
まず、ステップＳ２０１において、Ｐ，Ｑ，ｋ，ｌ，ｒを入力する。次に、ステップＳ２０２、Ｓ２０３において、ｋＰが無限遠点（Ｏ）である場合についての判定を行なう。
【０１４２】
具体的には、ステップＳ２０２において、点Ｐが無限遠点（Ｏ）であると判定された場合には、ｋＰは無限遠点（Ｏ）となるから、Ｗ＝ｌＱとなり、ｌＱの計算を行なうためにステップＳ２０８へ進む。同様に、ステップＳ２０３において、ｋが０と判定された場合には、ｋＰは無限遠点（Ｏ）となるから、Ｗ＝ｌＱとなり、ｌＱの計算を行なうためにステップＳ２０８へ進む。ステップＳ２０８では、ＱをＰに、ｌをｋに代入してｌＱをｋＰの計算に変換し、ステップＳ２１１へ進む。
【０１４３】
次に、ステップＳ２０４、Ｓ２０５において、ｌＱが無限遠点（Ｏ）である場合についての判定を行なう。
【０１４４】
具体的には、ステップＳ２０４において、点Ｑが無限遠点（Ｏ）であると判定された場合には、ｌＱは無限遠点（Ｏ）となるから、Ｗ＝ｋＰとなり、ｋＰの計算を行なうためにステップＳ２１１へ進む。同様に、ステップＳ２０５において、ｌが０と判定された場合には、ｌＱは無限遠点（Ｏ）となるから、Ｗ＝ｋＰとなり、ｋＰの計算を行なうためにステップＳ２１１へ進む。
【０１４５】
ステップＳ２０６では、Ｐ＝Ｑかを判定する。Ｐ＝Ｑであれば、ｋＰ＋ｌＱ＝（ｋ＋ｌ）Ｐとなるから、ステップＳ２０９において、ｋ＝ｋ＋ｌｍｏｄｒとして、（ｋ＋ｌ）ＰをｋＰの計算に変換し、ステップＳ２１１へ進む。ステップＳ２０７では、Ｐ＝−Ｑかを判定する。Ｐ＝−Ｑであれば、Ｗ＝ｋＰ＋ｌＱ＝（ｋ−ｌ）Ｐとなるから、ステップＳ２１０において、ｋ＝ｋ−ｌｍｏｄｒとして、（ｋ−ｌ）ＰをｋＰの計算に変換し、ステップＳ２１１へ進む。
【０１４６】
ステップＳ２１１では、ステップＳ２０２〜Ｓ２０７において「Ｙｅｓ」と判定されている場合においては、ｋＰ＋ｌＱの計算は、ステップＳ２０８〜Ｓ２１０において、ｋＰの計算に変換されているから、Ｐ，ｋを入力としてスカラー倍計算を行ない、出力Ｗを得て終了する。
【０１４７】
ステップＳ２１２では、Ｐ，Ｑの加算点Ｐ＋Ｑと差分点Ｐ−Ｑを求める。ステップＳ２１３では、ｋを２進展開し、ステップＳ２１４ではｌを２進展開する。このとき、ｋt＝１、または、ｌt＝１である。
【０１４８】
ステップＳ２１５〜Ｓ２１９ではＧ’iの初期値Ｇ’t+1を求める。まず、ステップＳ２１５で、（ｋt，ｌt）＝（０，１）と判定された場合には、式（１）、（８）により、
Ｇ’t+1＝｛Ｏ（無限遠点），Ｑ，Ｐ＋Ｑ｝だから、
ステップＳ２１７で、
Ｔ0［ｔ＋１］＝Ｏ（無限遠点）
Ｔ1［ｔ＋１］＝Ｑ
Ｔ2［ｔ＋１］＝Ｐ＋Ｑ
を代入する。
【０１４９】
次に、ステップＳ２１６で、（ｋt，ｌt）＝（１，０）と判定された場合には、式（１）、（８）により、
Ｇ’t+1＝｛Ｏ（無限遠点），Ｐ，Ｐ＋Ｑ｝だから、
ステップＳ２１７で、
Ｔ0［ｔ＋１］＝Ｏ（無限遠点）
Ｔ1［ｔ＋１］＝Ｐ
Ｔ2［ｔ＋１］＝Ｐ＋Ｑ
を代入する。
【０１５０】
最後に、ステップＳ２１６、Ｓ２１７でＮｏと判定された場合、つまり、（ｋt，ｌt）＝（１，１）と判定された場合には、式（１）、（８）により、
Ｇ’t+1＝｛Ｑ，Ｐ，Ｐ＋Ｑ｝だから、
ステップＳ２１７で、
Ｔ0［ｔ＋１］＝Ｑ
Ｔ1［ｔ＋１］＝Ｐ
Ｔ2［ｔ＋１］＝Ｐ＋Ｑ
を代入する。
【０１５１】
その後、ステップＳ２２０でｉ＝ｔと初期化する。ステップＳ２２１〜Ｓ２２９では、（ｋi，ｌi，ｋi-1，ｌi-1）の値に応じて、Ｇ’i+1からＧ’iを算出し、最終的にＧ’1を求める。
【０１５２】
ステップＳ２２１で、（ｋi，ｌi）＝（０，０）と判定された場合には、ステップＳ２２４の処理を実行する。ステップＳ２２４の処理の詳細フローを図６に示す。
【０１５３】
図６のステップＳ３０１で、（ｋi-1，ｌi-1）＝（０，０）と判定された場合には、前述の式（９）に従って、ステップＳ３０４において、
Ｔ0［ｉ］＝２Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１５４】
また、ステップＳ３０２で、（ｋi-1，ｌi-1）＝（０，１）と判定された場合には、前述の式（１０）に従って、ステップＳ３０５において、
Ｔ0［ｉ］＝２Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１５５】
また、ステップＳ３０３で、（ｋi-1，ｌi-1）＝（１，０）と判定された場合には、前述の式（１１）に従って、ステップＳ３０６において、
Ｔ0［ｉ］＝２Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１５６】
また、ステップＳ３０１〜Ｓ３０３でＮｏと判定された場合、すなわち、（ｋi-1，ｌi-1）＝（１，１）と判定された場合には、前述の式（１２）に従って、ステップＳ３０７において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１５７】
ステップＳ３０４〜Ｓ３０７では、点の加算の際に必要な差分点は、
Ｔ1［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｑ
Ｔ2［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ
Ｔ2［ｉ＋１］−Ｔ1［ｉ＋１］＝Ｐ−Ｑ
となる。いずれの場合もステップＳ２２８に進む。
【０１５８】
ステップＳ２２２で、（ｋi，ｌi）＝（０，１）と判定された場合には、ステップＳ２２５の処理を実行する。ステップＳ２２５の処理の詳細フローを図７に示す。
【０１５９】
図７のステップＳ４０１で、（ｋi-1，ｌi-1）＝（０，０）と判定された場合には、前述の式（１３）に従って、ステップＳ４０４において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝２Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６０】
また、ステップＳ４０２で、（ｋi-1，ｌi-1）＝（０，１）と判定された場合には、前述の式（１４）に従って、ステップＳ４０５において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝２Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６１】
また、ステップＳ４０３で、（ｋi-1，ｌi-1）＝（１，０）と判定された場合には、前述の式（１５）に従って、ステップＳ４０６において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６２】
また、ステップＳ４０１〜Ｓ４０３でＮｏと判定された場合、すなわち、（ｋi-1，ｌi-1）＝（１，１）と判定された場合には、前述の式（１６）に従って、ステップＳ４０７において、
Ｔ0［ｉ］＝２Ｔ1［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６３】
ステップＳ４０４〜Ｓ４０７では、点の加算の際に必要な差分点は、
Ｔ1［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｑ
Ｔ2［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ＋Ｑ
Ｔ2［ｉ＋１］−Ｔ1［ｉ＋１］＝Ｐ
となる。いずれの場合もステップＳ２２８に進む。
【０１６４】
ステップＳ２２３で、（ｋi，ｌi）＝（１，０）と判定された場合には、ステップＳ２２６の処理を実行する。ステップＳ２２６の処理の詳細フローを図８に示す。
【０１６５】
図８のステップＳ５０１で、（ｋi-1，ｌi-1）＝（０，０）と判定された場合には、前述の式（１７）に従って、ステップＳ５０４において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝２Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６６】
また、ステップＳ５０２で、（ｋi-1，ｌi-1）＝（０，１）と判定された場合には、前述の式（１８）に従って、ステップＳ５０５において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６７】
また、ステップＳ５０３で、（ｋi-1，ｌi-1）＝（１，０）と判定された場合には、前述の式（１９）に従って、ステップＳ５０６において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝２Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６８】
また、ステップＳ５０１〜Ｓ５０３でＮｏと判定された場合、すなわち、（ｋi-1，ｌi-1）＝（１，１）と判定された場合には、前述の式（２０）に従って、ステップＳ５０７において、
Ｔ0［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝２Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１６９】
ステップＳ５０４〜Ｓ５０７では、点の加算の際に必要な差分点は、
Ｔ1［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ
Ｔ2［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ＋Ｑ
Ｔ2［ｉ＋１］−Ｔ1［ｉ＋１］＝Ｑ
となる。いずれの場合もステップＳ２２８に進む。
【０１７０】
ステップＳ２２１〜Ｓ２２３でＮｏと判定された場合、すなわち（ｋi，ｌi）＝（１，１）と判定された場合には、ステップＳ２２７の処理を実行する。ステップＳ２２７の処理の詳細フローを図９に示す。
【０１７１】
図９のステップＳ６０１で、（ｋi-1，ｌi-1）＝（０，０）と判定された場合には、前述の式（２１）に従って、ステップＳ６０４において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１７２】
また、ステップＳ６０２で、（ｋi-1，ｌi-1）＝（０，１）と判定された場合には、前述の式（２２）に従って、ステップＳ６０５において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ2［ｉ］＝２Ｔ2［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１７３】
また、ステップＳ６０３で、（ｋi-1，ｌi-1）＝（１，０）と判定された場合には、前述の式（２３）に従って、ステップＳ６０６において、
Ｔ0［ｉ］＝Ｔ1［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝２Ｔ2［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１７４】
また、ステップＳ６０１〜Ｓ６０３でＮｏと判定された場合、すなわち、（ｋi-1，ｌi-1）＝（１，１）と判定された場合には、前述の式（２４）に従って、ステップＳ６０７において、
Ｔ0［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ0［ｉ＋１］
Ｔ1［ｉ］＝Ｔ2［ｉ＋１］＋Ｔ1［ｉ＋１］
Ｔ2［ｉ］＝２Ｔ2［ｉ＋１］
と代入し、Ｇ’i+1からＧ’iを計算する。
【０１７５】
ステップＳ６０４〜Ｓ６０７では、点の加算の際に必要な差分点は、
Ｔ1［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ−Ｑ
Ｔ2［ｉ＋１］−Ｔ0［ｉ＋１］＝Ｐ
Ｔ2［ｉ＋１］−Ｔ1［ｉ＋１］＝Ｑ
となる。いずれの場合もステップＳ２２８に進む。
【０１７６】
ステップＳ２２８では、ｉにｉ−１を代入し、ステップＳ２２９では、ｉ≧１を判定し、ｉ≧１である場合には、ステップＳ２２１に戻り、同様の処理を繰り返し実行する。
【０１７７】
ステップＳ２２９でｉ≧１がＮｏと判定された場合は、Ｇ’1が算出されたことになり、ステップＳ２３０に進む。
【０１７８】
ステップＳ２３０〜Ｓ２３６では、Ｇ’1からＷを求める。ＷはＧ’0を構成する３点の１つの点であり、ｋＰ＋ｌＱに相当する。
【０１７９】
ステップＳ２３０で、（ｋ0，ｌ0）＝（０，０）と判定された場合には、
Ｔ0［１］＝ｍ1Ｐ＋ｎ1Ｑで、
ｋ＝ｍ0＝２ｍ1、
ｌ＝ｎ0＝２ｎ1、
だから、
ステップＳ２３３で、Ｗ＝２Ｔ0［１］を代入して終了する。
【０１８０】
ステップＳ２３１で、（ｋ0，ｌ0）＝（０，１）と判定された場合には、
Ｔ0［１］＝ｍ1Ｐ＋ｎ1Ｑ、
Ｔ1［１］＝ｍ1Ｐ＋（ｎ1＋１）Ｑで、
ｋ＝ｍ0＝２ｍ1、
ｌ＝ｎ0＝２ｎ1＋１、
だから、
ステップＳ２３４で、Ｗ＝Ｔ1［１］＋Ｔ0［１］を代入して終了する。このとき、点の加算の際に必要な差分点は、Ｔ1［１］−Ｔ0［１］＝Ｑである。
【０１８１】
ステップＳ２３２で、（ｋ0，ｌ0）＝（１，０）と判定された場合には、
Ｔ0［１］＝ｍ1Ｐ＋ｎ1Ｑ、
Ｔ1［１］＝（ｍ1＋１）Ｐ＋ｎ1Ｑで、
ｋ＝ｍ0＝２ｍ1＋１、
ｌ＝ｎ0＝２ｎ1、
だから、
ステップＳ２３５で、Ｗ＝Ｔ1［１］＋Ｔ0［１］を代入して終了する。このとき、点の加算の際に必要な差分点は、Ｔ1［１］−Ｔ0［１］＝Ｐである。
【０１８２】
ステップＳ２３０〜Ｓ２３２でＮｏと判定された場合、すなわち、（ｋ0，ｌ0）＝（１，１）と判定された場合には、
Ｔ0［１］＝ｍ1Ｐ＋（ｎ1＋１）Ｑ、
Ｔ1［１］＝（ｍ1＋１）Ｐ＋ｎ1Ｑで、
ｋ＝ｍ0＝２ｍ1＋１、
ｌ＝ｎ0＝２ｎ1＋１、
だから、
ステップＳ２３６で、Ｗ＝Ｔ1［１］＋Ｔ0［１］を代入して終了する。このとき、点の加算の際に必要な差分点は、Ｔ1［１］−Ｔ0［１］＝Ｐ−Ｑである。
【０１８３】
以上、説明したように、上述したように、本発明の構成においては、スカラー倍算：ｋＰ＋ｌＱを、楕円上の３点の集合Ｇ’iを定義して実行することにより、高速に結果を出力することができる。
【０１８４】
なお、上述した第１実施例、第２実施例とも、素体上のモンゴメリ型楕円曲線、および２の拡大体上の楕円曲線において、実施可能であり、また、アフィン座標系および射影座標系のどちらにおいても実施可能である。
【０１８５】
［システム構成例］
なお、上述の実施例で述べた一連の処理は、ハードウェア、ソフトウェアの組合わせにより行うことができる。即ち、汎用のコンピュータや、マイクロコンピュータにプログラムを実行させることにより行う構成とすることが可能である。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、例えば汎用のコンピュータや１チップのマイクロコンピュータ等にインストールされる。図１０は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
【０１８６】
図１０に示すシステム構成例は１つの例であり、システムは、ここに示すべての機能を必ずしも備えることが要求されるものではない。図１０に示すＣＰＵ(Central processing Unit)１０１は、各種アプリケーションプログラムや、ＯＳ（Operating System）を実行するプロセッサである。ＲＯＭ（Read-Only-Memory）１０２は、ＣＰＵ１０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納する。ＲＡＭ（Random Access Memory）１０３は、ＣＰＵ１０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。
【０１８７】
ＨＤＤ１０４はハードディスクの制御を実行し、ハードディスクに対する各種データ、プログラムの格納処理および読み出し処理を実行する。暗号処理手段１０５は、送信データの暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭ１０２に格納し、ＣＰＵ１０１がＲＯＭ格納プログラムを読み出して実行するように構成してもよい。メモリ（セキュアモジュール）１０６は例えば耐タンパ構造を持つメモリとして構成され、暗号処理に必要な鍵データ、アクセス許可書の格納領域として使用可能である。なお、これらのデータは、他のメモリ領域、記憶媒体に格納することも可能である。
【０１８８】
バス１２１はＰＣＩ（Peripheral Component Internet/Interface）バス等により構成され、各モジュール、入出力インタフェース１２２を介した各入手力装置とのデータ転送を可能にしている。
【０１８９】
入力部１１１は、例えばキーボード、ポインティングデバイス等によって構成され、ＣＰＵ１０１に各種のコマンド、データを入力するためにユーザにより操作される。出力部１１２は、例えばＣＲＴ、液晶ディスプレイ等であり、各種情報をテキストまたはイメージ等により表示する。
【０１９０】
通信部１１３はシステムの接続したエンティテイ、例えば暗号データの通信エンティテイとの通信処理を実行し、ＣＰＵ１０１の制御の下に、各記憶部から供給されたデータ、あるいはＣＰＵ１０１によって処理されたデータ、暗号化されたデータ等を送信したり、他エンティテイからのデータを受信する処理を実行する。
【０１９１】
ドライブ１１４は、フロッピーディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体１１５の記録再生を実行するドライブであり、各リムーバブル記録媒体１１５からのプログラムまたはデータ再生、リムーバブル記録媒体１１５に対するプログラムまたはデータ格納を実行する。
【０１９２】
各記憶媒体に記録されたプログラムまたはデータを読み出してＣＰＵ１０１において実行または処理を行なう場合は、読み出したプログラム、データはインタフェース１２２、バス１２１を介して例えば接続されているＲＡＭ１０３に供給される。
【０１９３】
先に各フロー図を参照した説明内に含まれる楕円曲線処理演算を実行するためのプログラムは例えばＲＯＭ１０２に格納されてＣＰＵ１０１によって処理されるか、あるいはハードディスクに格納されＨＤＤ１０４を介してＣＰＵ１０１に供給されて実行される。
【０１９４】
図１０に示す暗号処理手段１０５について、機能別に詳細な処理ブロックとして示した図が図１１である。図１１に示すように、暗号処理手段１０５は、データの暗号化処理、復号処理、署名生成、検証等、各種暗号処理に伴う演算を実行する暗号処理演算部２０１、楕円曲線の生成処理を実行する楕円曲線生成部２０２、公開鍵暗号方式に適用する公開鍵、秘密鍵の生成処理を実行する公開鍵秘密鍵生成部２０３、鍵の生成、その他各種演算に用いる乱数を発生する乱数発生部２０４、暗号処理演算に適用する各種パラメータ等を記憶する記憶部２０５を有する。
【０１９５】
例えば、外部から入力された平文の暗号化、暗号文の復号、または署名の生成、署名の検証処理等を実行する場合は、楕円曲線生成部２０２でまず楕円曲線を生成し、公開鍵秘密鍵生成部２０３において生成した鍵を用いて、暗号処理演算部２０１において各種暗号処理を実行する。
【０１９６】
例えば、楕円曲線生成部２０３は、Ｂｙ2＝ｘ3＋Ａｘ2＋ｘで表されるモンゴメリ（Montgomery）型楕円曲線ＥM（ＧＦ（ｐ））を生成する処理を実行し、暗号処理演算部２０１は、楕円曲線生成部２０３において生成された楕円曲線に基づいて、前述のスカラー倍演算処理を実行する。すなわち、暗号処理演算部２０１は、Ｂｙ2＝ｘ3＋Ａｘ2＋ｘで表されるモンゴメリ（Montgomery）型楕円曲線ＥM（ＧＦ（ｐ））を射影座標系（Ｘ，Ｙ，Ｚ）に変換し、前記射影座標系（Ｘ，Ｙ，Ｚ）において、Ｇi+1からＧiを算出可能な４点の集合Ｇiを定義し、前記Ｇiに基づいて、Ｇ’i+1からＧ’iを算出が可能３点の集合Ｇ’iを定義し、ｍt+1＝０，ｎt+1＝０として、初期値Ｇ’t+1を設定し（ｋi，ｌi，ｋi-1，ｌi-1）に応じてＧ’iを計算してＧ’1を算出し、前記Ｇ’1からｋＰ＋ｌＱを求める演算処理等を実行する。
【０１９７】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１９８】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１９９】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフロッピーディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０２００】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０２０１】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【０２０２】
【発明の効果】
以上、説明したように、本発明の楕円曲線暗号処理装置および楕円曲線暗号処理方法、並びにプログラムによれば、素体上のモンゴメリ（Ｍｏｎｔｇｏｍｅｒｙ）型楕円曲線上、あるいは２の拡大体上の楕円曲線上におけるスカラー倍演算において、高速化したスカラー倍算が可能となる。
【０２０３】
さらに、本発明の楕円曲線暗号処理装置および楕円曲線暗号処理方法、並びにプログラムによれば、例えば素体上のモンゴメリ（Ｍｏｎｔｇｏｍｅｒｙ）型楕円曲線暗号処理演算、あるいは２の拡大体上の楕円曲線上において、２つのスカラー倍演算：ｋＰ，ｌＱを別々に実行せずにｋＰ＋ｌＱの演算処理を同時に行なうことで高速化が実現される。すなわち、初期点を４点、あるいは３点設定し、ｋ，ｌの２進データ（ｋi，ｌi，ｋi-1，ｌi-1）に応じて算出済みの４点の集合Ｇi+1から次の４点の集合Ｇi、または算出済みの３点の集合Ｇ’i+1から次の３点の集合Ｇ’iを順次算出する処理によって高速化したスカラー倍算処理が可能となる。また、ｙまたはＹ座標の復元の処理が不要であることがさらなる高速処理を可能としている。
【０２０４】
さらに、本発明の楕円曲線暗号処理装置および楕円曲線暗号処理方法、並びにプログラムにおける３点の集合Ｇ’iを順次算出する手法によれば、従来の楕円曲線暗号処理のスカラー倍算：ｋＰ＋ｌＱの演算に比較し、３／４倍、つまり２５％の高速化が可能となる。また、ｙまたはＹ座標の復元を必要としない。
【図面の簡単な説明】
【図１】楕円曲線上の４点を用いたスカー倍算処理フロー（その１）を示す図である。
【図２】楕円曲線上の４点を用いたスカー倍算処理フロー（その２）を示す図である。
【図３】楕円曲線上の３点を用いたスカー倍算処理フロー（その１）を示す図である。
【図４】楕円曲線上の３点を用いたスカー倍算処理フロー（その２）を示す図である。
【図５】楕円曲線上の３点を用いたスカー倍算処理フロー（その３）を示す図である。
【図６】楕円曲線上の３点を用いたスカー倍算処理フローにおける（ｋi，ｌi）＝（０，０）の場合の処理フローを示す図である。
【図７】楕円曲線上の３点を用いたスカー倍算処理フローにおける（ｋi，ｌi）＝（０，１）の場合の処理フローを示す図である。
【図８】楕円曲線上の３点を用いたスカー倍算処理フローにおける（ｋi，ｌi）＝（１，０）の場合の処理フローを示す図である。
【図９】楕円曲線上の３点を用いたスカー倍算処理フローにおける（ｋi，ｌi）＝（１，１）の場合の処理フローを示す図である。
【図１０】楕円曲線スカラー倍同時計算処理を実行するシステム構成例を示す図である。
【図１１】楕円曲線スカラー倍同時計算処理を実行する暗号処理手段構成例を示す図である。
【符号の説明】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ＨＤＤ
１０５  暗号処理手段
１０６  メモリ
１１１  入力部
１１２  出力部
１１３  通信部
１１４  リムーバブル記憶媒体
１２１  バス
１２２  入出力インタフェース
２０１  暗号処理演算部
２０２  楕円曲線生成部
２０３  公開鍵秘密鍵生成部
２０４  乱数発生部
２０５  記憶部
【図１】
0003820909.tif 000002
【図２】
0003820909.tif 000003
【図３】
0003820909.tif 000004
【図４】
0003820909.tif 000005
【図５】
0003820909.tif 000006
【図６】
0003820909.tif 000007
【図７】
0003820909.tif 000008
【図８】
0003820909.tif 000009
【図９】
0003820909.tif 000010
【図１０】
0003820909.tif 000011
【図１１】
0003820909.tif 000012