【実施例1】
【0021】
図2に本発明のマルチペアリング演算装置の構成例を、
図3に本発明のマルチペアリング演算装置の式評価演算の処理フローの例を示す。マルチペアリング演算装置10は、m個の群G
1の元P
0,…,P
m−1と群G
2の元Q
0,…,Q
m−1とのマルチペアリングe(P
0,Q
0)×e(P
1,Q
1)×…×e(P
m−1,Q
m−1)を求める。マルチペアリング演算装置10は、式評価演算部100を有することを特徴としており、点加算や点2倍算などのその他の処理を行う構成部も有するが、それらは従来技術と同じである。そのため、
図2,3では省略している。
【0022】
式評価演算部100は、f,L
0,L
1,…,L
m−1を入力とし、マルチペアリング演算の処理に含まれるf×L
0×…×L
m−1の演算結果を出力する(S100)。式評価演算部100は、あらかじめ2以上Δ以下の整数δを定めており、式評価選択部110、式評価乗算部120、元乗算部130、演算制御部140、未選択乗算部150を備える。マルチペアリング演算装置10は、整数δなどを記録する記録部90も備える。式評価選択部110は、選択されていない式評価L
0,L
1,…,L
m−1の中からδ個を選択し、h
0,h
1,…,h
δ−1とする(S110)。
【0023】
式評価乗算部120は、
L”←h
0×h
1×…×h
δ−1
を計算する(S120)。式評価乗算部120は、h
0,h
1,…,h
δ−1をゼロまたは小整数の係数を含む元同士の演算がより多くなるように工夫して乗算すればよい。例えば、h
0,h
1,…,h
δ−1の中の2つからなる組を複数組作るように分けて組ごとに乗算する処理を含むように構成する方法がある。このように計算すれば、ゼロまたは小整数の係数を含む元同士の演算がより多くなる。「h
0,h
1,…,h
δ−1の中の2つからなる組を複数組作るように分けて組ごとに乗算する」具体例としては以下のような例がある。δ=4のときには、
L
0’←h
0×h
1, L
1’←h
2×h
3
L”←L
0’×L
1’
のようにL”を計算すればよい。このときは、(h
0,h
1)の組と(h
2,h
3)の組を作るように分けられ、まず組ごとに乗算している。δ=6のときには、
L
0’←h
0×h
1, L
1’←h
2×h
3, L
2’←h
5×h
6
L”←L
0’×L
1’×L
2’
のようにL”を求めてもよい。このときは、(h
0,h
1)の組と(h
2,h
3)の組と(h
4,h
5)の組を作るように分けられ、まず組ごとに乗算している。また、このような求め方を、
L”←((h
0×h
1)×(h
2×h
3)×(h
5×h
6))
と表現する。また、δ=6のときに、
L
0’←h
0×h
1, L
1’←h
3×h
4
L
0’←L
0’×h
2, L
1’←L
1’×h
5
L”←L
0’×L
1’
のようにL”を求めてもよい。このときは、(h
0,h
1)の組と(h
3,h
4)の組を作るように分けられ、まず組ごとに乗算している。h
2とh
5のように、組に含まれないものがあってもよい。このような求め方を、
L”←(((h
0×h
1)×h
2)×((h
3×h
5)×h
6))
と表現する。δ=6の場合にどちらの計算手順を選ぶかは、式評価の特徴を考慮して決めればよい。特に、δ=2
tの場合であれば、
L”←(…((h
0×h
1)×(h
2×h
3))×((h
5×h
6)×(h
2×h
3))×…)
のように、2つずつに分けて乗算する処理を繰り返せばよい。上記のようにδが4以上の場合であれば、h
0,h
1,…,h
δ−1の中の2つからなる組を複数組作るように分けて組ごとに乗算する処理を含むように構成できる。また、δ=3のときには、
L
0’←h
0×h
1
L”←L
0’×h
2
のようにL”を計算すればよい。
【0024】
なお、上述のAffine座標系とHomogeneous Projective座標系では、h
0×h
1の乗算は、係数にゼロを含む元同士の乗算であり、計算結果には値がゼロの係数が1つ存在する。(h
0×h
1)×h
2や(h
0×h
1)×(h
2×h
3)の乗算は係数にゼロを含む元同士の乗算であるが、計算結果には値がゼロまたは小整数の係数はなくなる。そして、h
0×h
1×h
2×h
3×h
4のようが5つの元の乗算では、((h
0×h
1)×(h
2×h
3))×h
4、((h
0×h
1)×h
2)×(h
3×h
4)などの計算手順が考えられるが、どのように計算しても、少なくとも最後の乗算の一方の元は、値がゼロまたは小整数の係数を含まない元になってしまう。したがって、計算過程のすべての乗算において、係数にゼロまたは小整数を含む元同士の乗算にできるのは4つの元の乗算までである。よって、Δ=4である。そして、δ=4に設定すれば、上記の手順で計算ができる。また、ステップS110が終了してからステップS120を開始するのではなく、ステップS110で2つの式評価を選択してステップS120の乗算を行う処理を繰り返してもよい。
【0025】
元乗算部130は、
f←f×L”
を計算し、fを更新する(S130)。演算制御部140は、L
0,L
1,…,L
m−1の中で、式評価選択部110で選択されていない式評価の数がδより少なくなるまで、式評価選択部110と式評価乗算部120と元乗算部130の処理(S110,S120,S130)を繰り返す(S140)。未選択乗算部150は、L
0,L
1,…,L
m−1の中で、式評価選択部110で選択されていない式評価がある場合は、選択されていない式評価のすべてをfに乗算し、乗算結果にfを更新する(S150)。式評価演算部100は、L
0,L
1,…,L
m−1のすべてを乗算されたfを演算結果として出力する。
【0026】
マルチペアリング演算装置10によれば、マルチペアリング演算の処理に含まれるf×L
0×…×L
m−1の演算において、まずゼロまたは小整数の係数を含む式評価L
0,L
1,…,L
m−1の中からΔ個以下の式評価を選択して乗算する処理を繰り返すので、係数にゼロや小整数を持つ元同士の演算を増やせる。したがって、計算コストを削減でき、計算速度を高速化できる。
【0027】
<アルゴリズムの具体例>
図4に、Optimal Ateペアリングにおけるマルチペアリングのアルゴリズムの例(Algorithm 2)を示す。
図4のアルゴリズムは、
図1に示した従来のアルゴリズムを、本発明の式評価の乗算を適用できるように変更したものである。式評価演算部100の処理は、
図4のアルゴリズムのステップ6,9,18,20に適用される。以下では、これらのステップに適用するアルゴリズムの例を示す。
【0028】
例1
図5は、
図4のアルゴリズムのステップ6,9,18,20に適用する式評価演算部100の処理のアルゴリズムの1つ目の例(Algorithm 3)である。このアルゴリズムは、式3,5で表現できる式評価(3つの係数がゼロの式評価)の乗算に適用できる。
図5のステップ3では、h
0,h
1,h
2,h
3として
【数3】
【0029】
が選択され、
L
0’←h
0×h
1, L
1’←h
2×h
3
の計算が行われる。そして、ステップ4で
L”←L
0’×L
1’
のようにL”が求められている。つまり、ステップ3の式評価の選択部分がS110に相当し、ステップ3のL
0’とL
1’の計算の部分と、ステップ4がS120に相当する。また、ステップ5がS130に相当し、ステップ1,2,6がS140に相当し、ステップ7〜10がS150に相当する。
【0030】
図6は、
図5のステップ3のL
0’とL
1’の計算の部分のアルゴリズムの具体例(Algorithm 4)である。
図6のステップ8に示された元の式から、値がゼロの係数が1つあることが分かる。
図7は、
図5のステップ4の処理のアルゴリズムの具体例(Algorithm 5)である。
図8は、
図5のステップ9の処理のアルゴリズムの具体例(Algorithm 6)である。
【0031】
例2
図9は、
図4のアルゴリズムのステップ6,9,18,20に適用する式評価演算部100の処理のアルゴリズムの2つ目の例(Algorithm 7)である。このアルゴリズムは、式4で表現できる式評価(3つの係数がゼロ、1つの係数が「1」の式評価)の乗算に適用できる。
図9のステップ3,4では、h
0,h
1,h
2として
【数4】
が選択され、
L’←h
0×h
1,
L”←L’×h
2’
のようにL”が求められている。つまり、ステップ3,4の式評価の選択部分がS110に相当し、ステップ3,4のL’とL”の計算の部分がS120に相当する。また、ステップ5がS130に相当し、ステップ1,2,6がS140に相当し、ステップ7〜10がS150に相当する。
【0032】
図10は、
図9のステップ3のL’の計算の部分のアルゴリズムの具体例(Algorithm 8)である。
図11は、
図9のステップ4の処理のアルゴリズムの具体例(Algorithm 9)である。
図12は、
図9のステップ9の処理のアルゴリズムの具体例(Algorithm 10)である。
【0033】
例3
図13は、
図4のアルゴリズムのステップ6,9,18,20に適用する式評価演算部100の処理のアルゴリズムの3つ目の例(Algorithm 11)である。このアルゴリズムは、式4で表現できる式評価(3つの係数がゼロ、1つの係数が「1」の式評価)の乗算に適用できる。
図13のステップ3では、h
0,h
1,h
2,h
3として
【数5】
【0034】
が選択され、
L
0’←h
0×h
1, L
1’←h
2×h
3
の計算が行われる。そして、ステップ4で
L”←L
0’×L
1’
のようにL”が求められている。つまり、ステップ3の式評価の選択部分がS110に相当し、ステップ3のL
0’とL
1’の計算の部分と、ステップ4がS120に相当する。また、ステップ5がS130に相当し、ステップ1,2,6がS140に相当し、ステップ7〜10がS150に相当する。
【0035】
ステップ3は
図10に示したアルゴリズム(Algorithm 8)を用い、ステップ4は
図7に示したアルゴリズム(Algorithm 5)を用い、ステップ9は
図12に示したアルゴリズム(Algorithm 10)を用いればよい。
【0036】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0037】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0038】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0039】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0040】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0041】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。