スカラー倍算の演算装置及びべき乗算の演算装置
【課題】高速に演算可能なスカラー倍算あるいはべき乗算の演算装置を提供する。
【解決手段】電子計算機で、非負整数nに対するGの有理点Qのスカラーn倍算を行うスカラー倍算の演算装置において、Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、スカラーnをt-1進展開して、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いる。また、電子計算機で、非負整数nに対するHの元Aのn乗算を行うべき乗算の演算装置において、qとrの差分をs=q−rとし、Hの非零元Aに対し、
φq(A)=Aq=As
が成り立つことにより、べき数nをs進展開して、sに換えて元に対するフロベニウス自己準同型写像φqを用いる。
【解決手段】電子計算機で、非負整数nに対するGの有理点Qのスカラーn倍算を行うスカラー倍算の演算装置において、Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、スカラーnをt-1進展開して、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いる。また、電子計算機で、非負整数nに対するHの元Aのn乗算を行うべき乗算の演算装置において、qとrの差分をs=q−rとし、Hの非零元Aに対し、
φq(A)=Aq=As
が成り立つことにより、べき数nをs進展開して、sに換えて元に対するフロベニウス自己準同型写像φqを用いる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、有理点Qのスカラーn倍算のnを少なくともt−1進展開することによりスカラー倍算の演算を高速化したスカラー倍算の演算装置及び元Aのn乗算のnを少なくとも(q−r)進展開することによりべき乗算の演算を高速化したべき乗算の演算装置に関する。
【背景技術】
【0002】
昨今、インターネットなどの電気通信回線を利用した情報ネットワーク技術が高度に発展し、インターネットによって様々な情報を取得するだけでなく、インターネットバンキングや行政機関への電子申請などのような各種のサービスが提供されてきている。
【0003】
このようなサービスを利用する場合には、サービスの利用者が、成りすましや架空の人間などではなく、適正な利用者であることを確認するための認証処理が必要であり、信頼性の高い認証方法として、公開鍵と秘密鍵を用いる公開鍵暗号をベースとした電子認証技術がよく利用されている。
【0004】
しかしながら、公開鍵暗号方式の電子認証では、公開鍵あるいは秘密鍵が漏洩した場合には直ちに公開鍵と秘密鍵を変更する必要があり、公開鍵及び秘密鍵の管理を慎重に行わなければならないとともに、必要に応じて新たな公開鍵と秘密鍵の設定登録作業が生じるという繁雑さがあるため、最近では、利用者の氏名やメールアドレスのように利用者特有のIDを用いて電子認証を行うIDベース暗号が用いられることが多くなっている。
【0005】
また、電子認証を行う認証装置によって利用者の個人認証を行った場合には、認証装置に利用者ごとの履歴が蓄積されることとなり、この履歴情報自体が利用者の個人情報であって、最近では、この履歴情報が漏洩することによる個人情報の漏洩のおそれが指摘されている。
【0006】
そこで、認証装置では利用者の個人情報を利用して認証を行うのではなく、複数の利用者をひとまとまりのグループとして、このグループに所属していることを示すグループ署名を用いることにより、利用者を特定することなく認証を行うことによって、認証装置に個人情報が蓄積されることなく認証を可能としたグループ署名技術が提案されている。
【0007】
このようなIDベース暗号やグループ署名における所用の演算には、楕円曲線上の有理点の双線形写像を用いるペアリングと呼ばれる手法が用いられている。ペアリングとは、たとえば、Pを素体Fq上の有理点、Qをk次拡大体Fqk上の有理点として、PとQとを入力して拡大体F*qkの元zが出力されるとき、a倍のPと、b倍のQを入力するとzのab乗が出力される演算である。なお、ここで、「k」を埋込み次数と呼び、「F*qk」は、正しくは、以下の表示であるが、表示の制限上、「F*qk」と表示している。
【0008】
【数13】
【0009】
IDベース暗号における暗号化あるいは復号の処理や、グループ署名における認証処理では、できるだけ短時間で実行されることが求められている。特に、ペアリングに基づく暗号方式などにおいてはスカラー倍算及びべき乗算が数多く実行されているため、これらの演算を高速に実行することが求められている。
【0010】
そのため、従来より、スカラー倍算やべき乗算をバイナリ法やWindow法などを用いて高速化することが行われている。
【0011】
また、拡大体の元A∈Fqkのべき乗Anを演算する場合には、フロベニウス写像φq:A→Aqを用いることによって演算回数を削減することにより高速化を図ることも行われている。
【0012】
また、スカラー倍算においても、写像を利用することにより演算回数を削減して高速化を図る手法が提案されている(例えば、特許文献1、特許文献2参照。)。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2004−271792号公報
【特許文献2】特開2007−41461号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、写像を利用して高速化を図る周知の高速化手段では、スカラー倍算におけるスカラーn、またはべき乗算における乗数nが位数qを大きく上回る場合(n>>q)にはきわめて有効であるもの、有限体Fqの位数qより大きく上回ることのないスカラーn及び乗数nに対しては、高速化手段を用いずに直接的にスカラー倍算及びべき乗算を実行した場合と比較して顕著な効果が見いだせないものであった。
【0015】
特に、IDベース暗号における暗号化あるいは復号の処理や、グループ署名における認証処理においては、スカラーnを用いたスカラー倍算あるいは乗数nを用いたべき乗算が必要な場合に、スカラーnあるいは乗数nが、有限体Fqの位数qより大きく上回ることのない場合が多く、周知の高速化手段を用いても効果的な高速化が期待できなかった。
【0016】
本発明者らはこのような現状に鑑み、スカラーnあるいは乗数nが有限体Fqの位数qより大きく上回ることのない場合であっても、スカラー倍算あるいはべき乗算を高速に実行できる演算方法の研究開発を行って、本発明を成すに至ったものである。
【課題を解決するための手段】
【0017】
本発明のスカラー倍算の演算装置では、
楕円曲線をE/Fq=x3+ax+b−y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fqk)を有限体Fqの拡大体Fqkで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1−tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq−[q])
を満たすE(Fqk)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、記憶手段を備えた電子計算機により演算するスカラー倍算の演算装置において、
前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fqk)により表される有理点Qの値を前記記憶手段に入力して記憶させる入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、
s=t−1として、前記nをs進展開した次式に基づいて、
【数14】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手段と、
t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
【数15】
前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φqi(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成手段と、
を有するものである。
【0018】
さらに、本発明のスカラー倍算の演算装置では、
前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)−1として、r(χ)をs(χ)進展開した次式に基づいて、
【数16】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φqkQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いる手段と、を有するものである。
【0019】
しかも、本発明のスカラー倍算の演算装置では、
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φqi、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φqiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いる手段と、を有するものである。
【0020】
また、本発明のべき乗算の演算装置では、
Fqkを位数qの有限体Fqのk次拡大体、
HをFqkの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、記憶手段を備えた電子計算機により演算する演算装置において、
前記非負整数nの値、前記位数qの値、前記Fqkの素数位数rの値、A∈H⊂Fqkにより表される元Aの値を入力して前記記憶手段に記憶する入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q−rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算手段と、
前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
【数17】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算手段と、
前記記憶手段から各A[i]を読み出し、次式に基づいて、
【数18】
Z←Z*φqi(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成手段と、を有するものである。
【0021】
さらに、本発明のべき乗算の演算装置では、
X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
【数19】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax−Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φqk(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax−Di(χ)qi−qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いる手段と、を有するものである。
【0022】
しかも、本発明のべき乗算の演算装置では、
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi−Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φqk(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax−h(0,χ)}=A^{h(q,χ)−h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(q,a)−h(0,a)を用いる手段と、を有するものである。
【発明の効果】
【0023】
本発明は、フロベニウス自己準同型写像φq用いて演算回数を削減すものであって、特に、スカラー倍算の場合には、Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、また、べき乗算の場合には、qとrの差分をs=q−rとし、Hの非零元Aに対し、
φq(A)=Aq=As
が成り立つことにより、スカラーnをt-1進展開、またはべき数nをs進展開して、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用い、またはsに換えて元に対するフロベニウス自己準同型写像φqを用いることにより、スカラー倍算におけるスカラーn、またはべき乗算における乗数nが位数qを大きく上回ることのない場合でも、演算回数を削減可能として演算速度を向上させることができる。
【0024】
特に、ペアリングをベースとしたIDベース暗号やグループ署名などでは、ペアリングフレンドリ曲線と呼ばれるペアリングを利用可能な楕円曲線が用いられ、このペアリングフレンドリ曲線を用いる場合には、整数変数χを用いて位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられており、スカラー倍算の場合には、r(χ)をt(χ)−1進展開するとともに、このt(χ)−1進展開の際に導入した係数Di(χ)のうちでもっとも次数の高い係数Di(χ)をDdmax(χ)とし、このDdmax(χ)を多項式h(φq,χ)に置き換えることにより演算回数をさらに削減し、また、べき乗算の場合には、r(χ)をs(χ)=q(χ)−r(χ)進展開するとともに、このs(χ)進展開の際に導入した係数Di(χ)のうちでもっとも次数の高い係数Di(χ)をDdmax(χ)とし、このDdmax(χ)を多項式h(φq,χ)に置き換えることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
【0025】
しかも、最高次数dmaxとなるDi(χ)が複数存在する場合には、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定するとともに、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーvを用い、スカラー倍算の場合には、t-1進展開したスカラーnをDdmax(χ)進展開する換わりにvχdmax−h(0,χ)進展開して、vχdmax−h(0,χ)の換わりにh(q,χ)−h(0,χ)を用いることにより演算回数をさらに削減し、また、べき乗算の場合には、s進展開したべき数nをDdmax(χ)進展開する換わりにvχdmax−h(0,χ)進展開して、vχdmax−h(0,χ)の換わりにh(q,χ)−h(0,χ)を用いることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
【図面の簡単な説明】
【0026】
【図1】スカラー倍算の演算プログラム及びべき乗算の演算プログラムを備えた電子計算機の説明図。
【図2】スカラー倍算の演算プログラムのフローチャートである。
【図3】スカラー倍算の演算プログラムのフローチャートである。
【図4】Ddmax(χ)及び多項式h(φq,χ)を求める補助プログラムのフローチャートである。
【図5】スカラー倍算の演算プログラムのフローチャートである。
【図6】多項式h(φq,χ)及びvχdmax−h(0,χ)を求める補助プログラムのフローチャートである。
【図7】べき乗算の演算プログラムのフローチャートである。
【図8】べき乗算の演算プログラムのフローチャートである。
【図9】Ddmax(χ)及び多項式h(q,χ)を求める補助プログラムのフローチャートである。
【図10】べき乗算の演算プログラムのフローチャートである。
【図11】多項式h(q,χ)及びvχdmax−h(0,χ)を求める補助プログラムのフローチャートである。
【発明を実施するための形態】
【0027】
本発明は、スカラー倍算の演算の高速化及びべき乗算の演算の高速化を目的としたものであり、スカラー倍算とべき乗算というように演算自体は異なるが、高速化のための手法は同じであり、それぞれ同じように演算回数が削減されることにより、演算の高速化を可能としているものである。最初にスカラー倍算について説明し、次いでべき乗算について説明する。
【0028】
まず、楕円曲線をE/Fq=x3+ax+b−y2=0,a∈Fq,b∈Fqとし、
E(Fq):有限体Fqで定義される楕円曲線の有理点が成す加法群
E(Fqk):有限体Fqの拡大体Fqkで定義される楕円曲線の有理点が成す加法群
φq:有限体Fqに関する有理点のフロベニウス自己準同型写像
t:フロベニウス自己準同型写像φqのトレース
r:E(Fq)の位数#E(Fq)=q+1−tを割り切る素数位数
E[r]:位数が素数rである有理点の集合
[j]:有理点をj倍する写像
G:G=E[r]∩Ker(φq−[q])を満たすE(Fqk)に含まれる有理点の集合
と定義する。
【0029】
そして、非負整数nに対するGの有理点Qのスカラーn倍算、すなわちnQを演算する。なお、本実施形態で想定するスカラー倍算はペアリングの演算の際に行われるものであり、一般的にスカラーnは位数rを大きく超えるものではない。
【0030】
また、r=q+1−tであることから、0≡q+1−t(mod r)である。
【0031】
ここで、スカラーnをt−1進展開すると、スカラーnが位数rを大きく超えるものではないことから、
n=C1(t−1)+C0
または、
n=(t−1)2+C1(t−1)+C0
となる。
【0032】
φq(Q)=[q]Q=[t−1]Qであるので、n=C1(t−1)+C0の場合、nQは以下のようになる。
nQ=[C1(t−1)+C0]Q
=[C1q]Q+[C0]Q
=φq([C1]Q)+[C0]Q
【0033】
また、n=(t−1)2+C1(t−1)+C0場合には、nQは以下のようになる。
nQ=[(t−1)2+C1(t−1)+C0]Q
=[q][q]Q+[C1q]Q+[C0]Q
=φq(φq(Q))+φq([C1]Q)+[C0]Q
【0034】
ここで、C1及びC0はt−1と同程度あるいはそれよりも小さくなり、しかも有理点のフロベニウス自己準同型写像を用いることができることによって演算回数を削減できる。したがって、スカラー倍算を高速化することができる。
【0035】
また、通常、ペアリングの演算を行う場合には、既知のペアリングフレンドリ曲線が用いられており、特に、整数変数χを用いて位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることが多い。
【0036】
ここで、[r]Q=[q+1−t]Q=Oであることを考慮しながら、r(χ)をt(χ)−1で剰余をとる、すなわち、r(χ)を、
[r(χ)]Q=Σ[Di(χ)(t(χ)−1)i]Q=Σφqi([Di(χ)]Q)
とt(χ)−1進展開して、Di(χ)のうちでもっとも次数の高いものをDdmax(χ)とする。
【0037】
そして、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
として定義されるφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
【0038】
さらに、φqkQ=Qに基づいて、
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
として定義されるφqとχを変数とする2変数の多項式h(φq,χ)を導入する。すなわち、この多項式h(φq,χ)は、Di(χ)のうちの最高次数のDdmax(χ)を、φqとχを変数とする多項式h(φq,χ)に置き換え可能であることを示しており、最高次数よりも小さい次数までの演算に抑えることができ、特に、χ=aとした場合には、t-1進展開したスカラーnをさらにDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることによって演算回数を大きく削減でき、スカラー倍算を高速化することができる。
【0039】
また、Di(χ)のうちでもっとも次数の高いものが複数存在する場合には、最高次数をdmaxで表すものとし、最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定する。ここで、多項式m(χ)には円周等分多項式などを用いることができる。
【0040】
そして、拡張ユークリッドの互除法を用いて、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を特定し、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
としてφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
【0041】
さらに、g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
としてφqとχを変数とする2変数の多項式h(φq,χ)を導入する。
【0042】
そして、このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いて、χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)とし、t-1進展開したスカラーnをDdmax(a)進展開する換わりに{vadmax−h(0,a)}進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いることにより演算回数を減できるので、スカラー倍算を高速化することができる。ここで、h'(φq)は、φqとχの2変数の多項式h(φq,χ)において、χ=aとしたことによりφqの1変数となっていることを示している。
【0043】
ここまでスカラー倍算について説明したが、べき乗算の場合には、
Fqk:位数qの有限体Fqのk次拡大体
H:Fqkの素数位数rの部分乗法群
φq:有限体Fqに関する元のフロベニウス自己準同型写像
と定義して、非負整数nに対するHの元Aのn乗算を行うものであり、qとrの差分をs=q−rとし、このsをスカラー倍算におけるt−1に置き換えて上述の説明をべき乗算として読み換えるだけであり、詳細な説明は省略する。べき乗算の場合でも、最高次数部分の演算がより低い次数の演算に置き換えられることにより、演算回数を減してべき乗算を高速化することができる。
【0044】
以下において、既知のペアリングフレンドリ曲線を用いながら具体例を説明する。
【0045】
埋め込み次数8のペアリングフレンドリ曲線として、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=χ4−8χ2+25
t(χ)=(2χ3−11χ+15)/15
と与えられるものが知られている。
【0046】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
2r(χ)=(15χ)φq+(−5χ2+50)
0≡(15χ)φq+(−5χ2+50) (mod r(χ))
となる。
【0047】
したがって、Di(χ)は、
D0(χ)=−5χ2+50
D1(χ)=15χ
となる。
【0048】
このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより、
−5χ2+50=15χφq
となり、式を整理することにより、
χ2−10=3χφq
が得られる。
【0049】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらにχ2−10進展開して、χ2−10に換えて15χφqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0050】
他の具体体の埋め込み次数8のペアリングフレンドリ曲線として、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が
r(χ)=χ8−χ4+1
t(χ)=χ5−χ+1
と与えられた場合には、r(χ)をt(χ)−1進展開し、フロベニウス準同型写像φqを用いることにより、
r(χ)=χ3φq+1
0≡3φq+1 (mod r(χ))
となる。
【0051】
したがって、Di(χ)は、
D0(χ)=−1
D1(χ)=χ3
となる。
【0052】
このうち、D1(χ)が最も次数が高いので、D1(χ)φq以外を右辺に移すことにより、
χ3φq=−1
となり、両辺にφ-1を掛けることで
χ3=−φq-1
が得られる。
【0053】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらにχ3進展開して、χ3に換えて−φq-1を用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0054】
また、埋め込み次数10のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=25χ4+25χ3+15χ2+5χ+1
t(χ)=10χ2+5χ+3
と与えられるものが知られている。
【0055】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
8r(χ)=2φq2−φq+(5χ+2)
0≡2φq2−φq+(5χ+2) (mod r(χ))
となる。
【0056】
したがって、Di(χ)は、
D0(χ)=5χ+2
D1(χ)=−1
D2(χ)=2
となる。
【0057】
このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより
5χ+2=−2φq2+φq
が得られる。
【0058】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらに5χ+2進展開して、5χ+2に換えて−2φq2+φqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0059】
また、埋め込み次数12のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=36χ4−36χ3+18χ2−6χ+1
t(χ)=6χ2+1
と与えられるものが知られている。
【0060】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
r(χ)=φq2+(−6χ+3)φq+(−6χ+1)
0≡φq2+(−6χ+3)φq+(−6χ+1) (mod r(χ))
となる。
【0061】
したがって、Di(χ)は、
D0(χ)=−6χ+1
D1(χ)=−6χ+3
D2(χ)=1
となる。
【0062】
ここで、D0(χ)とD1(χ)が共に最も次数が高いので、D0(χ)とD1(χ)φqの最高次数を与えるχの項以外を右辺に移すことにより、
6χ(φq+1)=φq2+3φq+1
となる。
【0063】
ここで、g(φq)=φq4−φq2+1とすると、gcd(φq+1,g(φq))=1を満たし、拡張ユークリッドの互除法より
(φq+1)−1≡φq2(1−φq) (mod g(φq))
が得られる。
【0064】
したがって、両辺にφq2(1−φq)を乗じることにより、
6χ=φq2(1−φq)(φq2+3φq+1)
が得られる。
【0065】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらに6χ進展開して、6χに換えてφq2(1−φq)(φq2+3φq+1)を用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0066】
より具体的な例として、χ=825(10ビット)とする。このとき、
r=16656811746301(44ビット)
t=4083751(22ビット)
である。
【0067】
この場合、
6χ=4950(13ビット)=φq2(1−φq)(φq2+3φq+1)
となるので、Gの有理点のスカラーn倍算またはHの元Aのn乗算を行う場合には、有理点に対するフロベニウス自己準同型写像φqを用いて13ビット程度のスカラー倍算またはべき乗算に変換してから演算を行うこととなり、演算回数の大幅な削減が可能となっている
【0068】
また、埋め込み次数18のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=χ6+37χ3+343
t(χ)=(χ4+16χ+7)/7
と与えられるものが知られている。
【0069】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
r(χ)=(7χ2)φq+(21χ3+343)
0≡(7χ2)φq+(21χ3+343) (mod r(χ))
となる。
【0070】
したがって、Di(χ)は、
D0(χ)=21χ3−343
D1(χ)=7χ2
となる。
【0071】
このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより、
21χ3−343=7χ2φq
となり、式を整理することによって、
χ3−49=χ2φq
が得られる。
【0072】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらにχ3−49進展開して、χ3−49に換えてχ2φqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0073】
最後に、スカラー倍算の演算プログラム及びべき乗算の演算プログラムについて詳説する。なお、スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、本実施形態では、IDベース暗号やグループ署名などを電子計算機で実行している際に、サブルーチンの一つとしてそれぞれ実行されるものである。
【0074】
図1に示すように、スカラー倍算の演算プログラム及びべき乗算の演算プログラムを実行する電子計算機10は、演算処理を実行するCPU11と、所要のプログラムやデータを記憶したハードディスクなどの記憶装置12と、所要のプログラムを展開して実行可能とするとともに、演算にともなって生成されたデータを一時的に記憶するRAMなどで構成されたメモリ装置13を備えている。図1中、14はバスである。本実施形態では、記憶装置12には、メインルーチンのプログラムやスカラー倍算の演算プログラム及びべき乗算の演算プログラムなどの各種プログラム、及びこれらのプログラムが使用するデータを記憶させている。
【0075】
電子計算機10が、例えばグループ署名における認証装置として機能する場合には、インターネットなどの電気通信回線20に接続して、この電気通信回線20に接続されたクライアント装置30から送信されたグループ署名の署名データを受信し、メモリ装置13に一次的に記憶して、グループ署名用のプログラムに基づいて署名データの正当性を判定して認証処理を行っている。図1中、15は電子計算機10の入出力制御部である。
【0076】
スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、それぞれ署名データの正当性を判定する処理を行う際に数多く実行されるものであり、以下においては、スカラー倍算の演算プログラム、及びべき乗算の演算プログラムについてのみ説明する。なお、スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、グループ署名の処理において用いられるものではなく、多種多様な用途で用いられるものであり、しかも、記憶装置12に記憶可能な形態である場合だけでなく、半導体回路として構成することによりいわゆるハードウェア実装される形態であってもよい。
【0077】
まず、t−1進展開によるスカラー倍算nQについて説明する。
【0078】
スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる際に、図2に示すように、はじめに、スカラーnと、E(Fq)のフロベニウス自己準同型写像のトレースtと、有理点Q∈G⊂E(Fqk)が入力される(ステップS101)。この場合、電子計算機は、入力手段として機能する。
【0079】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←O)する(ステップS102)。そして、第1の演算手段として機能し、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS103)。
【0080】
ステップS103では、T[j]=2jQとして、電子計算機は、以下のアルゴリズムを実行している。
(1)for(j=0;J<「log2s」;j++)
(2) T[j]←Q
(3) Q←Q+Q
(4)End for
ここで、(1)の「log2s」は、厳密には、
【0081】
【数26】
であるが、表記上の制限のため、「」を用いている。以下において、アルゴリズム中の「」は同じ意味に用いる。
【0082】
次いで、t−1=sとして、電子計算機は、展開手段として機能し、スカラーnを、
【0083】
【数27】
とs進展開する(ステップS104)。ここで、iの大きさは、nの大きさによって決定するものである。
【0084】
ステップS104では、s進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) c[i]←n%s
(3) n←(n-c[i])/s
(4)End for
ここで、「%」は、剰余をとっていることを表している。
【0085】
次いで、本実施形態では、電子計算機は、第2の演算手段として機能し、Q[i]=c[i]Qの演算を行う(ステップS105)。
【0086】
ステップS105では、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) Q[i]←O
(3) for(j=0;c[i]!=0;i++)
(4) if(c[i]&1)
(5) Q[i]←Q[i]+T[j]
(6) End if
(7) c[i]←c[i]/2
(8) End for
(9)End for
【0087】
次いで、電子計算機は、合成手段として機能し、ステップS105で演算したQ[i]を用いて、スカラー倍算nQを、
【0088】
【数28】
によって合成する(ステップS106)。
【0089】
ステップS106では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) Z←Z+φqi(Q[i])
(3)End for
【0090】
そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS107)、スカラー倍算の演算プログラムを終了している。
【0091】
また、楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)とあらかじめ特定されている場合には、r(χ)をt(χ)−1進展開することにより
[r(χ)]Q=Σ[Di(χ)(t(χ)−1)i]Q=Σφqi([Di(χ)]Q)
として表されるDi(χ)のうちでもっとも次数の高いものをDdmax(χ)とし、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φqkQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)と、Ddmax(χ)を用いることにより、スカラー倍算nQをより高速化することができる。
【0092】
すなわち、Ddmax(χ)及び多項式h(φq,χ)が特定されている場合には、χ=aとしてスカラーnをDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることにより、演算回数を削減している。
【0093】
Ddmax(χ)及び多項式h(φq,χ)が特定されている場合のスカラー倍算nQでは、スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる際に、図3に示すように、はじめに、スカラーnと、χ=aとしてs=Ddmax(a)及びh'(φq)=h(φq,a)と、有理点Q∈G⊂E(Fqk)が入力される(ステップS201)。この場合、電子計算機は、入力手段として機能する。
【0094】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←O)する(ステップS202)。そして、第1の演算手段として機能し、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS203)。ステップS203の演算はステップS103の演算とアルゴリズムは同じであるので、説明は省略する。
【0095】
次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
【0096】
【数29】
とs進展開する(ステップS204)。ステップS204でのs進展開は、ステップS104でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0097】
次いで、電子計算機は、第2の展開手段として機能し、スカラーnを、h'(φq)及びc[i]を用いながら、
【0098】
【数30】
とφq進展開する(ステップS205)。
【0099】
ステップS205では、φq進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)T(φq)←1
(2)for(i=0;i<「logsn」;i++)
(3) d[i]←c[i]
(4) if(d[i]≧s)
(5) for(j=0;j<「logsd[i]」;j++)
(6) e[j]←d[i]%s
(7) d[i]←(d[i]-e[j])%s
(8) End for
(9) U(φq)←1
(10) for(j=0;j<「logsd[i]」;j++)
(11) U(φq)←{U(φq)*e[j]*h'(φq)j}%(φqk-1)
(12) End for
(13) T(φq)←{T(φq)+U(φq)*h'(φq)i}%(φqk-1)
(14) End if
(15) else
(16) T(φq)←{T(φq)+d[i]*h'(φq)i}%(φqk-1)
(17) End else
(18)End for
【0100】
なお、スカラーnをφq進展開した場合に、φq進展開の係数がsよりも大きくなることがある。このように、φq進展開の係数がsよりも大きい場合(ステップS206:NO)には、φq進展開の係数に対してsの剰余をとることにより、φq進展開の係数がsよりも小さくなるように調整している(ステップS207)。この場合、電子計算機は、ステップS206において比較手段として機能し、ステップS207において調整手段として機能する。
【0101】
ステップS207では、電子計算機は、以下のアルゴリズムを実行している。
(1)until(∀d[i]<s)
(2) for(i=0;i<k-1;i++)
(3) d[i]←the i-th coefficient of T(φq)
(4) if(d[i]≧s)
(5) the i-th coefficient of T(φq)←0
(6) for(j=0;j<「logsd[i]」;j++)
(7) e[j]←d[i]%s
(8) d[i]←(d[i]-e[j])%s
(9) End for
(10) U(φq)←1
(11) for(j=0;j<「logsd[i]」;j++)
(12) U(φq)←{U(φq)*e[j]*h'(φq)j}%(φqk-1)
(13) End for
(14) T(φq)←{T(φq)+U(φq)*φqi}%(φqk-1)
(15) End if
(16) End for
(17)End until
【0102】
次いで、電子計算機は、第2の演算手段として機能し、Q[i]=d[i]Qの演算を行う(ステップS208)。
【0103】
ステップS208でも、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) Q[i]←O
(3) for(j=0;d[i]!=0;i++)
(4) if(d[i]&1)
(5) Q[i]←Q[i]+T[j]
(6) End if
(7) d[i]←d[i]/2
(8) End for
(9)End for
【0104】
次いで、電子計算機は、合成手段として機能し、ステップS208で演算したQ[i]を用いて、スカラー倍算nQを、
【0105】
【数31】
によって合成する(ステップS209)。
【0106】
ステップS209では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) Z←Z+φqi(Q[i])
(3)End for
【0107】
そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS210)、スカラー倍算の演算プログラムを終了している。
【0108】
Ddmax(χ)及び多項式h(φq,χ)は、楕円曲線の有限体Fqの位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることから、あらかじめ特定でき、q(χ)、r(χ)及びt(χ)とともに、Ddmax(χ)と多項式h(φq,χ)をスカラー倍算の演算プログラムに組み込んでもよいし、r(χ)及びt(χ)を用いて以下の補助プログラムによって、Ddmax(χ)と多項式h(φq,χ)を求めてもよい。
【0109】
電子計算機は、補助プログラムを起動させると、図4に示すように、はじめに、入力手段として機能し、r(χ)とt(χ)が入力される(ステップS221)。
【0110】
次いで、電子計算機は、展開手段として機能し、入力されたt(χ)を用いて、t(χ)−1=s(χ)として、r(χ)を、
【0111】
【数32】
とs(χ)進展開する(ステップS222)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS222では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0112】
次いで、電子計算機は、抽出手段として機能し、deg(Di(χ))が最大のものを抽出して、Ddmax(χ)として出力する(ステップS223)。
【0113】
次いで、電子計算機は、演算手段として機能し、
【0114】
【数33】
の演算を行って多項式h(φq,χ)を特定し、出力している(ステップS224)。このようにして、電子計算機では、補助プログラムを用いてDdmax(χ)及び多項式h(φq,χ)を求めることができる。
【0115】
また、楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)とあらかじめ特定されているとともに、r(χ)をt(χ)−1進展開することにより
[r(χ)]Q=Σ[Di(χ)(t(χ)−1)i]Q=Σφqi([Di(χ)]Q)
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定し、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いることにより、スカラー倍算nQをより高速化することができる。
【0116】
すなわち、χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)とし、スカラーnをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いることにより、演算回数を削減している。
【0117】
s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)が特定されている場合のスカラー倍算nQでは、スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる際に、図5に示すように、はじめに、スカラーnと、χ=aとしてスカラーs'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)と、有理点Q∈G⊂E(Fqk)が入力される(ステップS301)。この場合、電子計算機は、入力手段として機能する。
【0118】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←O)する(ステップS302)。そして、第1の演算手段として機能し、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS303)。ステップS303の演算はステップS103の演算とアルゴリズムは同じであるので、説明は省略する。
【0119】
次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
【0120】
【数34】
とs'進展開する(ステップS304)。ステップS304でのs'進展開は、ステップS204でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0121】
次いで、電子計算機は、第2の展開手段として機能し、スカラーnを、h'(φq)及びc[i]を用いながら、
【0122】
【数35】
とφq進展開する(ステップS305)。ステップS305でのφq進展開は、スカラーs'(=vadmax−h(0,a))が、ステップS205でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS205でのs進展開とアルゴリズムは同じであるため、詳細な説明は省略する。
【0123】
ステップS305でのφq進展開でも、φq進展開の係数がs'よりも大きくなることがある。このように、φq進展開の係数がs'よりも大きい場合(ステップS306:NO)には、φq進展開の係数に対してs'の剰余をとることにより、φq進展開の係数がs'よりも小さくなるように調整している(ステップS307)。このステップS307での演算も、スカラーs'(=vadmax−h(0,a))が、ステップS207でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS207での演算とアルゴリズムは同じであるため、詳細な説明は省略する。この場合、電子計算機は、ステップS306において比較手段として機能し、ステップS307において調整手段として機能する。
【0124】
次いで、電子計算機は、第2の演算手段として機能し、Q[i]=d[i]Qの演算を行う(ステップS308)。ステップS308でも、バイナリ法を用いており、ステップS308の演算もステップS208の演算とアルゴリズムは同じであるので、説明は省略する。
【0125】
次いで、電子計算機は、合成手段として機能し、ステップS308で演算したQ[i]を用いて、スカラー倍算nQを、
【0126】
【数36】
によって合成する(ステップS309)。ステップS309の演算もステップS209の演算とアルゴリズムは同じであるので、説明は省略する。
【0127】
そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS310)、スカラー倍算の演算プログラムを終了している。
【0128】
多項式h(φq,χ)及びvχdmax−h(0,χ)は、楕円曲線の有限体Fqの位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることから、あらかじめ特定できるので、q(χ)、r(χ)及びt(χ)とともに、多項式h(φq,χ)及びvχdmax−h(0,χ)をスカラー倍算の演算プログラムに組み込んでもよいし、r(χ)及びt(χ)を用いて以下の補助プログラムによって、多項式h(φq,χ)及びvχdmax−h(0,χ)を求めてもよい。
【0129】
電子計算機は、補助プログラムを起動させると、図6に示すように、はじめに、入力手段として機能し、r(χ)、t(χ)及びm(χ)が入力される(ステップS321)。ここで、m(χ)はr(χ)|m(χ)を満たす最小次数の多項式であり、一般的には円周等分多項式が用いられる。
【0130】
次いで、電子計算機は、展開手段として機能し、入力されたt(χ)を用いて、t(χ)−1=s(χ)として、r(χ)を、
【0131】
【数37】
とs(χ)進展開する(ステップS322)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS322では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0132】
次いで、電子計算機は、第1の特定手段として機能し、deg(Di(χ))の最大の次数dmaxの項であるχdmaxの係数を抽出して、抽出された係数の和をT(φq,χ)とし、それ以外の和をU(φq,χ)とする(ステップS323)。ステップS323では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) T(φq,χ)←0,U(φq,χ)←0
(3) if(deg(Di(χ))=dmax)
(4) T(φq,χ)←T(φq,χ)+Di(χ)φqi
(5) End if
(6) else
(7) U(φq,χ)←U(φq,χ)+Di(χ)φqi
(8) End else
(9)End for
【0133】
次いで、電子計算機は、第2の特定手段として機能し、ステップS323で特定したT(φq,χ)の最高次数係数Tdmax(φq)を特定する(ステップS324)。
【0134】
次いで、電子計算機は、第3の特定手段として機能し、ステップS324で特定した最高次数係数Tdmax(φq)を用い、
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定する(ステップS325)。ステップS325では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)W(φq)←gcd(Tdmax(φq),m(φq))
(2)V(φq)←W(φq)
【0135】
次いで、電子計算機は、第4の特定手段として機能し、ステップS325で特定したV(φq)を用い、
g(φq)V(φq)≡v(mod m(φq))
を満たすスカラーv及びg(φq)を、拡張ユークリッドの互除法によって特定する(ステップS326)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(φq)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
【0136】
次いで、電子計算機は、ステップS326で特定したg(φq)を用い、
【0137】
【数38】
の演算を行って多項式h(φq,χ)を特定し(ステップS327)、多項式h(φq,χ)及びvχdmax−h(0,χ)を出力している(ステップS328)。このようにして、電子計算機では、補助プログラムを用いて多項式h(φq,χ)及びvχdmax−h(0,χ)を求めることができる。この場合、電子計算機は、ステップS327において演算手段として機能し、ステップS328において出力手段として機能する。
【0138】
以下において、べき乗算の演算プログラムについて説明する。まず、t−1進展開によるべき乗算Anについて説明する。
【0139】
べき乗算の演算プログラムを実行させて電子計算機をべき乗算として機能させる際に、図7に示すように、はじめに、べき数nと、位数qとFqkの素数位数rとの差分sと、元A∈H⊂Fqkが入力される(ステップS401)。この場合、電子計算機は、入力手段として機能する。
【0140】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←1)する(ステップS402)。そして、第1の演算手段として機能し、X^{Y}はXYを表すものとして、入力された元Aに対して、A^{2j}をあらかじめ演算しておく(ステップS403)。
【0141】
ステップS403では、T[j]=A^{2j}として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(j=0;J<「log2s」;j++)
(2) T[j]←A
(3) A←A*A
(4)End for
【0142】
次いで、電子計算機は、展開手段として機能し、べき数nを、差分sにより
【0143】
【数39】
とs進展開する(ステップS404)。ここで、iの大きさは、nの大きさによって決定するものである。
【0144】
ステップS404では、s進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) c[i]←n%s
(3) n←(n-c[i])/s
(4)End for
ここで、「%」は、剰余をとっていることを表している。
【0145】
次いで、本実施形態では、電子計算機は、第2の演算手段として機能し、A[i]=Ac[i]の演算を行う(ステップS405)。
【0146】
ステップS405では、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) A[i]←1
(3) for(j=0;c[i]!=0;i++)
(4) if(c[i]&1)
(5) A[i]←A[i]*T[j]
(6) End if
(7) c[i]←c[i]/2
(8) End for
(9)End for
【0147】
次いで、電子計算機は、合成手段として機能し、ステップS405で演算したA[i]を用いて、べき乗算Anを、
【0148】
【数40】
によって合成する(ステップS406)。
【0149】
ステップS406では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) Z←Z*φqi(A[i])
(3)End for
【0150】
そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS407)、べき乗算の演算プログラムを終了している。
【0151】
また、位数q、素数位数r、差分sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合には、r(χ)をs(χ)進展開することにより
A^{r(χ)}=ΠA^{Di(χ)s(χ)i}=A^{ΣDi(χ)qi}
として表されるDi(χ)のうちでもっとも次数の高いものをDdmax(χ)とし、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax−Di(χ)qi}=A^{f(q,χ)}
となる多項式f(φq,χ)を用い、φqk(A)=Aに基づいて、
A^{Ddmax(χ)}=A^{Σi≠dmax−Di(χ)qi−qdmax}=A^{h(q,χ)}
となる多項式h(φq,χ)と、Ddmax(χ)を用いることにより、スカラー倍算nQをより高速化することができる。
【0152】
すなわち、Ddmax(χ)及び多項式h(φq,χ)が特定されている場合には、χ=aとしてべき数nをDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることにより、演算回数を削減している。
【0153】
Ddmax(χ)及び多項式h(φq,χ)が特定されている場合のべき乗算nQでは、べき乗算の演算プログラムを実行させて電子計算機をべき乗算機として機能させる際に、図8に示すように、はじめに、べき数nと、χ=aとしてs=Ddmax(a)及びh'(q)=h(q,a)と、元A∈H⊂Fqkが入力される(ステップS501)。この場合、電子計算機は、入力手段として機能する。
【0154】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←1)する(ステップS502)。そして、第1の演算機能として、入力されたAに対して、A^{2j}をあらかじめ演算しておく(ステップS503)。ステップS503の演算はステップS403の演算とアルゴリズムは同じであるので、説明は省略する。
【0155】
次いで、電子計算機は、第1の展開手段として機能し、べき数nを、
【0156】
【数41】
とs進展開する(ステップS504)。ステップS504でのs進展開は、ステップS404でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0157】
次いで、電子計算機は、第2の展開手段として機能し、べき数nを、h'(q)及びc[i]を用いながら、
【0158】
【数42】
とq進展開する(ステップS505)。
【0159】
ステップS505では、q進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)T(q)←1
(2)for(i=0;i<「logsn」;i++)
(3) d[i]←c[i]
(4) if(d[i]≧s)
(5) for(j=0;j<「logsd[i]」;j++)
(6) e[j]←d[i]%s
(7) d[i]←(d[i]-e[j])%s
(8) End for
(9) U(q)←1
(10) for(j=0;j<「logsd[i]」;j++)
(11) U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)
(12) End for
(13) T(q)←{T(q)+U(q)*h'(q)i}%(qk-1)
(14) End if
(15) else
(16) T(q)←{T(q)+d[i]*h'(q)i}%(qk-1)
(17) End else
(18)End for
【0160】
なお、べき数nをq進展開した場合に、q進展開の係数がsよりも大きくなることがある。このように、q進展開の係数がsよりも大きい場合(ステップS506:NO)には、q進展開の係数に対してsの剰余をとることにより、q進展開の係数がsよりも小さくなるように調整している(ステップS507)。この場合、電子計算機は、ステップS506において比較手段として機能し、ステップS507において調整手段として機能する。
【0161】
ステップS507では、電子計算機は、以下のアルゴリズムを実行している。
(1)until(∀d[i]<s)
(2) for(i=0;i<k-1;i++)
(3) d[i]←the i-th coefficient of T(q)
(4) if(d[i]≧s)
(5) the i-th coefficient of T(q)←0
(6) for(j=0;j<「logsd[i]」;j++)
(7) e[j]←d[i]%s
(8) d[i]←(d[i]-e[j])%s
(9) End for
(10) U(q)←1
(11) for(j=0;j<「logsd[i]」;j++)
(12) U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)
(13) End for
(14) T(q)←{T(q)+U(q)*qi}%(qk-1)
(15) End if
(16) End for
(17)End until
【0162】
次いで、電子計算機は、第2の演算手段として機能し、A[i]=Ad[i]の演算を行う(ステップS508)。
【0163】
ステップS508でも、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) A[i]←O
(3) for(j=0;d[i]!=0;i++)
(4) if(d[i]&1)
(5) A[i]←A[i]*T[j]
(6) End if
(7) d[i]←d[i]/2
(8) End for
(9)End for
【0164】
次いで、電子計算機は、合成手段として機能し、ステップS508で演算したA[i]を用いて、べき乗算Anを、
【0165】
【数43】
によって合成する(ステップS509)。
【0166】
ステップS509では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) Z←Z*φqi(A[i])
(3)End for
【0167】
そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS510)、べき乗算の演算プログラムを終了している。
【0168】
Ddmax(χ)及び多項式h(q,χ)は、q(χ)、r(χ)及びs(χ)があらかじめ与えられていることから、あらかじめ特定でき、q(χ)、r(χ)及びs(χ)とともに、Ddmax(χ)と多項式h(q,χ)をべき乗算の演算プログラムに組み込んでもよいし、r(χ)及びs(χ)を用いて以下の補助プログラムによって、Ddmax(χ)と多項式h(q,χ)を求めてもよい。
【0169】
電子計算機は、補助プログラムを起動させると、図9に示すように、はじめに、入力手段として機能し、r(χ)とs(χ)が入力される(ステップS521)。
【0170】
次いで、電子計算機は、展開手段として機能し、入力されたs(χ)を用いて、r(χ)を、
【0171】
【数44】
とs(χ)進展開する(ステップS522)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS522では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0172】
次いで、電子計算機は、抽出手段として機能し、deg(Di(χ))が最大のものを抽出して、Ddmax(χ)として出力する(ステップS523)。
【0173】
次いで、電子計算機は、演算手段として機能し、
【0174】
【数45】
の演算を行って多項式h(q,χ)を特定し、出力している(ステップS524)。このようにして、電子計算機では、補助プログラムを用いてDdmax(χ)及び多項式h(q,χ)を求めることができる。
【0175】
また、位数q、素数位数r及び差分sが、整数変数χを用いてそれぞれq(χ)、r(χ)及びs(χ)とあらかじめ特定されているとともに、r(χ)をs(χ)進展開することにより
A^{r(χ)}=ΠA^{Di(χ)s(χ)i}=A^{ΣDi(χ)qi}
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定し、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi−Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、g(q)を用い、φqk(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax−h(0,χ)}=A^{h(q,χ)−h(0,χ)}
を満たすことを用いることにより、べき乗算Anをより高速化することができる。
【0176】
すなわち、χ=aとして、s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a)とし、べき数nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(q,a)−h(0,a)を用いることにより、演算回数を削減している。
【0177】
s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a)が特定されている場合のべき乗算Anでは、べき乗算の演算プログラムを実行させて電子計算機をべき乗算機として機能させる際に、図10に示すように、はじめに、べき数nと、χ=aとしてスカラーs'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a)と、元A∈H⊂Fqkが入力される(ステップS601)。この場合、電子計算機は、入力手段として機能する。
【0178】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←1)する(ステップS602)。そして、第1の演算手段として機能し、入力された元Aに対して、A^{2j}をあらかじめ演算しておく(ステップS603)。ステップS603の演算はステップS403の演算とアルゴリズムは同じであるので、説明は省略する。
【0179】
次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
【0180】
【数46】
とs'進展開する(ステップS604)。ステップS604でのs'進展開は、ステップS404でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0181】
次いで、電子計算機は、第2の展開手段として機能し、べき数nを、h'(q)及びc[i]を用いながら、
【0182】
【数47】
とq進展開する(ステップS605)。ステップS605でのq進展開は、スカラーs'(=vadmax−h(0,a))が、ステップS505でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS505でのs進展開とアルゴリズムは同じであるため、詳細な説明は省略する。
【0183】
ステップS605でのq進展開でも、q進展開の係数がs'よりも大きくなることがある。このように、q進展開の係数がs'よりも大きい場合(ステップS606:NO)には、q進展開の係数に対してs'の剰余をとることにより、q進展開の係数がs'よりも小さくなるように調整している(ステップS607)。このステップS607での演算も、スカラーs'(=vadmax−h(0,a))が、ステップS507でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS507での演算とアルゴリズムは同じであるため、詳細な説明は省略する。ここで、電子計算機は、ステップS606において比較手段と
して機能し、ステップS607において調整手段として機能する。
【0184】
次いで、電子計算機は、第2の演算手段として機能し、A[i]=Ad[i]の演算を行う(ステップS608)。ステップS608でも、バイナリ法を用いており、ステップS608の演算もステップS508の演算とアルゴリズムは同じであるので、説明は省略する。
【0185】
次いで、電子計算機は、合成手段として機能し、ステップS608で演算したA[i]を用いて、べき乗算Anを、
【0186】
【数48】
によって合成する(ステップS609)。ステップS609の演算もステップS509の演算とアルゴリズムは同じであるので、説明は省略する。
【0187】
そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS610)、べき乗算の演算プログラムを終了している。
【0188】
多項式h(q,χ)及びvχdmax−h(0,χ)は、位数q(χ)、素数位数r(χ)及び差分s(χ)があらかじめ与えられていることから、あらかじめ特定できるので、q(χ)、r(χ)及びs(χ)とともに、多項式h(q,χ)及びvχdmax−h(0,χ)をべき乗算の演算プログラムに組み込んでもよいし、r(χ)及びs(χ)を用いて以下の補助プログラムによって、多項式h(q,χ)及びvχdmax−h(0,χ)を求めてもよい。
【0189】
電子計算機は、補助プログラムを起動させると、図11に示すように、はじめに、入力手段として機能し、r(χ)、s(χ)及びm(χ)が入力される(ステップS621)。ここで、m(χ)はr(χ)|m(χ)を満たす最小次数の多項式であり、一般的には円周等分多項式が用いられる。
【0190】
次いで、電子計算機は、展開手段として機能し、入力されたs(χ)を用いて、r(χ)を、
【0191】
【数49】
とs(χ)進展開する(ステップS622)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS622では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0192】
次いで、電子計算機は、第1の特定手段として機能し、deg(Di(χ))の最大の次数dmaxの項であるχdmaxの係数を抽出して、抽出された係数の和をT(q,χ)とし、それ以外の和をU(q,χ)とする(ステップS623)。ステップS623では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) T(q,χ)←0,U(q,χ)←0
(3) if(deg(Di(χ))=dmax)
(4) T(q,χ)←T(q,χ)+Di(χ)qi
(5) End if
(6) else
(7) U(q,χ)←U(q,χ)+Di(χ)qi
(8) End else
(9)End for
【0193】
次いで、電子計算機は、第2の特定手段として機能し、ステップS623で特定したT(q,χ)の最高次数係数Tdmax(q)を特定する(ステップS624)。
【0194】
次いで、電子計算機は、第3の特定手段として機能し、ステップS624で特定した最高次数係数Tdmax(q)を用い、
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定する(ステップS625)。ステップS625では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)W(q)←gcd(Tdmax(q),m(q))
(2)V(q)←W(q)
【0195】
次いで、電子計算機は、第4の特定手段として機能し、ステップS625で特定したV(q)を用い、
g(q)V(q)≡v(mod m(q))
を満たすスカラーv及びg(q)を、拡張ユークリッドの互除法によって特定する(ステップS626)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(q)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
【0196】
次いで、電子計算機は、ステップS626で特定したg(q)を用い、
【0197】
【数50】
の演算を行って多項式h(q,χ)を特定し(ステップS627)、多項式h(q,χ)及びvχdmax−h(0,χ)を出力している(ステップS628)。このようにして、電子計算機では、補助プログラムを用いて多項式h(q,χ)及びvχdmax−h(0,χ)を求めることができる。この場合、電子計算機は、ステップS627において演算手段として機能し、ステップS628において出力手段として機能する。
【符号の説明】
【0198】
10 電子計算機
11 CPU
12 記憶装置
13 メモリ装置
14 バス
15 入出力制御部
20 電気通信回線
30 クライアント装置
【技術分野】
【0001】
本発明は、有理点Qのスカラーn倍算のnを少なくともt−1進展開することによりスカラー倍算の演算を高速化したスカラー倍算の演算装置及び元Aのn乗算のnを少なくとも(q−r)進展開することによりべき乗算の演算を高速化したべき乗算の演算装置に関する。
【背景技術】
【0002】
昨今、インターネットなどの電気通信回線を利用した情報ネットワーク技術が高度に発展し、インターネットによって様々な情報を取得するだけでなく、インターネットバンキングや行政機関への電子申請などのような各種のサービスが提供されてきている。
【0003】
このようなサービスを利用する場合には、サービスの利用者が、成りすましや架空の人間などではなく、適正な利用者であることを確認するための認証処理が必要であり、信頼性の高い認証方法として、公開鍵と秘密鍵を用いる公開鍵暗号をベースとした電子認証技術がよく利用されている。
【0004】
しかしながら、公開鍵暗号方式の電子認証では、公開鍵あるいは秘密鍵が漏洩した場合には直ちに公開鍵と秘密鍵を変更する必要があり、公開鍵及び秘密鍵の管理を慎重に行わなければならないとともに、必要に応じて新たな公開鍵と秘密鍵の設定登録作業が生じるという繁雑さがあるため、最近では、利用者の氏名やメールアドレスのように利用者特有のIDを用いて電子認証を行うIDベース暗号が用いられることが多くなっている。
【0005】
また、電子認証を行う認証装置によって利用者の個人認証を行った場合には、認証装置に利用者ごとの履歴が蓄積されることとなり、この履歴情報自体が利用者の個人情報であって、最近では、この履歴情報が漏洩することによる個人情報の漏洩のおそれが指摘されている。
【0006】
そこで、認証装置では利用者の個人情報を利用して認証を行うのではなく、複数の利用者をひとまとまりのグループとして、このグループに所属していることを示すグループ署名を用いることにより、利用者を特定することなく認証を行うことによって、認証装置に個人情報が蓄積されることなく認証を可能としたグループ署名技術が提案されている。
【0007】
このようなIDベース暗号やグループ署名における所用の演算には、楕円曲線上の有理点の双線形写像を用いるペアリングと呼ばれる手法が用いられている。ペアリングとは、たとえば、Pを素体Fq上の有理点、Qをk次拡大体Fqk上の有理点として、PとQとを入力して拡大体F*qkの元zが出力されるとき、a倍のPと、b倍のQを入力するとzのab乗が出力される演算である。なお、ここで、「k」を埋込み次数と呼び、「F*qk」は、正しくは、以下の表示であるが、表示の制限上、「F*qk」と表示している。
【0008】
【数13】
【0009】
IDベース暗号における暗号化あるいは復号の処理や、グループ署名における認証処理では、できるだけ短時間で実行されることが求められている。特に、ペアリングに基づく暗号方式などにおいてはスカラー倍算及びべき乗算が数多く実行されているため、これらの演算を高速に実行することが求められている。
【0010】
そのため、従来より、スカラー倍算やべき乗算をバイナリ法やWindow法などを用いて高速化することが行われている。
【0011】
また、拡大体の元A∈Fqkのべき乗Anを演算する場合には、フロベニウス写像φq:A→Aqを用いることによって演算回数を削減することにより高速化を図ることも行われている。
【0012】
また、スカラー倍算においても、写像を利用することにより演算回数を削減して高速化を図る手法が提案されている(例えば、特許文献1、特許文献2参照。)。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2004−271792号公報
【特許文献2】特開2007−41461号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、写像を利用して高速化を図る周知の高速化手段では、スカラー倍算におけるスカラーn、またはべき乗算における乗数nが位数qを大きく上回る場合(n>>q)にはきわめて有効であるもの、有限体Fqの位数qより大きく上回ることのないスカラーn及び乗数nに対しては、高速化手段を用いずに直接的にスカラー倍算及びべき乗算を実行した場合と比較して顕著な効果が見いだせないものであった。
【0015】
特に、IDベース暗号における暗号化あるいは復号の処理や、グループ署名における認証処理においては、スカラーnを用いたスカラー倍算あるいは乗数nを用いたべき乗算が必要な場合に、スカラーnあるいは乗数nが、有限体Fqの位数qより大きく上回ることのない場合が多く、周知の高速化手段を用いても効果的な高速化が期待できなかった。
【0016】
本発明者らはこのような現状に鑑み、スカラーnあるいは乗数nが有限体Fqの位数qより大きく上回ることのない場合であっても、スカラー倍算あるいはべき乗算を高速に実行できる演算方法の研究開発を行って、本発明を成すに至ったものである。
【課題を解決するための手段】
【0017】
本発明のスカラー倍算の演算装置では、
楕円曲線をE/Fq=x3+ax+b−y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fqk)を有限体Fqの拡大体Fqkで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1−tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq−[q])
を満たすE(Fqk)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、記憶手段を備えた電子計算機により演算するスカラー倍算の演算装置において、
前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fqk)により表される有理点Qの値を前記記憶手段に入力して記憶させる入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、
s=t−1として、前記nをs進展開した次式に基づいて、
【数14】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手段と、
t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
【数15】
前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φqi(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成手段と、
を有するものである。
【0018】
さらに、本発明のスカラー倍算の演算装置では、
前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)−1として、r(χ)をs(χ)進展開した次式に基づいて、
【数16】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φqkQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いる手段と、を有するものである。
【0019】
しかも、本発明のスカラー倍算の演算装置では、
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φqi、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φqiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いる手段と、を有するものである。
【0020】
また、本発明のべき乗算の演算装置では、
Fqkを位数qの有限体Fqのk次拡大体、
HをFqkの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、記憶手段を備えた電子計算機により演算する演算装置において、
前記非負整数nの値、前記位数qの値、前記Fqkの素数位数rの値、A∈H⊂Fqkにより表される元Aの値を入力して前記記憶手段に記憶する入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q−rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算手段と、
前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
【数17】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算手段と、
前記記憶手段から各A[i]を読み出し、次式に基づいて、
【数18】
Z←Z*φqi(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成手段と、を有するものである。
【0021】
さらに、本発明のべき乗算の演算装置では、
X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
【数19】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax−Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φqk(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax−Di(χ)qi−qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いる手段と、を有するものである。
【0022】
しかも、本発明のべき乗算の演算装置では、
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi−Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φqk(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax−h(0,χ)}=A^{h(q,χ)−h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(q,a)−h(0,a)を用いる手段と、を有するものである。
【発明の効果】
【0023】
本発明は、フロベニウス自己準同型写像φq用いて演算回数を削減すものであって、特に、スカラー倍算の場合には、Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、また、べき乗算の場合には、qとrの差分をs=q−rとし、Hの非零元Aに対し、
φq(A)=Aq=As
が成り立つことにより、スカラーnをt-1進展開、またはべき数nをs進展開して、t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用い、またはsに換えて元に対するフロベニウス自己準同型写像φqを用いることにより、スカラー倍算におけるスカラーn、またはべき乗算における乗数nが位数qを大きく上回ることのない場合でも、演算回数を削減可能として演算速度を向上させることができる。
【0024】
特に、ペアリングをベースとしたIDベース暗号やグループ署名などでは、ペアリングフレンドリ曲線と呼ばれるペアリングを利用可能な楕円曲線が用いられ、このペアリングフレンドリ曲線を用いる場合には、整数変数χを用いて位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられており、スカラー倍算の場合には、r(χ)をt(χ)−1進展開するとともに、このt(χ)−1進展開の際に導入した係数Di(χ)のうちでもっとも次数の高い係数Di(χ)をDdmax(χ)とし、このDdmax(χ)を多項式h(φq,χ)に置き換えることにより演算回数をさらに削減し、また、べき乗算の場合には、r(χ)をs(χ)=q(χ)−r(χ)進展開するとともに、このs(χ)進展開の際に導入した係数Di(χ)のうちでもっとも次数の高い係数Di(χ)をDdmax(χ)とし、このDdmax(χ)を多項式h(φq,χ)に置き換えることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
【0025】
しかも、最高次数dmaxとなるDi(χ)が複数存在する場合には、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定するとともに、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーvを用い、スカラー倍算の場合には、t-1進展開したスカラーnをDdmax(χ)進展開する換わりにvχdmax−h(0,χ)進展開して、vχdmax−h(0,χ)の換わりにh(q,χ)−h(0,χ)を用いることにより演算回数をさらに削減し、また、べき乗算の場合には、s進展開したべき数nをDdmax(χ)進展開する換わりにvχdmax−h(0,χ)進展開して、vχdmax−h(0,χ)の換わりにh(q,χ)−h(0,χ)を用いることにより演算回数をさらに削減し、それぞれ演算速度を向上させることができる。
【図面の簡単な説明】
【0026】
【図1】スカラー倍算の演算プログラム及びべき乗算の演算プログラムを備えた電子計算機の説明図。
【図2】スカラー倍算の演算プログラムのフローチャートである。
【図3】スカラー倍算の演算プログラムのフローチャートである。
【図4】Ddmax(χ)及び多項式h(φq,χ)を求める補助プログラムのフローチャートである。
【図5】スカラー倍算の演算プログラムのフローチャートである。
【図6】多項式h(φq,χ)及びvχdmax−h(0,χ)を求める補助プログラムのフローチャートである。
【図7】べき乗算の演算プログラムのフローチャートである。
【図8】べき乗算の演算プログラムのフローチャートである。
【図9】Ddmax(χ)及び多項式h(q,χ)を求める補助プログラムのフローチャートである。
【図10】べき乗算の演算プログラムのフローチャートである。
【図11】多項式h(q,χ)及びvχdmax−h(0,χ)を求める補助プログラムのフローチャートである。
【発明を実施するための形態】
【0027】
本発明は、スカラー倍算の演算の高速化及びべき乗算の演算の高速化を目的としたものであり、スカラー倍算とべき乗算というように演算自体は異なるが、高速化のための手法は同じであり、それぞれ同じように演算回数が削減されることにより、演算の高速化を可能としているものである。最初にスカラー倍算について説明し、次いでべき乗算について説明する。
【0028】
まず、楕円曲線をE/Fq=x3+ax+b−y2=0,a∈Fq,b∈Fqとし、
E(Fq):有限体Fqで定義される楕円曲線の有理点が成す加法群
E(Fqk):有限体Fqの拡大体Fqkで定義される楕円曲線の有理点が成す加法群
φq:有限体Fqに関する有理点のフロベニウス自己準同型写像
t:フロベニウス自己準同型写像φqのトレース
r:E(Fq)の位数#E(Fq)=q+1−tを割り切る素数位数
E[r]:位数が素数rである有理点の集合
[j]:有理点をj倍する写像
G:G=E[r]∩Ker(φq−[q])を満たすE(Fqk)に含まれる有理点の集合
と定義する。
【0029】
そして、非負整数nに対するGの有理点Qのスカラーn倍算、すなわちnQを演算する。なお、本実施形態で想定するスカラー倍算はペアリングの演算の際に行われるものであり、一般的にスカラーnは位数rを大きく超えるものではない。
【0030】
また、r=q+1−tであることから、0≡q+1−t(mod r)である。
【0031】
ここで、スカラーnをt−1進展開すると、スカラーnが位数rを大きく超えるものではないことから、
n=C1(t−1)+C0
または、
n=(t−1)2+C1(t−1)+C0
となる。
【0032】
φq(Q)=[q]Q=[t−1]Qであるので、n=C1(t−1)+C0の場合、nQは以下のようになる。
nQ=[C1(t−1)+C0]Q
=[C1q]Q+[C0]Q
=φq([C1]Q)+[C0]Q
【0033】
また、n=(t−1)2+C1(t−1)+C0場合には、nQは以下のようになる。
nQ=[(t−1)2+C1(t−1)+C0]Q
=[q][q]Q+[C1q]Q+[C0]Q
=φq(φq(Q))+φq([C1]Q)+[C0]Q
【0034】
ここで、C1及びC0はt−1と同程度あるいはそれよりも小さくなり、しかも有理点のフロベニウス自己準同型写像を用いることができることによって演算回数を削減できる。したがって、スカラー倍算を高速化することができる。
【0035】
また、通常、ペアリングの演算を行う場合には、既知のペアリングフレンドリ曲線が用いられており、特に、整数変数χを用いて位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることが多い。
【0036】
ここで、[r]Q=[q+1−t]Q=Oであることを考慮しながら、r(χ)をt(χ)−1で剰余をとる、すなわち、r(χ)を、
[r(χ)]Q=Σ[Di(χ)(t(χ)−1)i]Q=Σφqi([Di(χ)]Q)
とt(χ)−1進展開して、Di(χ)のうちでもっとも次数の高いものをDdmax(χ)とする。
【0037】
そして、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
として定義されるφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
【0038】
さらに、φqkQ=Qに基づいて、
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
として定義されるφqとχを変数とする2変数の多項式h(φq,χ)を導入する。すなわち、この多項式h(φq,χ)は、Di(χ)のうちの最高次数のDdmax(χ)を、φqとχを変数とする多項式h(φq,χ)に置き換え可能であることを示しており、最高次数よりも小さい次数までの演算に抑えることができ、特に、χ=aとした場合には、t-1進展開したスカラーnをさらにDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることによって演算回数を大きく削減でき、スカラー倍算を高速化することができる。
【0039】
また、Di(χ)のうちでもっとも次数の高いものが複数存在する場合には、最高次数をdmaxで表すものとし、最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定する。ここで、多項式m(χ)には円周等分多項式などを用いることができる。
【0040】
そして、拡張ユークリッドの互除法を用いて、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を特定し、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
としてφqとχを変数とする2変数の多項式f(φq,χ)を導入する。
【0041】
さらに、g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
としてφqとχを変数とする2変数の多項式h(φq,χ)を導入する。
【0042】
そして、このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いて、χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)とし、t-1進展開したスカラーnをDdmax(a)進展開する換わりに{vadmax−h(0,a)}進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いることにより演算回数を減できるので、スカラー倍算を高速化することができる。ここで、h'(φq)は、φqとχの2変数の多項式h(φq,χ)において、χ=aとしたことによりφqの1変数となっていることを示している。
【0043】
ここまでスカラー倍算について説明したが、べき乗算の場合には、
Fqk:位数qの有限体Fqのk次拡大体
H:Fqkの素数位数rの部分乗法群
φq:有限体Fqに関する元のフロベニウス自己準同型写像
と定義して、非負整数nに対するHの元Aのn乗算を行うものであり、qとrの差分をs=q−rとし、このsをスカラー倍算におけるt−1に置き換えて上述の説明をべき乗算として読み換えるだけであり、詳細な説明は省略する。べき乗算の場合でも、最高次数部分の演算がより低い次数の演算に置き換えられることにより、演算回数を減してべき乗算を高速化することができる。
【0044】
以下において、既知のペアリングフレンドリ曲線を用いながら具体例を説明する。
【0045】
埋め込み次数8のペアリングフレンドリ曲線として、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=χ4−8χ2+25
t(χ)=(2χ3−11χ+15)/15
と与えられるものが知られている。
【0046】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
2r(χ)=(15χ)φq+(−5χ2+50)
0≡(15χ)φq+(−5χ2+50) (mod r(χ))
となる。
【0047】
したがって、Di(χ)は、
D0(χ)=−5χ2+50
D1(χ)=15χ
となる。
【0048】
このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより、
−5χ2+50=15χφq
となり、式を整理することにより、
χ2−10=3χφq
が得られる。
【0049】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらにχ2−10進展開して、χ2−10に換えて15χφqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0050】
他の具体体の埋め込み次数8のペアリングフレンドリ曲線として、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が
r(χ)=χ8−χ4+1
t(χ)=χ5−χ+1
と与えられた場合には、r(χ)をt(χ)−1進展開し、フロベニウス準同型写像φqを用いることにより、
r(χ)=χ3φq+1
0≡3φq+1 (mod r(χ))
となる。
【0051】
したがって、Di(χ)は、
D0(χ)=−1
D1(χ)=χ3
となる。
【0052】
このうち、D1(χ)が最も次数が高いので、D1(χ)φq以外を右辺に移すことにより、
χ3φq=−1
となり、両辺にφ-1を掛けることで
χ3=−φq-1
が得られる。
【0053】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらにχ3進展開して、χ3に換えて−φq-1を用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0054】
また、埋め込み次数10のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=25χ4+25χ3+15χ2+5χ+1
t(χ)=10χ2+5χ+3
と与えられるものが知られている。
【0055】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
8r(χ)=2φq2−φq+(5χ+2)
0≡2φq2−φq+(5χ+2) (mod r(χ))
となる。
【0056】
したがって、Di(χ)は、
D0(χ)=5χ+2
D1(χ)=−1
D2(χ)=2
となる。
【0057】
このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより
5χ+2=−2φq2+φq
が得られる。
【0058】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらに5χ+2進展開して、5χ+2に換えて−2φq2+φqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0059】
また、埋め込み次数12のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=36χ4−36χ3+18χ2−6χ+1
t(χ)=6χ2+1
と与えられるものが知られている。
【0060】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
r(χ)=φq2+(−6χ+3)φq+(−6χ+1)
0≡φq2+(−6χ+3)φq+(−6χ+1) (mod r(χ))
となる。
【0061】
したがって、Di(χ)は、
D0(χ)=−6χ+1
D1(χ)=−6χ+3
D2(χ)=1
となる。
【0062】
ここで、D0(χ)とD1(χ)が共に最も次数が高いので、D0(χ)とD1(χ)φqの最高次数を与えるχの項以外を右辺に移すことにより、
6χ(φq+1)=φq2+3φq+1
となる。
【0063】
ここで、g(φq)=φq4−φq2+1とすると、gcd(φq+1,g(φq))=1を満たし、拡張ユークリッドの互除法より
(φq+1)−1≡φq2(1−φq) (mod g(φq))
が得られる。
【0064】
したがって、両辺にφq2(1−φq)を乗じることにより、
6χ=φq2(1−φq)(φq2+3φq+1)
が得られる。
【0065】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらに6χ進展開して、6χに換えてφq2(1−φq)(φq2+3φq+1)を用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0066】
より具体的な例として、χ=825(10ビット)とする。このとき、
r=16656811746301(44ビット)
t=4083751(22ビット)
である。
【0067】
この場合、
6χ=4950(13ビット)=φq2(1−φq)(φq2+3φq+1)
となるので、Gの有理点のスカラーn倍算またはHの元Aのn乗算を行う場合には、有理点に対するフロベニウス自己準同型写像φqを用いて13ビット程度のスカラー倍算またはべき乗算に変換してから演算を行うこととなり、演算回数の大幅な削減が可能となっている
【0068】
また、埋め込み次数18のペアリングフレンドリ曲線の場合には、#E(Fq)を割り切る素数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)が、
r(χ)=χ6+37χ3+343
t(χ)=(χ4+16χ+7)/7
と与えられるものが知られている。
【0069】
この場合、r(χ)をt(χ)−1進展開して、フロベニウス準同型写像φqを用いることにより、
r(χ)=(7χ2)φq+(21χ3+343)
0≡(7χ2)φq+(21χ3+343) (mod r(χ))
となる。
【0070】
したがって、Di(χ)は、
D0(χ)=21χ3−343
D1(χ)=7χ2
となる。
【0071】
このうち、D0(χ)が最も次数が高いので、D0(χ)以外を右辺に移すことにより、
21χ3−343=7χ2φq
となり、式を整理することによって、
χ3−49=χ2φq
が得られる。
【0072】
したがって、非負整数nに対するGの有理点Qのスカラーn倍算、または非負整数nに対するHの元Aのn乗算を行わせるべき乗算を行う場合には、非負整数nに対してnをt−1進展開し、さらにχ3−49進展開して、χ3−49に換えてχ2φqを用いることにより、Gの有理点のスカラーn倍算またはHの元Aのn乗算を、有理点に対するフロベニウス自己準同型写像φqを用いて演算を行うことができ、演算回数を減してべき乗算を高速化することができる。
【0073】
最後に、スカラー倍算の演算プログラム及びべき乗算の演算プログラムについて詳説する。なお、スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、本実施形態では、IDベース暗号やグループ署名などを電子計算機で実行している際に、サブルーチンの一つとしてそれぞれ実行されるものである。
【0074】
図1に示すように、スカラー倍算の演算プログラム及びべき乗算の演算プログラムを実行する電子計算機10は、演算処理を実行するCPU11と、所要のプログラムやデータを記憶したハードディスクなどの記憶装置12と、所要のプログラムを展開して実行可能とするとともに、演算にともなって生成されたデータを一時的に記憶するRAMなどで構成されたメモリ装置13を備えている。図1中、14はバスである。本実施形態では、記憶装置12には、メインルーチンのプログラムやスカラー倍算の演算プログラム及びべき乗算の演算プログラムなどの各種プログラム、及びこれらのプログラムが使用するデータを記憶させている。
【0075】
電子計算機10が、例えばグループ署名における認証装置として機能する場合には、インターネットなどの電気通信回線20に接続して、この電気通信回線20に接続されたクライアント装置30から送信されたグループ署名の署名データを受信し、メモリ装置13に一次的に記憶して、グループ署名用のプログラムに基づいて署名データの正当性を判定して認証処理を行っている。図1中、15は電子計算機10の入出力制御部である。
【0076】
スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、それぞれ署名データの正当性を判定する処理を行う際に数多く実行されるものであり、以下においては、スカラー倍算の演算プログラム、及びべき乗算の演算プログラムについてのみ説明する。なお、スカラー倍算の演算プログラム及びべき乗算の演算プログラムは、グループ署名の処理において用いられるものではなく、多種多様な用途で用いられるものであり、しかも、記憶装置12に記憶可能な形態である場合だけでなく、半導体回路として構成することによりいわゆるハードウェア実装される形態であってもよい。
【0077】
まず、t−1進展開によるスカラー倍算nQについて説明する。
【0078】
スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる際に、図2に示すように、はじめに、スカラーnと、E(Fq)のフロベニウス自己準同型写像のトレースtと、有理点Q∈G⊂E(Fqk)が入力される(ステップS101)。この場合、電子計算機は、入力手段として機能する。
【0079】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←O)する(ステップS102)。そして、第1の演算手段として機能し、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS103)。
【0080】
ステップS103では、T[j]=2jQとして、電子計算機は、以下のアルゴリズムを実行している。
(1)for(j=0;J<「log2s」;j++)
(2) T[j]←Q
(3) Q←Q+Q
(4)End for
ここで、(1)の「log2s」は、厳密には、
【0081】
【数26】
であるが、表記上の制限のため、「」を用いている。以下において、アルゴリズム中の「」は同じ意味に用いる。
【0082】
次いで、t−1=sとして、電子計算機は、展開手段として機能し、スカラーnを、
【0083】
【数27】
とs進展開する(ステップS104)。ここで、iの大きさは、nの大きさによって決定するものである。
【0084】
ステップS104では、s進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) c[i]←n%s
(3) n←(n-c[i])/s
(4)End for
ここで、「%」は、剰余をとっていることを表している。
【0085】
次いで、本実施形態では、電子計算機は、第2の演算手段として機能し、Q[i]=c[i]Qの演算を行う(ステップS105)。
【0086】
ステップS105では、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) Q[i]←O
(3) for(j=0;c[i]!=0;i++)
(4) if(c[i]&1)
(5) Q[i]←Q[i]+T[j]
(6) End if
(7) c[i]←c[i]/2
(8) End for
(9)End for
【0087】
次いで、電子計算機は、合成手段として機能し、ステップS105で演算したQ[i]を用いて、スカラー倍算nQを、
【0088】
【数28】
によって合成する(ステップS106)。
【0089】
ステップS106では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) Z←Z+φqi(Q[i])
(3)End for
【0090】
そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS107)、スカラー倍算の演算プログラムを終了している。
【0091】
また、楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)とあらかじめ特定されている場合には、r(χ)をt(χ)−1進展開することにより
[r(χ)]Q=Σ[Di(χ)(t(χ)−1)i]Q=Σφqi([Di(χ)]Q)
として表されるDi(χ)のうちでもっとも次数の高いものをDdmax(χ)とし、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φqkQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)と、Ddmax(χ)を用いることにより、スカラー倍算nQをより高速化することができる。
【0092】
すなわち、Ddmax(χ)及び多項式h(φq,χ)が特定されている場合には、χ=aとしてスカラーnをDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることにより、演算回数を削減している。
【0093】
Ddmax(χ)及び多項式h(φq,χ)が特定されている場合のスカラー倍算nQでは、スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる際に、図3に示すように、はじめに、スカラーnと、χ=aとしてs=Ddmax(a)及びh'(φq)=h(φq,a)と、有理点Q∈G⊂E(Fqk)が入力される(ステップS201)。この場合、電子計算機は、入力手段として機能する。
【0094】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←O)する(ステップS202)。そして、第1の演算手段として機能し、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS203)。ステップS203の演算はステップS103の演算とアルゴリズムは同じであるので、説明は省略する。
【0095】
次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
【0096】
【数29】
とs進展開する(ステップS204)。ステップS204でのs進展開は、ステップS104でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0097】
次いで、電子計算機は、第2の展開手段として機能し、スカラーnを、h'(φq)及びc[i]を用いながら、
【0098】
【数30】
とφq進展開する(ステップS205)。
【0099】
ステップS205では、φq進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)T(φq)←1
(2)for(i=0;i<「logsn」;i++)
(3) d[i]←c[i]
(4) if(d[i]≧s)
(5) for(j=0;j<「logsd[i]」;j++)
(6) e[j]←d[i]%s
(7) d[i]←(d[i]-e[j])%s
(8) End for
(9) U(φq)←1
(10) for(j=0;j<「logsd[i]」;j++)
(11) U(φq)←{U(φq)*e[j]*h'(φq)j}%(φqk-1)
(12) End for
(13) T(φq)←{T(φq)+U(φq)*h'(φq)i}%(φqk-1)
(14) End if
(15) else
(16) T(φq)←{T(φq)+d[i]*h'(φq)i}%(φqk-1)
(17) End else
(18)End for
【0100】
なお、スカラーnをφq進展開した場合に、φq進展開の係数がsよりも大きくなることがある。このように、φq進展開の係数がsよりも大きい場合(ステップS206:NO)には、φq進展開の係数に対してsの剰余をとることにより、φq進展開の係数がsよりも小さくなるように調整している(ステップS207)。この場合、電子計算機は、ステップS206において比較手段として機能し、ステップS207において調整手段として機能する。
【0101】
ステップS207では、電子計算機は、以下のアルゴリズムを実行している。
(1)until(∀d[i]<s)
(2) for(i=0;i<k-1;i++)
(3) d[i]←the i-th coefficient of T(φq)
(4) if(d[i]≧s)
(5) the i-th coefficient of T(φq)←0
(6) for(j=0;j<「logsd[i]」;j++)
(7) e[j]←d[i]%s
(8) d[i]←(d[i]-e[j])%s
(9) End for
(10) U(φq)←1
(11) for(j=0;j<「logsd[i]」;j++)
(12) U(φq)←{U(φq)*e[j]*h'(φq)j}%(φqk-1)
(13) End for
(14) T(φq)←{T(φq)+U(φq)*φqi}%(φqk-1)
(15) End if
(16) End for
(17)End until
【0102】
次いで、電子計算機は、第2の演算手段として機能し、Q[i]=d[i]Qの演算を行う(ステップS208)。
【0103】
ステップS208でも、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) Q[i]←O
(3) for(j=0;d[i]!=0;i++)
(4) if(d[i]&1)
(5) Q[i]←Q[i]+T[j]
(6) End if
(7) d[i]←d[i]/2
(8) End for
(9)End for
【0104】
次いで、電子計算機は、合成手段として機能し、ステップS208で演算したQ[i]を用いて、スカラー倍算nQを、
【0105】
【数31】
によって合成する(ステップS209)。
【0106】
ステップS209では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) Z←Z+φqi(Q[i])
(3)End for
【0107】
そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS210)、スカラー倍算の演算プログラムを終了している。
【0108】
Ddmax(χ)及び多項式h(φq,χ)は、楕円曲線の有限体Fqの位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることから、あらかじめ特定でき、q(χ)、r(χ)及びt(χ)とともに、Ddmax(χ)と多項式h(φq,χ)をスカラー倍算の演算プログラムに組み込んでもよいし、r(χ)及びt(χ)を用いて以下の補助プログラムによって、Ddmax(χ)と多項式h(φq,χ)を求めてもよい。
【0109】
電子計算機は、補助プログラムを起動させると、図4に示すように、はじめに、入力手段として機能し、r(χ)とt(χ)が入力される(ステップS221)。
【0110】
次いで、電子計算機は、展開手段として機能し、入力されたt(χ)を用いて、t(χ)−1=s(χ)として、r(χ)を、
【0111】
【数32】
とs(χ)進展開する(ステップS222)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS222では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0112】
次いで、電子計算機は、抽出手段として機能し、deg(Di(χ))が最大のものを抽出して、Ddmax(χ)として出力する(ステップS223)。
【0113】
次いで、電子計算機は、演算手段として機能し、
【0114】
【数33】
の演算を行って多項式h(φq,χ)を特定し、出力している(ステップS224)。このようにして、電子計算機では、補助プログラムを用いてDdmax(χ)及び多項式h(φq,χ)を求めることができる。
【0115】
また、楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)とあらかじめ特定されているとともに、r(χ)をt(χ)−1進展開することにより
[r(χ)]Q=Σ[Di(χ)(t(χ)−1)i]Q=Σφqi([Di(χ)]Q)
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定し、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いることにより、スカラー倍算nQをより高速化することができる。
【0116】
すなわち、χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)とし、スカラーnをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いることにより、演算回数を削減している。
【0117】
s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)が特定されている場合のスカラー倍算nQでは、スカラー倍算の演算プログラムを実行させて電子計算機をスカラー倍算機として機能させる際に、図5に示すように、はじめに、スカラーnと、χ=aとしてスカラーs'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)と、有理点Q∈G⊂E(Fqk)が入力される(ステップS301)。この場合、電子計算機は、入力手段として機能する。
【0118】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←O)する(ステップS302)。そして、第1の演算手段として機能し、入力されたQに対して、2jQをあらかじめ演算しておく(ステップS303)。ステップS303の演算はステップS103の演算とアルゴリズムは同じであるので、説明は省略する。
【0119】
次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
【0120】
【数34】
とs'進展開する(ステップS304)。ステップS304でのs'進展開は、ステップS204でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0121】
次いで、電子計算機は、第2の展開手段として機能し、スカラーnを、h'(φq)及びc[i]を用いながら、
【0122】
【数35】
とφq進展開する(ステップS305)。ステップS305でのφq進展開は、スカラーs'(=vadmax−h(0,a))が、ステップS205でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS205でのs進展開とアルゴリズムは同じであるため、詳細な説明は省略する。
【0123】
ステップS305でのφq進展開でも、φq進展開の係数がs'よりも大きくなることがある。このように、φq進展開の係数がs'よりも大きい場合(ステップS306:NO)には、φq進展開の係数に対してs'の剰余をとることにより、φq進展開の係数がs'よりも小さくなるように調整している(ステップS307)。このステップS307での演算も、スカラーs'(=vadmax−h(0,a))が、ステップS207でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS207での演算とアルゴリズムは同じであるため、詳細な説明は省略する。この場合、電子計算機は、ステップS306において比較手段として機能し、ステップS307において調整手段として機能する。
【0124】
次いで、電子計算機は、第2の演算手段として機能し、Q[i]=d[i]Qの演算を行う(ステップS308)。ステップS308でも、バイナリ法を用いており、ステップS308の演算もステップS208の演算とアルゴリズムは同じであるので、説明は省略する。
【0125】
次いで、電子計算機は、合成手段として機能し、ステップS308で演算したQ[i]を用いて、スカラー倍算nQを、
【0126】
【数36】
によって合成する(ステップS309)。ステップS309の演算もステップS209の演算とアルゴリズムは同じであるので、説明は省略する。
【0127】
そして、電子計算機は、出力手段として機能し、スカラー倍算の演算プログラムの実行結果として、Zを出力し(ステップS310)、スカラー倍算の演算プログラムを終了している。
【0128】
多項式h(φq,χ)及びvχdmax−h(0,χ)は、楕円曲線の有限体Fqの位数q(χ)、#E(Fq)を割り切る素数位数r(χ)、フロベニウス自己準同型写像φqのトレースt(χ)があらかじめ与えられていることから、あらかじめ特定できるので、q(χ)、r(χ)及びt(χ)とともに、多項式h(φq,χ)及びvχdmax−h(0,χ)をスカラー倍算の演算プログラムに組み込んでもよいし、r(χ)及びt(χ)を用いて以下の補助プログラムによって、多項式h(φq,χ)及びvχdmax−h(0,χ)を求めてもよい。
【0129】
電子計算機は、補助プログラムを起動させると、図6に示すように、はじめに、入力手段として機能し、r(χ)、t(χ)及びm(χ)が入力される(ステップS321)。ここで、m(χ)はr(χ)|m(χ)を満たす最小次数の多項式であり、一般的には円周等分多項式が用いられる。
【0130】
次いで、電子計算機は、展開手段として機能し、入力されたt(χ)を用いて、t(χ)−1=s(χ)として、r(χ)を、
【0131】
【数37】
とs(χ)進展開する(ステップS322)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS322では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0132】
次いで、電子計算機は、第1の特定手段として機能し、deg(Di(χ))の最大の次数dmaxの項であるχdmaxの係数を抽出して、抽出された係数の和をT(φq,χ)とし、それ以外の和をU(φq,χ)とする(ステップS323)。ステップS323では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) T(φq,χ)←0,U(φq,χ)←0
(3) if(deg(Di(χ))=dmax)
(4) T(φq,χ)←T(φq,χ)+Di(χ)φqi
(5) End if
(6) else
(7) U(φq,χ)←U(φq,χ)+Di(χ)φqi
(8) End else
(9)End for
【0133】
次いで、電子計算機は、第2の特定手段として機能し、ステップS323で特定したT(φq,χ)の最高次数係数Tdmax(φq)を特定する(ステップS324)。
【0134】
次いで、電子計算機は、第3の特定手段として機能し、ステップS324で特定した最高次数係数Tdmax(φq)を用い、
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を特定する(ステップS325)。ステップS325では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)W(φq)←gcd(Tdmax(φq),m(φq))
(2)V(φq)←W(φq)
【0135】
次いで、電子計算機は、第4の特定手段として機能し、ステップS325で特定したV(φq)を用い、
g(φq)V(φq)≡v(mod m(φq))
を満たすスカラーv及びg(φq)を、拡張ユークリッドの互除法によって特定する(ステップS326)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(φq)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
【0136】
次いで、電子計算機は、ステップS326で特定したg(φq)を用い、
【0137】
【数38】
の演算を行って多項式h(φq,χ)を特定し(ステップS327)、多項式h(φq,χ)及びvχdmax−h(0,χ)を出力している(ステップS328)。このようにして、電子計算機では、補助プログラムを用いて多項式h(φq,χ)及びvχdmax−h(0,χ)を求めることができる。この場合、電子計算機は、ステップS327において演算手段として機能し、ステップS328において出力手段として機能する。
【0138】
以下において、べき乗算の演算プログラムについて説明する。まず、t−1進展開によるべき乗算Anについて説明する。
【0139】
べき乗算の演算プログラムを実行させて電子計算機をべき乗算として機能させる際に、図7に示すように、はじめに、べき数nと、位数qとFqkの素数位数rとの差分sと、元A∈H⊂Fqkが入力される(ステップS401)。この場合、電子計算機は、入力手段として機能する。
【0140】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←1)する(ステップS402)。そして、第1の演算手段として機能し、X^{Y}はXYを表すものとして、入力された元Aに対して、A^{2j}をあらかじめ演算しておく(ステップS403)。
【0141】
ステップS403では、T[j]=A^{2j}として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(j=0;J<「log2s」;j++)
(2) T[j]←A
(3) A←A*A
(4)End for
【0142】
次いで、電子計算機は、展開手段として機能し、べき数nを、差分sにより
【0143】
【数39】
とs進展開する(ステップS404)。ここで、iの大きさは、nの大きさによって決定するものである。
【0144】
ステップS404では、s進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) c[i]←n%s
(3) n←(n-c[i])/s
(4)End for
ここで、「%」は、剰余をとっていることを表している。
【0145】
次いで、本実施形態では、電子計算機は、第2の演算手段として機能し、A[i]=Ac[i]の演算を行う(ステップS405)。
【0146】
ステップS405では、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) A[i]←1
(3) for(j=0;c[i]!=0;i++)
(4) if(c[i]&1)
(5) A[i]←A[i]*T[j]
(6) End if
(7) c[i]←c[i]/2
(8) End for
(9)End for
【0147】
次いで、電子計算機は、合成手段として機能し、ステップS405で演算したA[i]を用いて、べき乗算Anを、
【0148】
【数40】
によって合成する(ステップS406)。
【0149】
ステップS406では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「logsn」;i++)
(2) Z←Z*φqi(A[i])
(3)End for
【0150】
そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS407)、べき乗算の演算プログラムを終了している。
【0151】
また、位数q、素数位数r、差分sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合には、r(χ)をs(χ)進展開することにより
A^{r(χ)}=ΠA^{Di(χ)s(χ)i}=A^{ΣDi(χ)qi}
として表されるDi(χ)のうちでもっとも次数の高いものをDdmax(χ)とし、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax−Di(χ)qi}=A^{f(q,χ)}
となる多項式f(φq,χ)を用い、φqk(A)=Aに基づいて、
A^{Ddmax(χ)}=A^{Σi≠dmax−Di(χ)qi−qdmax}=A^{h(q,χ)}
となる多項式h(φq,χ)と、Ddmax(χ)を用いることにより、スカラー倍算nQをより高速化することができる。
【0152】
すなわち、Ddmax(χ)及び多項式h(φq,χ)が特定されている場合には、χ=aとしてべき数nをDdmax(a)進展開して、Ddmax(a)に換えてh(φq,a)を用いることにより、演算回数を削減している。
【0153】
Ddmax(χ)及び多項式h(φq,χ)が特定されている場合のべき乗算nQでは、べき乗算の演算プログラムを実行させて電子計算機をべき乗算機として機能させる際に、図8に示すように、はじめに、べき数nと、χ=aとしてs=Ddmax(a)及びh'(q)=h(q,a)と、元A∈H⊂Fqkが入力される(ステップS501)。この場合、電子計算機は、入力手段として機能する。
【0154】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←1)する(ステップS502)。そして、第1の演算機能として、入力されたAに対して、A^{2j}をあらかじめ演算しておく(ステップS503)。ステップS503の演算はステップS403の演算とアルゴリズムは同じであるので、説明は省略する。
【0155】
次いで、電子計算機は、第1の展開手段として機能し、べき数nを、
【0156】
【数41】
とs進展開する(ステップS504)。ステップS504でのs進展開は、ステップS404でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0157】
次いで、電子計算機は、第2の展開手段として機能し、べき数nを、h'(q)及びc[i]を用いながら、
【0158】
【数42】
とq進展開する(ステップS505)。
【0159】
ステップS505では、q進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)T(q)←1
(2)for(i=0;i<「logsn」;i++)
(3) d[i]←c[i]
(4) if(d[i]≧s)
(5) for(j=0;j<「logsd[i]」;j++)
(6) e[j]←d[i]%s
(7) d[i]←(d[i]-e[j])%s
(8) End for
(9) U(q)←1
(10) for(j=0;j<「logsd[i]」;j++)
(11) U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)
(12) End for
(13) T(q)←{T(q)+U(q)*h'(q)i}%(qk-1)
(14) End if
(15) else
(16) T(q)←{T(q)+d[i]*h'(q)i}%(qk-1)
(17) End else
(18)End for
【0160】
なお、べき数nをq進展開した場合に、q進展開の係数がsよりも大きくなることがある。このように、q進展開の係数がsよりも大きい場合(ステップS506:NO)には、q進展開の係数に対してsの剰余をとることにより、q進展開の係数がsよりも小さくなるように調整している(ステップS507)。この場合、電子計算機は、ステップS506において比較手段として機能し、ステップS507において調整手段として機能する。
【0161】
ステップS507では、電子計算機は、以下のアルゴリズムを実行している。
(1)until(∀d[i]<s)
(2) for(i=0;i<k-1;i++)
(3) d[i]←the i-th coefficient of T(q)
(4) if(d[i]≧s)
(5) the i-th coefficient of T(q)←0
(6) for(j=0;j<「logsd[i]」;j++)
(7) e[j]←d[i]%s
(8) d[i]←(d[i]-e[j])%s
(9) End for
(10) U(q)←1
(11) for(j=0;j<「logsd[i]」;j++)
(12) U(q)←{U(q)*e[j]*h'(q)j}%(qk-1)
(13) End for
(14) T(q)←{T(q)+U(q)*qi}%(qk-1)
(15) End if
(16) End for
(17)End until
【0162】
次いで、電子計算機は、第2の演算手段として機能し、A[i]=Ad[i]の演算を行う(ステップS508)。
【0163】
ステップS508でも、バイナリ法を用いており、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) A[i]←O
(3) for(j=0;d[i]!=0;i++)
(4) if(d[i]&1)
(5) A[i]←A[i]*T[j]
(6) End if
(7) d[i]←d[i]/2
(8) End for
(9)End for
【0164】
次いで、電子計算機は、合成手段として機能し、ステップS508で演算したA[i]を用いて、べき乗算Anを、
【0165】
【数43】
によって合成する(ステップS509)。
【0166】
ステップS509では、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<k;i++)
(2) Z←Z*φqi(A[i])
(3)End for
【0167】
そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS510)、べき乗算の演算プログラムを終了している。
【0168】
Ddmax(χ)及び多項式h(q,χ)は、q(χ)、r(χ)及びs(χ)があらかじめ与えられていることから、あらかじめ特定でき、q(χ)、r(χ)及びs(χ)とともに、Ddmax(χ)と多項式h(q,χ)をべき乗算の演算プログラムに組み込んでもよいし、r(χ)及びs(χ)を用いて以下の補助プログラムによって、Ddmax(χ)と多項式h(q,χ)を求めてもよい。
【0169】
電子計算機は、補助プログラムを起動させると、図9に示すように、はじめに、入力手段として機能し、r(χ)とs(χ)が入力される(ステップS521)。
【0170】
次いで、電子計算機は、展開手段として機能し、入力されたs(χ)を用いて、r(χ)を、
【0171】
【数44】
とs(χ)進展開する(ステップS522)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS522では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0172】
次いで、電子計算機は、抽出手段として機能し、deg(Di(χ))が最大のものを抽出して、Ddmax(χ)として出力する(ステップS523)。
【0173】
次いで、電子計算機は、演算手段として機能し、
【0174】
【数45】
の演算を行って多項式h(q,χ)を特定し、出力している(ステップS524)。このようにして、電子計算機では、補助プログラムを用いてDdmax(χ)及び多項式h(q,χ)を求めることができる。
【0175】
また、位数q、素数位数r及び差分sが、整数変数χを用いてそれぞれq(χ)、r(χ)及びs(χ)とあらかじめ特定されているとともに、r(χ)をs(χ)進展開することにより
A^{r(χ)}=ΠA^{Di(χ)s(χ)i}=A^{ΣDi(χ)qi}
として表されるDi(χ)において最高次数dmaxとなるDi(χ)が複数存在する場合には、最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定し、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi−Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、g(q)を用い、φqk(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax−h(0,χ)}=A^{h(q,χ)−h(0,χ)}
を満たすことを用いることにより、べき乗算Anをより高速化することができる。
【0176】
すなわち、χ=aとして、s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a)とし、べき数nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(q,a)−h(0,a)を用いることにより、演算回数を削減している。
【0177】
s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a)が特定されている場合のべき乗算Anでは、べき乗算の演算プログラムを実行させて電子計算機をべき乗算機として機能させる際に、図10に示すように、はじめに、べき数nと、χ=aとしてスカラーs'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a)と、元A∈H⊂Fqkが入力される(ステップS601)。この場合、電子計算機は、入力手段として機能する。
【0178】
次いで、電子計算機は、初期化手段として機能し、演算結果を格納するレジスタZを初期化(Z←1)する(ステップS602)。そして、第1の演算手段として機能し、入力された元Aに対して、A^{2j}をあらかじめ演算しておく(ステップS603)。ステップS603の演算はステップS403の演算とアルゴリズムは同じであるので、説明は省略する。
【0179】
次いで、電子計算機は、第1の展開手段として機能し、スカラーnを、
【0180】
【数46】
とs'進展開する(ステップS604)。ステップS604でのs'進展開は、ステップS404でのs進展開とアルゴリズムは同じであるので、説明は省略する。
【0181】
次いで、電子計算機は、第2の展開手段として機能し、べき数nを、h'(q)及びc[i]を用いながら、
【0182】
【数47】
とq進展開する(ステップS605)。ステップS605でのq進展開は、スカラーs'(=vadmax−h(0,a))が、ステップS505でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS505でのs進展開とアルゴリズムは同じであるため、詳細な説明は省略する。
【0183】
ステップS605でのq進展開でも、q進展開の係数がs'よりも大きくなることがある。このように、q進展開の係数がs'よりも大きい場合(ステップS606:NO)には、q進展開の係数に対してs'の剰余をとることにより、q進展開の係数がs'よりも小さくなるように調整している(ステップS607)。このステップS607での演算も、スカラーs'(=vadmax−h(0,a))が、ステップS507でのスカラーs(=Ddmax(a))とは異なる点以外では、ステップS507での演算とアルゴリズムは同じであるため、詳細な説明は省略する。ここで、電子計算機は、ステップS606において比較手段と
して機能し、ステップS607において調整手段として機能する。
【0184】
次いで、電子計算機は、第2の演算手段として機能し、A[i]=Ad[i]の演算を行う(ステップS608)。ステップS608でも、バイナリ法を用いており、ステップS608の演算もステップS508の演算とアルゴリズムは同じであるので、説明は省略する。
【0185】
次いで、電子計算機は、合成手段として機能し、ステップS608で演算したA[i]を用いて、べき乗算Anを、
【0186】
【数48】
によって合成する(ステップS609)。ステップS609の演算もステップS509の演算とアルゴリズムは同じであるので、説明は省略する。
【0187】
そして、電子計算機は、出力手段として機能し、べき乗算の演算プログラムの実行結果として、Zを出力し(ステップS610)、べき乗算の演算プログラムを終了している。
【0188】
多項式h(q,χ)及びvχdmax−h(0,χ)は、位数q(χ)、素数位数r(χ)及び差分s(χ)があらかじめ与えられていることから、あらかじめ特定できるので、q(χ)、r(χ)及びs(χ)とともに、多項式h(q,χ)及びvχdmax−h(0,χ)をべき乗算の演算プログラムに組み込んでもよいし、r(χ)及びs(χ)を用いて以下の補助プログラムによって、多項式h(q,χ)及びvχdmax−h(0,χ)を求めてもよい。
【0189】
電子計算機は、補助プログラムを起動させると、図11に示すように、はじめに、入力手段として機能し、r(χ)、s(χ)及びm(χ)が入力される(ステップS621)。ここで、m(χ)はr(χ)|m(χ)を満たす最小次数の多項式であり、一般的には円周等分多項式が用いられる。
【0190】
次いで、電子計算機は、展開手段として機能し、入力されたs(χ)を用いて、r(χ)を、
【0191】
【数49】
とs(χ)進展開する(ステップS622)。ここで、iの大きさは、r(χ)及びs(χ)から自動的に決定される。ステップS622では、s(χ)進展開の演算として、電子計算機は、以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) Di(χ)←r(χ)%s(χ)
(3) r(χ)←(r(χ)-Di(χ))/s(χ)
(4)End for
【0192】
次いで、電子計算機は、第1の特定手段として機能し、deg(Di(χ))の最大の次数dmaxの項であるχdmaxの係数を抽出して、抽出された係数の和をT(q,χ)とし、それ以外の和をU(q,χ)とする(ステップS623)。ステップS623では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)for(i=0;i<「degr(χ)/degs(χ)」;i++)
(2) T(q,χ)←0,U(q,χ)←0
(3) if(deg(Di(χ))=dmax)
(4) T(q,χ)←T(q,χ)+Di(χ)qi
(5) End if
(6) else
(7) U(q,χ)←U(q,χ)+Di(χ)qi
(8) End else
(9)End for
【0193】
次いで、電子計算機は、第2の特定手段として機能し、ステップS623で特定したT(q,χ)の最高次数係数Tdmax(q)を特定する(ステップS624)。
【0194】
次いで、電子計算機は、第3の特定手段として機能し、ステップS624で特定した最高次数係数Tdmax(q)を用い、
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を特定する(ステップS625)。ステップS625では、電子計算機は、具体的に以下のアルゴリズムを実行している。
(1)W(q)←gcd(Tdmax(q),m(q))
(2)V(q)←W(q)
【0195】
次いで、電子計算機は、第4の特定手段として機能し、ステップS625で特定したV(q)を用い、
g(q)V(q)≡v(mod m(q))
を満たすスカラーv及びg(q)を、拡張ユークリッドの互除法によって特定する(ステップS626)。この拡張ユークリッドの互除法は、一般的なライブラリにおいて準備されている既知のプログラムに基づいて実行されるものであり、特に、g(q)の係数及びスカラーvが小さくなるようにしておくことが望ましい。
【0196】
次いで、電子計算機は、ステップS626で特定したg(q)を用い、
【0197】
【数50】
の演算を行って多項式h(q,χ)を特定し(ステップS627)、多項式h(q,χ)及びvχdmax−h(0,χ)を出力している(ステップS628)。このようにして、電子計算機では、補助プログラムを用いて多項式h(q,χ)及びvχdmax−h(0,χ)を求めることができる。この場合、電子計算機は、ステップS627において演算手段として機能し、ステップS628において出力手段として機能する。
【符号の説明】
【0198】
10 電子計算機
11 CPU
12 記憶装置
13 メモリ装置
14 バス
15 入出力制御部
20 電気通信回線
30 クライアント装置
【特許請求の範囲】
【請求項1】
楕円曲線をE/Fq=x3+ax+b−y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fqk)を有限体Fqの拡大体Fqkで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1−tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq−[q])
を満たすE(Fqk)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、記憶手段を備えた電子計算機により演算するスカラー倍算の演算装置において、
前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fqk)により表される有理点Qの値を前記記憶手段に入力して記憶させる入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、
s=t−1として、前記nをs進展開した次式に基づいて、
【数1】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手段と、
t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
【数2】
前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φqi(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成手段と、
を有することを特徴とするスカラー倍算の演算装置。
【請求項2】
前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)−1として、r(χ)をs(χ)進展開した次式に基づいて、
【数3】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φqkQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いる手段と、を有することを特徴とする請求項1に記載のスカラー倍算の演算装置。
【請求項3】
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φqi、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φqiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いる手段と、を有することを特徴とする請求項2に記載のスカラー倍算の演算装置。
【請求項4】
Fqkを位数qの有限体Fqのk次拡大体、
HをFqkの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、記憶手段を備えた電子計算機により演算する演算装置において、
前記非負整数nの値、前記位数qの値、前記Fqkの素数位数rの値、A∈H⊂Fqkにより表される元Aの値を入力して前記記憶手段に記憶する入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q−rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算手段と、
前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
【数4】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算手段と、
前記記憶手段から各A[i]を読み出し、次式に基づいて、
【数5】
Z←Z*φqi(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成手段と、を有することを特徴とするべき乗算の演算装置。
【請求項5】
X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
【数6】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax−Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φqk(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax−Di(χ)qi−qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いる手段と、を有することを特徴とする請求項4に記載のべき乗算の演算装置。
【請求項6】
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi−Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φqk(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax−h(0,χ)}=A^{h(q,χ)−h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(q,a)−h(0,a)を用いる手段と、を有することを特徴とする請求項5に記載のべき乗算の演算装置。
【請求項1】
楕円曲線をE/Fq=x3+ax+b−y2=0,a∈Fq,b∈Fqとし、
E(Fq)を有限体Fqで定義される楕円曲線の有理点が成す加法群、
E(Fqk)を有限体Fqの拡大体Fqkで定義される楕円曲線の有理点が成す加法群、
φqを有限体Fqに関する有理点のフロベニウス自己準同型写像、
tをフロベニウス自己準同型写像φqのトレース、
rをE(Fq)の位数#E(Fq)=q+1−tを割り切る素数位数、
E[r]を位数が素数rである有理点の集合、
[j]を有理点をj倍する写像、
Gを
G=E[r]∩Ker(φq−[q])
を満たすE(Fqk)に含まれる有理点の集合として、
非負整数nに対するGの有理点Qのスカラーn倍算を、記憶手段を備えた電子計算機により演算するスカラー倍算の演算装置において、
前記非負整数nの値、前記トレースtの値、及び、Q∈G⊂E(Fqk)により表される有理点Qの値を前記記憶手段に入力して記憶させる入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
Gの有理点Qに対し、
φq(Q)=[q]Q=[t−1]Q
が成り立つことにより、
s=t−1として、前記nをs進展開した次式に基づいて、
【数1】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返し行って各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段から前記有理点Q及び前記係数c[i]を読み出して、Q[i]=c[i]Qにより表される演算をi=0から所定回繰り返し行って各Q[i]の値を前記記憶手段に記憶する演算手段と、
t-1に換えて有理点に対するフロベニウス自己準同型写像φqを用いて表される次式のスカラー倍算nQに基づいて、
【数2】
前記記憶手段からQ[i]及び演算結果Zを読み出し、Z←Z+φqi(Q[i])により表される代入演算をi=0から所定回繰り返し行ってスカラー倍算の演算結果Zを前記記憶手段に記憶する合成手段と、
を有することを特徴とするスカラー倍算の演算装置。
【請求項2】
前記楕円曲線の有限体Fqの位数q、#E(Fq)を割り切る素数位数r、フロベニウス自己準同型写像φqのトレースtが、整数変数χを用いてそれぞれq(χ)、r(χ)、t(χ)で与えられている場合に、
前記q(χ)、r(χ)、t(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びt(χ)の値を読み出して、前記s(χ)=t(χ)−1として、r(χ)をs(χ)進展開した次式に基づいて、
【数3】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、各係数Di(χ)及びr(χ)の値を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段からDdmax(χ)、Di(χ)、Qの値を読み出して、
φqdmax([Ddmax(χ)]Q)=Σφqi([Di(χ)]Q)−φqdmax([Ddmax(χ)]Q)
=[f(φq,χ)]Q
となる多項式f(φq,χ)を用い、φqkQ=Qに基づいて
[Ddmax(χ)]Q=[f(φq,χ)φq-dmax]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開をχ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置換え、前記Ddmax(a)に換えて前記多項式h(φq,a)を用いる手段と、を有することを特徴とする請求項1に記載のスカラー倍算の演算装置。
【請求項3】
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助入力手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(φq)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(φq,χ)及びU(φq,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(φq,χ)←T(φq,χ)+Di(χ)φqi、その他の場合にU(φq,χ)←U(φq,χ)+Di(χ)φqiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返し行って、T(φq,χ)及びU(φq,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(φq)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(φq)|m(φq),gcd(Tdmax(φq),V(φq))=1
を満たすV(φq)を、W(φq)←gcd(Tdmax(φq),m(φq))及びV(φq)←W(φq)により表される代入演算を行って特定し、前記V(φq)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(φq)及びm(φq)の値を読み出して、
g(φq)V(φq)≡v(mod m(φq))
を満たす整数のスカラーv及びg(φq)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(φq)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(φq)、χdmax、Di(χ)、Qの各値を読み出して、
[Tdmax(φq)χdmax]Q=Σφqi([Di(χ)]Q)−[Tdmax(φq)χdmax]Q
=[f(φq,χ)]Q
となる多項式f(φq,χ)と、前記g(φq)を用い、φqkQ=Qに基づいて、
[vχdmax]Q=[g(φq)f(φq,χ)]Q=[h(φq,χ)]Q
となる多項式h(φq,χ)を特定し、前記多項式h(φq,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(φq,χ)の値を読み出して、
このh(φq,χ)のφqに関する定数項h(0,χ)が、
[vχdmax−h(0,χ)]Q=[h(φq,χ)−h(0,χ)]Q
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(φq)=h(φq,a)−h(0,a)により表される演算を行ってs'、h'(φq)の値を前記記憶手段に記憶し、
t-1進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(φq,a)−h(0,a)を用いる手段と、を有することを特徴とする請求項2に記載のスカラー倍算の演算装置。
【請求項4】
Fqkを位数qの有限体Fqのk次拡大体、
HをFqkの素数位数rの部分乗法群、
φqを有限体Fqに関する元のフロベニウス自己準同型写像として、
非負整数nに対するHの元Aのn乗算を行うべき乗算を、記憶手段を備えた電子計算機により演算する演算装置において、
前記非負整数nの値、前記位数qの値、前記Fqkの素数位数rの値、A∈H⊂Fqkにより表される元Aの値を入力して前記記憶手段に記憶する入力手段と、
演算結果Zを記憶する前記記憶手段を初期化する初期化手段と、
前記位数q、前記元Aの値を前記記憶手段から読み出して、前記qとrの差分をs=q−rとし、T[j]←A及びA←A*Aにより表される代入演算を、j=0からj<「log2s」まで繰り返して行って前記T[j]及び前記Aの値を前記記憶手段に記憶する第1の演算手段と、
前記記憶手段から前記n及び差分sの値を読み出して、差分sにより展開した次式に基づいて、
【数4】
c[i]←n%s及びn←(n-c[i])/sにより表される代入演算をi=0から所定回繰り返して行い、各係数c[i]及び非負整数nの値を前記記憶手段に記憶する展開手段と、
前記記憶手段からc[i]及び前記nの値を読み出して、A[i]=Ac[i]に基づいて、A[i]=1に初期化し、c[i]&1である場合にA[i]←A[i]*T[j]、c[i]←c[i]/2により表される代入演算を、i=0から所定回繰り返して行い、前記記憶手段にA[i]及びc[i]の値を記憶する第2の演算手段と、
前記記憶手段から各A[i]を読み出し、次式に基づいて、
【数5】
Z←Z*φqi(A[i])により表されるべき乗演算を、i=0から所定回繰り返して行い、計算結果Zとして前記記憶手段に記憶する合成手段と、を有することを特徴とするべき乗算の演算装置。
【請求項5】
X^{Y}はXYであることを表すこととし、
前記位数q、前記素数位数r、前記sが、整数変数χを用いてそれぞれq(χ)、r(χ)、s(χ)で与えられている場合に、
前記q(χ)、r(χ)、s(χ)の各値を入力して前記記憶手段に記憶する補助入力手段と、
前記記憶手段からr(χ)及びs(χ)を読み出して、前記s(χ)を用いて前記r(χ)をs(χ)進展開した次式に基づいて、
【数6】
Di(χ)←r(χ)%s(χ)及びr(χ)←(r(χ)-Di(χ))/s(χ)により表される代入演算を、i=0からi<「degr(χ)/degs(χ)」まで繰り返して行い、前記係数Di(χ)及びr(χ)を前記記憶手段に記憶する補助展開手段と、
前記記憶された係数Di(χ)のうち、deg(Di(χ))が最大のものをDdmax(χ)として抽出し、前記記憶手段に記憶する補助抽出手段と、
前記記憶手段から前記Ddmax(χ)、Di(χ)、qの値を読み出して、
(A^{Ddmax(χ)})^{qdmax}=A^{Σi≠dmax−Di(χ)qi}=A^{f(q,χ)}
となる多項式f(q,χ)を用い、φqk(A)=Aに基づいて
A^{Ddmax(χ)}=A^{Σi≠dmax−Di(χ)qi−qdmax}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する補助特定手段と、
前記s進展開した前記nを、χ=aとしてs=Ddmax(a)からなるDdmax(a)進展開に置き換え、前記Ddmax(a)に換えて前記多項式h(q,a)を用いる手段と、を有することを特徴とする請求項4に記載のべき乗算の演算装置。
【請求項6】
前記係数Di(χ)において最高次数dmaxとなる係数Di(χ)が複数存在する場合に、
前記補助記憶手段は、r(χ)|m(χ)を満たすm(χ)の値を入力して前記記憶手段に記憶する手段を更に含み、
deg(Di(χ))の最高次数dmaxの項であるχdmaxの係数をTdmax(q)として、前記記憶手段から係数Di(χ)を読み出し、前記記憶手段にT(q,χ)及びU(q,χ)を初期値を0として割り当て、deg(Di(χ))=dmaxとなる場合にT(q,χ)←T(q,χ)+Di(χ)qi、その他の場合にU(q,χ)←U(q,χ)+Di(χ)qiにより表される代入演算をi=0からi<「degr(χ)/degs(χ)」まで繰り返して行ってT(q,χ)及びU(q,χ)の値を前記記憶手段に記憶し、最高次数係数Tdmax(q)を特定する第2の補助特定手段と、
前記記憶手段からm(χ)及びR(χ)の値を読み出して、r(χ)|m(χ)を満たす最小次数の多項式m(χ)を用いて
V(q)|m(q),gcd(Tdmax(q),V(q))=1
を満たすV(q)を、W(q)←gcd(Tdmax(q),m(q))及びV(q)←W(q)により表される演算を行って特定し、前記V(q)の値を前記記憶手段に記憶する第3の補助特定手段と、
前記記憶手段からV(q)及びm(q)の値を読み出して、
g(q)V(q)≡v(mod m(q))
を満たす整数のスカラーv及びg(q)を拡張ユークリッドの互除法により特定し、前記スカラーv及びg(q)の値を前記記憶手段に記憶する第4の補助特定手段と、
前記補助特定手段に代えて、前記記憶手段からTdmax(q)、χdmax、Di(χ)、Qの各値を読み出して、
A^{Tdmax(q)χdmax}=A^{ΣDi(χ)qi−Tdmax(q)χdmax}
=A^{f(q,χ)}
となる多項式f(q,χ)と、前記g(q)を用い、φqk(A)=Aに基づいて、
A^{vχdmax}=A^{g(q)f(q,χ)}=A^{h(q,χ)}
となる多項式h(q,χ)を特定し、前記多項式h(q,χ)の値を前記記憶手段に記憶する第5の補助特定手段と、
前記記憶手段から前記h(q,χ)の値を読み出して、
このh(q,χ)のqに関する定数項h(0,χ)が、
A^{vχdmax−h(0,χ)}=A^{h(q,χ)−h(0,χ)}
を満たすことを用いて、
χ=aとして、s'=vadmax−h(0,a)及びh'(q)=h(q,a)−h(0,a) により表される演算を行ってs'、h'(q)の値を前記記憶手段に記憶し、s進展開した前記nをDdmax(a)進展開する換わりにvadmax−h(0,a)進展開して、vadmax−h(0,a)の換わりにh(q,a)−h(0,a)を用いる手段と、を有することを特徴とする請求項5に記載のべき乗算の演算装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2009−301070(P2009−301070A)
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2009−229150(P2009−229150)
【出願日】平成21年9月30日(2009.9.30)
【分割の表示】特願2008−43462(P2008−43462)の分割
【原出願日】平成20年2月25日(2008.2.25)
【出願人】(504147243)国立大学法人 岡山大学 (444)
【Fターム(参考)】
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願日】平成21年9月30日(2009.9.30)
【分割の表示】特願2008−43462(P2008−43462)の分割
【原出願日】平成20年2月25日(2008.2.25)
【出願人】(504147243)国立大学法人 岡山大学 (444)
【Fターム(参考)】
[ Back to top ]