説明

データ圧縮装置、および、これに利用されるパラメータ設定装置

【課題】 拡大次数nが一般の正整数であれば、制限なく利用できるようなデータ圧縮装置、および、これに利用されるパラメータ設定装置を提供する。
【解決手段】 拡大次数を素数の組で示すために素因数分解した、素因数分解結果を入力するとともに、外部から有限体の標数と圧縮するデータとを入力し、有限体の標数と拡大次数とで規定され、圧縮するデータが含まれる代数的トーラスに、素因数分解結果の素数のべき指数に依存する次元を持つ入力アフィン空間を加えて、素因数分解結果の素数のべき指数に依存する次元を持つ出力アフィン空間へ写像する関数、テーブル、または関数とテーブルとの組へ、圧縮したいデータ、及び入力アフィン空間に属する補助入力データを供給して取得される結果データを圧縮データとして外部へ出力するデータ圧縮部24とを備えた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は離散対数問題に依った暗号系のデータ圧縮に関する。
【背景技術】
【0002】
ネットワークの利便性の向上や、ハードディスク装置や、不揮発性メモリなどの技術進歩により、ますますデジタルデータの流通が盛んになってきており、これに伴って、デジタルデータを安全に流通させるために、暗号技術や署名技術もより重要になってきている。
【0003】
暗号技術や署名技術の一つのカテゴリとして、例えばElGamal暗号/署名のような有限群上の離散対数問題に依った暗号/署名方式がある。しかしながら、この有限群上の離散対数問題に依った暗号/署名方式は、鍵、暗号文、署名などが長く、このことが利便性を損ねている大きな要因の1つであった。
【0004】
有限群上の離散対数問題に依った暗号/署名方式では、有限群としては有限体の部分群が用いられるものが多い。このような方式のとき、部分群の元の個数は有限体の大きさに比べるとかなり小さい場合がある。もし、有限体の要素より少ないbit数で部分群を効率よく表現できるとすると、それは鍵長や暗号文長、署名長を圧縮できることにつながる。
【0005】
RubinとSilverbergは、離散対数問題に依った暗号系に用いられる鍵と暗号文、離散対数問題に依った署名方式で生成される署名を代数的トーラスを用いることで圧縮する方法を開示している(非特許文献1参照)。以下では、有限体の標数q、拡大次数nとし説明する。非特許文献1では、圧縮関数ρと伸長関数ψを構成し、nが2個以下の素数の巾の積である場合について圧縮率r=n/φ(n)を達成した。ここで圧縮率rは鍵等のビット長が圧縮により1/r倍になることと定義される。φはオイラー関数である。
【0006】
van DijkとWoodruffらは、非特許文献1の方法を改良し、nが相異なる素数の積である場合について、圧縮率として漸近的にn/φ(n)を達成する圧縮方法を開示している(非特許文献2参照)。ここでn/φ(n)は、nが小さい素因数を多く含む場合に大きい値を取ることが知られている。
【非特許文献1】K.Rubin and A. Silverberg, Torus−Based Cryptography. Crypto’03, LNCS 2729, 349−365
【非特許文献2】M. van Dijk and D. Woodruff,Asymptotically Optimal Communication for Torus−Based Crytography. Crypto’04, LNCS3152, 157−178
【発明の開示】
【発明が解決しようとする課題】
【0007】
有限体の部分群上の離散対数問題に依った暗号/署名におけるデータ圧縮法として、有限体の拡大次数nが一般の正整数であれば、利用に制限がなく利用価値が高い。
【0008】
しかしながら、上記非特許文献1に開示される圧縮技術は、nの条件によって圧縮率rが大きな値を取らないため、限定的にしか利用できないという問題があった。なお、この方法を用いた場合の圧縮率rの上限は3である。
【0009】
また、上記非特許文献2に開示される圧縮技術は、大きな圧縮率rを取るnの個数が少ないためにnの選択に大きな制約を受けるから利用がし難かったという問題があった。
【0010】
そこで、本発明は、有限体の部分群上の離散対数問題に依った暗号/署名におけるデータ圧縮法として、有限体の拡大次数nが一般の正整数であれば、制限なく利用できるよう好適なデータ圧縮装置、および、これに利用されるパラメータ設定装置を提供する。
【課題を解決するための手段】
【0011】
本発明は、離散対数問題に依った暗号化方式または署名方式に係るデータを圧縮するデータ圧縮装置であって、有限体の拡大次数の入力を受け、この拡大次数を素数の組で示すために素因数分解し、素因数分解結果を出力する素因数分解手段と、前記素因数分解手段で出力された前記素因数分解結果を入力するとともに、外部から有限体の標数と圧縮するデータとを入力し、有限体の標数と拡大次数とで規定され、前記圧縮するデータが含まれる代数的トーラスに、前記素因数分解結果の素数のべき指数に依存する次元を持つ入力アフィン空間を加えて、前記素因数分解結果の素数のべき指数に依存する次元を持つ出力アフィン空間へ写像する関数、テーブル、または関数とテーブルとの組へ、前記圧縮したいデータ、及び前記入力アフィン空間に属する補助入力データを供給して取得される結果データを圧縮データとして外部へ出力する圧縮手段とを備えた。
【0012】
また、本発明は、離散対数問題に依った暗号化方式または署名方式に係るデータを圧縮するデータ圧縮装置であって、有限体の拡大次数の入力を受け、この拡大次数nを示す素数の組で出力するとともに、各素数のべきの積が2個以下の素数のべきの積で表されるか否かを判定し、判定結果を出力する判定手段と、前記拡大次数を示す素数の組を入力するとともに、外部から有限体の標数と圧縮するデータとを入力し、有限体の標数と拡大次数とで規定され、前記圧縮するデータが含まれる代数的トーラスに、前記拡大次数を示す素数の組の素数のべき指数に依存する次元を持つ入力アフィン空間を加えて、前記拡大次数を示す素数の組の素数のべき指数に依存する次元を持つ出力アフィン空間へ写像する関数、テーブル、または関数とテーブルとの組へ、前記圧縮したいデータ、及び前記入力アフィン空間に属する補助入力データを供給して取得される結果データを圧縮データとして外部へ出力する第1圧縮手段と、前記判定手段の判定結果を入力し、これが否であるときに、前記判定手段から入力された前記拡大次数を示す素数の組と、外部から入力された有限体の標数と圧縮するデータとを前記第1圧縮手段へ出力する切替手段とを備えた。
【0013】
また、本発明は、離散対数問題に依った暗号化方式または署名方式に係るデータを圧縮するデータ圧縮装置へ与える拡大次数を決定するパラメータ設定装置であって、外部から入力される前記暗号化方式または署名方式のセキュリティ強度を、外部から入力される有限体の標数のビット長で除し、この結果を最小となる拡大次数と決定する最小拡大次数決定手段と、圧縮後のビット長を決定するオイラー関数を設定し、該オイラー関数の単調増加区間ごとにグループ化し、前記最小拡大次数決定手段で決定された拡大次数が属するグループを判定する判定手段と、前記判定手段で判定されたグループの一つ上のグループの下限値を求めて、該判定されたグループの閾値と設定する閾値設定手段と、該判定されたグループの下限値から前記閾値設定手段で設定した閾値までの間を、前記オイラー関数が最小となる拡大次数を探索する探索手段とを備えた。
【発明の効果】
【0014】
本発明によれば、有限体の部分群上の離散対数問題に依った暗号/署名におけるデータ圧縮において、有限体の拡大次数nが一般の正整数であれば、制限なく利用できるようになった。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施の形態を詳細に説明する。
【0016】
図1は、本実施の形態のデータ圧縮部を含むコンピュータ装置の機能ブロックの一例を示している。
【0017】
コンピュータ装置1は、暗号/署名部11、データ圧縮部12、記憶部13、及び通信部14を備える。暗号/署名部11は、有限群上の離散対数問題に依存した暗号方式または署名方式で暗号化または署名を実現するものであって、例えば、ElGamal暗号を実現する機能を備えたものである。
【0018】
データ圧縮部12は、暗号/署名部11によって生成された暗号文、署名文、鍵、等の各データ(以後、データαと称す)のうち、圧縮したいデータαを圧縮するものであり、入力として、データαと、パラメータとして、有限体の標数qと拡大次数nとを入力し、値の組で示される圧縮データa→=(v1,v2,・・・)を出力する。データ圧縮部12の詳細は、後述する。
【0019】
記憶部13は、圧縮データa→を記憶するものである。通信部14は、圧縮データa→を他のコンピュータ装置へ送るものである。なお、暗号/署名部11、記憶部13、通信部14は、必ずしもコンピュータ装置1内に備える必要はないため、点線で示している。また、記憶部13と通信部14は、必ずしも必要なものではなく、圧縮されたデータa→を、後にコンピュータ装置1内で利用する用途に用いる場合には、記憶部13があれば良く、また、圧縮されたデータa→を他の装置へ送信する用途に用いる場合には、通信部14があれば良い。
【0020】
次に、データ圧縮部12内の機能ブロックを図2を用いて説明する。
【0021】
データ圧縮部12は、n判定部21、切替部22、第1圧縮部23、及び第2圧縮部24を備える。
【0022】
まず、n判定部21は、入力された拡大次数nが2個以下の素数のべきの積(1は除く)で表すことができるか否かを判定するものである。図3は、n判定部21の例を2つ示している。図3(a)において、n判定部21は、素因数分解部211と方式判定部212とを備えている。素因数分解部211は、入力されたnを素因数分解し、分解された、各べき乗数付きの各素数(p1e1,・・・,pkek)を出力する。出力された結果は、切替部22へ供給されるとともに、方式判定部212へ供給される。方式判定部212は、供給された素因数分解の結果が、2個以下のpieiであれば、“0”を出力し、2個以下のpieiでなければ、“1”を出力する。この出力は、切替部22へ供給される。
【0023】
また、n判定部21は、別の例として図3(b)のように構成してしても良い。これは、同図からも明らかなように、素因数分解部211に代え、各数nと、それらの素因数分解で得られる各素数(p1e1,・・・,pkek)の結果とを予め対応付けて格納した素因数テーブル213を備え、入力されるnに対応するべき乗付き素数の積、即ち数nを素因数分解した各素数(p1e1,・・・,pkek)の組を出力するようしている。
【0024】
次に、切替部22は、入力された有限体の標数q、拡大次数nを素因数分解した各素因数(p1e1,・・・,pkek)、及び、データαを、第1圧縮部23、または第2圧縮部24へ供給するものである。切替部22は、n判定部21からの判定結果が0の場合には第1圧縮部23へ、1の場合には第2圧縮部24に切り替え、これにより、q、(p1e1,・・・,pkek)、αはいずれかに供給される。なお、特に記載しなかったが、各素因数(p1e1,・・・,pkek)のもとの値nも供給しても良い。
【0025】
次に、第1圧縮部23は、図4の、公知のRubinとSilverbergの圧縮方式を実装したものである。RubinとSilverbergは、離散対数問題に依った暗号系に用いられる鍵と暗号文、離散対数問題に依った署名方式で生成される署名を、圧縮関数ρと伸長関数ψとを利用した代数的トーラスを用いることで圧縮している。
【0026】
ここで、圧縮関数ρと伸長関数ψの構成の例を示す。n=6の場合には、次のように構成される。この構成方法では、qは9で割った余りが2または5となる素数でなければならない。まず、x=ζは1の原始3乗根とする。y=ζ+ζ−1は1の原始9乗根と原始9乗根の逆数を足したものとする。関数fをf(v,v)=1−v−v+vと定義する。また、圧縮後のデータをa→と表すこととする。
【0027】
圧縮後のデータがa→=(v,v)と入力されると、伸長関数ψは、
【数1】

【0028】
と構成される。
【0029】
一方、圧縮したいデータαが入力されるとα=α+αxと分解し、さらに(1+α)/α=u+uy+u(y−2)よりu,u,uを得る。このu,u,uを用いると、圧縮関数ρは、ρ(α)=(u/u,u/u)=a→と構成される。
【0030】
次に、第2圧縮部24は、公知のvan DijkとWoodruffらのデータ圧縮方式を改良した本実施の形態による圧縮方式を実装したものであって、切替部22から有限体の標数qと拡大次数n=p1e1・・・pkek(但し、3個以上の素数のべきの積で表すことができる)とデータαとを入力とし、データαを、補助入力データa’→を利用し圧縮して圧縮データa→を出力する。
【0031】
ここで、本実施の形態の圧縮方式の説明の前に、まずvan DijkとWoodruffらの圧縮方式について、簡単に説明する。van DijkとWoodruffらの圧縮方式は、nが相異なる素数の積である場合について、圧縮率として漸近的にn/φ(n)を達成している。ここでn/φ(n)は、nが小さい素因数を多く含む場合に大きい値を取ることが知られている。
【0032】
図5は、van DijkとWoodruffらの圧縮方式を示したものである。同図は、圧縮したいデータαと、素数の二乗を持たない、素因数分解されたn=p・・・pと、qとを入力し、データαを写像して圧縮されたデータa→を出力することを示している。なお、p,p,・・・,pは、nの素因数であり、またnは相異なる素数の積でなければならないからn=p・・・pである。
【0033】
van DijkとWoodruffらの圧縮法では以下のような写像を構成する。
【数2】

【0034】
この写像はテーブルまたは関数で実現される。関数を用いる為には、
【数3】

【0035】
という円分多項式の関係式の左辺が互いに素でなければならない。テーブルで実現する場
合には、iが2からk−1までの数であるとしてpi+2・・・pを割り切る全てのdと
i+2・・・pを割り切る全ての(dと異なる)eに対して、
【数4】

【0036】
なる最小のUをUとする。テーブルのエントリ数Uを最小とするqを選択する。
【0037】
一方、本実施の形態のデータ圧縮方式は、このvan DijkとWoodruffらの圧縮方式に、以下の数学的事実1に基づいて改良を加えたものである。
【0038】
(数学的事実1・・・始め)
円分多項式の性質:pを素数、bを正整数として、pがbを割り切るときΦbp(x)=Φ(x)が成り立つ。この性質を利用して代数的トーラスT(F)を決める円分多項式Φ(q)を、次式のように、その次数がnの素因数の積である円分多項式へ変形した。
【数5】

【0039】
ここで、nの素因数分解をn=pe1e2・・・pekとする。
【0040】
この性質を用いて、nが相異なる素数の積であるか否かに依らずにvan DijkとWoodruffらの方法が使えるように改良を加えた。具体的には、本発明の圧縮方法において写像を実現するテーブルまたは関数の構成方法が、nを素因数分解した際の素数の巾指数に依存している。
【0041】
(数学的事実1・・・終わり)
以上を踏まえた上、改良した本実施の形態の圧縮方式を図6に示す。同図は、圧縮したいデータαと、正整数qと、nを素数のべき指数に依存していることがわかるように素因数分解した、pe1e2・・・pekとを入力し、データαを写像して圧縮されたデータa→を出力することを示している。元の値nも入力してもよい。より詳しくは、有限体の標数qと拡大次数nとで規定されるものであって、圧縮したいデータが含まれる代数的トーラスT(F)に、nを素因数分解した際の素数のべき指数に依存する次元を持つ入力アフィン空間を加えて、nを素因数分解した際の素数の巾指数に依存する次元を持つ出力アフィン空間へ写像する写像方式を取得し、この写像方式に、圧縮したいデータαと補助入力データa’→との組を与えて計算し、計算結果を圧縮データa→として出力するようにしている。
【0042】
上記取得される写像方式は、以下の写像を実現するものである。
【数6】

【0043】
ここでp,p,・・・,pは、1)で素因数分解されたnの素因数である。
【0044】
上記取得される写像方式を第2圧縮部24へ実装するには、1)この写像を関数で実現する方法と、2)この写像をテーブルで実現する方法と、3)この写像を代数的トーラス間の写像を実現するテーブルと圧縮関数ρと伸長関数ψとを組み合わせて実現する方法とが考えられる。
【0045】
まず、1)(式1)の写像を関数で実現する方法について説明する。
【0046】
(式1)の写像を関数を用いて構成するには、代数的トーラス間の写像を実現する関数σと圧縮関数ρと伸長関数ψとを組み合わせる方法がある。代数的トーラス間の写像を実現する関数σとは、代数的トーラスTn(Fq)に、nの素因数の積を次数として持つ代数的トーラスを加えて、nの素因数のうち2個以下の積を次数として持つ代数的トーラスへ写像する以下の関数σである。
【数7】

【0047】
このとき代数的トーラスが定義される有限体の拡大次数は、nを素因数分解した際の素数のべき指数に依存する。
【0048】
関数σは、代数的トーラスTn(Fq),Tp1p2・・・pi(Fn/p・・・pi+1),i=2,・・・,k−1を決める円分多項式Φ(q),Φp1p2・・・pi(qn/p1p2・・・pi+1),i=2,・・・,k−1が互いに素であるときに限り構成できる。
【0049】
そのようなqが設定されているとすると関数σは、
【数8】

【0050】
と構成される。ここでα,α,・・・αk−1は、それぞれ代数的トーラスTn(Fq),Tp1p2・・・pi(Fn/p・・・pi+1),i=2,・・・,k−1の要素である。
【0051】
,d,・・・,dk−1は、dΦ(q)+dΦp1p2(qn/p1・・・p3)+・・・+dk−1Φp1p2・・・pk−1(qn/p1・・・pk)=1から決定される。βは、Tp1p2(Fn/p1p2)の要素となっている。また、逆関数は、次のようになっている。
【数9】

【0052】
(式1)の写像を関数ζとして実現するには、次のような手順で行われる。
【0053】
まず、圧縮したいデータαを含む、有限体の標数q、拡大次数nで定まる代数的トーラスTn(Fq)に加えられる、入力アフィン空間Aψ(p1p2)n/p1p2−ψ(n)(Fq)の少なくとも一部を伸長関数ψによって、トーラスに変換する。更に、変換後のトーラスをσ−1を用いてトーラスの積へ変換する。変換結果のうち、不要な部分を
【数10】

【0054】
を用いてアフィンへ戻す。これらの操作を繰り返すことによって、代数的トーラスと入力アフィン空間とは、(式2)の左辺で示されるトーラスの積のみで表される。そして、(式2)の関数σを用いて、トーラスの積を有理な1つのトーラスTp1p2(Fn/p1p2)へ変換する。このトーラスTp1p2(Fn/p1p2)を圧縮関数ρを用いて、出力アフィン空間へ変換する。以上の手順は、σにおいても同様の手順で実現できるので、(式2)の関数ζの右辺の写像先を得ることとなる。以上のようにして関数ζを構成することができる。
【0055】
第2圧縮部24は、以上の手順によって、圧縮時に都度、関数ζを生成するように実装し実現しても良いし、また、標数q、拡大次数nの多数の組み合わせによって、関数ζを多数生成してそれらを対応付けて格納しておき、入力される標数qと拡大次数nとから、格納される関数ζを検索して取得するように実装し実現しても良い。
【0056】
以上で示した関数ζで圧縮データa→を得るには、圧縮したいデータαの他に、補助入力データa’→が必要である。入力アフィン空間Aψ(p1p2)n/p1p2−ψ(n)(Fq)から、圧縮に必要な補助入力データa’→を元として含む入力アフィン空間の次元lζ(n)は、ψ(p1p2)n/p1p2−ψ(n)となる。従って、補助入力データa’→は、Fqの元がlζ(n)個だけ並んだものとなるから、Fqの元からlζ(n)個分の元を適宜決定すればよい。これは、第2圧縮部24内で決定しても良いし、外部から与えられるようにしても良い。
【0057】
そして、第2圧縮部24は、関数ζへ、圧縮したいデータαと、決定された補助入力データa’→とを与え、計算することにより、圧縮データa→=(v1,v2,・・・)を得て、これを出力する。
【0058】
以上のようにして、第2圧縮部24は、(式1)の写像を関数ζを用いて実現することができる。
【0059】
ここで、(式1)の写像に対し、n=p1e1p2e2p3e3の場合の操作を一例にとって具体例を説明する。
【0060】
(式1)の左辺は、代数トーラスTn(Fq)へ入力アフィン空間上の補助入力データ(a’→)を加えたものであるが、この入力アフィン空間上の補助入力データ(a’→)は、n=p1e1p2e2p3e3とすると、以下の式で表される入力アフィン空間の元となる。
【数11】

【0061】
これを伸長関数ψを用いて、代数的トーラス上のデータへと伸長し、ψ(a’→)=α’とすると、α’は、次式となる。
【数12】

【0062】
すると、(式1)の左辺は、次のような代数的トーラスとして表現できる。
【数13】

【0063】
これは、すなわち代数的トーラスの元の組を、
【数14】

【0064】
の代数的トーラスの元へと写像することに相当する(これをα”とする)。これを圧縮関数ρを用いて、アフィン空間上のデータへと圧縮する。圧縮後の圧縮データは、ρ(α’’)=(a→)となる。(a→)は圧縮されたαと伸長に必要な符号からなる。
【0065】
圧縮されたアフィン空間上のデータは、
【数15】

【0066】
で表される出力アフィン空間の元となる。これは、(式1)の右辺を、n=p1e1p2e2p3e3とした場合に等しい。以上をまとめると、 ζ(α, a’→)=ρ(σ(α, ψ(a’→) ))= a→となり、この右辺は圧縮関数ρと伸長関数ψとを用いて計算できるから、圧縮データa→が計算できる。
【0067】
次に、上記2)(式1)の写像をテーブルで実現する方法について説明する。
【0068】
これは上記で説明した1)(式1)の写像を関数で実現する方法の上記関数ζのそれぞれへ様々なデータαと様々な補助入力データa’→とを与えた結果得られる様々な圧縮データa→とを対応付けて格納したテーブルを備えるようにすれば、標数qと拡大次数nとデータαと補助入力データa’→とで、テーブルを検索することによって、圧縮データa→を得ることが可能である。但し、膨大な量のテーブルを構成する必要になり大型化は避けられない。
【0069】
従って、テーブルを用いる方法としては、上記3)(式1)の写像を代数的トーラス間の写像を実現するテーブルと圧縮関数ρと伸長関数ψとを組み合わせる方法が現実的であり、以下に、この方法について説明する。なお、上記説明によれば、代数的トーラス間の写像は関数σに相当するが、以下の方法は、この関数σそのものをテーブルとして構成するのではなく、関数σを、テーブルと関数とを用いて構成するものである。
【0070】
まず、説明を簡単にするために、n’=p1p2・・・pk,q’=qn/n’, mi=p1p2・・・piと置くと、関数σの式は次のように表すことができる。
【数16】

【0071】
また、
【数17】

【0072】
の円分多項式の関係式が成り立っているので、この円分多項式に対応した、代数的トーラスの関係式を用いると、図7のようになる。この図において、双方向の矢印で示した2箇所の計算ができれば、関数σが構成できる。ここで、
【数18】

【0073】
の写像を構成するには、具体的に次の計算を行う。なお、k=3のときには左辺と右辺は等しくなるため、写像を考える必要はないので、k>3について説明する。
【0074】
まず、次の写像を関数として計算する。
【数19】

【0075】
この計算は、右辺の巡回群の位数を用いて、上記で説明した関数σ-1の関数と同様の方法で行う。すなわち、入力されたデータに関して、出力データが属する巡回群の位数から決まる指数でべき乗したデータの組を作る。
【0076】
ここで、Uは、pi+2・・・pを割り切る全てのd≠eに対して、
【数20】

【0077】
なる最小のUiである。
【0078】
また、
【数21】

【0079】
と定める。
【0080】
(式3)の関数を計算した結果として得られたGu上のデータを、更に小さな巡回群上のデータの組に写像する。この写像は、
【数22】

【0081】
として、表すことができるが、この写像全体をテーブル(このテーブルを以下、写像テーブルと称す)を用いて実現する。写像テーブルの構成法は後述する。
【0082】
ここで、
【数23】

【0083】
と定める。(式4)より、
【数24】

【0084】
上のデータが得られたので、以下の写像が関数によって計算できる。
【数25】

【0085】
この写像間の関数の計算は、(式1)を関数で実現する方法で説明した関数σ-1の計算法と同様の方法で行う。
【0086】
以上の操作によって、図7の双方向の矢印で示した2箇所の計算のうちの左側の計算が実現できる。以上の説明は、図8のようにまとめられる。
【0087】
次に、図7の双方向の矢印で示した2箇所の計算のうちの左側の計算と、写像した後のデータは圧縮したいデータαとを合わせると、図7に示す、恒等式の右辺にある代数的トーラス上のデータの組に等しい。従って、今まで行ってきた逆の手順、即ち、(式5)→(式4)→(式3)の手順によって、図7の双方向の矢印で示した2箇所の計算のうちの右側の計算を行うことができる。従って、図7の双方向の矢印で示した2箇所の計算ができるので、関数σが、関数とテーブル(写像テーブル)とによって実現できるようになった。なお、以上の計算の流れを図にすると図9のようになる。
【0088】
次に、(式4)の写像に対応する写像テーブルの構成方法について簡単に説明する。図10は、写像テーブルの構成を説明した図である。
【0089】
Guの生成元gとGzmidの生成元gを選び、gに対応するgjdの組が一意に定まるようにj=1,・・・,Uに関して作成する。例えば、jはjをzmidで割った余りとする。写像テーブルは、U個のエントリを備え、各エントリは、番地1・・・番地Uで識別される。そして、大きな巡回群の要素γ・・・γUiと番地1・・・Uという対応付けをしておく。また、各エントリ内は小さな巡回群の要素としてgjdをd個ずつ記憶する。なお、dは、pi+2・・・を割り切る全ての数を取るものである。
【0090】
以上のことから、写像テーブルは、一つのエントリの長さを、d|pi+2・・・となるdの個数×各要素の長さで、このエントリをU個備えた記憶容量で構成される。
【0091】
この写像テーブルは、大きい巡回群の要素γが入力されると、その要素γに対応する番地にエントリされる小さな巡回群の要素の組を出力する。
【0092】
以上詳細に説明した本実施の形態によれば、特に第2圧縮部24を備えたから、有限体の部分群上の離散対数問題に依った暗号/署名におけるデータ圧縮において、有限体の拡大次数nが一般の正整数であれば、制限なく利用できるようになった。
【0093】
なお、本実施の形態では、第1圧縮部23と第2圧縮部24との併用で構成したが、第1圧縮部23を無くし、全ての圧縮を第2圧縮部24で行っても良い。この場合の構成は、図11のような機能ブロックとなる。
【0094】
また、(式1)の写像を関数で実現する方法で第2圧縮部24に実装すれば、余計なメモリなどが不要になり、小型化が実現できる。
【0095】
また、(式1)の写像をテーブルで実現する方法で第2圧縮部24に実装すれば、大型化は避けられないが、非常に高速にデータを圧縮できる。
【0096】
また、(式1)の写像を代数的トーラス間の写像を実現するテーブルと圧縮関数ρと伸長関数ψとを組み合わせる方法で第2圧縮部24に実装すれば、代数的トーラス間を高速に写像できるようになり、圧縮を高速化できる。
【0097】
次に、上記で説明した本実施の形態のデータ圧縮部12に与えられる標数q、拡大次数nは、最適な値であれば効率的な圧縮が実現される。そこで、セキュリティ強度S(=nlogq)とqのビット数B(=logq)を入力とし、最適な標数q、拡大次数n出力するパラメータ設定部の実現方法について、説明する。
【0098】
図12は、パラメータ設定部31の機能ブロックを示したものである。パラメータ設定部31は、入力部32と、n決定部33と、q決定部34と、パラメータ出力部35とを備える。
【0099】
入力部32は、外部からユーザの指示などによって与えられたセキュリティ強度S(=nlogq)とqのビット数B(=logq)との入力を受けるものである。
【0100】
n決定部33は、入力部から、セキュリティ強度S(=nlogq)とqのビット数Bとを受けて、後述する所定の方法によって、最適なnを求めるものである。
【0101】
q決定部34は、n決定部33で求められたn及び、実現される圧縮方式に基づいて、後述する方法によって、最適なqを求めるものである。
【0102】
パラメータ出力部35は、求められた最適なn及びqをデータ圧縮部12へ供給するものである。
【0103】
次にn決定部33について詳細に説明する。n決定部33では、セキュリティ強度S(=nlogq)とqのビット長から、与えられたセキュリティ強度を満たし圧縮後のビット数が最も小さくなるnを選ぶ。圧縮前にnlogqビットであったデータは、圧縮率n/φ(n)で圧縮すると圧縮後のビット数φ(n)logqビットとなる。qのビット長logqを与えると、圧縮後のビット数を決めているのはオイラー関数φ(n)である。次に示すオイラー関数の下限の性質を用いると、nを探索する範囲を適切に設定して、不必要な探索を行わず効率的に探索できる。
【0104】
オイラー関数の下限の性質とは、nを小さい方から数えてk番目までの素数を全て掛け合わせた数とすると、nからnk+1に到達するまでの間オイラー関数の下限は単調に増加し、nk+1で急激に減少するというものである。
【0105】
n決定部33は、図13にnの決定法全体の処理の流れを示すが、大別すると以下のステップで動作する。
【0106】
1)セキュリティ強度と有限体の標数qのビット長Bからnの最小値を決定するステップ
2)nの最小値が属する数のグループを判定するステップ
3)閾値を作成するステップ
4)オイラー関数の下限の性質を用いて、オイラー関数が最小となるnを探索するステップ。
【0107】
上記1)のステップでは、nの最小値としてS/Bを計算する。結果をnmin=S/Bとして記憶する。
【0108】
上記2)のステップでは、nminが属するグループのkを求める。圧縮後のビット数を決定するオイラー関数の下限はnの関数である。nからnk+1に到達するまでの間オイラー関数の下限は単調に増加し、この範囲にある数を第kグループの数と呼ぶ。
【0109】
上記3)のステップでは、第kグループにおけるnk+1での下限と等しい下限を持つnを求める(図14参照)。
【0110】
上記4)のステップでは、オイラー関数の下限の性質を用いて、オイラー関数が最小となるnを探索する
この探索においては、nminがn以下である場合(図15参照)、まず初期値の設定を行う。minにはオイラー関数の最小値を格納する。初期値はmin=φ(nmin)とする。nの探索はnminから始める。探索している位置をntempで表し、その初期値をntemp=nminとする。オイラー関数の最小値を更新したときのntempの値をnとして記憶する。初期値はn=nminとする。
【0111】
tempでのオイラー関数の下限がminより小さい期間、探索を繰り返す。
【0112】
探索は、圧縮後のビット数が最も小さくなるnを探す。ntempとしてnminから値を1つずつ増やしntempにおけるオイラー関数の値がminよりも小さいとき、その値をminへ上書きし、そのときのntempをnとして記憶する。
【0113】
一方、nminがnよりも大きい場合(図16参照)、その値nminからnk+1に到達するまでのオイラ−関数は必ずnk+1でのオイラー関数よりも大きくなる。よってn=nk+1とする。
【0114】
これにより、最良のnが求まる。
【0115】
次に、q決定部34におけるqの決定法は、nと圧縮方法をどのように実現するかに依る。まずqはBビットでなければならない。
【0116】
本実施の形態の圧縮法において写像を実現するテーブル(または関数)は、代数的トーラス間のテーブル(または関数)とRubinとSilverbergの圧縮関数ρと伸長関数ψで構成される。まず、RubinとSilverbergの圧縮関数ρと伸長関数ψを構成するために以下の条件が課せられる。上記で示したRubinとSilverbergの圧縮法でn=6の場合の例では、qは9で割った余りが2または5となる素数でなければならない。代数的トーラス間の関数を用いる為には、
【数26】

【0117】
という円分多項式の関係式の左辺が互いに素でなければならない。代数的トーラス間のテーブルを用いる場合、テーブルのサイズはUで決定される。Uは、nとqとで定まる。
【0118】
具体的には、iが2からk−1までの数であるとしてpi+2・・・を割り切る全てのdと、pi+2・・・を割り切る全てのd≠eに対して、
【数27】

【0119】
なる最小のUをUとする。ここで、nの素因数分解をn=p1e1p2e2・・・pkekとした。よって、テーブルのエントリ数U=Σを最小とするqを選択する。
【0120】
以上のようにして、パラメータn,qを決定することにより、最適なパラメータn,qを決定できる。
【図面の簡単な説明】
【0121】
【図1】本実施の形態のデータ圧縮部を含むコンピュータ装置の機能ブロックの一例を示す図。
【図2】データ圧縮部12内の機能ブロックを示す図。
【図3】n判定部21の例を示す図。
【図4】RubinとSilverbergの圧縮方式を示す図。
【図5】van DijkとWoodruffらの圧縮方式を示す図。
【図6】本実施の形態の圧縮方式を示す図。
【図7】円分多項式に対応した、代数的トーラスの関係式を用いた場合の図。
【図8】これまでの説明を纏めた図。
【図9】これまでの計算の流れを示した図。
【図10】写像テーブルの構成を説明した図
【図11】全ての圧縮を第2圧縮部24で行う構成の、データ圧縮部の機能ブロックを示す図。
【図12】パラメータ設定部31の機能ブロックを示す図。
【図13】nの決定法全体の処理の流れを示す図。
【図14】オイラー関数を示したグラフ。
【図15】オイラー関数を示したグラフ。
【図16】オイラー関数を示したグラフ。
【符号の説明】
【0122】
1・・・コンピュータ装置1
11・・・暗号/署名部
12・・・データ圧縮部
13・・・記憶部
14・・・通信部
21・・・n判定部
22・・・切替部
23・・・第1圧縮部
24・・・第2圧縮部
31・・・パラメータ設定部
32・・・入力部
33・・・n決定部
34・・・q決定部
35・・・パラメータ出力部
211・・・素因数分解部
212・・・方式判定部
213・・・素因数テーブル

【特許請求の範囲】
【請求項1】
離散対数問題に依った暗号化方式または署名方式に係るデータを圧縮するデータ圧縮装置であって、
有限体の拡大次数の入力を受け、この拡大次数を素数の組で示すために素因数分解し、素因数分解結果を出力する素因数分解手段と、
前記素因数分解手段で出力された前記素因数分解結果を入力するとともに、外部から有限体の標数と圧縮するデータとを入力し、有限体の標数と拡大次数とで規定され、前記圧縮するデータが含まれる代数的トーラスに、前記素因数分解結果の素数のべき指数に依存する次元を持つ入力アフィン空間を加えて、前記素因数分解結果の素数のべき指数に依存する次元を持つ出力アフィン空間へ写像する関数、テーブル、または関数とテーブルとの組へ、前記圧縮したいデータ、及び前記入力アフィン空間に属する補助入力データを供給して取得される結果データを圧縮データとして外部へ出力する圧縮手段とを備えたことを特徴とするデータ圧縮装置。
【請求項2】
離散対数問題に依った暗号化方式または署名方式に係るデータを圧縮するデータ圧縮装置であって、
有限体の拡大次数の入力を受け、この拡大次数nを示す素数の組で出力するとともに、各素数のべきの積が2個以下の素数のべきの積で表されるか否かを判定し、判定結果を出力する判定手段と、
前記拡大次数を示す素数の組を入力するとともに、外部から有限体の標数と圧縮するデータとを入力し、有限体の標数と拡大次数とで規定され、前記圧縮するデータが含まれる代数的トーラスに、前記拡大次数を示す素数の組の素数のべき指数に依存する次元を持つ入力アフィン空間を加えて、前記拡大次数を示す素数の組の素数のべき指数に依存する次元を持つ出力アフィン空間へ写像する関数、テーブル、または関数とテーブルとの組へ、前記圧縮したいデータ、及び前記入力アフィン空間に属する補助入力データを供給して取得される結果データを圧縮データとして外部へ出力する第1圧縮手段と、
前記判定手段の判定結果を入力し、これが否であるときに、前記判定手段から入力された前記拡大次数を示す素数の組と、外部から入力された有限体の標数と圧縮するデータとを前記第1圧縮手段へ出力する切替手段とを備えたことを特徴とするデータ圧縮装置。
【請求項3】
更に、前記拡大次数を示す素数の組を入力するとともに、外部から有限体の標数と圧縮するデータとを入力し、規定の圧縮関数へ、前記圧縮するデータを供給して取得される結果データを圧縮データとして外部へ出力する第2圧縮手段を備え、
前記切替手段は、前記判定手段の判定結果を入力し、これが否でないときに、前記判定手段から入力された前記拡大次数を示す素数の組と、外部から入力された有限体の標数と圧縮するデータとを前記第2圧縮手段へ出力するようにしたことを特徴とする請求項2に記載のデータ圧縮装置。
【請求項4】
前記判定手段は、
有限体の拡大次数の入力を受け、この拡大次数を素因数分解し、素数の組で出力する素因数分解手段と、
前記素因数分解手段から出力された素数の組が、各素数のべきの積が2個以下の素数のべきの積で表されるか否かを判定し、判定結果を出力する方式判定手段とを備えたことを特徴とする請求項2、または請求項3に記載のデータ圧縮装置。
【請求項5】
前記判定手段は、
予め有限体の拡大次数とこの拡大次数を素因数分解した素数の組とを対応付け記憶しておき、有限体の拡大次数の入力を受けると、対応する素数の組を出力する素因数テーブル手段と、
前記素因数テーブル手段から出力された素数の組が、各素数のべきの積が2個以下の素数のべきの積で表されるか否かを判定し、判定結果を出力する方式判定手段とを備えたことを特徴とする請求項2、または請求項3に記載のデータ圧縮装置。
【請求項6】
離散対数問題に依った暗号化方式または署名方式に係るデータを圧縮するデータ圧縮装置へ与える拡大次数を決定するパラメータ設定装置であって、
外部から入力される前記暗号化方式または署名方式のセキュリティ強度を、外部から入力される有限体の標数のビット長で除し、この結果を最小となる拡大次数と決定する最小拡大次数決定手段と、
圧縮後のビット長を決定するオイラー関数を設定し、該オイラー関数の単調増加区間ごとにグループ化し、前記最小拡大次数決定手段で決定された拡大次数が属するグループを判定する判定手段と、
前記判定手段で判定されたグループの一つ上のグループの下限値を求めて、該判定されたグループの閾値と設定する閾値設定手段と、
該判定されたグループの下限値から前記閾値設定手段で設定した閾値までの間を、前記オイラー関数が最小となる拡大次数を探索する探索手段とを備えたことを特徴とするパラメータ設定装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate