(57)【要約】  より広い範囲の楕円曲線に、従来技術であるＧＬＶ型スカラー倍演算を適用することを可能にすることを目的とする。楕円曲線暗号演算装置は、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力する入力部２と、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求める埋め込み演算部３と、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求める準同型写像演算部４と、楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求める射影演算部５と、演算値Ｋと射影点Ｐ’とを用いて計算を行う計算処理部６とを備えることとした。【特許請求の範囲】
【請求項１】
楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部に記憶する入力部と、
記憶部に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部に記憶する埋め込み演算部と、
記憶部に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部に記憶する準同型写像演算部と、
記憶部に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求め、射影点Ｐ’を記憶部に記憶する射影演算部と、
記憶部に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部に記憶する計算処理部と
を備えたことを特徴とする楕円曲線暗号演算装置。
【請求項２】
上記楕円曲線暗号演算装置は、さらに、
代数曲線を選択して記憶部に設定するとともに、楕円曲線Ｅ上の点Ｐを、代数曲線のヤコビ多様体へ写像するためのパラメータを記憶部に設定する初期設定部を備えたこと
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項３】
上記初期設定部は、
代数曲線として、超楕円曲線を選択すること
を特徴とする請求項２記載の楕円曲線暗号演算装置。
【請求項４】
上記初期設定部は、
代数曲線として、種数２超楕円曲線Ｃを選択すること
を特徴とする請求項２記載の楕円曲線暗号演算装置。
【請求項５】
上記準同型写像演算部は、
代数曲線のヤコビ多様体の点Ｄを√２倍して写像点εＤを求めること
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項６】
上記入力部は、
楕円曲線Ｅを示す情報として２捩れ点を有する楕円曲線を示す情報を入力すること
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項７】
上記入力部は、
楕円曲線Ｅを示す情報として、位数が素数になっている位数素数の楕円曲線を示す情報を入力すること
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項８】
上記準同型写像演算部は、
上記代数曲線のヤコビ多様体の準同型写像として、
代数曲線のヤコビ多様体から代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像と、代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から代数曲線のヤコビ多様体への準同型写像との合成で決まる代数曲線のヤコビ多様体上の自己準同型写像を用いること
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項９】
上記代数曲線のヤコビ多様体から代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像は、上記代数曲線が種数２超楕円曲線Ｃである場合、
Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）＝０      （１）
ｙｔｋ＝ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ）        （２）
ただし、ｋ＝１、２
（ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚは代数曲線のヤコビ多様体の点のｘ座標、Ｇ１とＧ２とは種数２超楕円曲線Ｃを定義する関数、Ｈ１とＨ２とは種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線を定義する関数、ｚｋはｚに関する（１）式の零点、ｔｋは各ｚｋについて（２）式により定まる値、ΔＧ１はｔｋを定義する関数である。）
で定まること
を特徴とする請求項８記載の楕円曲線暗号演算装置。
【請求項１０】
上記代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から代数曲線のヤコビ多様体への準同型写像は、上記代数曲線が種数２超楕円曲線Ｃである場合、
（ｘ、ｙ）→（２／ｘ、（４ｙ）／ｘ３）
（ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、→は写像を示す記号である。）
で定まること
を特徴とする請求項８記載の楕円曲線暗号演算装置。
【請求項１１】
上記埋め込み演算部は、
楕円曲線Ｅ上の点Ｐ（ｚ、ｔ）から代数曲線のヤコビ多様体の埋め込み点Ｄ（ｘ、ｙ）を求める上記楕円曲線Ｅが埋め込まれた代数曲線のヤコビ多様体への写像を
【数１１】
2006030496.tif 000012
【数１２】
2006030496.tif 000013
（ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚは楕円曲線Ｅ上の点Ｐのｘ座標、ｔは楕円曲線Ｅ上の点Ｐのｙ座標、αとＵとは楕円曲線Ｅを規定するパラメータである。）
という関係式で定めること
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項１２】
上記射影演算部は、
射影点εＤ（ｘ、ｙ）から楕円曲線Ｅ上の射影点Ｐ’（ｚ、ｔ）を求める上記楕円曲線Ｅへの写像を
【数１３】
2006030496.tif 000014
【数１４】
2006030496.tif 000015
（ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚは楕円曲線Ｅ上の点Ｐのｘ座標、ｔは楕円曲線Ｅ上の点Ｐのｙ座標、αとＵとは楕円曲線Ｅを規定するパラメータ
である。）
という関係式で定めること
を特徴とする請求項１記載の楕円曲線暗号演算装置。
【請求項１３】
楕円曲線を用いた演算装置の演算方法において、
楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部に記憶し、
記憶部に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部に記憶し、
記憶部に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部に記憶し、
記憶部に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線Ｅ上の射影点Ｐ’を求め、射影点Ｐ’を記憶部に記憶し、
記憶部に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部に記憶することを特徴とする演算方法。
【請求項１４】
楕円曲線Ｅ上の点Ｐのスカラー倍（Ｋ倍）演算をコンピュータに実行させるプログラムにおいて、
楕円曲線Ｅ上の点Ｐを種数２超楕円曲線Ｃのヤコビ多様体上の点Ｄに変換し、
点Ｄに対して、種数２超楕円曲線Ｃのヤコビ多様体の準同型写像による写像をして写像点εＤを求め、
写像点εＤを楕円曲線Ｅ上へ写像して楕円曲線の射影点Ｐ’を求め、
演算値Ｋと射影点Ｐ’とを読み込んで、射影点Ｐ’をＫ倍する計算を行い、計算結果を出力する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、楕円曲線暗号のスカラー倍演算を行う楕円曲線暗号演算装置と、楕円曲線暗号演算装置での楕円曲線暗号のスカラー倍の演算方法と、楕円曲線暗号のスカラー倍演算をコンピュータに実行させるプログラムとに関する。
【背景技術】
【０００２】
楕円曲線暗号の演算を高速に行うためには、その中で頻繁に実行されるスカラー倍演算を高速化することが必須となる。これまでに、様々なスカラー倍演算の高速化手法が提案されてきた。近年の研究によって、効率的に計算可能な自己準同型写像である特殊準同型写像φを用いて、スカラー倍数ＫをＫ＝ｋ１＋ｋ２φ（又はｋ１＋ｋ２λ、λは点群上でφが与えるスカラー倍数）と表現し、スカラー倍数Ｋによるスカラー倍演算を、ｋ１とｋ２とのスカラー倍演算に分割することで演算速度を高速化する方法が開発されている（非特許文献１を参照）。このように特殊準同型写像を用いて高速化したスカラー倍演算を提案者の頭文字をとって、ＧＬＶ型スカラー倍演算と呼ぶ。【０００３】
また、非特許文献２には超楕円曲線に上記の方法を拡張した場合の結果が示されている（非特許文献２を参照）。【０００４】
また、非特許文献４には楕円曲線Ｅの積Ｅ×Ｅと種数２超楕円曲線Ｃのヤコビ多様体との間の準同型写像が記述されている（非特許文献４を参照）。
【非特許文献１】Ｒ．Ｐ．Ｇａｌｌａｎｔ，Ｊ．Ｌ．Ｌａｍｂｅｒｔ  ａｎｄ  Ｓ．Ａ．Ｖａｎｓｔｏｎｅ，“Ｆａｓｔｅｒ  ｐｏｉｎｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｏｎ  ｅｌｌｉｐｔｉｃ  ｃｕｒｖｅｓ  ｗｉｔｈ  ｅｆｆｉｃｉｅｎｔ  ｅｎｄｏｍｏｒｐｈｉｓｍｓ”，Ｃｒｙｐｔｏ  ２００１，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，（２００１），１９０−２００．
【非特許文献２】Ｆ．Ｓｉｃａ，Ｍ．Ｃｉｅｔ，Ｊ．−Ｊ．Ｑｕｉｓｑｕａｔｅｒ，“Ａｎａｌｙｓｉｓ  ｏｆ  ｔｈｅ  Ｇａｌｌａｎｔ−Ｌａｍｂｅｒｔ−Ｖａｎｓｔｏｎｅ  ｍｅｔｈｏｄ  ｂａｓｅｄ  ｏｎ  ｅｆｆｉｃｉｅｎｔ  ｅｎｄｏｍｏｒｐｈｉｓｍｓ  ：ｅｌｌｉｐｔｉｃ  ａｎｄ  ｈｙｐｅｒｅｌｌｉｐｔｉｃ  ｃｕｒｖｅｓ”，ＳＡＣ  ２００２，Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，（２００２），２１−３６．
【非特許文献３】Ｍ．Ｃｉｅｔ，Ｔ．Ｌａｎｇｅ，Ｆ．Ｓｉｃａ，Ｊ．−Ｊ．Ｑｕｉｓｑｕａｔｅｒ，“Ｉｍｐｒｏｖｅｄ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｉｔｈｍｅｔｉｃ  ｏｎ  Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅｓ  ｕｓｉｎｇ  Ｆａｓｔ  Ｅｎｄｏｍｏｒｐｈｉｓｍｓ”，ＥＵＲＯＣＲＹＰＴ  ２００３，Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，（２００３），３８８−４００．
【非特許文献４】Ｐ．Ｒ．Ｂｅｎｄｉｎｇ，”Ｃｕｒｖｅｓ  ｏｆ  ｇｅｎｕｓ  ２  ｗｉｔｈ  √２  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ”，ｈｔｔｐ：／／ｗｗｗ．ｍａｔｈ．ｕｉｕｃ．ｅｄｕ／Ａｌｇｅｂｒａｉｃ−Ｎｕｍｂｅｒ−Ｔｈｅｏｒｙ／
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年の高度情報通信技術の実用化に伴い、楕円曲線暗号を含む公開鍵暗号も既に実用化段階に入っている。そのため、クロック周波数の低いＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）しか搭載していない、あるいはＣＰＵを搭載することができないＩＣカード上での暗号演算の実行や、ユビキタス環境での情報セキュリティを確保するために、計算リソースが制限された環境での楕円曲線暗号の使用も必要なものとなってきている。その結果、楕円曲線暗号の演算速度の向上が切に望まれている。【０００６】
しかしながら、上記した従来技術であるＧＬＶ型スカラー倍演算が適用できる楕円曲線は特殊なものに限られていた。現在、楕円曲線暗号に用いる楕円曲線はランダムに選択するのが一般的であり、それにより、楕円曲線暗号の安全性が保証されている。そのため、上記したＧＬＶ型スカラー倍演算を用いて楕円曲線暗号の演算速度を高速化できても、楕円曲線をランダムに選択することができないため、上記ＩＣカード上での暗号演算実行や、ユビキタス環境において使用するには安全性が問題とされてきた。【０００７】
そこで、より広い範囲の楕円曲線に、上記した従来技術であるＧＬＶ型スカラー倍演算を適用することを可能にすることを目的とする。
【課題を解決するための手段】
【０００８】
楕円曲線暗号演算装置は、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部に記憶する入力部と、記憶部に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部に記憶する埋め込み演算部と、記憶部に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部に記憶する準同型写像演算部と、記憶部に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求め、射影点Ｐ’を記憶部に記憶する射影演算部と、記憶部に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部に記憶する計算処理部とを備えることとした。
【発明の効果】
【０００９】
楕円曲線暗号演算装置は、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部に記憶する入力部と、記憶部に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部に記憶する埋め込み演算部と、記憶部に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部に記憶する準同型写像演算部と、記憶部に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求め、射影点Ｐ’を記憶部に記憶する射影演算部と、記憶部に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部に記憶する計算処理部とを備えることができる。
【発明を実施するための最良の形態】
【００１０】
ここでは、楕円曲線暗号演算装置においてスカラー倍演算の高速化を実現する実施の形態について説明する。なお、この実施の形態では、代数曲線として種数２超楕円曲線Ｃを用い、準同型写像として効率的に演算可能な準同型写像である√２倍演算を用いた場合について説明する。【００１１】
まず、公開鍵暗号、離散対数問題、楕円曲線暗号および超楕円曲線暗号について簡単に説明する。
公開鍵暗号を用いた通信においては、利用者ごとに秘密鍵ｘと公開鍵ｙの組が用意され、秘密鍵ｘは、各利用者が秘密に保持しておく。公開鍵ｙは利用者自身以外の一般に公開する。利用者Ｂが利用者Ａに秘密にデータを送りたい時は、利用者Ｂは利用者Ａの公開鍵ｙを用いてデータを暗号化する。利用者Ａは、自分だけしか知らない秘密鍵ｘを用いて暗号化したデータを復号する。この暗号文は、秘密鍵ｘを知る利用者Ａにしか復号できない。【００１２】
離散対数問題とは代数群Ｇ（加法が定義されているものとする）の２つの要素ｇ１，ｇ２に対して、ｇ１＝ｍｇ２を満たすようなｍを求める問題である。代数群Ｇの要素の数が大きい場合、多くの離散対数問題を解くことは、計算量的に非常に困難になることが知られている。この事実を利用して公開鍵暗号を設計することができる。【００１３】
離散対数型公開鍵暗号は多く、代数群Ｇを定める式とｇ２を公開鍵暗号パラメータとし、ｇ１をその公開鍵、ｍをその秘密鍵とする。【００１４】
有限体ＧＦ（ｑｎ）（ｑは素数ｐのべき乗）上の種数ｇ超楕円曲線Ｃとは、ｙ２＋ｈ（ｘ）ｙ＝ｆ（ｘ）（ｈ（ｘ），ｆ（ｘ）はそれぞれＧＦ（ｑｎ）係数の高々ｇ次および、２ｇ＋１次多項式、かつ、ｆ（ｘ）は最高次の係数が１）と表される方程式である。また、超楕円曲線Ｃのヤコビ多様体（ヤコビアン）の有理点集合には加法が定義され、群となる。特に、種数ｇが１の時の超楕円曲線を楕円曲線といい、その場合は、楕円曲線自体に加法が定義されている。これらの群を利用した公開鍵暗号を超楕円曲線暗号（ｇ＝１の時は、楕円曲線暗号）という。【００１５】
つまり、楕円曲線暗号の場合には、方程式ｙ２＋ｈ（ｘ）ｙ＝ｆ（ｘ）の係数とその上の点（ｘ０，ｙ０）が楕円曲線暗号パラメータとなり、楕円曲線上の加算に従って計算される（ｘ１，ｙ１）（（ｘ１，ｙ１）は、（ｘ１，ｙ１）＝ｍ・（ｘ０，ｙ０）を満たす）がその公開鍵、ｍがその秘密鍵となる。【００１６】
また、種数ｇの超楕円曲線暗号の場合は、方程式ｙ２＋ｈ（ｘ）ｙ＝ｆ（ｘ）の係数がその暗号パラメータの一部であることは同様であるが、その他に、暗号パラメータとして、その曲線のヤコビアン上の点（その曲線上の因子類）Ｄ１が必要であり、ヤコビアン上の加算に従って計算されるＤ２（Ｄ２は、Ｄ２＝ｍ・Ｄ１を満たす）がその公開鍵、ｍがその秘密鍵となる。【００１７】
楕円曲線上の点（ｘ０，ｙ０）のスカラー倍数Ｋでのスカラー倍演算Ｋ・（ｘ０，ｙ０）を計算する時に、スカラー倍数Ｋの値が大きいと、計算に時間がかかってしまう。例えば、楕円曲線暗号の場合、スカラー倍数Ｋに２進数で１６０ビットの値を用いる。ここで、１６０ビットの各位のビット値を順に楕円曲線暗号パラメータに加算していった場合に、相当な時間を要することになる。【００１８】
ＧＬＶ型スカラー倍演算では、スカラー倍数ＫをＫ＝ｋ１＋ｋ２φ（又はｋ１＋ｋ２λ、λは点群上でφが与えるスカラー倍数）と表現し、スカラー倍数Ｋによるスカラー倍演算を、ｋ１とｋ２とのスカラー倍演算に分割することで、ｋ１あるいはｋ２のビット数の計算量で済むことになる。【００１９】
例えば、楕円曲線暗号パラメータである楕円曲線上の点をＰとすれば、スカラー倍演算は、ＫＰ＝ｋ１・Ｐ＋ｋ２・λＰとなる。予め、Ｐ＋λＰ＝Ｓとすると、所定の位のビット値がｋ１＝１、ｋ２＝０であれば、Ｐを用いた計算となり、ｋ１＝０、ｋ２＝１であれば、λＰを用いた計算となり、ｋ１＝１、ｋ２＝１であれば、Ｓを用いた計算となり、ｋ１＝０、ｋ２＝０であれば、計算が不要となる。したがって、各位について、Ｐまたは、λＰまたは、Ｓを用いた計算となり、しかも、ｋ１あるいはｋ２のビット数の計算量で済むことになる。例えば、スカラーＫが楕円曲線有理点群の位数ｎと同等なビット数を有するとした場合、ｋ１とｋ２とのビット数が概ね√ｎ近くに小さくなる。すなわち、それだけ、演算回数が減り、演算速度を高速化させることができる。【００２０】
以上を踏まえた上で、この実施の形態における楕円曲線暗号演算装置の構成を図１を用いて説明する。
楕円曲線暗号演算装置は、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部１に記憶する入力部２と、記憶部１に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部１に記憶する埋め込み演算部３と、記憶部１に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部１に記憶する準同型写像演算部４と、記憶部１に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求め、射影点Ｐ’を記憶部１に記憶する射影演算部５と、記憶部１に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部１に記憶する計算処理部６とを備える。【００２１】
また、楕円曲線暗号演算装置は、さらに、代数曲線を選択して記憶部１に設定するとともに、楕円曲線Ｅ上の点Ｐを、代数曲線のヤコビ多様体へ写像するためのパラメータを記憶部１に設定する初期設定部７を備える。また、楕円曲線暗号演算装置は、スカラー倍演算した結果を出力する出力部８とスカラー倍演算を制御するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９とを備える。【００２２】
ここで、演算値Ｋはスカラー倍数Ｋのことである。以後、同様にスカラー倍数Ｋを演算値Ｋと記載することもある。また、ここでは代数曲線には種数２超楕円曲線を用いる。この楕円曲線暗号演算装置では、入力部２から入力したスカラー倍数Ｋのスカラー倍演算を行う。その際、種数２超楕円曲線Ｃのヤコビ多様体上の演算を利用する。また、楕円曲線暗号演算装置の準同型写像演算部４では、種数２超楕円曲線Ｃのヤコビ多様体の点を√２倍する演算を行う。【００２３】
記憶部１は、楕円曲線暗号演算装置がスカラー倍演算を行う過程で利用する各値を記憶する。【００２４】
入力部２は、楕円曲線Ｅの式とその式を規定するパラメータとを入力する。また、楕円曲線Ｅ上の点Ｐ（ｚ、ｔ）とスカラー倍数Ｋとを入力する。【００２５】
入力部２からは、楕円曲線Ｅを示す情報として２捩れ点を有する楕円曲線を示す情報を入力するか、または、楕円曲線Ｅを示す情報として位数が素数になっている位数素数の楕円曲線を示す情報を入力することができる。【００２６】
しかし、ここでは入力する楕円曲線Ｅの式とその式を規定するパラメータを以下のように定める。
楕円曲線Ｅは、位数２の有理点を含む楕円曲線を（１）式で示される楕円曲線（非特許文献４を参照）に変換することにより定められる。【００２７】
【数１】
2006030496.tif 000002
【００２８】
ここで、ＴとαとＵとは楕円曲線を規定するパラメータである。【００２９】
（１）式で示される楕円曲線は、２捩れ点（−１，０）を任意の素体に対して有するものである。【００３０】
位数２の有理点を含む楕円曲線は、有限体ＧＦ（ｑ）の要素δ、ａ、ｂによって決まる楕円曲線Ｔ２＝（Ｚ−δ）（Ｚ２＋ａＺ＋ｂ）について、ｓ＝（７δ２＋３ａδ−ａ２＋３ｂ）／（δ２＋ａδ＋ｂ）としたときに決まる新しい楕円曲線Ｔ２＝Ｚ３＋ｓＺ２＋ｓＺ＋１である。【００３１】
この新しい楕円曲線Ｔ２＝Ｚ３＋ｓＺ２＋ｓＺ＋１と、（１）式とが一致するようにＵ、α、Δ、Ｗの値を定める。このＵ、α、Δ、Ｗが楕円曲線Ｅのパラメータであり、これらの値で定まる（１）式が楕円曲線暗号演算装置で用いる楕円曲線Ｅとなる。よって、入力部２から、楕円曲線の式である（１）式と（１）式のパラメータであるＵ、α、Δ、Ｗとを楕円曲線Ｅを示す情報として入力する。【００３２】
初期設定部７は、代数曲線として、超楕円曲線を選択することができ、例えば、楕円曲線暗号演算装置の初期設定部７は、代数曲線として、種数２超楕円曲線Ｃを選択することができる。【００３３】
ここでは、初期設定部７は、代数曲線として種数２超楕円曲線Ｃを選択するものとする。【００３４】
埋め込み演算部３は、楕円曲線Ｅから種数２超楕円曲線Ｃのヤコビ多様体への埋め込みを行う。具体的には、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する種数２超楕円曲線Ｃのヤコビ多様体へ写像して、楕円曲線Ｅ上の点Ｐに対応する種数２超楕円曲線Ｃのヤコビ多様体上の点を埋め込み点Ｄとして求める。【００３５】
準同型写像演算部４は、埋め込み点Ｄから種数２超楕円曲線Ｃのヤコビ多様体の準同型写像による写像をして写像点εＤを求める。【００３６】
射影演算部５は、種数２超楕円曲線Ｃのヤコビ多様体から楕円曲線への写像を行う。具体的には、写像点εＤを楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求める。【００３７】
計算処理部６は、スカラー倍数Ｋと射影点Ｐ’とからＧＬＶ型スカラー倍演算を用いてスカラー倍演算を行う。【００３８】
次に、楕円曲線暗号演算装置でスカラー倍演算を行う動作について説明する。
楕円曲線を用いた演算装置の演算方法は、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部１に記憶し、記憶部１に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部１に記憶し、記憶部１に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部１に記憶し、記憶部１に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線Ｅ上の射影点Ｐ’を求め、射影点Ｐ’を記憶部１に記憶し、記憶部１に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部１に記憶する。【００３９】
楕円曲線暗号演算装置でのスカラー倍演算の動作を図２に示すフローチャートを用いて説明する。
まず、入力部２は楕円曲線Ｅの式を設定し、その式のパラメータであるＵ、α、Δ、Ｗを入力する。また、楕円曲線Ｅ上の点Ｐ（ｚ、ｔ）とスカラー倍数Ｋとを入力する。入力した楕円曲線Ｅの式とパラメータＵ、α、Δ、Ｗと楕円曲線Ｅ上の点Ｐ（ｚ、ｔ）とスカラー倍数Ｋは、記憶部１に記憶される（ステップＳ１００）。【００４０】
次に、初期設定部７は、記憶部１から楕円曲線Ｅを読み出し、以下に示す（２）式で定まる種数２超楕円曲線Ｃのヤコビ多様体に埋め込む処理を行う（ステップＳ１０１）。【００４１】
【数２】
2006030496.tif 000003
【００４２】
ここで、α１、α２はＸの２次方程式Ｘ２＋（（Ｗ（Ｕ−２）（Ｕ＋２）＋３２）／（４Ｕ））Ｘ＋Ｗ＝０の２根である。また、ＴとαとＵとは楕円曲線を規定するパラメータ、ＸとＹは変数である。【００４３】
初期設定部７による楕円曲線Ｅの種数２超楕円曲線Ｃのヤコビ多様体への埋め込みは、楕円曲線Ｅを種数２超楕円曲線Ｃのヤコビ多様体へ写像するパラメータを設定することにより行われる。このパラメータは、用いる楕円曲線Ｅを変更しない限り、楕円曲線暗号演算装置に一度設定すれば、演算を行う都度設定する必要がなく、継続して利用することができる。したがって、ステップＳ１０１は、次回から実行されなくてもよい。【００４４】
次に、埋め込み演算部３は、楕円曲線Ｅ上の点Ｐ＝（ｚ、ｔ）を種数２超楕円曲線Ｃのヤコビ多様体の点Ｄに写像する演算（埋め込み演算）を行う（ステップＳ１０２）。【００４５】
ここでは埋め込み演算部３は、楕円曲線Ｅ上の点Ｐ（ｚ、ｔ）から代数曲線のヤコビ多様体の埋め込み点Ｄ（ｘ、ｙ）を求める楕円曲線Ｅが埋め込まれた代数曲線のヤコビ多様体への写像を（３）式と（４）式の関係式で定める。【００４６】
【数３】
2006030496.tif 000004
【００４７】
【数４】
2006030496.tif 000005
【００４８】
ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚは楕円曲線Ｅ上の点Ｐのｘ座標、ｔは楕円曲線Ｅ上の点Ｐのｙ座標、αとＵとは楕円曲線Ｅを規定するパラメータである。【００４９】
埋め込み演算部３の動作を図３に示すフローチャートを用いて説明する。
埋め込み演算部３は、記憶部１から楕円曲線Ｅ上の点Ｐ＝（ｚ、ｔ）を読み出す（ステップＳ３００）。次に、楕円曲線Ｅ上の点Ｐのｘ座標であるｚの有限体ＧＦ（ｑ）内での平方根をｒとし、（２（ｒ２、ｔ）、２（１／ｒ２、ｔ／ｒ３））を楕円曲線の積Ｅ×Ｅ上の点として、その楕円曲線の積Ｅ×Ｅ上の点に種数２超楕円曲線Ｃのヤコビ多様体の点Ｄ＝（ｘ、ｙ）−（ｘ、−ｙ）を対応させる（ステップＳ３０１）。ここで、ｘ、ｙは（５）式と（６）式で定める。【００５０】
【数５】
2006030496.tif 000006
【００５１】
【数６】
2006030496.tif 000007
【００５２】
ここで、αとＵとは楕円曲線Ｅを規定するパラメータである。【００５３】
次に、点Ｄ＝（ｘ、ｙ）−（ｘ、−ｙ）を２次多項式Ｕ（ｘ）と１次多項式Ｖ（ｘ）の対として表し、Ｕ（ｘ）とＶ（ｘ）の対を記憶部１に記憶する（ステップＳ３０２）。【００５４】
以上、ステップＳ３００からステップＳ３０２までが埋め込み演算部３での動作である。【００５５】
図２に戻って楕円曲線暗号演算装置におけるスカラー倍演算の動作の説明を続ける。
次に、準同型写像演算部４は、代数曲線である種数２超楕円曲線Ｃのヤコビ多様体の点Ｄを√２倍して写像点εＤを求める。【００５６】
つまり、準同型写像演算部４は、代数曲線として種数２超楕円曲線Ｃを用い、種数２超楕円曲線Ｃのヤコビ多様体の点Ｄを√２倍する演算を行い写像点εＤを得る（ステップＳ１０３）。【００５７】
準同型写像演算部４は、代数曲線のヤコビ多様体の準同型写像として、代数曲線のヤコビ多様体から代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像と、代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から代数曲線のヤコビ多様体への準同型写像との合成で決まる代数曲線のヤコビ多様体上の自己準同型写像を用いる。【００５８】
前者の代数曲線のヤコビ多様体から代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像は、代数曲線が種数２超楕円曲線Ｃである場合、（７）式と（８）式で定まる。【００５９】
Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）＝０              （７）【００６０】
ｙｔｋ＝ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ）                （８）
ただし、ｋ＝１、２【００６１】
ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚは代数曲線のヤコビ多様体の点のｘ座標、Ｇ１とＧ２とは種数２超楕円曲線Ｃを定義する関数、Ｈ１とＨ２とは種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線を定義する関数、ｚｋはｚに関する（１）式の零点、ｔｋは各ｚｋについて（２）式により定まる値、ΔＧ１はｔｋを定義する関数である。【００６２】
また、後者の代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から代数曲線のヤコビ多様体への準同型写像は、代数曲線が種数２超楕円曲線Ｃである場合、（９）式で定める。【００６３】
（ｘ、ｙ）→（２／ｘ、（４ｙ）／ｘ３）                    （９）【００６４】
ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、→は写像を示す記号である。【００６５】
準同型写像演算部４で用いる準同型写像について具体的に説明する。
種数２超楕円曲線ＣをＹ２＝ΔＧ０（Ｘ）Ｇ１（Ｘ）Ｇ２（Ｘ）と２次式の積で表し、Ｇｉ（Ｘ）＝Σｇｉ，ｊＸｊ（ｉ＝０，１，２）とした時、（１０）式により種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線が定義される。【００６６】
ｄｅｔ（ｇｉ，ｊ）Ｔ２＝ΔＨ０（Ｚ）Ｈ１（Ｚ）Ｈ２（Ｚ）      （１０）【００６７】
ここで、Ｈｉ（Ｚ）＝Ｇ’ｉ＋１（Ｚ）Ｇｉ＋２（Ｚ）−Ｇ’ｉ＋２（Ｚ）Ｇｉ＋１（Ｚ）とする。また、Ｇ’は多項式ＧをＺで微分した多項式を表す。【００６８】
これにより、種数２超楕円曲線Ｃのヤコビ多様体から種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像ρは、（１１）式のように定められる。【００６９】
［（ｘ、ｙ）−Ｐ０］→［（ｚ１、ｔ１）−（ｚ２、−ｔ２）］  （１１）【００７０】
ここで、Ｐ０はＧ０の零点をｘ座標とし、ｙ座標は０である種数２超楕円曲線Ｃ上の点である。ｚｋ（ｋ＝１，２）はｚに関する（１２）式で示される２次多項式の零点とする。【００７１】
Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）                  （１２）【００７２】
各ｚｋに対してｔｋをｔｋ＝（ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ））／ｙで定める。【００７３】
以上、前者の種数２超楕円曲線Ｃのヤコビ多様体から種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像について説明した。【００７４】
また、この時、種数２超楕円曲線Ｃの√２乗法写像εは±ι−１ρで与えられる。ここでιは、（９）式で定義される種数２超楕円曲線Ｃから種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線への同型写像であり、ι−１が、後者の種数２超楕円曲線ＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から種数２超楕円曲線Ｃのヤコビ多様体への準同型写像となる。【００７５】
準同型写像演算部４での動作を図４に示すフローチャートを用いて説明する。
まず、準同型写像演算部４は記憶部１から埋め込み演算部３が生成したＵ（ｘ）とＶ（ｘ）の対を読み出し、これを種数２超楕円曲線Ｃ上の０次因子の点Ｄ＝（ｘ、ｙ）−（ｘ’、ｙ’）とする（ステップＳ２００）。【００７６】
次に、準同型写像演算部４は、（ｘ、ｙ）から、Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）＝０を満たすｚｋ（ｋ＝１，２）について、ｔｋ＝ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ）となるｔｋを定める。同様に、（ｘ’、ｙ’）から、Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）＝０を満たすｚ’ｋ（ｋ＝１，２）について、ｔ’ｋ＝ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ）となるｔ’ｋを定める（ステップＳ２０１）。【００７７】
次に、準同型写像演算部４は、（（ｚ１、ｔ１）＋（ｚ２、ｔ２））−（（ｚ’１、ｔ’１）＋（ｚ’２、ｔ’２））という０次因子を表す２次多項式Ｕ０（ｚ）と１次多項式Ｖ０（ｚ）とを計算する（ステップＳ２０２）。これがＲｉｃｈｅｌｏｔ双対曲線上の因子となる。【００７８】
次に、準同型写像演算部４は、Ｒｉｃｈｅｌｏｔ双対曲線からＣへの写像である（ｘ、ｙ）→（２／ｘ、（４ｙ）／ｘ３）から決まるヤコビ多様体間の写像によって、Ｕ０（ｚ）、Ｖ０（ｚ）をＵ（ｚ）、Ｖ（ｚ）に変換し（ステップＳ２０３）、Ｕ（ｚ）、Ｖ（ｚ）を記憶部１に記憶する（ステップＳ２０４）。【００７９】
以上、ステップＳ２００からステップＳ２０４までが準同型写像演算部４での動作である。【００８０】
図２に戻って楕円曲線暗号演算装置におけるスカラー倍演算の動作の説明を続ける。
次に、射影演算部５は、種数２超楕円曲線Ｃのヤコビ多様体の点εＤ＝（ｘ、ｙ）−（ｘ’、ｙ’）を楕円曲線上の点Ｐ’に写像する演算（射影演算）を行う（ステップＳ１０４）。【００８１】
射影演算部５は、射影点εＤ＝（ｘ、ｙ）−（ｘ’、ｙ’）から楕円曲線Ｅ上の射影点Ｐ’（ｚ、ｔ）を求める楕円曲線Ｅへの写像を（１３）式と（１４）式との関係式で定める。【００８２】
【数７】
2006030496.tif 000008
【００８３】
【数８】
2006030496.tif 000009
【００８４】
ここで、ｘは種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙは種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚは楕円曲線Ｅ上の点Ｐのｘ座標、ｔは楕円曲線Ｅ上の点Ｐのｙ座標、αとＵとは楕円曲線Ｅを規定するパラメータである。【００８５】
同様に、射影演算部５では、ｚ’、ｔ’を以下に示す（１５）式と（１６）式との関係式で定める。【００８６】
【数９】
2006030496.tif 000010
【００８７】
【数１０】
2006030496.tif 000011
【００８８】
ここで、ｘ’は種数２超楕円曲線Ｃのヤコビ多様体の点のｘ座標、ｙ’は種数２超楕円曲線Ｃのヤコビ多様体の点のｙ座標、ｚ’は楕円曲線Ｅ上の点Ｐのｘ座標、ｔ’は楕円曲線Ｅ上の点Ｐのｙ座標、αとＵとは楕円曲線Ｅを規定するパラメータである。【００８９】
そして、（ｚ２、ｔ）−（ｚ’２、ｔ’）で与えられる楕円曲線Ｅ上の点Ｐ’を対応させる。【００９０】
射影演算部５での動作を図５に示すフローチャートを用いて説明する。
射影演算部５は、準同型写像演算部４で生成したＵ（ｚ）、Ｖ（ｚ）を記憶部１から読み出し、種数２超楕円曲線Ｃのヤコビ多様体の点（ｘ、ｙ）−（ｘ’、ｙ’）とする（ステップＳ４００）。【００９１】
次に、射影演算部５は、ｚ、ｔ、ｚ’、ｔ’を上記した（１４）式〜（１７）式で求め、（ｚ２、ｔ）−（ｚ’２、ｔ’）で与えられる楕円曲線Ｅ上の点Ｐ’を得る（ステップＳ４０１）。【００９２】
次に、射影演算部５は、得られた楕円曲線Ｅ上の点Ｐ’を記憶部１に記憶する（ステップＳ４０２）。【００９３】
以上、ステップＳ４００からステップＳ４０２までが射影演算部５での動作である。【００９４】
図２に戻って楕円曲線暗号演算装置におけるスカラー倍演算の動作の説明を続ける。
計算処理部６は、ステップＳ１００からステップＳ１０４を行った後、記憶部１から楕円曲線Ｅ上の点Ｐ’を読み出し、上記したＧＬＶ型スカラー倍演算を用いて、楕円曲線Ｅ上の点Ｐ’のスカラー倍数Ｋでのスカラー倍演算を行い、ＫＰ’を得る（ステップＳ１０５）。そして、計算により得たＫＰ’を出力する（ステップＳ１０６）。【００９５】
以上、この実施形態における楕円曲線暗号演算装置でのスカラー倍演算の方法をまとめる。まず、埋め込み演算部３により、楕円曲線Ｅ上の点Ｐを種数２超楕円曲線Ｃのヤコビ多様体の点Ｄに変換する。次に、準同型写像演算部４により、√２乗法写像εを用いてεＤを計算し、射影演算部５により、εＤから楕円曲線Ｅ上の点を得る。ここでは、その点をφ（Ｐ）と書くことにする。最後に、φ（Ｐ）を特殊準同型に用いてＧＬＶ型スカラー倍演算を行うことにより、スカラー倍数Ｋでのスカラー倍演算を実現できる。【００９６】
上記したスカラー倍演算は、その方法をプログラムで記述することによりコンピュータに実行させることができる。
具体的には、楕円曲線Ｅ上の点Ｐのスカラー倍（Ｋ倍）演算をコンピュータに実行させるプログラムは、楕円曲線Ｅ上の点Ｐを種数２超楕円曲線Ｃのヤコビ多様体上の点Ｄに変換し、点Ｄに対して、種数２超楕円曲線Ｃのヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを楕円曲線Ｅ上へ写像して楕円曲線の射影点Ｐ’を求め、
演算値Ｋと射影点Ｐ’とを読み込んで、射影点Ｐ’をＫ倍する計算を行い、計算結果を出力する。【００９７】
この実施の形態によれば楕円曲線暗号演算装置は、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部に記憶する入力部と、記憶部に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部に記憶する埋め込み演算部と、記憶部に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部に記憶する準同型写像演算部と、記憶部に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線の射影点Ｐ’を求め、射影点Ｐ’を記憶部に記憶する射影演算部と、記憶部に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部に記憶する計算処理部とを備えるので、楕円曲線暗号で行うスカラー倍演算を従来より速い処理速度で実行することが可能となる。【００９８】
この実施の形態によれば楕円曲線暗号演算装置は、さらに、代数曲線を選択して記憶部に設定するとともに、楕円曲線Ｅ上の点Ｐを、代数曲線のヤコビ多様体へ写像するためのパラメータを記憶部に設定する初期設定部を備えるので、用いる楕円曲線を変更することができ、多様な楕円曲線で楕円曲線暗号を実行することが可能となる。その結果、楕円曲線暗号演算装置で実行する楕円曲線暗号の安全性を向上させることができる。【００９９】
この実施の形態によれば楕円曲線暗号演算装置の初期設定部は、代数曲線として超楕円曲線を選択し、さらに、代数曲線として種数２超楕円曲線Ｃを選択するので、楕円曲線Ｅ上の点Ｐの種数２超楕円曲線Ｃのヤコビ多様体への写像を行うことにより、従来より速い処理速度で楕円曲線暗号で行うスカラー倍演算を実行することが可能となる。【０１００】
この実施の形態によれば楕円曲線暗号演算装置の準同型写像演算部は、代数曲線のヤコビ多様体の点Ｄを√２倍して写像点εＤを求めるので、√２倍して写像を行う効率的に計算可能な準同型写像を利用することが可能となる。【０１０１】
この実施の形態によれば楕円曲線暗号演算装置の入力部は、楕円曲線Ｅを示す情報として２捩れ点を有する楕円曲線を示す情報を入力するので、または、位数が素数になっている位数素数の楕円曲線を示す情報を入力するので、楕円曲線Ｅ上の点Ｐの種数２超楕円曲線Ｃのヤコビ多様体への写像を利用した従来より速い処理の速いスカラー倍演算を実行することが可能となる。【０１０２】
この実施の形態によれば楕円曲線暗号演算装置の準同型写像演算部は、代数曲線のヤコビ多様体の準同型写像として、代数曲線のヤコビ多様体から代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像と、代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から代数曲線のヤコビ多様体への準同型写像との合成で決まる代数曲線のヤコビ多様体上の自己準同型写像を用いるので、この代数曲線のヤコビ多様体上の自己準同型写像をスカラー倍演算を効率的に計算することが可能な準同型写像として用いることができる。【０１０３】
この実施の形態によれば楕円曲線暗号演算装置の準同型写像演算部で用いる代数曲線のヤコビ多様体から代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像は、代数曲線が種数２超楕円曲線Ｃである場合、上記した（７）式と（８）式とで定まり、また、楕円曲線暗号演算装置の準同型写像演算部で用いる代数曲線のＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体から代数曲線のヤコビ多様体への準同型写像は、代数曲線が種数２超楕円曲線Ｃである場合、上記した（９）式で定まるので、これらを合成した写像である代数曲線のヤコビ多様体上の自己準同型写像をスカラー倍演算を効率的に計算することが可能な準同型写像として用いることができる。【０１０４】
この実施の形態によれば楕円曲線暗号演算装置の埋め込み演算部は、楕円曲線Ｅ上の点Ｐ（ｚ、ｔ）から代数曲線のヤコビ多様体の埋め込み点Ｄ（ｘ、ｙ）を求める楕円曲線Ｅが埋め込まれた代数曲線のヤコビ多様体への写像を上記した（３）式と（４）式との関係式で定めるので、楕円曲線Ｅ上の点Ｐを代数曲線のヤコビ多様体の点Ｄへ写像することができる。【０１０５】
この実施の形態によれば楕円曲線暗号演算装置の射影演算部は、射影点εＤ（ｘ、ｙ）から楕円曲線Ｅ上の射影点Ｐ’（ｚ、ｔ）を求める楕円曲線Ｅへの写像を上記した（１３）式〜（１６）式との関係式で定めるので、代数曲線のヤコビ多様体の点εＤを楕円曲線上の点Ｐ’に写像することができる。【０１０６】
この実施の形態によれば楕円曲線を用いた演算装置の演算方法として、楕円曲線Ｅを示す情報と楕円曲線Ｅ上の点Ｐと演算値Ｋとを入力して記憶部に記憶し、記憶部に記憶された楕円曲線Ｅ上の点Ｐを読み込んで、楕円曲線Ｅ上の点Ｐを、その楕円曲線Ｅに対応する代数曲線のヤコビ多様体へ写像して楕円曲線Ｅ上の点Ｐに対応する代数曲線のヤコビ多様体上の点を埋め込み点Ｄとして求め、埋め込み点Ｄを記憶部に記憶し、記憶部に記憶された埋め込み点Ｄを読み込んで、代数曲線のヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを記憶部に記憶し、記憶部に記憶された写像点εＤを読み込んで、楕円曲線Ｅへ写像して楕円曲線Ｅ上の射影点Ｐ’を求め、射影点Ｐ’を記憶部に記憶し、記憶部に記憶された演算値Ｋと射影点Ｐ’とを読み込んで、演算値Ｋと射影点Ｐ’とを用いて計算を行い、計算結果を記憶部に記憶するので、楕円曲線暗号で行うスカラー倍演算を従来より速い処理速度で実行することが可能となる。【０１０７】
この実施の形態によれば楕円曲線Ｅ上の点Ｐを種数２超楕円曲線Ｃのヤコビ多様体上の点Ｄに変換し、点Ｄに対して、種数２超楕円曲線Ｃのヤコビ多様体の準同型写像による写像をして写像点εＤを求め、写像点εＤを楕円曲線Ｅ上へ写像して楕円曲線の射影点Ｐ’を求め、演算値Ｋと射影点Ｐ’とを読み込んで、射影点Ｐ’をＫ倍する計算を行い、計算結果を出力することをプログラムに記載するので、楕円曲線Ｅ上の点Ｐのスカラー倍（Ｋ倍）演算をコンピュータに実行させることができる。【０１０８】
この実施の形態によれば、従来の方法では、かなり特殊なタイプの楕円曲線Ｅにしか適用することができなかった楕円曲線暗号でのスカラー倍演算の高速化手法であるＧＬＶ型スカラー倍演算を、かなり一般な楕円曲線Ｅに適用することができるようになり、これにより楕円曲線暗号の安全性を実用上十分に保証されるようにした。【０１０９】
以上、実施の形態について説明した。
なお、楕円曲線暗号演算装置は、楕円曲線をある種数２超楕円曲線Ｃのヤコビ多様体に埋め込む演算部と、楕円曲線上の点を種数２超楕円曲線Ｃのヤコビ多様体の点に写像する演算（埋め込み演算）を行う演算部と、種数２超楕円曲線Ｃのヤコビ多様体の点を√２倍する演算を行う演算部と、種数２超楕円曲線Ｃのヤコビ多様体の点を楕円曲線上の点に写像する演算（射影演算）を行う演算部とを備えたことを特徴とする。ここで、√２倍演算とは、非特許文献４で記述された２度行うと２倍写像になる演算である。【０１１０】
また、楕円曲線暗号演算装置は、特殊準同型写像φとして、次式で定まるＣのヤコビ多様体からＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像と、
Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）＝０、ｙｔｋ＝ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ）
次式で定まるＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体からＣのヤコビ多様体への準同型写像と、
（ｘ、ｙ）→（２／ｘ、（４ｙ）／ｘ３）
の合成で決まる種数２超楕円曲線Ｃのヤコビ多様体上の自己準同型写像を用いることを特徴とする。【０１１１】
楕円曲線暗号演算装置では、楕円曲線Ｅから種数２超楕円曲線Ｃのヤコビ多様体への写像、種数２超楕円曲線Ｃのヤコビ多様体から楕円曲線Ｅへの写像が、楕円曲線上の点（ｚ、ｔ）と種数２超楕円曲線Ｃの点（ｘ、ｙ）の間の以下に示す関係式から定まることを特徴とする。
ｚ＝（ｘ−α−１）／（αｘ＋α−１）
ｔ＝３２ｙ（Ｕ３−８Ｕ２＋４Ｕ＋３２＋α（Ｕ−４）（Ｕ２＋４Ｕ−２０））／（（Ｕ−２）（αｘ＋α−１））３【０１１２】
また、プログラムにより楕円曲線暗号演算装置の楕円曲線をある種数２超楕円曲線Ｃのヤコビ多様体に埋め込む演算部と、楕円曲線上の点を種数２超楕円曲線Ｃのヤコビ多様体の点に写像する演算（埋め込み演算）を行う演算部と、種数２超楕円曲線Ｃのヤコビ多様体の点を√２倍する演算を行う演算部と、種数２超楕円曲線Ｃのヤコビ多様体の点を楕円曲線上の点に写像する演算（射影演算）を行う演算部とを用いる演算処理をコンピュータに実行させる。ここで、√２倍演算とは、非特許文献４で記述された２度行うと２倍写像になる演算である。【０１１３】
また、プログラムにより楕円曲線暗号演算装置の特殊準同型写像φとして、次式で定まるＣのヤコビ多様体からＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体への準同型写像と、
Ｇ１（ｘ）Ｈ１（ｚ）＋Ｇ２（ｘ）Ｈ２（ｚ）＝０
ｙｔｋ＝ΔＧ１（ｘ）Ｈ１（ｚｋ）（ｘ−ｚｋ）
次式で定まるＣのＲｉｃｈｅｌｏｔ双対曲線のヤコビ多様体からＣのヤコビ多様体への準同型写像、
（ｘ、ｙ）→（２／ｘ、（４ｙ）／ｘ３）
の合成で決まる種数２超楕円曲線Ｃのヤコビ多様体上の自己準同型写像を用いる演算処理をコンピュータに実行させる。【０１１４】
また、プログラムにより楕円曲線暗号演算装置の楕円曲線Ｅから種数２超楕円曲線Ｃのヤコビ多様体への写像、種数２超楕円曲線Ｃのヤコビ多様体から楕円曲線Ｅへの写像が、楕円曲線上の点（ｚ、ｔ）と種数２超楕円曲線Ｃの点（ｘ、ｙ）の間の以下に示す関係式から定まる演算処理をコンピュータに実行させる。
ｚ＝（ｘ−α−１）／（αｘ＋α−１）
ｔ＝３２ｙ（Ｕ３−８Ｕ２＋４Ｕ＋３２＋α（Ｕ−４）（Ｕ２＋４Ｕ−２０））／（（Ｕ−２）（αｘ＋α−１））３【０１１５】
以上、実施の形態において述べた楕円曲線暗号演算装置は、コンピュータにより実現することができる。図６は、実施の形態における楕円曲線暗号演算装置をコンピュータにより実現した場合のハードウェア構成を示す図である。【０１１６】
図６において楕円曲線暗号演算装置は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。【０１１７】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。【０１１８】
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。【０１１９】
プログラム群９２３には、上記した実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。【０１２０】
上記した実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＭＤ（Ｍｉｎｉ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。【０１２１】
上記した実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、ハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。【０１２２】
上記した実施の形態を実施するプログラムは、また、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＭＤ（Ｍｉｎｉ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【図面の簡単な説明】
【０１２３】
【図１】実施の形態における楕円曲線暗号演算装置の構成を示す図である。
【図２】実施の形態における楕円曲線暗号演算装置でのスカラー倍演算の動作を示すフローチャートである。
【図３】実施の形態における楕円曲線暗号演算装置の埋め込み演算部の動作を示すフローチャートである。
【図４】実施の形態における楕円曲線暗号演算装置の準同型写像演算部の動作を示すフローチャートである。
【図５】実施の形態における楕円曲線暗号演算装置の射影演算部の動作を示すフローチャートである。
【図６】実施の形態における楕円曲線暗号演算装置をコンピュータにより実現した場合のハードウェア構成を示す図である。
【符号の説明】
【０１２４】
１  記憶部、２  入力部、３  埋め込み演算部、４  準同型写像演算部、５  射影演算部、６  計算処理部、７  初期設定部、９０１  表示装置、９０２  キーボード（Ｋ／Ｂ）、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2006030496.tif 000016
【図２】
2006030496.tif 000017
【図３】
2006030496.tif 000018
【図４】
2006030496.tif 000019
【図５】
2006030496.tif 000020
【図６】
2006030496.tif 000021