(57)【要約】  楕円スカラー倍算ｋＧを乱数ｋの値に関わらず一定の計算時間で処理し、楕円スカラー倍算ｋＧのタイミング解析を防ぐことができる。初期設定部１２１は、スカラー倍算変数Ｒに楕円曲線上の特定点Ｇを設定する。スカラー倍算部１２２は、乱数ｋを表すｔビットのビット列を上位から１ビットずつ参照し、１ビットずつ参照する毎にスカラー倍算変数Ｒを２倍算して得られる値を作業変数Ｒ［０］に設定し、作業変数Ｒ［０］に設定した値に特定点Ｇを加算して得られる値を作業変数Ｒ［１］に設定する。そして、スカラー倍算部１２２は、参照したビットの値が０であればスカラー倍算変数Ｒに作業変数Ｒ［０］を設定し、参照したビットの値が１であればスカラー倍算変数Ｒに作業変数Ｒ［１］を設定する。スカラー倍点出力部１２３は、スカラー倍算変数Ｒから定数値２ｔＧを減算し、減算して得られた値をスカラー倍点ｋＧとして出力する。
2012090284.tif 000002
【特許請求の範囲】
【請求項１】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する演算装置において、
前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる座標値２ｔＧを予め記憶する定数記憶部と、
所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定する初期設定部と、
前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定するスカラー倍算部と、
前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記定数記憶部に記憶された座標値２ｔＧを減算し、減算して得られた座標値を前記座標値ｋＧとして出力するスカラー倍点出力部と
を備えたことを特徴とする演算装置。
【請求項２】
前記演算装置は、さらに、
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する多倍長剰余演算部であって、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算して得られる値を所定の剰余演算変数ｃに設定し、設定した剰余演算変数ｃを１ビット右にシフトして得られる値を前記剰余値ｒとして出力する多倍長剰余演算部を備え、
前記初期設定部は、前記特定点の座標値Ｇを示す多倍長整数を前記スカラー倍算変数Ｒに設定し、
前記スカラー倍算部は、前記スカラー倍算変数Ｒを２倍算して得られる座標値と、前記第０作業変数Ｒ［０］に前記特定点の座標値Ｇを加算して得られる座標値とを前記多倍長剰余演算部を用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Ｒから前記座標値２ｔＧを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
ことを特徴とする請求項１記載の演算装置。
【請求項３】
前記演算装置は、さらに、
複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定する多倍長セロ判定部であって、前記多倍長整数ｂを表す複数の整数値の論理和を算出し、算出した論理和に基づいて前記多倍長整数ｂがゼロであるか否かを判定する多倍長ゼロ判定部を備え、
前記スカラー倍算部は、前記スカラー倍算変数Ｒを２倍算して得られる座標値と、前記第０作業変数Ｒ［０］に前記特定点の座標値Ｇを加算して得られる座標値とを前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Ｒから前記座標値２ｔＧを減算して得られる座標値を前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出する
ことを特徴とする請求項２記載の演算装置。
【請求項４】
前記演算装置は、さらに、
前記乗数値ｋとして用いる乱数値を生成し、前記スカラー倍点出力部から出力された座標値ｋＧを用いて電子署名を生成する電子署名生成部
を備えたことを特徴とする請求項１〜請求項３いずれかに記載の演算装置。
【請求項５】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する演算装置の楕円スカラー倍算方法において、
初期設定部が、所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定し、
スカラー倍算部が、前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定し、
スカラー倍点出力部が、前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる定数値２ｔＧを減算し、減算して得られた座標値を前記座標値ｋＧとして出力する
ことを特徴とする演算装置の楕円スカラー倍算方法。
【請求項６】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出するための楕円スカラー倍算プログラムであって、
所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定する初期設定処理と、
前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定するスカラー倍算処理と、
前記スカラー倍算処理により設定されたスカラー倍算変数Ｒから前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる定数値２ｔＧを減算し、減算して得られた座標値を前記座標値ｋＧとして出力するスカラー倍点出力処理と
をコンピュータに実行させることを特徴とする楕円スカラー倍算プログラム。
【請求項７】
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する演算装置において、
前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定する多倍長整数判定部と、
前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定する剰余演算変数設定部と、
前記剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を前記剰余値ｒとして出力するシフト演算部と
を備えたことを特徴とする演算装置。
【請求項８】
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する演算装置の剰余演算方法において、
多倍長整数判定部が、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、
剰余演算変数設定部が、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定し、
シフト演算部が、前記剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を前記剰余値ｒとして出力する
ことを特徴とする演算装置の剰余演算方法。
【請求項９】
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する剰余演算プログラムにおいて、
前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定する多倍長整数判定処理と、
前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定する剰余演算変数設定処理と、
前記剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を前記剰余値ｒとして出力するシフト演算処理と
をコンピュータに実行させることを特徴とする剰余演算プログラム。
【請求項１０】
複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定する演算装置において、
前記多倍長整数ｂを表す複数の整数値の論理和を算出する論理和演算部と、
前記論理和演算部により算出された論理和に基づいて前記多倍長整数ｂがゼロであるか否かを判定するゼロ判定部と
を備えたことを特徴とする演算装置。
【請求項１１】
複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定する演算装置のゼロ判定方法において、
論理和演算部が、前記多倍長整数ｂを表す複数の整数値の論理和を算出し、
ゼロ判定部が、前記論理和演算部により算出された論理和に基づいて前記多倍長整数ｂがゼロであるか否かを判定する
ことを特徴とする演算装置のゼロ判定方法。
【請求項１２】
複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定するゼロ判定プログラムにおいて、
前記多倍長整数ｂを表す複数の整数値の論理和を算出する論理和演算処理と、
前記論理和演算処理により算出された論理和に基づいて前記多倍長整数ｂがゼロであるか否かを判定するゼロ判定処理と
をコンピュータに実行させることを特徴とするゼロ判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、楕円曲線暗号の電子署名を生成するための演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラムに関するものである。
【背景技術】
【０００２】
電子データの作成者を証明するために電子署名を用いる技術がある。
電子署名は、電子データと秘密鍵と乱数とを用いて特定の署名生成アルゴリズムによって作成される。電子署名は電子データと共に通信される。
電子データの受信者は、受信した電子データと、受信した電子署名と、署名者の公開鍵とを用いて特定の署名検証アルゴリズムによって電子データを検証する。つまり、電子データの受信者は、受信した電子署名が公開鍵に対応する秘密鍵を用いて生成されたか否かを判定する。そして、受信した電子署名が公開鍵に対応する秘密鍵を用いて生成されていれば、受信した電子データが秘密鍵の持ち主（署名者）によって作成されたことが証明される。【０００３】
このため、秘密鍵が他人に知られた場合、電子署名が偽造され、秘密鍵の持ち主に成りすまして電子データが通信される恐れがある。【０００４】
また、電子署名の生成時に使用された乱数が他人に知られた場合、電子署名と乱数とに基づいて秘密鍵が特定されてしまう。
このため、秘密鍵が知られた場合と同様に、電子署名が偽造され、秘密鍵の持ち主に成りすまして電子データが通信されてしまう。【０００５】
さらに、電子署名を生成するための演算処理の処理時間をタイミング解析することにより、演算処理で用いられた数値（例えば、秘密鍵や乱数）を求めることができる可能性がある（非特許文献１参照）。【０００６】
例えば、ＥＣ−ＳｃｈｎｏｒｒやＥＣＤＳＡなどの楕円曲線暗号の署名生成アルゴリズム（および署名検証アルゴリズム）では、楕円曲線上の点Ｇを乱数ｋでスカラー倍する楕円スカラー倍算ｋＧが行われる。楕円曲線暗号の署名生成アルゴリズム（および署名検証アルゴリズム）は非特許文献２に記載されている。
従来の楕円スカラー倍算ｋＧは以下のとおりである。【０００７】
【数１】
2012090284.tif 000003
【０００８】
上記の計算方法をＡｄｄ−Ｄｏｕｂｌｅ−Ａｌｗａｙｓ法と呼ぶ。
Ａｄｄ−Ｄｏｕｂｌｅ−Ａｌｗａｙｓ法ではｋ［ｔ］＝１でなければいけないため、乱数ｋのビット数ｔが乱数ｋの値によって変化してしまう。例えば、乱数ｋを３２ビットで表した場合、最上位ビットが１である乱数ｋのビット数ｔは「３２」であるが、上位１２ビットが０である乱数ｋのビット数ｔは「２０（＝３２−１２）」に変化してしまう。
つまり、乱数ｋの値によって計算時間に差が生じてしまい、タイミング解析によって乱数ｋが特定されてしまう可能性がある。【０００９】
以下に、Ａｄｄ−Ｄｏｕｂｌｅ−Ａｌｗａｙｓ法を変形した楕円スカラー倍算ｋＧを示す。【００１０】
【数２】
2012090284.tif 000004
【００１１】
上記の計算方法ではｋ［ｔ］＝１でなくても構わないため、乱数ｋのビット数ｔは固定値であり、乱数ｋの値によって変化しない。
但し、ステップ２−１において、乱数ｋの最上位ビットが１である場合には無限遠点の変数Ｒ（Ｒ＝０）の２倍算は１度しか行われず、乱数ｋの上位の複数ビットが０である場合には無限遠点の変数Ｒの２倍算は複数回繰り返される。また、無限遠点の変数Ｒの２倍算と無限遠点でない変数Ｒの２倍算とでは計算時間が異なる。
このため、乱数ｋの値によって計算時間に差が生じてしまい、タイミング解析によって乱数ｋが特定されてしまう可能性がある。【００１２】
また、楕円曲線暗号の署名生成アルゴリズム（および署名検証アルゴリズム）では、多倍長演算処理を行う必要がある。
以下に、多倍長演算処理で行われる剰余演算「ａ／２  ｍｏｄ  ｐ」を示す。ａは多倍長整数を示し、ｐは素数を示し、ｍｏｄは剰余演算子を示す。【００１３】
【数３】
2012090284.tif 000005
【００１４】
上記の剰余演算において、ａが偶数の場合にはシフト演算が１回行われ、ａが奇数の場合にはシフト演算と加算とが１回ずつ行われる。
つまり、ａの値によって計算時間に差が生じてしまい、タイミング解析によってａが特定され、ａに基づいて乱数ｋが特定されてしまう可能性がある。【００１５】
以下に、多倍長演算処理で行われるゼロ判定演算を示す。ゼロ判定演算では、多倍長整数ｂの値がゼロであるか否かを判定する。多倍長整数ｂは複数のワード（整数値）を連結した値として表される。【００１６】
【数４】
2012090284.tif 000006
【００１７】
上記のゼロ判定演算では、ゼロでないワードの位置が上位であるほど計算時間は短い。
つまり、ｂの値によって計算時間に差が生じてしまい、タイミング解析によって乱数ｋが特定されてしまう可能性がある。
【先行技術文献】
【非特許文献】
【００１８】
【非特許文献１】Ｊｅａｎ−Ｓｅｂａｓｔｉｅｎ  Ｃｏｒｏｎ：  Ｒｅｓｉｓｔａｎｃｅ  ａｇａｉｎｓｔ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  ｆｏｒ  Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ．  ＣＨＥＳ  １９９９：  ２９２−３０２
【非特許文献２】ＩＳＯ／ＩＥＣ  ＪＴＣ  １／ＳＣ  ２７
【発明の概要】
【発明が解決しようとする課題】
【００１９】
本発明は、例えば、電子署名を生成するための演算処理を演算処理で用いる数値の違いに関わらず一定の計算時間で処理することにより、タイミング解析を防ぐことを目的とする。
【課題を解決するための手段】
【００２０】
本発明の演算装置は、特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する。
前記演算装置は、
前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる座標値２ｔＧを予め記憶する定数記憶部と、
所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定する初期設定部と、
前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定するスカラー倍算部と、
前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記定数記憶部に記憶された座標値２ｔＧを減算し、減算して得られた座標値を前記座標値ｋＧとして出力するスカラー倍点出力部とを備える。
【発明の効果】
【００２１】
本発明によれば、乱数ｋ（乗数値）の値に関わらず楕円スカラー倍算ｋＧを一定の計算時間で処理し、楕円スカラー倍算ｋＧのタイミング解析を防ぐことができる。
【図面の簡単な説明】
【００２２】
【図１】実施の形態１における楕円曲線暗号装置１００の構成図。
【図２】実施の形態１における電子署名生成方法（ＥＣ−Ｓｃｈｎｏｒｒ方式）を示すフローチャート。
【図３】実施の形態１における電子署名生成方法（ＥＣＤＳＡ方式）を示すフローチャート。
【図４】実施の形態１における楕円スカラー倍算方法を示すフローチャート。
【図５】実施の形態１における楕円スカラー倍算方法の別例を示すフローチャート。
【図６】実施の形態１における楕円曲線暗号装置１００のハードウェア資源の一例を示す図。
【図７】実施の形態２における楕円曲線暗号装置１００の構成図。
【図８】実施の形態２における多倍長剰余演算方法を示すフローチャート。
【図９】実施の形態３における楕円曲線暗号装置１００の構成図。
【図１０】実施の形態３における多倍長ゼロ判定方法を示すフローチャート。
【発明を実施するための形態】
【００２３】
実施の形態１．
楕円曲線暗号方式を用いて電子署名を生成する楕円曲線暗号装置について説明する。
但し、電子署名の生成は楕円曲線暗号方式を用いた暗号処理の一例である。
【００２４】
図１は、実施の形態１における楕円曲線暗号装置１００の構成図である。
実施の形態１における楕円曲線暗号装置１００の構成について、図１に基づいて説明する。
【００２５】
楕円曲線暗号装置１００（演算装置）は、電子署名生成部１１０と楕円スカラー倍算部１２０と装置記憶部１９０とを備える。
【００２６】
電子署名生成部１１０は、ＥＣ−ＳｃｈｎｏｒｒやＥＣＤＳＡなどの楕円曲線暗号を利用した署名生成アルゴリズム（特許文献２参照）を実行し、電子署名を生成する。
【００２７】
電子署名生成部１１０は、乱数生成部１１１と署名生成処理部１１２とを備える。
【００２８】
乱数生成部１１１は、所定の乱数生成処理により乱数ｋを生成（算出）する。
乱数ｋは、ｔビットのビット列で表される値である。
【００２９】
署名生成処理部１１２は、楕円スカラー倍算部１２０により算出される座標値ｋＧを用いて電子署名を生成する。
【００３０】
楕円スカラー倍算部１２０は、特定の楕円曲線に含まれる特定点の座標値Ｇを乱数生成部１１１により生成された乱数ｋ（乗数値）でスカラー倍算して得られる座標値ｋＧを算出する。
【００３１】
楕円スカラー倍算部１２０は、初期設定部１２１、スカラー倍算部１２２およびスカラー倍点出力部１２３を備える。
【００３２】
初期設定部１２１は、所定のスカラー倍算変数Ｒに特定点の座標値Ｇを設定する。
【００３３】
スカラー倍算部１２２は、乱数ｋを表すｔビットのビット列を上位から所定数のビット（１ビットまたは複数ビット）ずつ参照する。
スカラー倍算部１２２は、ビット列を所定数のビットずつ参照する毎にスカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定する。
スカラー倍算部１２２は、第０作業変数Ｒ［０］に設定した値に特定点の座標値Ｇを所定数倍（１倍または複数倍）した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定する。
スカラー倍算部１２２は、参照した所定数のビットの値がゼロであればスカラー倍算変数Ｒに第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであればスカラー倍算変数Ｒに第１作業変数Ｒ［１］を設定する。
【００３４】
スカラー倍点出力部１２３は、スカラー倍算部１２２により設定されたスカラー倍算変数Ｒから座標値２ｔＧを減算し、減算して得られた座標値を座標値ｋＧとして出力する。
座標値２ｔＧは、特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる値である。
【００３５】
装置記憶部１９０は、楕円曲線暗号装置１００で使用される各種データを記憶する。
特定点の座標値Ｇ、特定点の座標値Ｇの位数ｎ、秘密鍵ｄ、座標値２ｔＧ、メッセージＭ、乱数ｋ、電子署名は、装置記憶部１９０に記憶されるデータの一例である。
特定点の座標値Ｇ、特定点の座標値Ｇの位数ｎおよび秘密鍵ｄは装置記憶部１９０に予め記憶される。特定点の座標値Ｇは「楕円曲線正弦値」とも呼ばれる。
座標値２ｔＧは、特定点の座標値Ｇに基づいて予め計算され、装置記憶部１９０に記憶される。
メッセージＭは楕円曲線暗号装置１００に入力されて装置記憶部１９０に記憶され、乱数ｋは乱数生成部１１１により算出されて装置記憶部１９０に記憶され、電子署名は署名生成処理部１１２により生成されて装置記憶部１９０に記憶される。
【００３６】
以下、特定点の座標値Ｇを「特定点Ｇ」と記し、座標値２ｔＧを「定数値２ｔＧ」と記し、座標値ｋＧを「スカラー倍点ｋＧ」と記す。
【００３７】
図２は、実施の形態１における電子署名生成方法（ＥＣ−Ｓｃｈｎｏｒｒ方式）を示すフローチャートである。
ＥＣ−Ｓｃｈｎｏｒｒ方式による電子署名生成方法について、図２に基づいて説明する。
【００３８】
電子署名生成部１１０は、装置記憶部１９０から特定点Ｇ、特定点Ｇの位数ｎ、秘密鍵ｄおよびメッセージＭを入力し、特定点Ｇと特定点Ｇの位数ｎと秘密鍵ｄとを用いてメッセージＭに対応する電子署名（ｅ，ｓ）を以下のように生成（算出）する。
【００３９】
Ｓ１１１Ａにおいて、乱数生成部１１１は、所定の乱数生成処理を実行し、乱数ｋを生成（算出）する。但し、乱数ｋは特定点Ｇの位数ｎ未満の自然数である。
Ｓ１１１Ａの後、Ｓ１１２Ａに進む。
【００４０】
Ｓ１１２Ａにおいて、署名生成処理部１１２は、Ｓ１１１Ａで生成された乱数ｋと装置記憶部１９０から入力した特定点Ｇとを楕円スカラー倍算部１２０に入力する。
そして、署名生成処理部１１２は、楕円スカラー倍算部１２０により算出されたスカラー倍点ｋＧを所定の変数Ｐに設定する。以下、変数Ｐを「スカラー倍点Ｐ」という。
楕円スカラー倍算部１２０によるスカラー倍点ｋＧの算出方法を「楕円スカラー倍算方法」として別途説明する。
Ｓ１１２Ａの後、Ｓ１１３Ａに進む。
【００４１】
Ｓ１１３Ａにおいて、署名生成処理部１１２は、メッセージＭとスカラー倍点Ｐのｘ座標値Ｐｘとを結合したメッセージＭ’（＝Ｍ｜｜Ｐｘ）を入力値として所定のハッシュ関数ｈを計算し、ハッシュ値ｅを算出する。
実施の形態において、「Ａ｜｜Ｂ」はＡとＢとの連結を意味し、「ｈ（Ｃ）」は入力値Ｃのハッシュ値を算出するためのハッシュ関数を意味する。
Ｓ１１３Ａの後、Ｓ１１４Ａに進む。
【００４２】
Ｓ１１４Ａにおいて、署名生成処理部１１２は、（ｄ×ｅ＋ｋ）を特定点Ｇの位数ｎで除算した余りを算出する。以下、Ｓ１１４で算出した余りを「剰余値ｓ」と記す。
実施の形態において、「Ａ  ｍｏｄ  Ｂ」はＡをＢで割った余りを求める演算を意味する。
署名生成処理部１１２は、Ｓ１１３Ａで算出したハッシュ値ｅとＳ１１４Ａで算出した剰余値ｓとの組み合わせ（ｅ，ｓ）をメッセージＭの電子署名として出力する。
Ｓ１１４Ａにより、ＥＣ−Ｓｃｈｎｏｒｒ方式による電子署名生成処理は終了する。
【００４３】
図３は、実施の形態１における電子署名生成方法（ＥＣＤＳＡ方式）を示すフローチャートである。
電子署名生成部１１０は、図３に示すようなＥＣＤＳＡ方式で電子署名を生成しても構わない。
【００４４】
電子署名生成部１１０は、装置記憶部１９０から特定点Ｇ、特定点Ｇの位数ｎ、秘密鍵ｄおよびメッセージＭを入力し、特定点Ｇと特定点Ｇの位数ｎと秘密鍵ｄとを用いてメッセージＭに対応する電子署名（Ｐｘ，ｓ）を以下のように生成（算出）する。
【００４５】
Ｓ１１１Ｂにおいて、乱数生成部１１１は、所定の乱数生成処理を実行し、乱数ｋを生成（算出）する。
Ｓ１１１Ｂの後、Ｓ１１２Ｂに進む。
【００４６】
Ｓ１１２Ｂにおいて、署名生成処理部１１２は、Ｓ１１１Ｂで生成された乱数ｋと装置記憶部１９０から入力した特定点Ｇとを楕円スカラー倍算部１２０に入力する。
そして、署名生成処理部１１２は、楕円スカラー倍算部１２０により算出されたスカラー倍点ｋＧを所定の変数Ｐ（スカラー倍点Ｐ）に設定する。
楕円スカラー倍算部１２０によるスカラー倍点ｋＧの算出方法を「楕円スカラー倍算方法」として別途説明する。
Ｓ１１２Ｂの後、Ｓ１１３Ｂに進む。
【００４７】
Ｓ１１３Ｂにおいて、署名生成処理部１１２は剰余値ｓを算出し、スカラー倍点Ｐのｘ座標値Ｐｘと剰余値ｓとの組み合わせ（Ｐｘ，ｓ）をメッセージＭの電子署名として出力する。
剰余値ｓの計算式は「ｓ＝ｋ−１×（ｈ（Ｍ）＋Ｐｘ×ｄ）  ｍｏｄ  ｎ」で表すことができる。
Ｓ１１３Ｂにより、ＥＣＤＳＡ方式による電子署名生成処理は終了する。
【００４８】
ＥＣ−Ｓｃｈｎｏｒｒ方式（図２）およびＥＣＤＳＡ方式（図３）の詳細は、非特許文献２に記載されている。
【００４９】
図４は、実施の形態１における楕円スカラー倍算方法を示すフローチャートである。
実施の形態１における楕円スカラー倍算方法について、図４に基づいて説明する。
【００５０】
楕円スカラー倍算部１２０は、電子署名生成部１１０から乱数ｋと特定点Ｇとを入力し、装置記憶部１９０から定数値２ｔＧを入力し、以下のようにしてスカラー倍点ｋＧを算出する。
【００５１】
Ｓ１２１Ａにおいて、初期設定部１２１は、所定の変数Ｒに特定点Ｇを設定する。以下、変数Ｒを「スカラー倍算変数Ｒ」という。
Ｓ１２１Ａの後、Ｓ１２２Ａに進む。
【００５２】
Ｓ１２２Ａにおいて、スカラー倍算部１２２は、乱数ｋを表すビット列のビット数ｔを所定の変数ｉに設定する。以下、変数ｉを「ループ変数ｉ」という。
例えば、乱数ｋの値を示す変数（ビット列）が３２ビットの変数である場合、スカラー倍算部１２２はループ変数ｉに「３２」を設定する。
【００５３】
以下、乱数ｋを表すビット列の下位からｉビット目の値（ビット値）を「ｋ［ｉ］」と記す。
つまり、乱数ｋの最上位ビットのビット値は「ｋ［ｔ］」であり、乱数ｋの最下位ビットのビット値は「ｋ［１］」である。最上位ビットは一番左のビットであって２のｔ乗を表すビットである。最下位ビットは一番右のビットであって２の０乗を表すビットである。
乱数ｋの最上位ビットのビット値ｋ［ｔ］は「０」と「１」とのどちらであっても構わない。
【００５４】
Ｓ１２２Ａの後、Ｓ１２３Ａに進む。
【００５５】
Ｓ１２３Ａにおいて、スカラー倍算部１２２は、スカラー倍算変数Ｒを２倍し、得られた値「２Ｒ」を所定の変数Ｒ［０］に設定する。以下、変数Ｒ［０］を「第０作業変数Ｒ［０］」という。
Ｓ１２３Ａの後、Ｓ１２４Ａに進む。
【００５６】
Ｓ１２４Ａにおいて、スカラー倍算部１２２は、第０作業変数Ｒ［０］に設定した値に特定点Ｇを加算し、得られた値を所定の変数Ｒ［１］に設定する。以下、変数［１］を「第１作業変数Ｒ［１］」という。
Ｓ１２４Ａの後、Ｓ１２５Ａに進む。
【００５７】
Ｓ１２５Ａにおいて、スカラー倍算部１２２は、ループ変数ｉに基づいて乱数ｋの下位からｉビット目のビット値ｋ［ｉ］を参照する。
例えば、「ｉ＝ｔ」であればスカラー倍算部１２２は乱数ｋの最上位ビットｋ［ｔ］を参照し、「ｉ＝１」であればスカラー倍算部１２２は乱数ｋの最下位ビットｋ［１］を参照する。
【００５８】
ビット値ｋ［ｉ］が「０」である場合、スカラー倍算部１２２は第０作業変数Ｒ［０］をスカラー倍算変数Ｒに設定する。
ビット値ｋ［ｉ］が「１」である場合、スカラー倍算部１２２は第１作業変数Ｒ［１］をスカラー倍算変数Ｒに設定する。
【００５９】
Ｓ１２５Ａの後、Ｓ１２６Ａに進む。
【００６０】
Ｓ１２６Ａにおいて、スカラー倍算部１２２はループ変数ｉから「１」を減算する。
Ｓ１２６Ａの後、Ｓ１２７Ａに進む。
【００６１】
Ｓ１２７Ａにおいて、スカラー倍算部１２２はループ変数ｉが「０」であるか否かを判定する。
ループ変数ｉが「０」である場合、Ｓ１２８Ａに進む。
ループ変数ｉが「０」でない場合、Ｓ１２３Ａに戻る。
【００６２】
但し、Ｓ１２７Ａの判定はＳ１２６Ａの後ではなくＳ１２３Ａの前に行い、Ｓ１２６Ａの後にＳ１２７Ａに戻るようにしても構わない。この場合、Ｓ１２７Ａでループ変数ｉが「０」であればＳ１２８Ａに進み、ループ変数ｉが「０」でなければＳ１２３Ａに進む。
【００６３】
Ｓ１２８Ａにおいて、スカラー倍点出力部１２３は、スカラー倍算変数Ｒから定数値２ｔＧを減算し、得られたスカラー倍算変数Ｒの値をスカラー倍点ｋＧとして電子署名生成部１１０に出力する。
Ｓ１２８Ａにより、楕円スカラー倍算処理は終了する。
【００６４】
上記の楕円スカラー倍算処理（図４）では、スカラー倍算変数Ｒに初期値として無限遠点「０」ではなく特定点Ｇを設定し（Ｓ１２１Ａ）、最後にスカラー倍算変数Ｒから初期値に対応する定数値２ｔＧを減じている（Ｓ１２８Ａ）。
これにより、乱数ｋの値に関わらず一定の計算時間でスカラー倍点ｋＧを算出することができる。例えば、乱数ｋの最上位ビットが「１」である場合であっても、乱数ｋの最上位ビットから連続して複数ビットが「０」である場合であっても、スカラー倍点ｋＧの算出に要する計算時間は変わらない。
つまり、楕円スカラー倍算処理は乱数ｋの値に関わらず一定の計算時間で行われるため、楕円スカラー倍算処理がタイミング解析されることはない。タイミング解析とは、処理時間の時間差を分析することにより処理されたデータを特定する技術である。タイミング解析については非特許文献１に記載されている。
したがって、楕円スカラー倍算処理で用いる乱数ｋはタイミング解析によって特定できず、乱数ｋに基づいて電子署名が知られてしまうこともない。
【００６５】
図５は、実施の形態１における楕円スカラー倍算方法の別例を示すフローチャートである。
楕円スカラー倍算部１２０は、図５に示す方法によってスカラー倍点ｋＧを算出しても構わない。
【００６６】
楕円スカラー倍算部１２０は、電子署名生成部１１０から乱数ｋと特定点Ｇとを入力し、装置記憶部１９０から定数値２ｔＧを入力し、以下のようにしてスカラー倍点ｋＧを算出する。
【００６７】
Ｓ１２１Ｂにおいて、初期設定部１２１は、スカラー倍算変数Ｒに特定点Ｇを設定する。
Ｓ１２１Ｂの後、Ｓ１２２Ｂに進む。
【００６８】
Ｓ１２２Ｂにおいて、スカラー倍算部１２２は、乱数ｋを表すビット列のビット数ｔをループ変数ｉに設定する。
Ｓ１２２Ｂの後、Ｓ１２３Ｂに進む。
【００６９】
Ｓ１２３Ｂにおいて、スカラー倍算部１２２は、スカラー倍算変数Ｒを２倍する。
Ｓ１２３Ｂの後、Ｓ１２４Ｂに進む。
【００７０】
Ｓ１２４Ｂにおいて、スカラー倍算部１２２は、ループ変数ｉに基づいて乱数ｋの下位からｉビット目のビット値ｋ［ｉ］を参照し、参照したビット値ｋ［ｉ］が「０」と「１」とのいずれの値であるか判定する。
ビット値ｋ［ｉ］が「０」である場合、Ｓ１２５Ｂに進む。
ビット値ｋ［ｉ］が「１」である場合、Ｓ１２６Ｂに進む。
【００７１】
Ｓ１２５Ｂにおいて、スカラー倍算部１２２は、スカラー倍算変数Ｒに特定点Ｇを加算する。
Ｓ１２５Ｂの後、Ｓ１２６Ｂに進む。
【００７２】
Ｓ１２６Ｂにおいて、スカラー倍算部１２２はループ変数ｉから「１」を減算する。
Ｓ１２６Ｂの後、Ｓ１２７Ｂに進む。
【００７３】
Ｓ１２７Ｂにおいて、スカラー倍算部１２２はループ変数ｉが「０」であるか否かを判定する。
ループ変数ｉが「０」である場合、Ｓ１２８Ｂに進む。
ループ変数ｉが「０」でない場合、Ｓ１２３Ｂに戻る。
【００７４】
但し、Ｓ１２７Ｂの判定はＳ１２６Ｂの後ではなくＳ１２３Ｂの前に行い、Ｓ１２６Ｂの後にＳ１２７Ｂに戻っても構わない。この場合、Ｓ１２７Ｂでループ変数ｉが「０」であればＳ１２８Ｂに進み、ループ変数ｉが「０」でなければＳ１２３Ｂに進む。
【００７５】
Ｓ１２８Ｂにおいて、スカラー倍点出力部１２３は、スカラー倍算変数Ｒから定数値２ｔＧを減算し、得られたスカラー倍算変数Ｒの値をスカラー倍点ｋＧとして電子署名生成部１１０に出力する。
Ｓ１２８Ｂにより、楕円スカラー倍算処理は終了する。
【００７６】
上記の楕円スカラー倍算処理（図５）においてＳ１２３Ｂではスカラー倍算変数Ｒの２倍算（２Ｒ）をしているが、無限遠点「０」の２倍算と無限遠点「０」以外の値の２倍算とでは計算時間に差が生じてしまう。
しかし、Ｓ１２１Ｂでスカラー倍算変数Ｒに無限遠点「０」ではなく特定点Ｇを初期設定しているため、乱数ｋの最上位ビットから連続して複数ビットが「０」である場合であってもＳ１２３Ｂで無限遠点「０」を２倍算することはない。つまり、乱数ｋの値によってＳ１２３Ｂの計算時間に差が生じない。
したがって、乱数ｋの値によってＳ１２３Ｂの計算時間に差が生じない分、楕円スカラー倍算処理のタイミング解析を困難にすることができる。
【００７７】
図６は、実施の形態１における楕円曲線暗号装置１００のハードウェア資源の一例を示す図である。
図６において、楕円曲線暗号装置１００は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３とＲＡＭ９０４とに接続され、これらのハードウェアデバイスを制御する。
【００７８】
ＲＯＭ９０３またはＲＡＭ９０４には、ＯＳ（オペレーティングシステム）、プログラム群、ファイル群が記憶されている。
【００７９】
プログラム群には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００８０】
ファイル群には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００８１】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【００８２】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００８３】
例えば、楕円曲線暗号装置１００はＩＣチップとして構成され、電子決済機能を持つ携帯端末またはＩＣカードに搭載される。ＩＣチップには予め個人情報が記憶される。
携帯端末またはＩＣカードが電子決済機能を使用する際、楕円曲線暗号装置１００は個人情報の電子署名を生成する。そして、携帯端末またはＩＣカードの無線通信機能は個人情報と電子署名とを所定の電子決済装置に送信する。電子決済装置は電子署名を検証し、個人情報に基づいて電子決済を行う。
【００８４】
また、楕円曲線暗号装置１００をパーソナルコンピュータやサーバ装置などの計算機によって構成する場合、楕円曲線暗号装置１００はＲＯＭ９０３やＲＡＭ９０４の他に、通信ボード、ディスプレイ装置、キーボード、マウス、ドライブ装置、磁気ディスク装置などのハードウェアを備える。ＣＰＵ９０１はこれらハードウェアも制御する。
【００８５】
実施の形態１において楕円曲線暗号装置１００は電子署名を生成する暗号装置でなくてもよく、楕円スカラー倍算処理（図４、５）は電子署名を生成する処理以外の演算処理で実行してもよい。
つまり、実施の形態１における楕円スカラー倍算処理（図４、５）は、楕円スカラー倍点ｋＧ（ｋは乱数でなくてもよい）を使用するいかなる演算処理に用いても構わない。
【００８６】
図４または図５に示した楕円スカラー倍算処理はバイナリ法と呼ばれるべき乗剰余演算法であるが、楕円スカラー倍算処理としてその他のべき乗剰余演算法（例えば、Ｃｏｍｂ法）を用いても構わない。Ｃｏｍｂ法を用いる場合は、図４や図５においてｋ［ｉ］は１ビットではなく複数ビットを同時に参照することにより、ループ回数をｔよりも小さくすることができる。
その他のべき乗剰余演算法を用いる場合であっても、スカラー倍算変数Ｒに初期値として特定点Ｇを設定し（図４のＳ１２１Ａ参照）、最後にスカラー倍算変数Ｒから定数値２ｔＧを減算すればよい。これにより、乱数ｋの値に関わらず一定の計算時間でスカラー倍点ｋＧを算出することができる。
【００８７】
実施の形態２．
多倍長整数の剰余演算を一定の計算時間で行う形態について説明する。
多倍長整数の剰余演算とは、多倍長整数を特定値で除算して余りを算出する処理である。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００８８】
図７は、実施の形態２における楕円曲線暗号装置１００の構成図である。
実施の形態２における楕円曲線暗号装置１００の構成について、図７に基づいて説明する。
【００８９】
楕円曲線暗号装置１００は、実施の形態１で説明した構成に加えて、多倍長剰余演算部１３０を備える。
【００９０】
多倍長剰余演算部１３０は、特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する。
【００９１】
多倍長剰余演算部１３０は、多倍長整数判定部１３１と、剰余演算変数設定部１３２と、シフト演算部１３３とを備える。
【００９２】
多倍長整数判定部１３１は、多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、多倍長整数ａが奇数であればテンポラリ変数ｔｅｍｐに素数ｐを設定する。
【００９３】
剰余演算変数設定部１３２は、多倍長整数ａにテンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定する。
【００９４】
シフト演算部１３３は、剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を剰余値ｒとして出力する。
【００９５】
楕円スカラー倍算部１２０の初期設定部１２１は、特定点の座標値Ｇを示す多倍長整数をスカラー倍算変数Ｒに設定する（図４のＳ１２１Ａ）。
スカラー倍算部１２２は、スカラー倍算変数Ｒを２倍算して得られる座標値「２Ｒ」を多倍長剰余演算部１３０を用いて算出する（図４のＳ１２３Ａ）。
スカラー倍算部１２２は、第０作業変数Ｒ［０］に特定点の座標値Ｇを加算して得られる座標値「Ｒ［０］＋Ｇ」を多倍長剰余演算部１３０を用いて算出する（図４のＳ１２４Ａ）。
スカラー倍点出力部１２３は、スカラー倍算変数Ｒから座標値２ｔＧを減算して得られる座標値「Ｒ−２ｔＧ」を多倍長剰余演算部１３０を用いて算出する（図４のＳ１２８Ａ）。
【００９６】
以下、特定点の座標値Ｇを「特定点Ｇ」と記し、座標値２ｔＧを「定数値２ｔＧ」と記す。
【００９７】
図８は、実施の形態２における多倍長剰余演算方法を示すフローチャートである。
実施の形態２における多倍長剰余演算方法について、図８に基づいて説明する。
【００９８】
電子署名の生成や検証などの暗号処理またはその他の暗号処理では、暗号の解読を困難にするために多倍長整数が使用され、多倍長整数を使用した演算処理が行われる。
多倍長整数とは、レジスタのデータサイズに相当する所定のビット数で表すことができる最大の整数値より大きな整数値である。例えば、３２ビットマシンでは３２ビットで表すことができる最大の整数値（２の３２乗−１）より大きな整数値が多倍長整数である。
以下、多倍長整数を使用した演算処理を「多倍長演算処理」という。
【００９９】
通常、多倍長演算処理では、多倍長剰余演算が行われる。
多倍長剰余演算とは、多倍長整数（後述するａ）を特定値（後述するｐ）で除算して余り（後述するｒ）を求める処理である。
【０１００】
実施の形態１で説明した楕円曲線上の特定点Ｇの座標値は多倍長整数の一例である。
例えば、楕円スカラー倍算部１２０はＳ１２３Ａ、Ｓ１２４ＡおよびＳ１２８Ａ（図４参照）において多倍長剰余演算部１３０を呼び出し、多倍長剰余演算部１３０は図８に示す多倍長剰余演算を実行する。
【０１０１】
以下、計算対象の多倍長整数を「ａ」とし、「ａ／２」を除算する値を「ｐ」とし、「ａ／２」を「ｐ」で除算して得られる余りを「剰余値ｒ」とする。「ａ／２」は多倍長整数ａを２で除算した値である。「ｐ」は素数である。剰余値ｒは０以上ｐ未満の整数値である。
【０１０２】
Ｓ１３１において、多倍長整数判定部１３１は、多倍長整数ａが偶数と奇数とのいずれの値であるか判定する。
多倍長整数ａが偶数である場合、Ｓ１３２に進む。
多倍長整数ａが奇数である場合、Ｓ１３３に進む。
【０１０３】
Ｓ１３２において、多倍長整数判定部１３１は、所定の変数ｔｅｍｐに「０」を設定する。以下、変数ｔｅｍｐを「テンポラリ変数ｔｅｍｐ」という。
Ｓ１３２の後、Ｓ１３４に進む。
【０１０４】
Ｓ１３３において、多倍長整数判定部１３１は、テンポラリ変数ｔｅｍｐに素数ｐを設定する。
Ｓ１３３の後、Ｓ１３４に進む。
【０１０５】
Ｓ１３４において、剰余演算変数設定部１３２は、多倍長整数ａにテンポラリ変数ｔｅｍｐの値を加算し、得られた値を所定の変数ｃに設定する。以下、変数ｃを「剰余演算変数ｃ」という。
Ｓ１３４の後、Ｓ１３５に進む。
【０１０６】
Ｓ１３５において、シフト演算部１３３は、剰余演算変数ｃを表すビット列を１ビット右にシフトし、得られた値を剰余値ｒとして出力する。
剰余値ｒは「ａ／２」を「ｐ」で除算して得られる余りであり、「ｒ＝ａ／２  ｍｏｄ  ｐ」という数式で表すことができる。
Ｓ１３５により、多倍長剰余演算処理は終了する。
【０１０７】
上記の多倍長剰余演算処理（図８）では、多倍長整数ａが偶数と奇数とのいずれの値であっても処理ステップ数は変わらない。
このため、多倍長剰余演算処理において、多倍長整数ａが偶数の場合と多倍長整数ａが奇数の場合とで計算時間の時間差は生じない。つまり、多倍長剰余演算処理は多倍長整数ａの値に関わらず一定の計算時間で行われるため、多倍長剰余演算処理がタイミング解析されることはない。
したがって、多倍長整数ａはタイミング解析によって特定できず、多倍長整数ａに基づいて乱数ｋや電子署名などの秘密情報が知られてしまうこともない。
【０１０８】
実施の形態２において楕円曲線暗号装置１００は電子署名を生成する暗号装置でなくてもよく、多倍長剰余演算処理（図８）は電子署名を生成する処理以外の処理に含まれる多倍長演算処理として実行してもよい。
つまり、実施の形態２における多倍長剰余演算処理（図８）は、電子署名を検証する処理、電子署名と関係しない暗号処理、楕円曲線暗号以外の暗号処理または暗号処理以外の演算処理など、多倍長整数を使用するいかなる演算処理に用いても構わない。
【０１０９】
実施の形態３．
多倍長整数のゼロ判定を一定の計算時間で行う形態について説明する。
多倍長整数のゼロ判定とは、多倍長整数の値がゼロと非ゼロとのいずれの値であるかを判定する処理である。
以下、実施の形態１、２と異なる事項について主に説明する。説明を省略する事項については実施の形態１、２と同様である。
【０１１０】
図９は、実施の形態３における楕円曲線暗号装置１００の構成図である。
実施の形態３における楕円曲線暗号装置１００の構成について、図９に基づいて説明する。
【０１１１】
楕円曲線暗号装置１００は、実施の形態２で説明した構成に加えて、多倍長ゼロ判定部１４０を備える。
【０１１２】
多倍長ゼロ判定部１４０は、複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定する。
【０１１３】
多倍長ゼロ判定部１４０は、論理和演算部１４１とゼロ判定部１４２とを備える。
【０１１４】
論理和演算部１４１は、多倍長整数ｂを表す複数の整数値（ワード）の論理和を算出する。
【０１１５】
ゼロ判定部１４２は、論理和演算部１４１により算出された論理和に基づいて多倍長整数ｂがゼロであるか否かを判定する。
【０１１６】
楕円スカラー倍算部１２０の初期設定部１２１は、特定点の座標値Ｇを示す多倍長整数をスカラー倍算変数Ｒに設定する（図４のＳ１２１Ａ）。
スカラー倍算部１２２は、スカラー倍算変数Ｒを２倍算して得られる座標値「２Ｒ」を多倍長ゼロ判定部１４０を用いて算出する（図４のＳ１２３Ａ）。
スカラー倍算部１２２は、第０作業変数Ｒ［０］に特定点の座標値Ｇを加算して得られる座標値「Ｒ［０］＋Ｇ」を多倍長ゼロ判定部１４０を用いて算出する（図４のＳ１２４Ａ）。
スカラー倍点出力部１２３は、スカラー倍算変数Ｒから座標値２ｔＧを減算して得られる座標値「Ｒ−２ｔＧ」を多倍長ゼロ判定部１４０を用いて算出する（図４のＳ１２８Ａ）。
【０１１７】
以下、特定点の座標値Ｇを「特定点Ｇ」と記し、座標値２ｔＧを「定数値２ｔＧ」と記す。
【０１１８】
図１０は、実施の形態３における多倍長ゼロ判定方法を示すフローチャートである。
実施の形態３における多倍長ゼロ判定方法について、図１０に基づいて説明する。
【０１１９】
通常、多倍長演算処理では、多倍長ゼロ判定処理が行われる。
多倍長ゼロ判定処理とは、多倍長整数ｂの値がゼロと非ゼロとのいずれの値であるかを判定する処理である。
【０１２０】
実施の形態１で説明した楕円曲線上の特定点Ｇの座標値は多倍長整数の一例である。
例えば、楕円スカラー倍算部１２０はＳ１２３Ａ、Ｓ１２４ＡおよびＳ１２８Ａ（図４参照）において多倍長ゼロ判定部１４０を呼び出し、多倍長ゼロ判定部１４０は図１０に示す多倍長ゼロ判定処理を実行する。
【０１２１】
Ｓ１４１において、論理和演算部１４１は多倍長整数ｂを所定の桁数（またはビット数）毎に分割する。例えば、論理和演算部１４１は、１００桁の多倍長整数ｂを１０桁ずつの１０個の整数値に分割する。また例えば、論理和演算部１４１は、９６ビットの多倍長整数ｂを３２ビットずつの３つのビット列に分割する。
以下、多倍長整数ｂを分割して得られた複数の整数値または多倍長整数ｂを分割して得られた複数のビット列で表される複数の整数値を「ワード」という。
また、多倍長整数ｂのワード数（分割数）を「ｗ」とし、下位からｉ番目のワードをｂ［ｉ］とする。つまり、最上位のワード（先頭ワード）をｂ［ｗ］とし、最下位のワード（最終ワード）をｂ［１］とする。
Ｓ１４１の後、Ｓ１４２に進む。
【０１２２】
Ｓ１４２において、論理和演算部１４１は、Ｓ１４１で得られた多倍長整数ｂの複数ワードの論理和を算出し、算出した論理和を所定の変数ＯＲに設定する。以下、変数ＯＲを「論理和ＯＲ」という。実施の形態において、「Ａ｜Ｂ」はＡとＢとの論理和を意味する。
したがって、多倍長整数ｂを構成する複数ワード全ての値が「０」である場合、論理和ＯＲの値は「０」になり、多倍長整数ｂを構成する複数ワードの少なくともいずれかの値が「０」でない場合、論理和ＯＲの値は「１」になる。
Ｓ１４２の後、Ｓ１４３に進む。
【０１２３】
Ｓ１４３において、ゼロ判定部１４２は、Ｓ１４２で設定された論理和ＯＲの値が「０」と「１」とのいずれの値であるかを判定する。
そして、論理和ＯＲの値が「０」である場合、ゼロ判定部１４２は多倍長整数ｂの値がゼロであると判定し、判定結果を出力する。
また、論理和ＯＲの値が「０」でない場合、ゼロ判定部１４２は多倍長整数ｂの値がゼロ以外の値（非ゼロ）であると判定し、判定結果を出力する。
Ｓ１４３により、多倍長ゼロ判定処理は終了する。
【０１２４】
上記の多倍長ゼロ判定処理（図１０）では、多倍長整数ｂがどのような値であっても処理ステップ数は変わらない。
このため、多倍長ゼロ判定処理において、多倍長整数ｂの値によって計算時間の時間差は生じない。つまり、多倍長ゼロ判定処理は多倍長整数ｂの値に関わらず一定の計算時間で行われ、多倍長ゼロ判定処理がタイミング解析されることはない。
したがって、多倍長整数ｂはタイミング解析によって特定できず、多倍長整数ｂに基づいて乱数ｋや電子署名などの秘密情報が知られてしまうこともない。
【０１２５】
実施の形態３において楕円曲線暗号装置１００は電子署名を生成する暗号装置でなくてもよく、多倍長ゼロ判定処理（図１０）は電子署名を生成する処理以外の処理に含まれる多倍長演算処理として実行してもよい。
つまり、実施の形態３における多倍長ゼロ判定処理（図１０）は、電子署名を検証する処理、電子署名と関係しない暗号処理、楕円曲線暗号以外の暗号処理または暗号処理以外の演算処理など、多倍長整数を使用するいかなる演算処理に用いても構わない。
【符号の説明】
【０１２６】
１００  楕円曲線暗号装置、１１０  電子署名生成部、１１１  乱数生成部、１１２  署名生成処理部、１２０  楕円スカラー倍算部、１２１  初期設定部、１２２  スカラー倍算部、１２３  スカラー倍点出力部、１３０  多倍長剰余演算部、１３１  多倍長整数判定部、１３２  剰余演算変数設定部、１３３  シフト演算部、１４０  多倍長ゼロ判定部、１４１  論理和演算部、１４２  ゼロ判定部、１９０  装置記憶部、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ。
【図１】
2012090284.tif 000007
【図２】
2012090284.tif 000008
【図３】
2012090284.tif 000009
【図４】
2012090284.tif 000010
【図５】
2012090284.tif 000011
【図６】
2012090284.tif 000012
【図７】
2012090284.tif 000013
【図８】
2012090284.tif 000014
【図９】
2012090284.tif 000015
【図１０】
2012090284.tif 000016
【手続補正書】
【提出日】平成24年11月22日(2012.11.22)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、例えば、楕円曲線暗号の電子署名を生成するための演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラムに関するものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
本発明の演算装置は、特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する演算装置において、
前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる座標値２ｔＧを予め記憶する定数記憶部と、
所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定する初期設定部と、
前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した座標値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定するスカラー倍算部と、
前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記定数記憶部に記憶された座標値２ｔＧを減算し、減算して得られた座標値を前記座標値ｋＧとして出力するスカラー倍点出力部と、
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する多倍長剰余演算部であって、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算して得られる値を所定の剰余演算変数ｃに設定し、設定した剰余演算変数ｃを１ビット右にシフトして得られる値を前記剰余値ｒとして出力する多倍長剰余演算部とを備え、
前記初期設定部は、前記特定点の座標値Ｇを示す多倍長整数を前記スカラー倍算変数Ｒに設定し、
前記スカラー倍算部は、前記スカラー倍算変数Ｒを２倍算して得られる座標値と、前記第０作業変数Ｒ［０］に前記特定点の座標値Ｇを加算して得られる座標値とを前記多倍長剰余演算部を用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Ｒから前記座標値２ｔＧを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
ことを特徴とする。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する演算装置において、
前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる座標値２ｔＧを予め記憶する定数記憶部と、
所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定する初期設定部と、
前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した座標値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定するスカラー倍算部と、
前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記定数記憶部に記憶された座標値２ｔＧを減算し、減算して得られた座標値を前記座標値ｋＧとして出力するスカラー倍点出力部と、
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する多倍長剰余演算部であって、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算して得られる値を所定の剰余演算変数ｃに設定し、設定した剰余演算変数ｃを１ビット右にシフトして得られる値を前記剰余値ｒとして出力する多倍長剰余演算部とを備え、
前記初期設定部は、前記特定点の座標値Ｇを示す多倍長整数を前記スカラー倍算変数Ｒに設定し、
前記スカラー倍算部は、前記スカラー倍算変数Ｒを２倍算して得られる座標値と、前記第０作業変数Ｒ［０］に前記特定点の座標値Ｇを加算して得られる座標値とを前記多倍長剰余演算部を用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Ｒから前記座標値２ｔＧを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
ことを特徴とする演算装置。
【請求項２】
前記演算装置は、さらに、
複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定する多倍長セロ判定部であって、前記多倍長整数ｂを表す複数の整数値の論理和を算出し、算出した論理和に基づいて前記多倍長整数ｂがゼロであるか否かを判定する多倍長ゼロ判定部を備え、
前記スカラー倍算部は、前記スカラー倍算変数Ｒを２倍算して得られる座標値と、前記第０作業変数Ｒ［０］に前記特定点の座標値Ｇを加算して得られる座標値とを前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Ｒから前記座標値２ｔＧを減算して得られる座標値を前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出する
ことを特徴とする請求項１記載の演算装置。
【請求項３】
前記演算装置は、さらに、
前記乗数値ｋとして用いる乱数値を生成し、前記スカラー倍点出力部から出力された座標値ｋＧを用いて電子署名を生成する電子署名生成部
を備えたことを特徴とする請求項１または請求項２記載の演算装置。
【請求項４】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する演算装置の楕円スカラー倍算方法において、
前記演算装置は、初期設定部と、スカラー倍算部と、スカラー倍点出力部と、多倍長剰余演算部とを備える装置であり、
前記多倍長剰余演算部は、特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する多倍長剰余演算部であって、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算して得られる値を所定の剰余演算変数ｃに設定し、設定した剰余演算変数ｃを１ビット右にシフトして得られる値を前記剰余値ｒとして出力する演算部であり、
前記初期設定部が、所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを示す多倍長整数を設定し、
前記スカラー倍算部が、前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる第一の座標値を前記多倍長剰余演算部を用いて算出し、算出した第一の座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した第一の座標値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる第二の座標値を前記多倍長剰余演算部を用いて算出し、算出した第二の座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定し、
スカラー倍点出力部が、前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる定数値２ｔＧを減算して得られる第三の座標値を前記多倍長剰余演算部を用いて算出し、算出した第三の座標値を前記座標値ｋＧとして出力することを特徴とする演算装置の楕円スカラー倍算方法。
【請求項５】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出するための楕円スカラー倍算プログラムであって、
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する多倍長剰余演算処理であって、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算して得られる値を所定の剰余演算変数ｃに設定し、設定した剰余演算変数ｃを１ビット右にシフトして得られる値を前記剰余値ｒとして出力する多倍長剰余演算処理と、
所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを設定する初期設定処理と、
前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる第一の座標値を前記多倍長剰余演算処理によって算出し、算出した第一の座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した第一の座標値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる第二の座標値を前記多倍長剰余演算処理によって算出し、算出した第二の座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定するスカラー倍算処理と、
前記スカラー倍算処理により設定されたスカラー倍算変数Ｒから前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる定数値２ｔＧを減算して得られる第三の座標値を前記多倍長剰余演算処理によって算出し、算出した第三の座標値を前記座標値ｋＧとして出力するスカラー倍点出力処理と
をコンピュータに実行させることを特徴とする楕円スカラー倍算プログラム。
【請求項６】
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する演算装置において、
前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定する多倍長整数判定部と、
前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定する剰余演算変数設定部と、
前記剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を前記剰余値ｒとして出力するシフト演算部と
を備えたことを特徴とする演算装置。
【請求項７】
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する演算装置の剰余演算方法において、
多倍長整数判定部が、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、
剰余演算変数設定部が、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定し、
シフト演算部が、前記剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を前記剰余値ｒとして出力する
ことを特徴とする演算装置の剰余演算方法。
【請求項８】
特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する剰余演算プログラムにおいて、
前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定する多倍長整数判定処理と、
前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算し、加算して得られた値を所定の剰余演算変数ｃに設定する剰余演算変数設定処理と、
前記剰余演算変数ｃを１ビット右にシフトし、シフトして得られた値を前記剰余値ｒとして出力するシフト演算処理と
をコンピュータに実行させることを特徴とする剰余演算プログラム。
【手続補正書】
【提出日】平成25年4月25日(2013.4.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
Ｓ１２４Ａにおいて、スカラー倍算部１２２は、第０作業変数Ｒ［０］に設定した値に特定点Ｇを加算し、得られた値を所定の変数Ｒ［１］に設定する。以下、変数Ｒ［１］を「第１作業変数Ｒ［１］」という。
Ｓ１２４Ａの後、Ｓ１２５Ａに進む。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
特定の楕円曲線に含まれる特定点の座標値Ｇをｔビットのビット列で表される特定の乗数値ｋでスカラー倍算して得られる座標値ｋＧを算出する演算装置の楕円スカラー倍算方法において、
前記演算装置は、初期設定部と、スカラー倍算部と、スカラー倍点出力部と、多倍長剰余演算部とを備える装置であり、
前記多倍長剰余演算部は、特定の多倍長整数ａを２で除算した値を特定の素数ｐで除算して得られる余りを剰余値ｒとして算出する多倍長剰余演算部であって、前記多倍長整数ａが偶数であれば所定のテンポラリ変数ｔｅｍｐに０を設定し、前記多倍長整数ａが奇数であれば前記テンポラリ変数ｔｅｍｐに前記素数ｐを設定し、前記多倍長整数ａに前記テンポラリ変数ｔｅｍｐを加算して得られる値を所定の剰余演算変数ｃに設定し、設定した剰余演算変数ｃを１ビット右にシフトして得られる値を前記剰余値ｒとして出力する演算部であり、
前記初期設定部が、所定のスカラー倍算変数Ｒに前記特定点の座標値Ｇを示す多倍長整数を設定し、
前記スカラー倍算部が、前記乗数値ｋを表すｔビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Ｒを２倍算して得られる第一の座標値を前記多倍長剰余演算部を用いて算出し、算出した第一の座標値を所定の第０作業変数Ｒ［０］に設定し、前記第０作業変数Ｒ［０］に設定した第一の座標値に前記特定点の座標値Ｇを所定数倍した座標値を加算して得られる第二の座標値を前記多倍長剰余演算部を用いて算出し、算出した第二の座標値を所定の第１作業変数Ｒ［１］に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Ｒに前記第０作業変数Ｒ［０］を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Ｒに前記第１作業変数Ｒ［１］を設定し、
前記スカラー倍点出力部が、前記スカラー倍算部により設定されたスカラー倍算変数Ｒから前記特定点の座標値Ｇを２のｔ乗でスカラー倍して得られる定数値２ｔＧを減算して得られる第三の座標値を前記多倍長剰余演算部を用いて算出し、算出した第三の座標値を前記座標値ｋＧとして出力することを特徴とする演算装置の楕円スカラー倍算方法。
【手続補正書】
【提出日】平成25年10月1日(2013.10.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２
【補正方法】変更
【補正の内容】
【請求項２】
前記演算装置は、さらに、
複数の整数値を連結して表される特定の多倍長整数ｂがゼロであるか否かを判定する多倍長ゼロ判定部であって、前記多倍長整数ｂを表す複数の整数値の論理和を算出し、算出した論理和に基づいて前記多倍長整数ｂがゼロであるか否かを判定する多倍長ゼロ判定部を備え、
前記スカラー倍算部は、前記スカラー倍算変数Ｒを２倍算して得られる座標値と、前記第０作業変数Ｒ［０］に前記特定点の座標値Ｇを加算して得られる座標値とを前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Ｒから前記座標値２ｔＧを減算して得られる座標値を前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出する
ことを特徴とする請求項１記載の演算装置。
【国際調査報告】
2012090284.tif 000017
2012090284.tif 000018
2012090284.tif 000019
2012090284.tif 000020