(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023181018
(43)【公開日】2023-12-21
(54)【発明の名称】疎乗算計算装置、ミラー関数計算装置、ペアリング演算装置、暗号処理装置、疎乗算計算方法、および疎乗算計算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231214BHJP
【FI】
G09C1/00 620A
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022094752
(22)【出願日】2022-06-10
(71)【出願人】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】林田 大輝
(72)【発明者】
【氏名】早坂 健一郎
(72)【発明者】
【氏名】照屋 唯紀
(57)【要約】
【課題】3次ツイストを持つ楕円曲線上のペアリング演算に現れる疎乗算を効率的に計算することを目的とする。
【解決手段】疎乗算計算装置10は、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fp
kを要素がp
k個からなる有限体で多項式環の表現Fp
k=Fp
e[v]/(v
3-u)を持つ有限体とし、uをFp
eの元とし、v
3-uを既約多項式としたときの、有限体Fp
kの元fと元gとを入力とした疎乗算f*gを計算する。事前計算部21は、元fおよび元gと、疎乗算f*gをvで表した多項式の係数となるh
0、h
1、h
2、h
3、h
4とを対応付けた5つの多項式を計算する。立式部22は、5つの多項式を用いて、係数h
0、h
1、h
2、h
3、h
4を求める5次元線形方程式を立式する。求解部23は、5次元線形方程式を解き、係数h
0、h
1、h
2、h
3、h
4を求める。
【選択図】
図1
【特許請求の範囲】
【請求項1】
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置において、
前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する事前計算部と、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式する立式部と、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める求解部と
を備える疎乗算計算装置。
【請求項2】
前記事前計算部は、
前記元fを多項式f(X)とし、前記元gを多項式g(X)として、Xに予め定められた値を代入したf(0)、f(1)、f(-1)、f(2)、f(∞)、g(0)、g(1)、g(-1)、g(2)、g(∞)を用いて、H0=f(0)・g(0)、H1=f(1)・g(1)、H2=f(-1)・g(-1)、H3=f(2)・g(2)、H4=f(∞)・g(∞)の各々と、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた前記5つの多項式を計算する請求項1に記載の疎乗算計算装置。
【請求項3】
前記事前計算部は、
前記元fを多項式f(X)とし、前記元gを多項式g(X)として、Xに予め定められた値を代入したf(0)、f(1)、f(-1)、f(-u)、f(∞)、g(0)、g(1)、g(-1)、g(-u)、g(∞)を用いて、H0=f(0)・g(0)、H1=f(1)・g(1)、H2=f(-1)・g(-1)、H3=f(-u)・g(-u)、H4=f(∞)・g(∞)の各々と、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた前記5つの多項式を計算する請求項1に記載の疎乗算計算装置。
【請求項4】
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算を行うミラー関数計算装置であって、
請求項1から請求項3のいずれか1項に記載の疎乗算計算装置を備えるミラー関数計算装置。
【請求項5】
3次ツイストを持つ楕円曲線上のペアリング演算を行うペアリング演算装置であって、
請求項4に記載のミラー関数計算装置と、最終べきの計算を行う最終べき計算装置とを備えたペアリング演算装置。
【請求項6】
前記ペアリング演算装置は、
BLS(Barreto-Lynn-Scott)27曲線上におけるペアリング演算を行う請求項5に記載のペアリング演算装置。
【請求項7】
前記ペアリング演算装置は、
BLS9曲線上におけるペアリング演算を行う請求項5に記載のペアリング演算装置。
【請求項8】
前記ペアリング演算装置は、
BLS15曲線上におけるペアリング演算を行う請求項5に記載のペアリング演算装置。
【請求項9】
前記ペアリング演算装置は、
BLS21曲線上におけるペアリング演算を行う請求項5に記載のペアリング演算装置。
【請求項10】
請求項5に記載のペアリング演算装置を備え、前記ペアリング演算装置によって計算されたペアリング演算の結果を用いて暗号処理を行う暗号処理部を備える暗号処理装置。
【請求項11】
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置に用いられる疎乗算計算方法において、
コンピュータが、前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算し、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式し、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める疎乗算計算方法。
【請求項12】
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置に用いられる疎乗算計算プログラムにおいて、
前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する事前計算処理と、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式する立式処理と、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める求解処理と
をコンピュータに実行させる疎乗算計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、疎乗算計算装置、ミラー関数計算装置、ペアリング演算装置、暗号処理装置、疎乗算計算方法、および疎乗算計算プログラムに関する。特に、本開示は、ペアリング演算における疎乗算の計算技術に関する。
【背景技術】
【0002】
ペアリング演算は、関数型暗号および秘匿検索といった暗号方式の内部で処理される楕円曲線を用いた演算である。ペアリング演算の効率的な計算に適した楕円曲線をペアリングフレンドリ曲線という。これまで128ビット安全性相当のペアリングフレンドリ曲線としてBN曲線が知られていた。BNは、Barret-Naehrigの略語である。しかし2016年頃から、安全性の見直しが行われ、BLS曲線およびKSS曲線といった様々なペアリングフレンドリ曲線を用いたペアリング演算への関心が高まってきている。BLSは、Barreto-Lynn-Scottの略語である。KSSは、Kachisa-Schaefer-Scottの略語である。
【0003】
ペアリング演算は、大きく分けてミラー関数の計算と最終べきの計算とに分けられる。ミラー関数の計算はミラーループとも呼ばれる。ミラー関数の計算と最終べきの計算とのどちらも複雑な計算過程を要し、関数型暗号および秘匿検索といった暗号方式全体の計算量に大きな影響を与えている。
【0004】
最近の研究では、数多くあるペアリングフレンドリ曲線の中でもペアリング演算全体の効率がよいとされているBLS曲線について研究されているものが多い。埋め込み次数kとしてk=24,27,42,48のBLS曲線におけるペアリング演算についてよく研究されている。特に近年は、6次ツイストを持つ楕円曲線だけでなく、3次ツイストを持つ楕円曲線も注目されている。
【0005】
楕円曲線族によってパラメータ付けされる曲線は、多項式r(x)と、多項式p(x)と、多項式t(x)と、埋め込み次数kと、整数uとで決まる楕円曲線である。多項式r(x)と、多項式p(x)と、多項式t(x)とは、埋め込み次数kに応じて異なる形をしている。
埋め込み次数kの楕円曲線族によってパラメータ付けされる曲線Eはp=p(x)個の要素からなる有限体Fp上で定義される楕円曲線である。r=r(x)は、楕円曲線Eの部分群E(Fp)の位数を割る最大素数である。t=t(x)は、楕円曲線Eのトレースである。
【0006】
楕円曲線E上のペアリング演算は、楕円曲線E上のある2点P,Qを入力とし、ミラー関数と呼ばれる有理関数fを計算した後、(p(x)
k-1)/r(x)乗して計算される。つまり、楕円曲線E上のペアリング演算は、数11により計算される。
【数11】
【0007】
非特許文献1には、ミラー関数の計算を効率的に行うため、効率的な疎乗算の計算アルゴリズムが記載されている。疎乗算を説明するために、拡大体Fp9の元f、gを考える。通常、元f(元gも同様)は数12のような形をしている。ここで、各係数f0、f1、f2は中間体Fp3の元であり、vは拡大体Fp9を多項式環Fp9=Fp3[v]/(v3-u)と表したときの変数である。
【0008】
このとき、元fと元gの疎乗算とは元fまたは元gの各係数のいずれかが素体Fpの元である状況をいう。この場合、通常の乗算に比べて計算効率が良い。
【数12】
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】A.J.Devegili, C.O hEigeartaigh, M.Scott and R.Dahab, “Multiplication and Squaring on Pairing-Friendly Fields”
【発明の概要】
【発明が解決しようとする課題】
【0010】
3次ツイストを持つ楕円曲線上のペアリング演算に現れる疎乗算を効率的に計算するには、それに対応した効率的な疎乗算計算アルゴリズムが必要である。従来研究で考えられてきたKaratsuba法をベースとした疎乗算アルゴリズムは2次拡大体および6次拡大体には有効であるが、3次拡大体では効果が薄いという課題がある。
【0011】
本開示は、Toom-Cook法をベースとした、3次ツイストを持つ楕円曲線上のペアリング演算に現れる疎乗算を効率的に計算可能にすることを目的とする。
【課題を解決するための手段】
【0012】
本開示に係る疎乗算計算装置は、
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置において、
前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する事前計算部と、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式する立式部と、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める求解部とを備える。
【発明の効果】
【0013】
本開示では、3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に現れる疎乗算を効率的に計算するアルゴリズムを提案する。よって、本開示に係る疎乗算計算装置によれば、ペアリング演算におけるミラー関数の計算が効率的に計算可能になる。
【図面の簡単な説明】
【0014】
【
図1】実施の形態1に係る疎乗算計算装置の構成例を示す図。
【
図2】実施の形態1に係る疎乗算計算装置の全体的な動作を示すフローチャート。
【
図3】実施の形態1に係る数14および数15を具体的に計算する計算過程を示すフローチャート。
【
図4】実施の形態1に係る数20を具体的に計算する計算過程を示すフローチャート。
【
図5】実施の形態1に係る数20を具体的に計算する計算過程を示すフローチャート。
【
図6】実施の形態1の変形例1に係る疎乗算計算装置の構成例を示す図。
【
図7】実施の形態1の変形例3に係るミラー関数計算装置の構成例を示す図。
【
図8】実施の形態1の変形例4に係るペアリング演算装置の構成例を示す図。
【
図9】実施の形態2に係る疎乗算計算装置の構成例を示す図。
【
図10】実施の形態2に係る数27および数28を具体的に計算する計算過程を示すフローチャート。
【
図11】実施の形態2に係る数33を具体的に計算する計算過程を示すフローチャート。
【
図12】実施の形態2に係る数33を具体的に計算する計算過程を示すフローチャート。
【
図13】実施の形態3に係る暗号処理装置の構成例を示す図。
【
図14】実施の形態3に係る暗号処理装置の動作を示すフローチャート。
【発明を実施するための形態】
【0015】
以下、本実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。図中の矢印はデータの流れまたは処理の流れを主に示している。
【0016】
実施の形態1.
***表記の説明***
本文および図面では、“^”を用いてべき乗を表す場合がある。具体例としては、a^bは、abを表す。
【0017】
***構成の説明***
図1は、本実施の形態に係る疎乗算計算装置10の構成例を示す図である。
疎乗算計算装置10は、コンピュータである。
疎乗算計算装置10は、プロセッサ11と、メモリ12と、ストレージ13と、通信インタフェース14といったハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0018】
プロセッサ11は、プロセッシングを行うICである。プロセッサ11は、具体例としては、CPU、DSP、あるいはGPUである。ICは、Integrated Circuitの略語である。CPUは、Central Processing Unitの略語である。DSPは、Digital Signal Processorの略語である。GPUは、Graphics Processing Unitの略語である。
【0019】
メモリ12は、データを一時的に記憶する記憶装置である。メモリ12は、具体例としては、SRAM、あるいはDRAMである。SRAMは、Static Random Access Memoryの略語である。DRAMは、Dynamic Random Access Memoryの略語である。
【0020】
ストレージ13は、データを保管する記憶装置である。ストレージ13は、具体例としては、HDDである。また、ストレージ13は、SD(登録商標)メモリカード、CF(登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、あるいはDVDといった可搬記録媒体であってもよい。HDDは、Hard Disk Driveの略語である。SD(登録商標)は、Secure Digitalの略語である。CF(登録商標)は、CompactFlash(登録商標)の略語である。DVDは、Digital Versatile Diskの略語である。
【0021】
通信インタフェース14は、外部の装置と通信するためのインタフェースである。通信インタフェース14は、具体例としては、Ethernet(登録商標)、USB、HDMI(登録商標)のポートである。USBは、Universal Serial Busの略語である。HDMI(登録商標)は、High-Definition Multimedia Interfaceの略語である。
【0022】
疎乗算計算装置10は、機能構成要素として、事前計算部21と、立式部22と、求解部23とを備える。事前計算部21は、第1事前計算部31と、第2事前計算部32とを備える。疎乗算計算装置10の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ13には、疎乗算計算装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、疎乗算計算装置10の各機能構成要素の機能が実現される。
【0023】
図1では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。
【0024】
疎乗算計算装置10の各機能構成要素の機能を実現するプログラムは、疎乗算計算プログラムとも呼ばれる。
メモリ12には、疎乗算計算プログラムだけでなく、OSも読み込まれる。OSは、Operating Systemの略語である。プロセッサ910は、OSを実行しながら、疎乗算計算プログラムを実行する。なお、疎乗算計算プログラムの一部または全部がOSに組み込まれていてもよい。
【0025】
疎乗算計算装置10は、プロセッサ11を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、疎乗算計算プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ11と同じように、疎乗算計算プログラムを実行する装置である。
【0026】
疎乗算計算プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ12、ストレージ13、または、プロセッサ11内のレジスタあるいはキャッシュメモリに記憶される。
【0027】
事前計算部21と立式部22と求解部23との各部の「部」を「回路」、「工程」、「手順」、「処理」、あるいは「サーキットリー」に読み替えてもよい。疎乗算計算プログラムは、事前計算処理と立式処理と求解処理とを、コンピュータに実行させる。事前計算処理と立式処理と求解処理の「処理」を「プログラム」、「プログラムプロダクト」、「プログラムを記憶したコンピュータ読取可能な記憶媒体」、または「プログラムを記録したコンピュータ読取可能な記録媒体」に読み替えてもよい。また、疎乗算計算方法は、疎乗算計算装置10が疎乗算計算プログラムを実行することにより行われる方法である。
疎乗算計算プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、疎乗算計算プログラムは、プログラムプロダクトとして提供されてもよい。
【0028】
***動作の説明***
図2から
図5を参照して、本実施の形態に係る疎乗算計算装置10の動作について説明する。
本実施の形態に係る疎乗算計算装置10の動作手順は、本実施の形態に係る疎乗算計算方法に相当する。また、本実施の形態に係る疎乗算計算装置10の動作を実現するプログラムは、本実施の形態に係る疎乗算計算プログラムに相当する。
【0029】
本実施の形態に係る疎乗算計算装置10は、3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する。具体的には、疎乗算計算装置10は、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する。
以下に詳しく説明する。
【0030】
本実施の形態では、拡大体Fpk/Fpeにおける疎乗算を計算する。なお、kは3で割ることのできる自然数、eはk/3で表される自然数である。また、Fqと書けば、要素の個数がq個からなる有限体を表す。また、有限体Fpkは多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ。なお、v3-uは多項式環Fpe[v]上の既約多項式であり、元uはFpeに属する。拡大体Fpk/Fpeにおける疎乗算は3次ツイストを持つ楕円曲線のペアリング演算を考えたとき、ミラー関数の計算に複数回出現する計算である。具体例としては、BLS-9曲線、BLS-15曲線、およびBLS-27曲線といった楕円曲線上におけるペアリング演算で現れる。
【0031】
疎乗算とは、有限体Fpkの2つの元f、gを入力とした乗算f*gのことであるが、元fまたは元gのいずれかが疎であるときをいう。
【0032】
本実施の形態において、元fまたは元gが疎であるとは、元fが数12で表されるとき、f0、f1、f2のいずれかが有限体Fpeより下の拡大体Fpdの元であることをいう。なお、d<eである。
【0033】
疎乗算計算に関わらずfとgに対する通常の乗算計算では、ナイーブに計算すると9回のFpe上の乗算、6回のFpe上の加算、2回のFpe上のu倍算が必要となり、計算量が多い。このため、効率的な乗算計算方法がペアリング演算におけるミラー関数計算に必要となる。なお、一般的に考えて疎乗算は通常の疎でない乗算よりも効率的であるが、その恩恵を最大限に受けるためにはやはり効率的な疎乗算計算方法が必要となる。
【0034】
図2は、本実施の形態に係る疎乗算計算装置10の全体的な動作を示すフローチャートである。
【0035】
<ステップS11:事前計算>
ステップ11では、事前計算処理が実行される。
事前計算処理では、事前計算部21は、元fおよび元gと、疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する。
具体的には、事前計算部21は、元fを多項式f(X)とし、元gを多項式g(X)として、Xに予め定められた値0,1,-1,2,∞を代入する。事前計算部21は、f(0)、f(1)、f(-1)、f(2)、f(∞)、g(0)、g(1)、g(-1)、g(2)、g(∞)を用いて、H0=f(0)・g(0)、H1=f(1)・g(1)、H2=f(-1)・g(-1)、H3=f(2)・g(2)、H4=f(∞)・g(∞)の各々と、疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する。
より具体的には、以下の通りである。
【0036】
ステップS11において、事前計算部21の第1事前計算部31では、元fと元gを形式的に多項式f(X)、g(X)と考えて数13を得る。
【数13】
【0037】
さらに、それぞれの多項式f(X)、g(X)にX=0、X=1、X=-1、X=2、X=∞、を代入し数14および数15を得る。
【数14】
【数15】
【0038】
図3は、本実施の形態に係る数14および数15を具体的に計算する計算過程を示すフローチャートである。
数14および数15を具体的に計算する計算過程は、
図3の第1事前計算部31に関する計算のフローチャートを参照して説明する。
【0039】
ステップS21では、第1事前計算部31は、入力のfにおける係数f0、f2とを用いて加算を計算する。
ステップS22およびS23では、第1事前計算部31は、ステップS21で計算された結果にそれぞれ係数f1を加算および減算する。これらのステップ処理により、ステップS22からはf(1)、ステップS23からはf(-1)が計算される。
ステップS24では、第1事前計算部31は、ステップS22で計算された結果に係数f1を加算する。
ステップS25、ステップS26、およびステップS27では、第1事前計算部31は、それぞれ前ステップの結果に係数f2を加算する。
これらのステップ処理により、ステップS27からはf(2)が計算される。
【0040】
次に、事前計算部21の第2事前計算部32では、立式部22で5次元の連立線形方程式を立式するために、数16を計算する。
【数16】
【0041】
ここで、h
0、h
1、h
2、h
3、h
4は数17に表される係数である。
【数17】
【0042】
このh0、h1、h2、h3、h4は最終的に計算したい乗算f*gの係数である。したがって、以下ではこのh0、h1、h2、h3、h4を計算することを目標とする。
【0043】
<ステップS12:線形方程式を解く>
ステップS12では、立式処理および求解処理が実行される。
立式処理では、立式部22は、数16の5つの多項式を用いて、疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式する。
求解処理では、求解部23は、5次元線形方程式を解き、疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める。
具体的には、以下の通りである。
【0044】
立式部22は、事前計算部21で計算された結果である数16の5つの多項式をもとに5次元の線形方程式である数18を立式する。
【数18】
【0045】
この数18の行列は正則行列であるので逆行列を持つ。そこで、逆行列を数18の両辺にかけると数19を得る。
【数19】
【0046】
数19の両辺を6倍することで分母を払うと、係数h
0、h
1、h
2、h
3、h
4について数20の式を得る。なお、数19および数20を得る計算は立式部22で計算される。
【数20】
【0047】
図4および
図5は、本実施の形態に係る数20を具体的に計算する計算過程を示すフローチャートである。
数20を具体的に計算する計算過程は、
図4および
図5の求解部23に関する計算のフローチャートを参照して説明する。
【0048】
ステップS301では、求解部23は、すでに数16で計算されているH0を用いて加算を行い、その結果をメモリ12に書き込む。
ステップS302では、求解部23は、すでに計算されている2H0を用いて加算を行い、その結果をメモリ12に書き込む。
ステップS303では、求解部23は、すでに計算されている3H0を用いて加算を行い、その結果をメモリ12に書き込む。ステップS303の処理によって求めるべき係数の一つである6h0を得る。
【0049】
求解部23は、ステップS304からステップS312も同様に計算ステップを踏み、それぞれの結果をメモリ12に書き込む。ステップS311の処理によって求めるべき係数の一つである6h4を得る。
【0050】
ステップS41では、求解部23は、ステップS302で得られた値とH3を用いて計算を行い、その結果をメモリ12に書き込む。
ステップS42では、求解部23は、ステップS41で得られた値とステップS312で得られた値とを用いて計算を行い、その結果をメモリ12に書き込む。
ステップS43では、求解部23は、ステップS42で得られた値とステップS306で得られた値とを用いて計算を行い、その結果をメモリ12に書き込む。
ステップS44では、求解部23は、ステップS43で得られた値とステップS307で得られた値とを用いて計算を行い、その結果をメモリ12に書き込む。ステップS44の処理によって求めるべき係数の一つである6h1を得る。
【0051】
ステップS45では、求解部23は、ステップS42で得られた値とステップS305で得られた値とを用いて計算を行い、その結果をメモリ12に書き込む。
ステップS46では、求解部23は、ステップS45で得られた値とH2とを用いて計算を行い、その結果をメモリ12に書き込む。ステップS46の処理によって求めるべき係数の一つである6h3を得る。
ステップS47では、求解部23は、ステップS303で得られた値とステップS305で得られた値とを用いて計算を行い、その結果をメモリ12に書き込む。
ステップS48では、求解部23は、ステップS47で得られた値とステップS308とを用いて計算を行い、その結果をメモリ12に書き込む。
ステップS49では、求解部23は、ステップS48で得られた値とステップS311とを用いて計算を行い、その結果をメモリ12に書き込む。ステップS49の処理によって求めるべき係数の一つである6h2を得る。
【0052】
次に、ここまでの計算過程の計算コストを評価する。
数14、数15については、それぞれ7回の加算を行った。したがって、数14と数15の計算は14回の加算で完了する。この計算コストを14A
eと表す。ここで、A
eは有限体Fp
e上の加算を表す。
数16については、5回の乗算を行った。この計算コストを5M
eと表す。ここで、M
eは有限体Fp
e上の乗算を表す。
数20については、合計で21回の加算を行った。したがって、この計算コストは21A
eである。
ただし、減算に関しては実装の観点からは加算とほぼ同等の計算コストであるから減算も加算としてカウントし、ある元の加法に対する逆数を計算することは実装の観点からはほとんどコストがかからないことから上記評価では無視している。これらのことから、本実施の形態における計算コストの総計は数21で表される。
【数21】
【0053】
なお、数21の計算コストは、有限体における剰余を考慮していない。剰余を考慮した場合の計算コストは数22で表される。
【数22】
【0054】
ここで記号Uは、有限体Fpe上のU倍算を表す。数21に対して、2回の加算と2回のU倍算が増える理由としては、関係式v3=uを用いて剰余をしているからである。
【0055】
ここまでで、係数h0、h1、h2、h3、h4を求めることができたので、それは入力f、gに対して乗算6f*gを計算できたことと等しい。
【0056】
本実施の形態においては、fまたはgが疎であるような状況を考えている。fとgには対称性があるのでここではfが疎であるような状況を考える。
fが疎であるとき、数13における係数f0、f1、f2のいずれかが有限体Fpdの元である。
【0057】
(係数f
0が疎であるとき)
この場合、数16におけるH
0のFp
e乗算コストが1回削減されるので、乗算6f*gの計算コストは数23で表される。
【数23】
ここで、記号M
dは有限体Fp
dの乗算コストを表している。
【0058】
(係数f
2が疎であるとき)
この場合、数16におけるH
4のFp
e乗算コストが1回削減されるので、乗算6f*gの計算コストは数24で表される。
【数24】
【0059】
(係数f
1が疎であるとき)
この場合、fの代わりに数25を考えることで疎になる係数の位置をずらす。
【数25】
数25は2次の係数が疎であるため、2次の係数が疎である場合に帰着される。したがって、この場合の計算コストは数26で表される。
【数26】
【0060】
最後に、この疎乗算アルゴリズムをペアリング演算におけるミラー関数計算に適用することを考える。ミラー関数計算で、n回だけ疎乗算が現れると、ミラー関数計算終了時には6nもしくは6nvnだけ本来求めたい値とずれた値が出力される。ところが最終べき計算の性質により、最終べきにおけるeasy part計算時点でそのような定数は消滅するため、最終的なペアリング演算には影響が出ない。
【0061】
***本実施の形態の効果***
以上のように、本実施の形態に係る疎乗算計算装置10では、乗算f*gの計算について、事前計算によってf(0)、f(1)、f(-1)、f(2)、f(∞)、g(0)、g(1)、g(-1)、g(2)、g(∞)、H0、H1、H2、H3、H4を効率よく事前計算する事前計算部を備える。また、疎乗算計算装置10は、事前計算部による結果を元に5次線形連立方程式を立式する立式部を備える。また、疎乗算計算装置10は、立式部で建てられた5次線形連立方程式を解く求解部を備える。
よって、本実施の形態に係る疎乗算計算装置10によれば、事前計算を適切に行うことができ、また、疎になる係数がどの場合においても適用可能である。これにより、ペアリング演算を効率的に計算可能になる。
【0062】
***他の構成***
<変形例1>
本実施の形態では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、本実施の形態と異なる点を説明する。
【0063】
図6は、本実施の形態の変形例1に係る疎乗算計算装置10の構成例を示す図である。
各機能構成要素がハードウェアで実現される場合には、疎乗算計算装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路15を備える。電子回路15は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
【0064】
電子回路15としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAが想定される。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field-Programmable Gate Arrayの略語である。
各機能構成要素を1つの電子回路15で実現してもよいし、各機能構成要素を複数の電子回路15に分散させて実現してもよい。
【0065】
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【0066】
プロセッサ11とメモリ12とストレージ13と電子回路15とをプロセッシングサーキットリという。つまり、各機能構成要素の機能は、プロセッシングサーキットリにより実現される。
【0067】
<変形例3>
図7は、本実施の形態の変形例3に係るミラー関数計算装置400の構成例を示す図である。
図7では、ハードウェアの記載を省略し、機能構成要素のみを図示している。
【0068】
本実施の形態では、有限体Fpkの元fと元gを取得して、元fが疎である場合に乗算6f*gの計算だけを行う疎乗算計算装置10を説明した。
ミラー関数計算装置400は、本実施の形態の疎乗算計算装置10を備え、3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算を行う装置である。
【0069】
図7において、疎乗算計算装置10は疎乗算計算部と読み替えてもよい。
ミラー関数計算装置400は、本実施の形態で説明した疎乗算計算装置10と同様に各機能構成要素がソフトウェアまたはハードウェアによって実現される。
【0070】
<変形例4>
図8は、本実施の形態の変形例4に係るペアリング演算装置500の構成例を示す図である。
図8においても、ハードウェアの記載を省略し、機能構成要素のみを図示している。
【0071】
ペアリング演算装置500は、3次ツイストを持つ楕円曲線上のペアリング演算を行う装置である。本実施の形態の変形例3に係るミラー関数計算装置400と、最終べきの計算を行う最終べき計算装置510とを備える。
【0072】
ペアリング演算装置500は、例えば、BLS27曲線上におけるペアリング演算を行う。また、ペアリング演算装置500は、BLS9曲線上におけるペアリング演算を行う。また、ペアリング演算装置500は、BLS15曲線上におけるペアリング演算を行う。また、ペアリング演算装置500は、BLS21曲線上におけるペアリング演算を行う。
【0073】
図8において、ミラー関数計算装置400はミラー関数計算部と読み替えてもよい。
ペアリング演算装置500は、本実施の形態で説明した疎乗算計算装置10と同様に各機能構成要素がソフトウェアまたはハードウェアによって実現される。
【0074】
実施の形態2.
本実施の形態では、主に、実施の形態1と異なる点および実施の形態1に追加する点について説明する。
本実施の形態において、実施の形態1と同様の機能を有する構成については同一の符号を付し、その説明を省略する。
【0075】
実施の形態1では、元f、元gを形式的に多項式と見た数13において数14、15で0、1、-1、2、∞を代入した。本実施の形態では、数13において数14、15で0、1、-1、-u、∞を代入する態様について説明する。
【0076】
***構成の説明***
図9は、本実施の形態に係る疎乗算計算装置10の構成例を示す図である。
本実施の形態に係る疎乗算計算装置10の構成は、本実施の形態に係る疎乗算計算装置10の構成と同様である。第1事前計算部31が、数13において数14、15で0、1、-1、-u、∞を代入する点が異なる。
【0077】
***動作の説明***
図2、および
図10から
図12を参照して、本実施の形態に係る疎乗算計算装置10の動作について説明する。
本実施の形態に係る疎乗算計算装置10の動作手順は、本実施の形態に係る疎乗算計算方法に相当する。また、本実施の形態に係る疎乗算計算装置10の動作を実現するプログラムは、本実施の形態に係る疎乗算計算プログラムに相当する。
【0078】
図2を参照して、本実施の形態に係る疎乗算計算装置10の全体的な動作を説明する。
【0079】
<ステップS11:事前計算>
本実施の形態の事前計算処理では、事前計算部21は、元fを多項式f(X)とし、元gを多項式g(X)として、Xに予め定められた値0,1,-1,-u,∞を代入する。事前計算部21は、f(0)、f(1)、f(-1)、f(-u)、f(∞)、g(0)、g(1)、g(-1)、g(-u)、g(∞)を用いて、H0=f(0)・g(0)、H1=f(1)・g(1)、H2=f(-1)・g(-1)、H3=f(-u)・g(-u)、H4=f(∞)・g(∞)の各々と、疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する。
より具体的には、以下の通りである。
【0080】
まず、それぞれの多項式f(X)、g(X)にX=0、X=1、X=-1、X=-u、X=∞、を代入し数27および数28を得る。
【数27】
【数28】
【0081】
図10は、本実施の形態に係る数27および数28を具体的に計算する計算過程を示すフローチャートである。
数27および数28を具体的に計算する計算過程は、
図10の第1事前計算部31に関する計算のフローチャートを参照して説明する。
【0082】
ステップS51では、第1事前計算部31は、入力のfにおける係数f0、f2とを用いて加算を計算する。
ステップS52およびS53では、第1事前計算部31は、ステップS51で計算された結果にそれぞれ係数f1を加算および減算する。これらのステップ処理により、ステップS52からはf(1)、ステップS53からはf(-1)が計算される。
【0083】
ステップS54では、第1事前計算部31は、f1のu倍が計算され、係数f0から減算される。
ステップS55では、第1事前計算部31は、f2のu倍が計算され、ステップS54で計算された結果から減算される。このステップ処理により、f(-u)が計算される。
【0084】
事前計算部21の第2事前計算部32では、立式部22で5次元の連立線形方程式を立式するために、数29を計算する。
【数29】
【0085】
ここで、h0、h1、h2、h3、h4は数17に表される係数である。
なお、v3=uであることに注意されたい。
このh0、h1、h2、h3、h4は最終的に計算したい乗算f*gの係数である。したがって、以下ではこのh0、h1、h2、h3、h4を計算することを目標とする。
【0086】
<ステップS12:線形方程式を解く>
立式部22では、事前計算部21で計算された結果をもとに5次元の線形方程式である数30を立式する。
【数30】
【0087】
この数30の行列はu(u
2-1)が0でないとき正則行列である。本実施の形態で考えている状況は3次拡大体であるため、uが0または1または-1になることはないのでこの行列は逆行列を持つ。そこで、逆行列を数30の両辺にかけると数31を得る。
【数31】
【0088】
ここで、数31の右辺を計算した際の4要素目、5要素目は数17での3次の係数、4次の係数に値する。したがって有限体上の剰余を施すことは数31右辺の行列の4行目をu倍して1行目に加算する、5行目をu倍して2行目に加算することと等しい。すなわち、数31を、関係式v
3=uをもって剰余すると、数32を得る。
【数32】
【0089】
数32の両辺を-2u(u
2-1)倍することで分母を払うと、係数h
0、h
1、h
2について数33の式を得る。なお、数31および数32を得る計算は立式部22で計算される。
【数33】
【0090】
図11および
図12は、本実施の形態に係る数33を具体的に計算する計算過程を示すフローチャートである。
数33を具体的に計算する計算過程は、
図11および
図12の求解部23に関する計算のフローチャートを参照して説明する。
【0091】
ステップS601では、求解部23は、すでに数29で計算されているH0を用いて加算を行い、その結果をメモリ12に書き込む。
ステップS602では、求解部23は、すでに計算されている2H0を用いてu倍算を行い、その結果をメモリ12に書き込む。
ステップS603では、求解部23は、すでに計算されている2uH0を用いてu倍算を行い、その結果をメモリ12に書き込む。
ステップS604では、求解部23は、ステップS603で得られた値とステップS602で得られた値とを用いて計算を行い、その結果をメモリ12に書き込む。
求解部23は、ステップS605からステップS621も同様に計算ステップを踏み、それぞれの結果をメモリ12に書き込む。
【0092】
ステップS701からステップS703では、求解部23は、
図11の計算で得られた値を用いて計算を行い、その結果をメモリ12に書き込む。ステップS703の処理によって求めるべき係数の一つである-2u(u
2-1)h
0を得る。
その他も同様にこれまでの計算結果を用いて計算を行い、-2u(u
2-1)h
1、-2u(u
2-1)h
2を得る。
【0093】
次に、ここまでの計算過程の計算コストを評価する。
数27、数28については、それぞれ6回の加算と2回のu倍算を行った。したがって、数27と数28の計算は12回の加算と4回のu倍算で完了する。
数29については、5回の乗算を行った。
数33については、合計で17回の加算と17回のu倍算を行った。
これらのことから、本実施の形態における計算コストの総計は数34で表される。
【数34】
【0094】
ここまでで、係数h0、h1、h2を求めることができたので、それは入力f、gに対して乗算-2u(u2-1)f*gを計算できたことと等しい。
【0095】
実施の形態1においては、fまたはgが疎であるような状況を考えている。この場合分けについては実施の形態1と同様であるため省略する。
【0096】
(係数f
0または係数f
2が疎であるとき)
この場合の乗算-2u(u
2-1)f*gの計算コストは数35で表される。
【数35】
【0097】
(係数f
1が疎であるとき)
この場合の計算コストは数36で表される。
【数36】
【0098】
最後に、この疎乗算アルゴリズムをペアリング演算におけるミラー関数計算に適用することを考える。ミラー関数計算で、n回だけ疎乗算が現れると、ミラー関数計算終了時には(-2u(u2-1))nもしくは(-2u(u2-1))nvnだけ本来求めたい値とずれた値が出力される。ところが最終べき計算の性質により、最終べきにおけるeasy part計算時点でそのような定数は消滅するため、最終的なペアリング演算には影響が出ない。
【0099】
***他の構成***
<変形例5>
本実施の形態に係る疎乗算計算装置10においても、実施の形態1の変形例3および変形例4と同様に、ミラー関数計算装置400およびペアリング演算装置500を構成する。
【0100】
***本実施の形態の効果***
以上のように、本実施の形態に係る疎乗算計算装置10では、乗算f*gの計算について、事前計算によってf(0)、f(1)、f(-1)、f(-u)、f(∞)、g(0)、g(1)、g(-1)、g(-u)、g(∞)、H0、H1、H2、H3、H4を効率よく事前計算する事前計算部を備える。また、疎乗算計算装置10は、事前計算部による結果を元に5次線形連立方程式を立式する立式部を備える。また、疎乗算計算装置10は、立式部で建てられた5次線形連立方程式を解く求解部を備える。
以上のように、本実施の形態に係る疎乗算計算装置10についても、事前計算を適切に行い、また、疎になる係数がどの場合においても適用可能である。これにより、実施の形態1と同様に、ペアリング演算を効率的に計算可能になる。
【0101】
実施の形態3.
本実施の形態では、主に、実施の形態1,2と異なる点、および実施の形態1,2に追加する点について説明する。
本実施の形態において、実施の形態1,2と同様の機能を有する構成については同一の符号を付し、その説明を省略する。
【0102】
実施の形態1および実施の形態2では、疎乗算の計算方法について説明した。本実施の形態では、実施の形態1および実施の形態2で計算されたペアリング演算の結果を用いた処理について説明する。
【0103】
***構成の説明***
図13は、本実施の形態に係る暗号処理装置600の構成例を示す図である。
図13では、ハードウェアの記載を省略し、機能構成要素のみを図示している。
【0104】
暗号処理装置600は、実施の形態1および実施の形態2で説明したペアリング演算装置500を備え、ペアリング演算装置500によって計算されたペアリング演算の結果を用いて暗号処理を行う暗号処理部610を備える。
【0105】
図13において、ミラー関数計算装置400および最終べき計算装置510は、ミラー関数計算部および最終べき計算部と読み替えてもよい。
暗号処理装置600は、実施の形態1で説明した疎乗算計算装置10と同様に各機能構成要素がソフトウェアまたはハードウェアによって実現される。
【0106】
***動作の説明***
本実施の形態に係る暗号処理装置600の動作について説明する。
本実施の形態に係る暗号処理装置600の動作手順は、本実施の形態に係る暗号処理方法に相当する。また、本実施の形態に係る暗号処理装置600の動作を実現するプログラムは、本実施の形態に係る暗号処理プログラムに相当する。
【0107】
図14は、本実施の形態に係る暗号処理装置600の動作を示すフローチャートである。
本実施の形態に係る暗号処理装置600の動作手順は、本実施の形態に係る暗号処理方法に相当する。また、本実施の形態に係る暗号処理装置600の動作を実現するプログラムは、本実施の形態に係る暗号処理プログラムに相当する。
【0108】
<ステップS81:ペアリング演算処理>
実施の形態1または実施の形態2に係る疎乗算計算装置10の機能構成要素を備えるペアリング演算装置500によって、ペアリング演算の結果が計算される。ペアリング演算の結果はメモリ12に書き込まれる。
【0109】
<ステップS82:暗号処理>
暗号処理部610は、ステップS81で得られたペアリング演算の結果を用いて、暗号処理を行う。暗号処理は、暗号化処理と、復号処理と、署名処理と、検証処理といった暗号プリミティブの処理である。
暗号化処理は、データを第三者から秘匿するために、平文状態のデータを暗号文に変換する処理である。復号処理は、暗号化処理により変換された暗号文を平文状態のデータに変換する処理である。署名処理は、データの改ざん検出とデータの出所確認との少なくともいずれかのための署名を生成する処理である。検証処理は、署名処理で生成された署名によりデータの改ざん検出とデータの出所確認との少なくともいずれかをする処理である。
【0110】
例えば、暗号処理部610は、暗号文の要素と復号鍵の要素とを入力とするペアリング演算の結果を用いて、暗号文を復号したメッセージを生成することが考えられる。
【0111】
***本実施の形態の効果***
以上のように、本実施の形態に係る暗号処理装置600は、実施の形態1あるいは実施の形態2に係る疎乗算計算装置10の機能構成要素を用いて暗号処理を実現する。実施の形態1および実施の形態2に係る疎乗算計算装置10は、ペアリング演算を効率的に計算可能である。そのため、本実施の形態に係る暗号処理装置600は、効率的に暗号処理を実施可能である。
【0112】
以上の実施の形態1から3では、疎乗算計算装置、ペアリング演算装置、および暗号処理装置の各装置の各部を独立した機能ブロックとして説明した。しかし、疎乗算計算装置、ペアリング演算装置、および暗号処理装置の各装置の構成は、上述した実施の形態のような構成でなくてもよい。疎乗算計算装置、ペアリング演算装置、および暗号処理装置の各装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、疎乗算計算装置、ペアリング演算装置、および暗号処理装置の各装置は、1つの装置でなく、複数の装置から構成されたシステムでもよい。
また、実施の形態1から3のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つの部分を実施しても構わない。その他、これらの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態1から3では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【0113】
なお、上述した実施の形態は、本質的に好ましい例示であって、本開示の範囲、本開示の適用物の範囲、および本開示の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。例えば、フロー図あるいはシーケンス図を用いて説明した手順は、適宜に変更してもよい。
【0114】
以下、本開示の諸態様を付記としてまとめて記載する。
【0115】
(付記1)
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置において、
前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する事前計算部と、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式する立式部と、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める求解部と
を備える疎乗算計算装置。
(付記2)
前記事前計算部は、
前記元fを多項式f(X)とし、前記元gを多項式g(X)として、Xに予め定められた値を代入したf(0)、f(1)、f(-1)、f(2)、f(∞)、g(0)、g(1)、g(-1)、g(2)、g(∞)を用いて、H0=f(0)・g(0)、H1=f(1)・g(1)、H2=f(-1)・g(-1)、H3=f(2)・g(2)、H4=f(∞)・g(∞)の各々と、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた前記5つの多項式を計算する付記1に記載の疎乗算計算装置。
(付記3)
前記事前計算部は、
前記元fを多項式f(X)とし、前記元gを多項式g(X)として、Xに予め定められた値を代入したf(0)、f(1)、f(-1)、f(-u)、f(∞)、g(0)、g(1)、g(-1)、g(-u)、g(∞)を用いて、H0=f(0)・g(0)、H1=f(1)・g(1)、H2=f(-1)・g(-1)、H3=f(-u)・g(-u)、H4=f(∞)・g(∞)の各々と、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた前記5つの多項式を計算する付記1に記載の疎乗算計算装置。
(付記4)
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算を行うミラー関数計算装置であって、
付記1から付記3のいずれか1項に記載の疎乗算計算装置を備えるミラー関数計算装置。
(付記5)
3次ツイストを持つ楕円曲線上のペアリング演算を行うペアリング演算装置であって、
付記4に記載のミラー関数計算装置と、最終べきの計算を行う最終べき計算装置とを備えたペアリング演算装置。
(付記6)
前記ペアリング演算装置は、
BLS(Barreto-Lynn-Scott)27曲線上におけるペアリング演算を行う付記5に記載のペアリング演算装置。
(付記7)
前記ペアリング演算装置は、
BLS9曲線上におけるペアリング演算を行う付記5に記載のペアリング演算装置。
(付記8)
前記ペアリング演算装置は、
BLS15曲線上におけるペアリング演算を行う付記5に記載のペアリング演算装置。
(付記9)
前記ペアリング演算装置は、
BLS21曲線上におけるペアリング演算を行う付記5に記載のペアリング演算装置。
(付記10)
付記5から付記9のいずれか1項に記載のペアリング演算装置を備え、前記ペアリング演算装置によって計算されたペアリング演算の結果を用いて暗号処理を行う暗号処理部を備える暗号処理装置。
(付記11)
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置に用いられる疎乗算計算方法において、
コンピュータが、前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算し、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式し、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める疎乗算計算方法。
(付記12)
3次ツイストを持つ楕円曲線上のペアリング演算におけるミラー関数の計算に用いられる疎乗算を計算する疎乗算計算装置であって、kを3で割ることのできる自然数とし、eをk/3で表される自然数とし、Fpkを要素がpk個からなる有限体で多項式環の表現Fpk=Fpe[v]/(v3-u)を持つ有限体とし、uをFpeの元とし、v3-uを既約多項式としたときの、有限体Fpkの元fと元gとを入力とした疎乗算f*gを計算する疎乗算計算装置に用いられる疎乗算計算プログラムにおいて、
前記元fおよび前記元gと、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4とを対応付けた5つの多項式を計算する事前計算処理と、
前記5つの多項式を用いて、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める5次元線形方程式を立式する立式処理と、
前記5次元線形方程式を解き、前記疎乗算f*gをvで表した多項式の係数となるh0、h1、h2、h3、h4を求める求解処理と
をコンピュータに実行させる疎乗算計算プログラム。
【符号の説明】
【0116】
10 疎乗算計算装置、11 プロセッサ、12 メモリ、13 ストレージ、14 通信インタフェース、15 電子回路、21 事前計算部、22 立式部、23 求解部、400 ミラー関数計算装置、500 ペアリング演算装置、510 最終べき計算装置、600 暗号処理装置、610 暗号処理部。