(57)【特許請求の範囲】
【請求項１】
識別子を用いる公開鍵暗号方式によって、第１の主体者と第２の主体者との間で共有する共有鍵を生成する、前記第１の主体者が利用する情報処理端末に、
素体で定義される楕円曲線上の加法巡回群上であり、素体の元を座標とする有理点と、拡大体の元を座標とする有理点の２点から前記素体の拡大体上の元を出力するミラーアルゴリズムに、前記第１の主体者と前記第２の主体者のそれぞれに秘密鍵を配布する装置により公開される公開パラメータを入力した演算結果である第１の演算値を算出して保持し、
前記共有鍵を共有する前記第２の主体者の識別子を用いた変数と前記第１の主体者の秘密鍵とを前記ミラーアルゴリズムに入力した演算結果である第２の演算値を算出し、
前記第１の演算値のべき乗算および前記第２の演算値のそれぞれに、最終べき演算を実行して前記共有鍵を生成する
処理を実行させることを特徴とする共有鍵生成プログラム。
【請求項２】
前記保持する処理は、前記べき乗算の繰り返し回数を前記ミラーアルゴリズムの繰り返し回数ごとに合わせて分割し、分割した各部分べき乗算の結果を保持し、
前記生成する処理は、前記各部分べき乗算および前記第２の演算値のそれぞれに、最終べき演算を実行して前記共有鍵を生成することを特徴とする請求項１に記載の共有鍵生成プログラム。
【請求項３】
前記算出する処理は、前記第１の演算値のべき乗算および前記第２の演算値のそれぞれに、最終べき演算を実行して、前記２点を用いたべき乗算の双線形写像と、前記第２の主体者の識別子を用いた変数および前記第１の主体者の秘密鍵を用いた双線形写像とを算出し、各双線形写像の乗算結果を、前記共有鍵として生成することを特徴とする請求項１に記載の共有鍵生成プログラム。
【請求項４】
識別子を用いる公開鍵暗号方式によって、第１の主体者と第２の主体者との間で共有する共有鍵を生成する、前記第１の主体者が利用する情報処理端末が、
素体で定義される楕円曲線上の加法巡回群上であり、素体の元を座標とする有理点と、拡大体の元を座標とする有理点の２点から前記素体の拡大体上の元を出力するミラーアルゴリズムに、前記第１の主体者と前記第２の主体者のそれぞれに秘密鍵を配布する装置により公開される公開パラメータを入力した演算結果である第１の演算値を算出して保持し、
前記共有鍵を共有する前記第２の主体者の識別子を用いた変数と前記第１の主体者の秘密鍵とを前記ミラーアルゴリズムに入力した演算結果である第２の演算値を算出し、
前記第１の演算値のべき乗算および前記第２の演算値のそれぞれに、最終べき演算を実行して前記共有鍵を生成する
処理を実行することを特徴とする共有鍵生成方法。
【請求項５】
識別子を用いる公開鍵暗号方式によって、第１の主体者と第２の主体者との間で共有する共有鍵を生成する、前記第１の主体者が利用する情報処理端末において、
素体で定義される楕円曲線上の加法巡回群上であり、素体の元を座標とする有理点と、拡大体の元を座標とする有理点の２点から前記素体の拡大体上の元を出力するミラーアルゴリズムに、前記第１の主体者と前記第２の主体者のそれぞれに秘密鍵を配布する装置により公開される公開パラメータを入力した演算結果である第１の演算値を記憶する記憶部と、
前記共有鍵を共有する前記第２の主体者の識別子を用いた変数と前記第１の主体者の秘密鍵とを前記ミラーアルゴリズムに入力した演算結果である第２の演算値を算出する算出部と、
前記第１の演算値のべき乗算および前記第２の演算値のそれぞれに、最終べき演算を実行して前記共有鍵を生成する生成部と
を有することを特徴とする情報処理端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有鍵生成プログラム、共有鍵生成方法および情報処理端末に関する。
【背景技術】
【０００２】
計算機やネットワークに関する技術の進展と普及に伴い、無線通信網やインターネットなどを通じて重要なデータがやりとりされる機会が増えている。無線通信網やインターネットでは通信経路上での盗聴や改竄、なりすましが比較的容易であり、セキュリティを維持するため、通信相手の認証とそれに基づく通信内容の保護を行う暗号通信技術に対する需要が高まっている。暗号通信技術のうち広く使われているものとして、様々な公開鍵暗号化技術を適用したTransport  Layer  Security（TLS）が挙げられる。
【０００３】
このような公開鍵暗号技術の一つとして、識別子に基づく暗号技術（identity-based  cryptography、ID-based  cryptography、以降では「IDベース暗号技術」と記載する場合がある）が知られている。IDベース暗号技術は、公開鍵が任意の識別子（ID）でよく、そのために証明書が不要である。識別子は、IP（Internet  Protocol）アドレス、ホスト名、機器番号、電話番号、その他アプリケーションに応じて決められた名前など、何でも利用することができる。
【０００４】
RSAなどの公開鍵暗号技術では、公開鍵は数学的に作られたある種の数であり、識別子とは無関係に作られることから、利用者が認識できる識別子と公開鍵を関連付けるために証明書が使われることが多い。一方、IDベース暗号技術では、識別子が公開鍵であるため、通信したい相手の識別子がわかれば証明書がなくとも暗号処理を行うことができる。近年では、IDによる相互認証機能付きの２者間鍵共有プロトコルとして、McCullagh−Barretoによる鍵共有プロトコルにおける鍵共有処理（以下、「MB方式」と記載する場合がある）が利用されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３０９０６８号公報
【特許文献２】特開２００９−８０３４４号公報
【特許文献３】特開２０１０−６６５１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、MB方式を用いた鍵共有処理は、計算コストが大きく、処理遅延が発生する場合がある。特に、ゲートウェイやセンサーなどの性能の低い機器が多く利用されるＩｏＴ（Internet  of  Things）システムでは、計算コストにより処理遅延が発生する可能性が高くなる。
【０００７】
例えば、MB方式では、２者間で鍵を共有する処理において、べき乗算が実行された後に、楕円曲線上の双線形写像（以下、ペアリング関数）が実行されるが、それぞれの演算において乗算や二乗算で実行されるので、計算コストが多い。特に、現在多く利用されるＢＮ曲線（２５６ビット）を利用した場合では、ペアリング関数におけるミラーアルゴリズムおよびべき乗算において、合計で二乗算が３１８回、乗算が１９３回実行され、計算コストが多い。
【０００８】
１つの側面では、暗号鍵共有にかかる計算コストを抑制することができる共有鍵生成プログラム、共有鍵生成方法および情報処理端末を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、共有鍵生成プログラムは、識別子を用いる公開鍵暗号方式によって共有鍵を生成する情報処理端末に、前記共有鍵を生成する処理の開始前に、素体で定義される楕円曲線上の加法巡回群上の２点から前記素体の拡大体上の元を出力するアルゴリズムを用いて第１の演算値を予め算出して保持する処理を実行させる。共有鍵生成プログラムは、情報処理端末に、前記共有鍵を生成する処理を開始すると、前記共有鍵を共有する共有者の識別子を用いた変数と前記情報処理端末の秘密鍵と前記アルゴリズムとから第２の演算値を算出する処理を実行させる。共有鍵生成プログラムは、情報処理端末に、前記第１の演算値のべき乗算および前記第２の演算値のそれぞれに、最終べき演算を実行して前記共有鍵を生成する処理を実行させる。
【発明の効果】
【００１０】
一実施形態によれば、暗号鍵共有にかかる計算コストを抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例にかかるシステムの全体構成例を説明する図である。
【図２】図２は、IDベース認証付鍵共有を説明する図である。
【図３】図３は、べき乗計算を説明するフローチャートである。
【図４】図４は、ペアリング計算を説明する図である。
【図５】図５は、Miller（ミラー）アルゴリズムを説明するフローチャートである。
【図６】図６は、情報処理端末の機能構成を示す機能ブロック図である。
【図７】図７は、変数ＤＢに記憶される情報の例を示す図である。
【図８】図８は、分割処理を説明する図である。
【図９】図９は、処理の流れを示すフローチャートである。
【図１０】図１０は、分岐処理の流れを示すフローチャートである。
【図１１】図１１は、効果を説明する図である。
【図１２】図１２は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する共有鍵生成プログラム、共有鍵生成方法および情報処理端末の実施例を図面に基づいて詳細に説明する。この実施例によりこの発明が限定されるものではない。なお、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１３】
［全体構成］
図１は、実施例にかかるシステムの全体構成例を説明する図である。図１に示すように、このシステムは、共有サーバ１と情報処理端末１０と情報処理端末２０とがネットワークＮを介して接続され、情報処理端末１０と情報処理端末２０との間で、ＭＢ方式を用いた鍵共有を採用したIDベース暗号技術を実行するシステムである。なお、ネットワークＮには、有線または無線を問わず、インターネット（Internet）を始め、LAN（Local  Area  Network）やVPN（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００１４】
共有サーバ１は、プライベート鍵生成者（private  key  generator；PKG）であり、情報処理端末１０および情報処理端末２０のそれぞれに秘密鍵（プライベート鍵）を配布する。情報処理端末１０は、ユーザA（以下では主体Aと記載する場合ある）が利用するコンピュータであり、情報処理端末２０は、ユーザB（以下では主体Bと記載する場合ある）が利用するコンピュータである。なお、各情報処理端末としては、サーバ、パーソナルコンピュータ、携帯電話、スマートフォンなどを採用することができる。
【００１５】
［MB方式の説明］
ここで、一般的なMB方式を用いた鍵共有の方式について説明する。まず、記号の定義を行う。標数をpとして、素体Fpで定義される楕円曲線上の加法巡回群をE(Fp)と表記し、E(Fp)の位数#E(Fp)を割り切る最大素数をrとし、r|pk−1を満たすkを埋め込み次数と呼び、E(Fp)における位数rの部分加法群をE(Fp)[r]とする。このとき、双線形写像eは、以下に定義される巡回群G1とG2の２つの元を入力として拡大体上の元を出力する関数（例えば有理関数）として定義される。なお、e：G1×G2→G3であってもよい。なお、Fpkは、実施例上ではFpにおけるpのk乗と同様として記載する。
【００１６】
G1：E（Fp)[r]
G2：E(Fpk)[r]
G3：Fpk*/(Fpk*)r
E：G2×G1  →  G3
【００１７】
また、整数0〜（r―1）の整数で構成される群をZrと表記する。このとき、G1とG2の元に対し、α∈Zr、P∈G1（あるいはG2）の場合に、スカラー倍算αPは、Pをα個加算する計算と定義される。さらに、G3の元に対し、α∈Zr、x∈G3に対し、べき乗算xαは、xをα個乗算する計算と定義される。このとき、双線形性とはe(xP,Q)＝e(P,xQ)＝e(P,Q)xを満たす性質のことである。
【００１８】
次に、鍵交換を具体的に説明する。プライベート鍵生成者（private  key  generator；PKG）がマスター秘密鍵s∈Zrを決定し、秘密に保持する。また、PKGは、公開パラメータP∈G1、Q∈G2、e、HおよびP0＝sP∈G1を決定し、公開する。ただし、Pは、巡回群G1の生成元、QはG2の生成元、eは双線形写像（以下、ペアリング関数と呼ぶ）、Hは識別子から整数を求めるためのハッシュ関数である。主体Ａの識別子IDAに対応する公開鍵PAは、a＝H(IDA)とすると、PA＝aP＋P0＝(a＋s)Pであり、公開パラメータから誰でも算出できる。IDAに対応するプライベート鍵SAは、SA＝(a＋s)-1Qであり、マスター秘密鍵sを知るPKGのみが算出できる。
【００１９】
次に、PKGは、生成したプライベート鍵を、対応する識別子で認証を受ける権利のある正しい主体に通知する。主体AとBが鍵交換を行うには、あらかじめ互いに相手の識別子を知っている前提で、次のように行う。主体Ａは、整数xをランダムに選び、RA＝xPBを計算し、主体Bへ送る。主体Bも同様に整数yをランダムに選び、RB＝yPAを計算し、主体Aへ送る。RAやRBはそれぞれ主体B、主体Aのみが鍵交換に使える鍵材料である。RAを受け取った主体Bは、ZB＝e(P,Q)ye(RA,SB)を計算する。一方RBを受け取った主体Aは、ZA＝e(P,Q)xe(RB,SA)を計算する。主体A、Bがそれぞれプライベート鍵SA、SBをもつ正しい主体であり、鍵材料が途中で改ざんされていなければ、ペアリングの双線形性によりZA＝ZB＝e(P,Q)x+yが成り立ち、ZA=ZBを共有鍵とする鍵交換が完了する。
【００２０】
ここで、上述した処理の流れを説明する。図２は、IDベース認証付鍵共有を説明する図である。なお、主体A（情報処理端末１０）の秘密鍵をSA＝(a＋s)-1Qとし、主体B（情報処理端末２０）の秘密鍵をSB＝(b＋s)-1Qとする。
【００２１】
図２に示すように、主体Aが、識別子IDAを主体Bに送付し（ステップＳ１）、主体Bが、識別子IDBを主体Aに送付し（ステップＳ２）、互いの識別子を交換する。
【００２２】
続いて、主体Aは、主体Bの公開鍵の素材となるb＝H(IDB)を算出し（ステップＳ３）、同様に、主体Bは、主体Aの公開鍵の素材となるa＝H(IDA)を算出する（ステップＳ４）。その後、主体Aは、RA＝xPB（xは一時鍵）を計算し、主体Bへ送る（ステップＳ５）。同様に、主体Bは、RB＝yPA（yは一時鍵）を計算し、主体Aへ送る（ステップＳ６）。
【００２３】
そして、主体Aは、主体Aの公開鍵PA＝aP＋P0＝(a＋s)PとRB＝yPAとSA＝(a＋s)-1Qとを用いて、ZA＝e(P,Q)xe(RB,SA)を算出する（ステップＳ７）。同様に、主体Bは、主体Bの公開鍵PB＝bP＋P0＝(b＋s)PとRA＝xPBとSB＝(b＋s)-1Qとを用いて、ZB＝e(P,Q)ye(RA,SB)を算出する（ステップＳ８）。この結果、主体Aおよび主体Bにおいて、ZA=ZBを共有鍵とする鍵交換が完了する。
【００２４】
上述したように、MB方式における鍵共有処理では、鍵c＝zx×e（R,S）と計算することができる。ここで、eは、ペアリング関数（楕円曲線上の双線形写像）、zは、ペアリングの事前計算結果（e（P,Q））、xは整数（x∈Zr）、P,Qは楕円曲線上加法群の元である。一般的には、c0＝zxを計算し、c1＝e(R,S)を計算した後、c＝c0×c1を計算することで、共有鍵を計算する。
【００２５】
ここで、共有鍵を作成するために、ペアリングを２回実行するが、e(P,Q)の計算については、PとQを事前に入手しているので、事前に計算可能である。そのため、主体Aで共有鍵を行う際には、まず、e(P,Q)xを得るために、べき乗算を実行し、続いてe(RB,SA)を得るために、ペアリングを実行し、これらの結果の積を計算することで実現できる。次に、一般的なべき乗算とペアリングとについて具体的に説明する。
【００２６】
（べき乗算）
次に、情報処理端末１０を例にして一般的なべき乗の計算について説明する。ペアリングに基づく暗号方式では、十分な安全性を保証するために、256ビット以上の位数rが使用される。そのため、例えばべき乗算ax（a∈G3,x∈Zr）を計算する場合、Zrからxをランダムに選ぶと、xは極めて高い確率でrと同程度の大きさとなる。従って、単純にべき乗算を実行しようとすると、aを2256個掛け算することとなり、現実的ではない。そこで、べき乗算を効率的に計算するための手法としてバイナリ―法が多く利用される（図３参照）。
【００２７】
図３は、べき乗計算を説明するフローチャートである。図３に示すように、情報処理端末１０は、最終的に算出するbに変数aを代入し、iにxのビット数−1を代入する（ステップＳ１０）。
【００２８】
続いて、iが0より大きければ（ステップＳ１１：Ｙｅｓ）、情報処理端末１０は、b＝b2とし（ステップＳ１２）、Bit（x,i）が1か否かを判定する（ステップＳ１３）。ここで、情報処理端末１０は、Bit（x,i）が1である場合（ステップＳ１３：Ｙｅｓ）、b＝b×aを実行し（ステップＳ１４）、iを１減算した後（ステップＳ１５）、ステップＳ１１以降を繰り返す。なお、Bit(x,i)はxの最下位ビットからi番目のビット値を示す。
【００２９】
一方、情報処理端末１０は、Bit（x,i）が1ではない場合（ステップＳ１３：Ｎｏ）、ステップＳ１５以降を実行する。なお、ステップＳ１１において、iが0以下である場合（ステップＳ１１：Ｎｏ）、情報処理端末１０は、処理を終了する。
【００３０】
具体例を挙げて説明すると、ここでは、簡単な例として、aをx=10乗する計算を例にアルゴリズムを説明する。まず、初期化として、最終的な結果が得られる変数bにaを代入し、繰り返し回数iに指数（xのビット数−1）、すなわち3を代入する。そして、iに基づき繰り返し処理を実行する。現在、iは3のため、bに対し二乗算（b＝a2）を行う。そして、xの最下位ビットからi番目のビット値をチェックし、0であれば、iから1を引いて次の繰り返し処理に進み、1であればbに対しaを乗算する。現在、i=3番目のビットは0のため、次の繰り返し処理に進む。
【００３１】
次に、i＝2のため、b＝b2＝a4を計算する。そして、i=2番目のビット値を調べると、1のため、b＝b×a＝a5を計算し、iから1をひいて次の繰り返し処理に進む。次に、i＝1のため、b＝b2＝a10を計算する。そして、i＝1番目のビット値を調べると0のため、iから1を引いて次の繰り返し処理に進む。次に、i＝0であり、i＞0を満たさないため、計算を終了する。このとき、b＝a10であり、正しく計算できていることが分かる。このように、一般的な方法では、aを9回乗算する必要があるのに対し、バイナリ法では2乗算を3回、乗算を1回、計4回の乗算と効率的に計算可能である。なお、xのハミング重みとは、xを2進数展開した際の1の数である。
【００３２】
（ペアリング計算）
次に、図４と図５を用いてペアリング計算について説明する。図４は、ペアリング計算を説明する図であり、図５は、Millerアルゴリズムを説明するフローチャートである。
【００３３】
図４に示すように、ペアリング処理は、楕円曲線上の２点を入力として拡大体の元を出力する。具体的には、素体（E(Fpk)上のG1群の点Pと素体（E(Fpk)上のG2群の点Qと入力として、これら点Pと点Qを、Millerアルゴリズムによって、Fpをk次元にした拡大体上の点で表し、その後に最終べきを行って、拡大体上のG3群の点を生成する。
【００３４】
つまり、ペアリング計算は大きく分けて2段階の処理に分かれている。1つは、Millerアルゴリズムと呼ばれる計算と、もう1つは最終べきと呼ばれる計算である。上記ペアリングe(P,Q)を計算する際、MillerアルゴリズムはPとQから拡大体Fpk上の元を出力する関数fとして定義される。そして、最終べきは、Millerアルゴリズムで得られた拡大体上の元を(pk−1)/rでべき乗算することでG3上の元を得られる。ペアリングeは、Millerアルゴリズムfを用いて式（１）で表現できる。
【００３５】
【数１】
0006610277.tif 000002
【００３６】
ここで、Millerアルゴリズムの計算について説明する。図５に示すように、情報処理端末１０は、入力をP、Qとして、初期化を実行する（ステップＳ２０）。具体的には、情報処理端末１０は、最終的な出力値zに1を代入し、変数iに（予め定めた繰り返し回数（α）のビット数から1減算した値を代入し、TにQを代入する。
【００３７】
続いて、iが0より大きければ（ステップＳ２１：Ｙｅｓ）、情報処理端末１０は、zを算出し（ステップＳ２２）、TにT＋Tを代入し（ステップＳ２３）、Bit（α,i）が1か否かを判定する（ステップＳ２４）。なお、Bit(α,i)はαのi番目のビット値を示す。また、Ｓ２２で実行される式のlT,T(P)は、Tを通る接線の式にPを代入することを示す。
【００３８】
そして、情報処理端末１０は、Bit（α,i）が1である場合（ステップＳ２４：Ｙｅｓ）、zを算出し（ステップＳ２５）、TにT＋Qを代入し（ステップＳ２６）、iを１減算した後（ステップＳ２７）、ステップＳ２１以降を繰り返す。なお、Ｓ２５で実行される式のlT,Q(P)は、TとQを通る直線の式にPを代入することを示す。
【００３９】
一方、情報処理端末１０は、Bit（α,i）が1ではない場合（ステップＳ２４：Ｎｏ）、ステップＳ２７以降を実行する。なお、ステップＳ２１において、iが0以下である場合（ステップＳ２１：Ｎｏ）、情報処理端末１０は、処理を終了する。
【００４０】
上述したように、べき乗算もMillerアルゴリズムの計算も、繰り返し処理の中で拡大体上の元に対する2乗算が必ず実行されている。最終的にべき乗算の結果とMillerアルゴリズムの結果は乗算されるため、2つのアルゴリズムで実行される2乗算を減らすことにより、共有鍵に生成にかかる計算コストの削減を実現する。
【００４１】
そこで、以下では、共有鍵の生成にかかる計算において2乗算の回数を削減することで、計算コストを削減する実施例について説明する。なお、情報処理端末１０と情報処理端末２０とは同様の処理を実行するので、ここでは、情報処理端末１０を例にして説明する。
【００４２】
［機能構成］
図６は、情報処理端末１０の機能構成を示す機能ブロック図である。図６に示すように、情報処理端末１０は、通信部１１、記憶部１２、制御部１５を有する。
【００４３】
通信部１１は、他の装置の通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信部１１は、共有サーバ１から秘密鍵を受信し、情報処理端末２０に識別子（IDA）などを送信し、情報処理端末２０から識別子（IDB）などを受信する。
【００４４】
記憶部１２は、プログラムやデータなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部１２は、変数ＤＢ１２ａと鍵ＤＢ１２ｂとを記憶する。変数ＤＢ１２ａは、ＭＢ方式を用いて共有鍵の生成する際に利用される各種情報を記憶するデータベースである。図７は、変数ＤＢ１２ａに記憶される情報の例を示す図である。図７に示すように、変数ＤＢ１２ａは、事前計算が可能である「R、S、x、z´＝f(P,Q)、z1´、z2´、z3´」を記憶する。鍵ＤＢ１２ｂは、情報処理端末２０との間で生成された共有鍵を記憶するデータベースである。
【００４５】
制御部１５は、情報処理端末１０全体の処理を司る処理部であり、例えばプロセッサなどである。この制御部１５は、受付部１６、事前算出部１７、分割部１８、算出部１９を有する。なお、受付部１６、事前算出部１７、分割部１８、算出部１９は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【００４６】
受付部１６は、他の端末から各種情報を受信する処理部である。例えば、受付部１６は、共有サーバ１から秘密鍵SA（例えばSA=(a+s)-1Q）を受信して変数ＤＢ１２ａに格納する。また、受付部１６は、上述した識別子IDB、RBなどを情報処理端末２０から受信して変数ＤＢ１２ａに格納する。
【００４７】
事前算出部１７は、鍵共有を行う際のべき乗算もMillerアルゴリズムの計算について、事前に算出可能な各種情報（例えば数値）を算出して、変数ＤＢ１２ａに格納する処理部である。具体的には、事前算出部１７は、ペアリングe(P,Q)ではなく、Millerアルゴリズムの関数を用いたf(P,Q)を、鍵共有処理の事前に計算して変数ＤＢ１２ａに格納する。
【００４８】
すなわち、事前算出部１７がf(P,Q)を事前に計算しておくことで、べき乗算の底となる元がペアリングの結果であるため、最終べきが実行されていることを利用し、e(R,S)の最終べきを行う際に、e(P,Q)の最終べきも同時に行うことができる。つまり、式（２）のように計算することで、最終べきは1回で良いため、e(P,Q)の最終べきを後回しにすることにより、計算コストを削減する。
【００４９】
【数２】
0006610277.tif 000003
【００５０】
分割部１８は、べき乗算の繰り返し回数をMillerアルゴリズムの繰り返し回数に揃えて分割し、事前計算を利用して、分割されたべき乗算における各2乗算も1回で計算する処理部である。なお、分割処理は、省略することもできるが、分割処理を行うことで、計算コストをより削減できる。
【００５１】
図８は、分割処理を説明する図である。図８に示すように、αとx3とは同時に計算可能であるが、αとx2と、αとx1と、αとx0とは、同時に実行することができないので、この部分を繰り返すことになる。そこで、事前計算を活用して、これらをαに合わせて分割して同時に計算することで、繰り返し回数を削減する。
【００５２】
例えば、事前計算を用いて、べき乗算を分割し、2乗算をまとめる方法を説明する。ここでは、rが256ビットのBN（Barreto-Naehrig）曲線の場合を例にする。この場合、xは256ビット、αは64ビットであるため、同時に計算できない二乗算が現れる。したがって、分割部１８は、式（３）のように、xを264進数展開することで、64ビットずつに分割する。
【００５３】
【数３】
0006610277.tif 000004
【００５４】
分割部１８は、この式（３）を用いてzxを変形していくことで、式（２）を式（４）のように変形する。
【００５５】
【数４】
0006610277.tif 000005
【００５６】
すなわち、分割部１８は、z,z1,z2,z3のべき乗算の積を計算しているため、z1,z2,z3を事前に計算して変数ＤＢ１２ａに格納しておく。この結果、これらのべき乗算で実行されている二乗算を1回にまとめることが可能である。よって、これらべき乗算における二乗算とMillerアルゴリズムにおける二乗算を1回にすることができる。
【００５７】
算出部１９は、事前算出されたz´＝f(P,Q)、z1´,z2´,z3´を用いて、べき乗算およびMillerアルゴリズムを計算した後、最終べきを行って、共有鍵を生成する処理部である。具体的には、算出部１９は、式（２）を実行して、「e(P,Q)xe(R,S)」を算出する。そして、この算出部１９は、e(P,Q)xe(R,S)を鍵ＤＢ１２ｂに格納する。
【００５８】
［処理の流れ］
次に、上述した事前算出および分割処理のフローチャートを説明する。図９は、処理の流れを示すフローチャートであり、図１０は、分岐処理の流れを示すフローチャートである。なお、図８の処理が実行された後に最終べきが実行される。
【００５９】
図９に示すように、情報処理端末１０は、初期化を実行する（ステップＳ１０１）。具体的には、情報処理端末１０は、最終的に算出する対象のcに1を代入し、繰り返し判定するiに［α（予め定めた繰り返し回数）−1］を代入し、TにQを代入する。
【００６０】
続いて、情報処理端末１０は、xを４分割してx0,x1,x2,x3を得る（ステップＳ１０２）。そして、情報処理端末１０は、iが0より大きければ（ステップＳ１０３：Ｙｅｓ）、c＝c2×lT,T（P）を計算し（ステップＳ１０４）、T＝T+Tを計算した後（ステップＳ１０５）、分岐処理を実行する（ステップＳ１０６）。
【００６１】
そして、情報処理端末１０は、分岐処理が実行された後、iを１減算した後（ステップＳ１０７）、ステップＳ１０３以降を繰り返す。なお、ステップＳ１０３において、iが0以下となった場合（ステップＳ１０３：Ｎｏ）、情報処理端末１０は、処理を終了する。
【００６２】
続いて、ステップＳ１０６の分岐処理について説明する。図１０に示すように、情報処理端末１０は、Bit（α,i）が1である場合（ステップＳ２０１：Ｙｅｓ）、c＝c×lT,Q（P）を算出し、TにT＋Qを代入する（ステップＳ２０２）。一方、情報処理端末１０は、Bit（α,i）が1ではない場合（ステップＳ２０１：Ｎｏ）、ステップＳ２０２を実行することなく、ステップＳ２０３を実行する。
【００６３】
そして、情報処理端末１０は、Bit（x0,i）が1である場合（ステップＳ２０３：Ｙｅｓ）、c＝c×z´を算出する（ステップＳ２０４）。一方、情報処理端末１０は、Bit（x0,i）が1ではない場合（ステップＳ２０３：Ｎｏ）、ステップＳ２０４を実行することなく、ステップＳ２０５を実行する。
【００６４】
続いて、情報処理端末１０は、Bit（x1,i）が1である場合（ステップＳ２０５：Ｙｅｓ）、c＝c×z1´を算出する（ステップＳ２０６）。一方、情報処理端末１０は、Bit（x1,i）が1ではない場合（ステップＳ２０５：Ｎｏ）、ステップＳ２０６を実行することなく、ステップＳ２０７を実行する。
【００６５】
続いて、情報処理端末１０は、Bit（x2,i）が1である場合（ステップＳ２０７：Ｙｅｓ）、c＝c×z2´を算出する（ステップＳ２０８）。一方、情報処理端末１０は、Bit（x2,i）が1ではない場合（ステップＳ２０７：Ｎｏ）、ステップＳ２０８を実行することなく、ステップＳ２０９を実行する。
【００６６】
続いて、情報処理端末１０は、Bit（x3,i）が1である場合（ステップＳ２０９：Ｙｅｓ）、c＝c×z3´を算出した後（ステップＳ２１０）、図８の処理に戻る。一方、情報処理端末１０は、Bit（x3,i）が1ではない場合（ステップＳ２０９：Ｎｏ）、ステップＳ２１０を実行することなく、図８の処理に戻る。
【００６７】
［効果］
上述したように、情報処理端末１０は、ステップＳ１０４の2乗算1回で、z´,z1´,z2´,z3´に対するべき乗算およびMillerアルゴリズムにおける2乗算を実行する。そして、情報処理端末１０は、図９の分岐処理では、各分割されたべき乗算の各指数とMillerアルゴリズムの繰り返し回数それぞれについてビット値をチェックし、ビット値に応じた処理を行う。この結果、2乗算を削減することができ、暗号鍵共有にかかる計算コストを抑制することができる。
【００６８】
図１１は、効果を説明する図である。図１１に示すように、一般曲線では、従来技術の場合、べき乗算内の二乗算は「xのビット数−1」回実行し、Millerアルゴリズム内の二乗算は「αのビット数−1」回実行するので、合計で「（xのビット数）＋（αのビット数）−2）」回の二乗算が実行される。しかし、上記実施例を用いることで、べき乗算の二乗算をMillerアルゴリズム内の二乗算に合わせることができるので、合計で「αのビット数−1」回の二乗算となる。したがって、上記実施例を用いることで、「xのビット数-1」回の二乗算を削減できる。
【００６９】
また、256ビットのBN曲線では、従来技術の場合、べき乗算内の二乗算は「255」回実行し、Millerアルゴリズム内の二乗算は「63」回実行するので、合計で「255＋63＝318」回の二乗算が実行される。しかし、上記実施例を用いることで、べき乗算の二乗算をMillerアルゴリズム内の二乗算に合わせることができるので、合計で「63」回の二乗算となる。したがって、上記実施例を用いることで、「255」回の二乗算を削減できる。
【実施例２】
【００７０】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００７１】
（フロベニウス写像）
べき乗算のべき指数を2x進数展開することで、べき乗算の繰り返し回数とMillerアルゴリズムの繰り返し回数を揃えているが、この場合、例えばべき指数を256ビット、Millerのアルゴリズムの繰り返し回数を64ビットとすると、式（５）を保持する必要がある。
【００７２】
【数５】
0006610277.tif 000006
【００７３】
ここで、BN曲線では、標数pは「p＝36α4−36α3＋24α2−6α＋1」、位数rは「r＝36α4−36α3＋18α2−6α＋1」、トレースtは「t＝6α2＋1」と定義される。この場合、拡大体上の写像として定義されるフロベニウス写像を用いることで、事前に保持する量を削減するとともに、計算量も削減できる。具体的には、フロベニウス写像においては、G3の元は、p乗の計算をこの写像で計算可能という特徴をもつことから、1回で実現することができる。
【００７４】
例えば、フロベニウス写像を組み合わせると、「6α＝1＋φ＋φ3＋φ10」が成り立つ。これにより、ある元の6α乗はフロベニウス写像で計算できる。よって、べき指数xを展開することで、実施例１で説明したような事前計算が不要となり、事前計算した値を保持するメモリ量を削減することができる。
【００７５】
具体的には、xをp進展開して「x＝x0＋px1」を得る。そして、x0およびx1に対して6α進展開して、x＝x0,0＋(6α)x0,1＋p(x1,0＋(6α)x1,1)＝x0,0＋(1＋φ＋φ3＋φ10)x0,1＋p(x1,0＋(1＋φ＋φ3＋φ10)x1,1)＝x0,0＋(1＋φ3)(1＋φ10)x0,1＋φx1,0＋φ(1＋φ3)(1＋φ10)x1,1を得ることができる。
【００７６】
したがって、情報処理端末１０は、べき乗算を開始する前に、z´＝f(P,Q)、z1´＝φ3(z´)・z´、z1´＝φ10(z1´)・z1´、z2´＝φ(z´)、z3´＝φ(z1´)を計算することで、メモリ量を削減することができる。
【００７７】
（特殊なペアリング）
上記実施例では、Millerアルゴリズムの後に最終べきを実行するペアリング処理ついて説明したが、これに限定されず、他のペアリング処理にも上記実施例を適用することができる。例えば、使用する曲線によって、Millerアルゴリズムの後に追加処理を行ってから最終べきを実行するペアリング処理も存在するが、このようなペアリング処理であっても、最終べきを実行する直前の値を事前算出して保持することで、同様に処理することができる。
【００７８】
例えば、BN曲線利用時のOptimal  Ateペアリングを例にして説明すると、e(P,Q)は式（５）にように算出することができ、この式（６）のうち下線部が実施例１とは異なる追加処理の部分である。この式（６）に対して実施例１を適用すると式（７）となる。したがって、追加処理が存在する場合でも、べき乗算の二乗算をMillerアルゴリズムの二乗算にあわせることができるので、計算コストを削減することができる。
【００７９】
【数６】
0006610277.tif 000007
【００８０】
【数７】
0006610277.tif 000008
【００８１】
なお、式（７）において、pは標数であり、rはペアリングで使用する群G1、G2、G3の位数であり、P∈G1、Q∈G2、z＝e(P,Q)∈G3である。また、tは楕円曲線暗号におけるトレースであり、αは変数p,r,tを与えるパラメータである。kは埋め込み次数であり、(pk−1)をrが割り切る最小の整数である。φはFpkにおけるフロベニウス写像であり、φG2はE(Fpk)におけるフロベニウス写像である。QとφG2は式（８）のように定義される。
【００８２】
【数８】
0006610277.tif 000009
【００８３】
［アルゴリズム、曲線］
また、上記実施例では、Millerのアルゴリズムを例にして説明したが、これに限定されるものではない。例えば、Millerのアルゴリズムと同様、楕円曲線上の双線形写像を行うアルゴリズムであれば採用することができる。また、BN曲線に限られず、一般的な曲線を採用することもできる。
【００８４】
［システム］
また、図示した装置の各構成は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、任意の単位で分散または統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８５】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８６】
［ハードウェア］
図１２は、情報処理端末のハードウェア構成例を説明する図である。図１２に示すように、情報処理端末１０は、通信インタフェース１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、ＣＰＵ（Central  Processing  Unit）などのプロセッサ１０ｄを有する。また、図１２に示した各部は、バス等で相互に接続される。
【００８７】
通信インタフェース１０ａは、他の装置との通信を制御するインタフェースであり、例えばネットワークインタフェースカードである。ＨＤＤ１０ｂは、図６等に示した機能を動作させるプログラム、ＤＢ、テーブルを記憶する。
【００８８】
プロセッサ１０ｄは、図６等に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｂ等から読み出してメモリ１０ｃに展開することで、図６等で説明した各機能を実行するプロセスを動作させる。
【００８９】
すなわち、このプロセスは、情報処理端末１０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ１０ｄは、受付部１６、事前算出部１７、分割部１８、算出部１９等と同様の機能を有するプログラムをＨＤＤ１０ｂ等から読み出す。そして、プロセッサ１０ｄは、受付部１６、事前算出部１７、分割部１８、算出部１９と同様の処理を実行するプロセスを実行する。
【００９０】
このように情報処理端末１０は、プログラムを読み出して実行することで共有鍵生成方法を実行する情報処理装置として動作する。また、情報処理端末１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理端末１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００９１】
１０  情報処理端末
１１  通信部
１２  記憶部
１２ａ  変数ＤＢ
１２ｂ  鍵ＤＢ
１５  制御部
１６  受付部
１７  事前算出部
１８  分割部
１９  算出部
【図１】
0006610277.tif 000010
【図２】
0006610277.tif 000011
【図３】
0006610277.tif 000012
【図４】
0006610277.tif 000013
【図５】
0006610277.tif 000014
【図６】
0006610277.tif 000015
【図７】
0006610277.tif 000016
【図８】
0006610277.tif 000017
【図９】
0006610277.tif 000018
【図１０】
0006610277.tif 000019
【図１１】
0006610277.tif 000020
【図１２】
0006610277.tif 000021