(57)【特許請求の範囲】
【請求項１】
平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、前記第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、前記第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段と、
平文を入力として受け取ると、前記平文から定まる値MBを算出し、前記第１の集合Sの元のうち前記平文から定まる値MB以下の元に対応する前記第２の集合Lの元の個数C''を算出し、平文空間の元数から定まる値C'を算出し、前記C''の値に前記C'の値を加えることにより暗号文OPEPartを生成する暗号化手段と、
を備える順序保存暗号化システム。
【請求項２】
所定の疑似ランダム関数の鍵を秘密鍵として生成する鍵生成手段と、
平文と前記秘密鍵を入力として受け取ると、前記平文から定まる値MBを計算し、前記値MBを近似解の精度とする二分法により値MBNumを求め、前記値MBNumを近似解の精度とする二分法により値MBValを求め、前記値MBValを利用して、暗号文OPEPartを生成する暗号化手段、を備え、
前記暗号化手段は、
前記二分法の上限Highと下限Lowとそれらにおける値HighNumと値LowNumとを基に、前記上限Highと下限Lowとの間にある中間Midにおける値MidNumを、二項分布に従って生成される擬似乱数を用いて計算し、前記値MidNumを前記値MBNumとし、
前記二分法の上限HighNumと下限LowNumとそれらにおける値HighValと値LowValとを基に、前記上限HighNumと下限LowNumの間にある中間MidNumにおける値MidValを、二項分布に従って生成される擬似乱数を用いて計算し、前記値MidValを前記値MBValとする
順序保存暗号化システム。
【請求項３】
復号手段を更に備え、
前記鍵生成手段は、前記秘密鍵に加えて、共通鍵暗号方式の共通鍵と、メッセージ認証子のMAC鍵とを生成し、
前記暗号化手段は、
平文を入力として受け取ると、前記秘密鍵を用いて前記暗号文OPEPartを生成し、さらに、前記共通鍵を用いて前記平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、前記暗号文OPEPartと前記暗号文SymPartとを組み合わせてなる複合暗号文に対して、前記MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成し、
前記復号手段は、
前記暗号化手段により生成される暗号文Cipherが入力されると、前記暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文と前記MAC鍵とを用いて検証し、正当性が確認された場合に、復元された前記暗号文SymPartを前記共通鍵を用いて復号して平文を得る
請求項１または請求項２に記載の順序保存暗号化システム。
【請求項４】
平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、前記第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、前記第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段と、
平文を入力として受け取ると、前記平文から定まる値MBを算出し、前記第１の集合Sの元のうち前記平文から定まる値MB以下の元に対応する前記第２の集合Lの元の個数C''を算出し、平文空間の元数から定まる値C'を算出し、前記C''の値に前記C'の値を加えることにより暗号文OPEPartを生成する暗号化手段と、
を備える暗号化装置。
【請求項５】
平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、前記第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、前記第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段と、
平文を入力として受け取ると、前記平文から定まる値MBを算出し、前記第１の集合Sの元のうち前記平文から定まる値MB以下の元に対応する前記第２の集合Lの元の個数C''を算出し、平文空間の元数から定まる値C'を算出し、前記C''の値に前記C'の値を加えることにより暗号文OPEPartを生成する暗号化手段と、
前記暗号文OPEPartをデータとして記憶するデータ記憶手段と、前記データ記憶手段に記憶されているデータの内容について、任意の平文Mとの大小を判定する大小比較手段とを備え、
前記大小比較手段は、前記暗号化手段によって順序保存暗号化された前記平文Mの暗号文OPEPart_Mと判定対象とされたデータとの大小を比較することにより、前記データの内容と任意の平文Mとの大小を判定する
データベースシステム。
【請求項６】
平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、前記第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、前記第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段と、
平文を入力として受け取ると、前記平文から定まる値MBを算出し、前記第１の集合Sの元のうち前記平文から定まる値MB以下の元に対応する前記第２の集合Lの元の個数C''を算出し、平文空間の元数から定まる値C'を算出し、前記C''の値に前記C'の値を加えることにより暗号文OPEPartを生成し、さらに、共通鍵を用いて前記平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、前記暗号文OPEPartと前記暗号文SymPartとを組み合わせてなる複合暗号文に対して、MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成する暗号化手段と、
暗号文Cipherを入力されると、前記暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文と前記MAC鍵とを用いて検証し、正当性が確認された場合に、復元された前記暗号文SymPartを前記共通鍵を用いて復号して平文を得る復号手段と、
前記暗号化手段により生成される暗号文Cipherをデータとして記憶するデータ記憶手段と、前記データ記憶手段に記憶されているデータの内容について、任意の平文Mとの間の大小を判定する大小比較手段とを備え、
前記大小比較手段は、前記暗号化手段によって順序保存暗号化された前記平文Mの暗号文OPEPart_Mと判定対象とされたデータから復元される暗号文OPEPartとの大小を比較することにより、前記データの内容と任意の平文Mとの大小を判定する
データベースシステム。
【請求項７】
コンピュータが、
鍵生成手段において、平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、前記第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、前記第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成し、
暗号化手段において、平文を入力として受け取ると、前記平文から定まる値MBを算出し、前記第１の集合Sの元のうち前記平文から定まる値MB以下の元に対応する前記第２の集合Lの元の個数C''を算出し、平文空間の元数から定まる値C'を算出し、前記C''の値に前記C'の値を加えることにより暗号文OPEPartを生成する、
順序保存暗号化方法。
【請求項８】
コンピュータを、
平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、前記第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、前記第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段と、
平文を入力として受け取ると、前記平文から定まる値MBを算出し、前記第１の集合Sの元のうち前記平文から定まる値MB以下の元に対応する前記第２の集合Lの元の個数C''を算出し、平文空間の元数から定まる値C'を算出し、前記C''の値に前記C'の値を加えることにより暗号文OPEPartを生成する暗号化手段と、
として実行させるための順序保存暗号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、順序保存暗号化システム、暗号化装置、データベースシステム、順序保存暗号化方法および順序保存暗号化プログラムに関する。
【背景技術】
【０００２】
暗号方式は、通信におけるデータの秘匿性を保障するために用いられる。しかし、データを完全に秘匿することが常に応用上有用になるとは限らず、データを秘匿しすぎたことが原因で有用性を損ねる場合がある。【０００３】
データを秘匿しすぎたために有用性が損なわれる例として、例えば、２つの数値データの大小を比較したい場合が挙げられる。【０００４】
データを秘匿しつつ有用性を高める技術に関連して、例えば、非特許文献１に記載された方式がある。また、例えば特許文献１に記載された方式がある。これらはいずれも順序保存暗号と呼ばれる暗号方式を利用したものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１２／１５７２７９号パンフレット
【非特許文献】
【０００６】
【非特許文献１】Alexandra Boldyreva, Nathan Chenette, Younho Lee and Adam O'Neill、"Order-Preserving Symmetric Encryption."、EUROCRYPT 2009、pp.224-241．
【発明の概要】
【発明が解決しようとする課題】
【０００７】
２つのデータm、m'を直接読み込むことができれば、mとm'の大小を比較できる。しかし、mとm'がAES(Advanced Encryption Standard)やDES(Data Encryption Standard)などの暗号方式により暗号化された状態で保管されていると、これらの暗号文を読み込んでもmとm'の大小を比較することができない。【０００８】
特にセキュア・データベースでは、上記の事例が大きな問題となる。セキュア・データベースでは、安全性の観点から平文をそのままデータベースに保管するのは望ましくないため平文を暗号化して保管する必要があるが、データベースであれば当然にデータを大小比較する必要が生じるからである。また、暗号文の鍵自身を同じデータベースに保存してしまうと暗号化した意味がなくなってしまうため、大抵の場合鍵は別の場所に保存される。このように、セキュア・データベースでは鍵のない状態で暗号化されたデータを扱う必要がある。なお、鍵が手に入る状態であったとしても、データベースには数多くのデータが保管されているため、これら多くのデータを全て復号して大小比較するのは効率の面から現実的ではない。【０００９】
また、近年のクラウドコンピューティング技術の発展により、ユーザが自身のデータをクラウド上のデータベースに預けることがこれまで以上に増えるものと予想される。したがって、データベースにあるデータを暗号化されたまま大小比較する技術は今後非常に重要になる可能性が高い。【００１０】
順序保存暗号は、暗号化したまま平文の大小を比較することを可能にする技術であり、平文m、m'がm＜m'を満たせばそれらの暗号文Enc_m、Enc_m'もEnc_m＜Enc_m'を満たす暗号方式である。【００１１】
よって、データを順序保存暗号方式により暗号化すれば、Enc_m＜Enc_m'であるか否かを判定することで、暗号文Enc_m、Enc_m'を復号することなく、平文mとm'のどちらが大きいかがわかる。【００１２】
非特許文献１に記載されている方式は、非特許文献１の著者達も認めているように、 安全性に対する考察が不完全にしかなされておらず、このことがこの方式を実用する際に障害となる。【００１３】
なお、特許文献１に記載されている方式ではこの問題は解決されている。しかし、特許文献１に記載されている方式は、アルゴリズムが複雑なために実装に不向きであった。【００１４】
そこで、本発明は、安全性の保証を維持したまま、より簡易なアルゴリズムで順序保存暗号化をする順序保存暗号化システム、暗号化装置、データベースシステム、順序保存暗号化方法および順序保存暗号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明による順序保存暗号化システムは、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または所定の疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する暗号化手段を備えたことを特徴とする。【００１６】
また、本発明による暗号化装置は、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する暗号化手段を備えたことを特徴とする。【００１７】
また、本発明によるデータベースシステムは、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文OPEPartを生成する暗号化手段と、暗号化手段によって生成された暗号文OPEPartをデータとして記憶するデータ記憶手段と、データ記憶手段に記憶されているデータの内容について、任意の平文Mとの大小を判定する大小比較手段とを備え、大小比較手段は、暗号化手段によって順序保存暗号化された平文Mの暗号文OPEPart_Mと判定対象とされたデータとの大小を比較することにより、データの内容と任意の平文Mとの大小を判定することを特徴とする。【００１８】
また、本発明による順序保存暗号化方法は、秘密鍵として、平文空間から一様分布を用いて生成される集合を含むデータまたは所定の疑似ランダム関数への鍵を生成し、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または所定の疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成することを特徴とする。【００１９】
また、本発明による順序保存暗号化プログラムは、コンピュータに、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する処理を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、安全性の保証を維持したまま、より簡易なアルゴリズムで順序保存暗号化をすることができる。したがって、安全に、暗号化したままの状態で平文の大小比較を効率的に行うことができる。また、そのようなシステム、装置およびプログラムを容易に実装できる。
【図面の簡単な説明】
【００２１】
【図１】第１の実施形態の順序保存暗号化システムが備える装置の例を示すブロック図である。
【図２】第１の実施形態の順序保存暗号化システムの構成例を示すブロック図である。
【図３】第１の実施形態のパラメータ生成処理の一例を示すフローチャートである。
【図４】第１の実施形態の鍵生成処理の一例を示すフローチャートである。
【図５】第１の実施形態の暗号化処理の一例を示すフローチャートである。
【図６】第２の実施形態のパラメータ生成処理の一例を示すフローチャートである。
【図７】第２の実施形態の鍵生成処理の一例を示すフローチャートである。
【図８】第２の実施形態の暗号化処理の一例を示すフローチャートである。
【図９】第３の実施形態の順序保存暗号化システムの構成例を示すブロックである。
【図１０】第３の実施形態の順序保存暗号化システムの他の構成例を示すブロック図である。
【図１１】第３の実施形態の鍵生成処理の一例を示すフローチャートである。
【図１２】第３の実施形態の暗号化処理の一例を示すフローチャートである。
【図１３】第３の実施形態の復号処理の一例を示すフローチャートである。
【図１４】順序保存暗号化システムのデータベースシステムへの適用例を示すブロック図である。
【図１５】順序保存暗号化システムのデータベースシステムへの適用例を示すブロック図である。
【図１６】本発明による順序保存暗号化システムの最小の構成例を示すブロック図である。
【図１７】本発明によるデータベースシステムの最小の構成例を示すブロック図である。
【発明を実施するための形態】
【００２２】
まず後述する第１〜第４の実施形態に共通するアイデアを説明する。以下では、本発明による順序保存暗号方式との違いを説明するために、まず特許文献１に記載されている順序保存暗号方式について簡単に説明した後で、本発明による順序保存暗号方式について説明する。以下、特許文献１に記載されている順序保存暗号方式を単に特許文献１の方式という。
【００２３】
（特許文献１の方式のアイデア）
{1,...,N}を平文空間とする。また、Xをほとんどの場合に正の値を出力する確率分布とし、ζを定数とする。各i∈{-ζ,...,N}に対し、平文m∈{1,...,N}の暗号文は、Enc(K,m)=Σi=-ζ,...,mα[i]という形で書ける。ここでα[i]は確率分布Xに従う乱数であり、秘密鍵Kを知っている人のみがα[i]を計算できる。暗号文Cを復号するには、C=Σi=-ζ,...,mα[i]を満たすmを平文として出力する。なお、Enc(K,m)は-ζからmまでの和である。当該方式では、Enc(K,m)=Σi=-ζ,...,mα[i]の右辺はmが大きければ大きいほど加えられるα[i]の数が増える。そのため、mが大きければ大きいほどEnc(K,m)は大きくなる。したがってm＜m'ならEnc(K,m)＜Enc(K,m')が成立する。
【００２４】
当該方式では、原理的には任意のXに対して実行する事ができるが、安全性上の観点からいえば、低い確率でビット数が大きくなる分布である事が望ましい。そのような性質を満たすXとして、例えば以下のように定義される分布を用いる事ができる。p[1],...,p[U]を、p[1]+…+p[U]=1となる非負整数とし、さらにn[1],...,n[U]を非負整数とする。D[p[1],...,p[U]]を整数jを出力する確率分布で、確率p[i]でj=iとなるものとする。B[1]を長さn[1]以下のビット長を持つ非負整数を出力する確率分布とし、B[U]を長さn[U]以下のビット長を持つ非負整数を出力する確率分布とする。Xは「D[p[1],...,p[U]]に従って整数jが選び、次にB[j]に従ってαを選ぶ」という方法でαを選んだときαが従う分布である。以上のようにXを定義すると、Xは確率p[1]で長さn[1]以下のビット長を持つ非負整数を出力し、確率p[2]でn[1]よりも大きいビット長n[2]を持つ非負整数を出力し、確率p[3]でn[2]よりも大きいビット長n[3]を持つ非負整数を出力し...となる。よってp[1],...,p[U]，n[1],...,n[U]を適切に選べば、Xは上述した性質を満たす。
【００２５】
第１の実施形態では、秘密鍵KをK=(α[-ζ],...,α[N])により定義し、暗号化の際にはα[1],...,α[m]の和を計算する事によって暗号文Enc(K,m)=Σi=-ζ,...,mα[i]を得る方法が示されている。与えられた暗号文Cを復号するには、各mに対してΣi=-ζ,...,mα[i]を計算し、C=Σi=-ζ,...,mα[i]となるmを見つけ出す。
【００２６】
第２の実施形態では、第１の実施形態のそれと同じくmの暗号文Enc(K,m)はEnc(K,m)=Σi=-ζ,...,mα[i]であるが、分布B[j]を二項分布B(τ[j],q)としている。ここで、τ[1],...,τ[U]およびqをパラメータとする。また、二項分布B(k,p')とは表が出る確率がp'であるコインをk枚ふった時に表が出る枚数が従う分布である。
【００２７】
（本発明の順序保存暗号方式のアイデア）
次に、本発明の順序保存暗号方式のアイデアを説明する。本発明では、特許文献１に記載されている第１の実施形態でU個の実数p[1],...,p[n]とU個の確率分布B[1],...,B[n]を用いていたところを、U=1の場合のみを用いて方式を実現させる。以下その場合について説明する。以下では、添字を省略し、p[1]，B[1]のことをそれぞれ単にp，Bと書く。
【００２８】
本発明の第１の実施形態では、Pを確率pで0、確率1-pで1になる確率分布とする。第１の実施形態の鍵生成ではPに従って変数j[1],...,j[n]を選ぶ。そして、j[i]=0となるiに対してBに従ってα[i]を選び、j[i]=1となるiに対してはα[i]=1とする。また、第１の実施形態の暗号化では、平文をMとするときM以下のα[i]の和Cを計算する。
【００２９】
定義よりCは
・C= (Σj[i]=0となるi≦Mα[i]) + (Σj[i]=1となるi≦Mα[i])
と書き表せる。上式右辺第１項，上式右辺第２項をそれぞれC'，C''とする。
なおj[i]=1の場合α[i]=1なので、C''は
・C''= (j[i]=1となるi≦Mの個数)
が成立する。
【００３０】
また、特許文献１に記載されている第２の実施形態では、C'，C''を効率的に計算することで暗号化の計算効率を上げている。このために第２の実施形態ではBを二項分布にセットする。するとC'は二項分布に従う値α[i]の和であるので、C'自身二項分布に従う。ここでPはベルヌーイ分布なので、特に二項分布でもある。よって上述の式からC''も二項分布に従うことになる。
【００３１】
すなわち、特許文献１に記載されている第２の実施形態では、これら二項分布を二分法に基づいて効率的に計算している。この際、二項分布の条件付き確率を使用する。より正確に言うと、特許文献１に記載されている第２の実施形態におけるC''，C'の計算には、それぞれ以下の条件付きの確率分布を使用する。ここでa，bは何らかの値である。
【００３２】
・「集合{a,..,a+2b}の元でj[i]=1となるものがn個である」という条件下における「{a,..,a+b}の元でj[i]=1となるものの個数」の確率分布
・「集合{a,..,a+2b}の元でj[i]=0となるようなα[i]の和がmである」という条件下における「{a,..,a+b}の元でj[i]=0となるようなα[i]の和」の確率分布
【００３３】
この確率分布は超幾何分布であることが知られているので、特許文献１に記載されている第２の実施形態では、超幾何分布が必要であった。
【００３４】
なお、本発明でも特許文献１の場合と同様、基本的な方式をまず作り、それを改良してより効率のよい方式を作った。これらの方式の詳細はそれぞれ第１の実施の形態、第２の実施の形態で述べるが、以下では特許文献１の方式と本発明による順序保存方式の違いについて簡単に述べる。
【００３５】
特許文献１の方式ではC'，C''の双方の計算において超幾何分布を使っているが、本発明では方式を改良することでいずれの計算においても超幾何分布を使わなくてすむようにした。
【００３６】
まず、C''の計算で超幾何分布を使わなくてすむようにするために用いたアイデアを述べる。以下、平文空間を{0,...,MesSpSize}とし、j[i]=0となるiの集合をSとする。特許文献１の方式ではj[i]は確率pで0になるので、Sの元の数の期待値はMesSpSize/pである。
【００３７】
すなわち、特許文献１の方式は確率pで1になるような確率分布Pを用いることで、
・（１）Sの元が{0,...,MesSpSize}上ランダムに分布し、
・（２）しかもSの元の数がおよそMesSpSize/pになる
ようにしている。特許文献１の方式の安全性はこれらの性質により保証されている。
【００３８】
これに対して、本発明の第１の実施形態では、Sの元を平文空間{0,...,MesSpSize}から一様ランダムに選ぶようにする。
【００３９】
すなわち、
・Nを（4×MesSpSize/pの小数点以下を切り捨てた値）とし、
・乱数u[1],...u[N]を{0,...,MesSpSize}から一様ランダムに選び、
・S={u[1],...u[N]}とする。
【００４０】
すると明らかに、
・（１）’Sの元が{0,...,MesSpSize}上ランダムに分布し、
・（２）’しかもSの元の数がおよそ4×MesSpSize/pになる
が成り立ち、上述の（1），（2）とほぼ同じ性質を備えていると言える。よって、この方式も特許文献１の方式と同様安全性が保証される。なお、Nを定義する際MesSpSize/pでなく4×MesSpSize/pを用いたのは、小数点以下の切り捨てに際してパラメータサイズが小さくなりすぎない様にしたためである。
【００４１】
このようにSの生成の際に二項分布でなく一様分布を用いると、条件付き確率は超幾何分布ではなくなる。実際に上記方法でSを生成すると、上述の条件付き確率分布は、二項分布
・Binom(n,1/2)
になるため、超幾何分布は必要ない。ここでBinom(n,p)は、表が出る確率がpである独立なコインをn枚降った時に表が出る枚数のなす確率分布である。なお二項分布は巨大パラメータに対しても効率的に元を生成するアルゴリズムが知られているので、本発明の順序保存暗号方式においても、効率的に、巨大な分布のパラメータ（例えば、2のセキュリティパラメータ乗など）に対して元を生成できる。
【００４２】
上記アイデアを纏めると、本発明の順序保存暗号方式では、上述の（１）、（２）の性質を満たすことが特許文献１の方式の安全性を保証する上で本質的なものであることを見いだし、集合Sを新たにかつ明確に定義している。また、超幾何分布の問題を回避するための集合Sの適切な生成方法を提示している。なお、これには一様分布を使った場合に必要とされる条件付き確率が二項分布になることを示したことも含まれる。さらに、超幾何分布の問題を回避しつつ、実用可能な分布を選んでいる。すなわち、超幾何分布の問題に関してのみ言えば、条件付き確率に二項分布以外のものを用いることもできるが、巨大パラメータに対して効率よく元を生成するために、条件付き確率を二項分布としている。また、集合Sの生成に関して、平文空間全体からランダムに元を選ぶというアプローチをとっている。このアプローチは、i=1,2,...に対しj[i]を逐次的に選ぶことでSを作るといった特許文献１の逐次的なアプローチとは大きく異なるものである。また、アルゴリズム的にも違ったものとなっている。
【００４３】
次にC'の生成で超幾何分布を使わなくてよいようにする方法を述べる。C'はその定義より、
・C' = Σj[i]=0となるi≦Mα[i]
である。
【００４４】
特許文献１の方式ではα[i]は二項分布に従っており、したがってその和であるC'も二項分布に従う。よって条件付き確率が超幾何分布になっていた。
【００４５】
本発明では、C'の選び方を根底から変える。まずMaxValという値を固定する。そして本発明の第１の実施形態ではC'を以下のように選ぶ。
・集合Sを上述のように選ぶ。
・Sに値を取る一様乱数c[1], ..., c[MaxVal]を選ぶ。
・S={u[1],...u[N]}，S''={MB以下Sの元}とし，集合{c[i] = sとなるi | s∈S''}の元の数をC'とする。
【００４６】
このようにC'を取ると，C'は一様分布をベースに作っていることから、C''の場合と同様の理由により、条件付き確率が二項分布になる。従って、C''の場合と同様、二項分布をベースにした二分法でC'を求めることができる。本発明の第２の実施形態では、そのような二分法に基づくことで効率的にC'を求める。
【００４７】
以上のような変更を特許文献１の方式に対して施すことで本発明の第１の実施形態、第２の実施の形態を実現した。しかしこのような変更を施した結果として、第１の実施形態、第２の実施形態の「暗号文」は復号できない。しかし、本方式は暗号を復号せずとも順序を比較できるという性質を有しているため、この性質のみが必要なアプリケーションでは復号操作は必ずしも必要ない。従って、第１の実施形態、第２の実施形態も有用である。
【００４８】
なお、第３の実施形態、第４の実施形態ではそれぞれ第１の実施形態、第２の実施形態を改良して、復号が可能な方式としている。
【００４９】
以下、各実施形態について図面を参照してより具体的に説明する。
【００５０】
第１の実施形態．
本発明による第１の実施形態に係る順序保存暗号化システムの構成例を図１，図２を参照して説明する。図１は、本実施形態の順序保存暗号化システムが備える装置の例を示すブロック図である。図１に示すように、本実施形態の順序保存暗号化システムは、暗号化装置１０を備えている。暗号化装置１０は、演算部１１、記憶部１２および入出力部１３を含む。暗号化装置１０は、例えばプログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。また、この場合、演算部１１、記憶部１２および入出力部１３は、それぞれＣＰＵ、メモリおよび各種入出力装置（例えば、キーボート、マウス、ネットワークインタフェース部等）によって実現される。
【００５１】
また、図２は、本実施形態の順序保存暗号化システムの機能面における構成例を示すブロック図である。図２に示すように、暗号化装置１０（より具体的には、暗号化装置１０の演算部１１）は、パラメータ生成手段１０１と、鍵生成手段１０２と、暗号化手段１０３を含む。これら各手段は、例えばプログラムに従って動作するＣＰＵによって実現される。なお、本例では、１つの装置がパラメータ生成手段１０１、鍵生成手段１０２および暗号化手段１０３を含む例を示したが、これらは複数の装置に分けて実装されていてもよい。
【００５２】
なお、本実施形態では復号手段がない。以下、本実施形態の暗号化アルゴリズムによって生成される暗号文を、復号可能な暗号文と区別するために「ＯＰＥパート（OPEPart）」と呼ぶ。また、以降、暗号化アルゴリズムについて記載するが、アルゴリズムに含まれる各動作は、具体的には、順序保存暗号化システムを実現する１つ又は複数の情報処理装置のＣＰＵが該アルゴリズムに従って処理を実行することにより実現される。
【００５３】
パラメータ生成手段１０１は、暗号化に必要なパラメータOPEParamを計算する。鍵生成手段１０２は、パラメータOPEParamを入力されると秘密鍵OPEKeyを計算する。暗号化手段１０３は、秘密鍵OPEKeyと平文Messageを入力されるとOPEPartを計算する。
【００５４】
次に、本実施形態における暗号化の手順を説明する。
【００５５】
まず、パラメータ生成手段１０１は、本実施形態の暗号化に必要なパラメータOPEParamを計算する。次いで、鍵生成手段１０２は、パラメータ生成手段１０１によって算出されたパラメータOPEParamを用いて、秘密鍵OPEKeyを計算する。次いで、暗号化手段１０３は、鍵生成手段１０２によって算出された秘密鍵OPEKeyを用いて、入出力部１３を介して入力される平文Messageに対して暗号化処理を行い、その出力としてOPEPartを生成する。
【００５６】
なお、パラメータOPEParamおよび秘密鍵OPEkeyは、予め計算され、記憶部１２に記憶されていてもよい。
【００５７】
次に、各手段の処理の詳細について説明する。なお、以下では、MesSpSizeを自然数とし、平文空間が{0,...,MesSpSize}であるとする。また、SecParをセキュリティパラメータとする。また、k，θを安全性の尺度を表す整数とする。また、αを安全性の尺度を表す実数とする。
【００５８】
まず、パラメータ生成手段１０１が実行するパラメータ生成処理について説明する。図３は、本実施形態のパラメータ生成処理の一例を示すフローチャートである。
【００５９】
本実施形態においてパラメータ生成手段１０１は、例えば、以下の処理を実行する。
・パラメータ生成手段１０１は、SecPar，MesSpSize，k，θ，αを入力として受け取る（ステップＳ１１１）。
・パラメータ生成手段１０１は、B = kθ+1を計算する（ステップＳ１１２）。
・パラメータ生成手段１０１は、Max = 4 × MesSpSizeを計算する（ステップＳ１１３）。
・パラメータ生成手段１０１は、p=θ × kαを計算する（ステップＳ１１４）。
・パラメータ生成手段１０１は、MaxNum = (Max/pの小数点以下を切り捨てたもの)を計算する（ステップＳ１１４）。
・パラメータ生成手段１０１は、MaxVal= 2SecPar × MaxNumを計算する（ステップＳ１１５）。
・パラメータ生成手段１０１は、OPEParam=(SecPar, MesSpSize, B, MaxVal, p)を出力する（ステップＳ１１６）。
【００６０】
次に、鍵生成手段１０２が実行する鍵生成処理について説明する。図４は、本実施形態の鍵生成処理の一例を示すフローチャートである。
【００６１】
本実施形態において鍵生成手段１０２は、例えば、以下の処理を実行する。
・鍵生成手段１０２は、OPEParam=(SecPar, MesSpSize, B, MaxVal, p)を入力として受け取る（ステップＳ１２１）。
・鍵生成手段１０２は、Nを(4×MesSpSize/pの小数点以下を切り捨てた値)とする（ステップＳ１２２）。
・鍵生成手段１０２は、乱数u[1],...u[N]を{0,...,MesSpSize}から一様ランダムに選び、S={u[1],...u[N]}とする（ステップＳ１２３）。
・鍵生成手段１０２は、Sに値を取る一様乱数c[1], ..., c[MaxVal]を選ぶ（ステップＳ１２４）。
・鍵生成手段１０２は、OPEKey = (u[1],...u[N],c[1], ..., c[MaxVal])を出力する（ステップＳ１２５）。
【００６２】
次に、暗号化手段１０３が実行する暗号化処理について説明する。図５は、本実施形態の暗号化処理の一例を示すフローチャートである。
【００６３】
本実施形態において暗号化手段１０３は、例えば、以下の処理を実行する。
・暗号化手段１０３は、OPEParam=(SecPar, MesSpSize, B, MaxVal, p)、OPEKey = (u[1],...u[N],c[1], ..., c[MaxVal])および平文Messageを入力として受け取る（ステップＳ１３１）。
・暗号化手段１０３は、MB= Message + Bを計算する（ステップＳ１３２）。
・暗号化手段１０３は、S={u[1],...u[N]}，S''={MB以下Sの元}とし、集合{c[i] = sとなるi | s∈S''}の元の数をC''とする（ステップＳ１３３）。
・暗号化手段１０３は、C' = 4 × MesSpSize - Nを計算する（ステップＳ１３４）。
・暗号化手段１０３は、OPEPart = C' + C''を出力する（ステップＳ１３５）。
【００６４】
以上に説明したように、本実施形態では、より安易な実装で、安全性を保証しつつ暗号化された状態で平文の大小比較を行える暗号化方式を実現できる。
【００６５】
実施形態２．
次に、本発明の第２の実施形態について図面を参照して説明する。本実施形態の装置構成および機能構成は第１の実施形態と同様である。ただし、本実施形態では、暗号化手段１０３による暗号化処理において、以下のPseudoBinomというサブルーチンを用いる。
【００６６】
PseudoBinom()は、次の処理を行うサブルーチンである。
・入力として自然数n，ビット列u,v、および擬似ランダム関数の鍵PRFKeyを受け取る。
・擬似ランダム関数に鍵PRFKeyと入力u||vをいれて出力Qを得る。
ここでu||vはビット列u, vの連結である。
・二項分布Binom(n,1/2)に従った乱数を生成するアルゴリズムを実行し、その出力Rを得る。
この際アルゴリズムの乱数源としてRを使用する。
【００６７】
次に、各手段の処理の詳細について説明する。まず、本実施形態のパラメータ生成手段１０１が実行するパラメータ生成処理について説明する。図６は、本実施形態のパラメータ生成処理の一例を示すフローチャートである。なお、本実施形態においても、MesSpSizeを自然数とし、平文空間が{0,...,MesSpSize}であるとする。また、SecParをセキュリティパラメータとする。また、k，θを安全性の尺度を表す整数とする。また、αを安全性の尺度を表す実数とする。
【００６８】
本実施形態においてパラメータ生成手段１０１は、例えば、以下の処理を実行する。
・パラメータ生成手段１０１は、SecPar，MesSpSize，k，θ，αを入力として受け取る（ステップＳ２１１）。
・パラメータ生成手段１０１は、第１の実施形態と同様の方法でB、Max、MaxNum、MaxValを計算する（ステップＳ２１２〜Ｓ２１５）。
・パラメータ生成手段１０１は、OPEParam=(SecPar, B, Max, MaxNum, MaxVal)を出力をする（ステップＳ２１６）。
【００６９】
なお、ステップＳ２１１〜Ｓ２１５までは、第１の実施形態のステップＳ１１１〜Ｓ１１５と同様でよい。
【００７０】
次に、本実施形態の鍵生成手段１０２が実行する鍵生成処理について説明する。図７は、本実施形態の鍵生成処理の一例を示すフローチャートである。
【００７１】
本実施形態において鍵生成手段１０２は、例えば、以下の処理を実行する。
・鍵生成手段１０２は、OPEParam=(SecPar, B, Max, MaxNum, MaxVal)を入力として受け取る（ステップＳ２２１）。
・鍵生成手段１０２は、SecParビットのビット列PRFKeyをランダムに選ぶ（ステップＳ２２２）。
・鍵生成手段１０２は、OPEKey=PRFKeyを出力する（ステップＳ２２３）。
【００７２】
次に、本実施形態の暗号化手段１０３が実行する暗号化処理について説明する。図８は、本実施形態の暗号化処理の一例を示すフローチャートである。
【００７３】
本実施形態において暗号化手段１０３は、例えば、以下の処理を実行する。
・暗号化手段１０３は、OPEParam=(SecPar, B, Max, MaxNum, MaxVal)，OPEKey=PRFKeyおよび平文Messageを入力として受け取る（ステップＳ２３１）。
・暗号化手段１０３は、MB= Message + Bを計算する（ステップＳ２３２）。
・暗号化手段１０３は、Whileループの初期値として、(High,Low,HighNum,LowNum)=(Max,0,MaxNum,0)を計算する（ステップＳ２３３１）。
・暗号化手段１０３は、High > MBである間、以下の（１）〜（３）を行う（第１のWhileループ：ステップＳ２３３２〜Ｓ２３３４）。
（１）Mid = ((Low+ High)/2の小数点以下を切り捨てたもの)とする（ステップＳ２３３３）
（２）MidNum = LowNum + PseudoBinom(HighNum-LowNum,High,Low,PRFKey)を計算する（ステップＳ２３３３）。
（３）Mid ≧ MBなら(High,HighNum)=(Mid,MidNum)とし、そうでなければ(Low,LowNum)=(Mid,MidNum)とする（ステップＳ２３３３）。
・暗号化手段１０３は、MBNum = MidNumとする（ステップＳ２３３５）。
・暗号化手段１０３は、第２のWhileループの初期値として、(HighNum,LowNum,HighVal,LowVal)=(MaxNum,0,MaxVal,0)を計算する（ステップＳ２３４１）。
・暗号化手段１０３は、HighNum>MBNumである間、以下の（１）〜（３）を行う（第２のWhileループ：ステップＳ２３４２〜Ｓ２３４４）。
（１）MidNum= ((LowNum+HighNum)/2の小数点以下を切り捨てたもの)を計算する（ステップＳ２３４３）。
（２）MidVal=LowVal+PseudoBinom(HighVal-LowVal,High,Low,PRFKey)を計算する（ステップＳ２３４３）。
（３）MidNum ≧ MBNumなら(HighNum,HighVal)=(MidNum,MidVal)とし、そうでなければ (LowNum,LowVal)=(MidNum,MidVal)とする（ステップＳ２３４３）。
・暗号化手段１０３は、MBVal = MidValとする（ステップＳ２３４５）。
・暗号化手段１０３は、OPEPart=MB+MBValを出力する（ステップＳ２３５）。
【００７４】
以上に述べた暗号化処理では、
・二分法に基づいてMBNumを計算し（ステップＳ２３３１〜Ｓ２３３５）、
・得たNBNumを使ってさらに二分法に基づいてMBValを計算する（ステップＳ２３４１〜Ｓ２３４５）
という構造をしている。
【００７５】
上述したように、第２の実施形態における暗号化手段１０３による暗号化処理は、第１の実施形態における暗号化手段１０３による暗号化処理を二分法によって改良することで高速化したものである。上記２つの二分法は第１の実施形態の手順（図５のステップＳ１３３）におけるS''の計算と、{c[i] = sとなるi | s∈S''}の元の数C''の計算に対応している。二回目の二分法（ステップＳ２３４１〜Ｓ２３４５）は一回目の二分法（ステップＳ２３３１〜Ｓ２３３５）の出力であるNBNumを得ることではじめて動作できるので、本方式では、２つの二分法を同時に行うことはできない。この点、二分法を一回しか行わない特許文献１の方式とは異なる。
【００７６】
第３の実施形態．
次に、本発明の第３の実施形態について図面を参照して説明する。図９は、第３の実施形態に係る順序保存暗号化システムの構成例を示すブロックである。図９に示す順序保存暗号化システムは、暗号化装置１０と、復号装置２０と、鍵生成装置３０とを備えている。なお、各装置の物理的な構成は、図１に示した暗号化装置１０の構成と同様である。
【００７７】
また、図９に示す例では、暗号化装置１０が暗号化手段２０３を含み、復号装置２０が復号手段２０４を含み、鍵生成装置３０がパラメータ生成手段２０１および鍵生成手段２０２を含む。なお、１つの装置がこれら各手段を全て含むように構成してもよいし、また１つの装置が暗号化手段２０３と復号手段２０４の両方を含むように構成してもよい。また、図９に示す例では、鍵生成装置３０を、暗号化装置１０や復号装置２０とは別に用意し、この装置がパラメータ生成手段２０１および鍵生成手段２０２を含む例を示しているが、この例に限らず、パラメータ生成手段２０１および／または鍵生成手段２０２を、暗号化装置１０、復号装置２０、またはそれらとは異なる第３の装置のいずれかが含むようにしてもよい。
【００７８】
また、図１０は、本実施形態の順序保存暗号化システムの他の構成例を示すブロック図である。例えば図１０に示すように、暗号化装置１０が、パラメータ生成手段２０１、鍵生成手段２０２、暗号化手段２０３および復号手段２０４を含んでいてもよい。
【００７９】
なお、本実施形態では第１および第２の実施形態とは異なり、復号手段２０４がある。以下、本実施形態の暗号化アルゴリズムによって生成される暗号文を、第１および第２の実施形態の暗号文と区別するために「暗号文Cipher」と呼ぶ。また、以降、暗号化アルゴリズムおよび復号アルゴリズムについて記載するが、これらアルゴリズムに含まれる各動作は、具体的には、順序保存暗号化システムを実現する１つ又は複数の情報処理装置のＣＰＵがこれらのアルゴリズムに従って処理を実行することにより実現される。
【００８０】
本実施形態において、パラメータ生成手段２０１は、暗号化および復号に必要なパラメータParamを計算する。鍵生成手段２０２は、パラメータParamを入力されると秘密鍵Keyを計算する。暗号化手段２０３は、秘密鍵Keyと平文Messageを入力されると暗号文Cipherを計算する。
【００８１】
復号手段２０４は、秘密鍵Keyと暗号文Cipherを入力されると、その平文Messageを出力するか、もしくは暗号文Cipherが不正であることを意味する文字列を出力する。
【００８２】
次に、本実施形態における暗号化の手順を説明する。
【００８３】
まず、パラメータ生成手段２０１は、本実施形態の暗号化および復号に必要なパラメータParamを計算する。次いで、鍵生成手段２０２は、パラメータ生成手段２０１によって算出されたパラメータParamを用いて、秘密鍵Keyを計算する。次いで、暗号化手段２０３は、鍵生成手段２０２によって算出された秘密鍵Keyを用いて、暗号化装置１０の入出力部１３を介して入力される平文Messageに対して暗号化処理を行い、その出力として暗号文Cipherを生成する。
【００８４】
なお、パラメータParamおよび秘密鍵Keyは、予め計算され、暗号化装置の記憶部１２に記憶されていてもよい。
【００８５】
次に、本実施形態における復号の手順を説明する。
【００８６】
復号装置２０は、例えば、入出力部１３を介して暗号文Cipherを入力する。暗号文Cipherが入力されると、復号手段２０４は、鍵生成手段２０２によって算出された秘密鍵Keyを用いて、暗号文Cipherに対して復号処理を実行し、その出力として平文Messageを生成するか、もしくは暗号文Cipherが不正であることを意味する文字列を生成する。
【００８７】
なお、秘密鍵Keyは、予め復号装置の記憶部１２に記憶されていてもよい。
【００８８】
次に、各手段の処理の詳細について説明する。なお、以下では、MesSpSizeを自然数とし、平文空間が{0,...,MesSpSize}であるとする。また、SecParをセキュリティパラメータとする。また、k，θを安全性の尺度を表す整数とする。また、αを安全性の尺度を表す実数とする。
【００８９】
また、以下、SymEnc(SymKey,M)は、SymKeyを秘密鍵として用いて文書Mを 共通鍵暗号方式で暗号化することを表す。また、SymDec(SymKey,C)はSymKeyを秘密鍵として用いて暗号文Cを共通鍵暗号方式で復号することを表す。
【００９０】
また、MAC(MACKey, M)は、鍵MACKeyを用いて文書Mのメッセージ認証子を計算する操作を示し、Ver(MACKey, M,MAC)は鍵MACKeyを用いてMACが文書Mのメッセージ認証子であるかどうかを確認する操作を示す。ここで、メッセージ認証子とは、メッセージ認証符号（Message Authentication Code）とも呼ばれるものであり、共通鍵であるMACKeyを持つ検証者が文書Ｍの内容の変化を検出でき、文書Ｍの完全性とその認証を保護できるものであればよく、その具体的な生成方法は特に問わない。メッセージ認証子の生成方法および正当性の確認方法は既存の方法を利用できる。なお、以下に示す例では、入力されたMACが文書Mのメッセージ認証子であればacceptを返し、そうでなければaccept以外の値を返すものとする。
【００９１】
まず、パラメータ生成手段２０１が実行するパラメータ生成処理について説明する。パラメータ生成手段２０１が実行する処理は、第１の実施形態のパラメータ生成手段１０１と同様である。ただし、図３のステップＳ１１６で、Param=(SecPar, MesSpSize, B, MaxVal)を出力する。
【００９２】
次に、鍵生成手段２０２が実行する鍵生成処理について説明する。図１１は、本実施形態の鍵生成処理の一例を示すフローチャートである。
【００９３】
本実施形態において鍵生成手段２０２は、例えば、以下の処理を実行する。
・鍵生成手段２０２は、Param=(SecPar, MesSpSize, B, MaxVal)を入力として受け取る（ステップＳ３２１）。
・鍵生成手段２０２は、ParamをOPEParamとして、第１の実施形態の鍵生成手段１０２と同様の方法でOPEkeyを生成する（ステップＳ３２２）。
ここでは、図４のステップＳ１２２〜Ｓ１２５を実行し、OPEKey=(u[1],...,u[N], c[1],...c[MaxVal])を得る。
・鍵生成手段２０２は、SecParビットのビット列MACKey, SymKeyをランダムに選ぶ（ステップＳ３２３）。
・鍵生成手段２０２は、Key=(OPEKey, MACKey, SymKey)を出力する（ステップＳ３２４）。
【００９４】
次に、暗号化手段２０３が実行する暗号化処理について説明する。図１２は、本実施形態の暗号化処理の一例を示すフローチャートである。
【００９５】
本実施形態において暗号化手段２０３は、例えば、以下の処理を実行する。
・暗号化手段２０３は、Param，Key=(OPEKey, MACKey, SymKey)，および平文Messageを入力として受け取る（ステップＳ３３１）。
・暗号化手段２０３は、ParamをOPEParamとして、第１の実施形態の暗号化手段１０３と同様の方法でOPEPartを生成する（ステップＳ３３２）。
ここでは、図５のステップＳ１３２〜Ｓ１３５を実行し、OPEPart=C'+C''を得る。
・暗号化手段２０３は、SymPart = SymEnc(SymKey, Message)を計算する（ステップＳ３３３）。
・暗号化手段２０３は、MACPart = MAC(MACKey, OPEPart||SymPart)を計算する（ステップＳ３３４）。
ここで、OPEPart||SymPartは、OPEPartとSymPartを連結したものを表す。
・暗号化手段２０３は、暗号文Cipher = (OPEPart, SymPart, MACPart)を出力する（ステップＳ３３５）。
【００９６】
次に、復号手段２０４が実行する復号処理について説明する。図１３は、本実施形態の復号処理の一例を示すフローチャートである。
【００９７】
本実施形態において復号手段２０４は、例えば、以下の処理を実行する。
・復号手段２０４は、Param，Key=(OPEKey, MACKey, SymKey)，Cipher = (OPEPart, SymPart, MACPart)を入力として受け取る（ステップＳ３４１）。
・復号手段２０４は、Ver(MACKey,OPEPart||SymPart,MACPart)を計算する（ステップＳ３４２）。
・復号手段２０４は、Ver(MACKey,OPEPart||SymPart,MACPart)≠acceptなら入力された暗号文Cipherは不正なものであることを示す出力を返して終了する（ステップＳ３４３のＮｏ、Ｓ３４６）。
・復号手段２０４は、Ver(MACKey,OPEPart||SymPart,MACPart)＝acceptならMessage＝SymDec(SymKey,SymPart)を計算する（ステップＳ３４３のＹｅｓ、Ｓ３４４）。
・復号手段２０４は、復号結果としてMessageを出力する（ステップＳ３４５）。
【００９８】
本実施形態では、OPEKeyを生成する際に、併せて共通鍵暗号の鍵SymKeyとメッセージ認証子の鍵MACKeyとを生成し、暗号化処理において、平文messageに対してOPEPartを生成するとともに、その平文messageを共通鍵SymKeyで暗号化した暗号文SymPartを生成し、さらにその暗号文SymPartとOPEPartを連結したものに対してMACKeyを用いてメッセージ認証子MACPartを付加したものを暗号文Cipherとしている。そして、復号処理では、まず入力された暗号文Cipherから暗号文SymPartと暗号文OPEPartとメッセージ認証子MACPartを復元し、得られた暗号文SymPartと暗号文OPEPartとの連結メッセージに対してメッセージ認証子MACPartの正当性を確認し、正当性が確認された場合に、共通鍵SymKeyを利用して暗号文SymPartを復号することで平文を得ている。
【００９９】
以上のように、本実施形態では、順序保存暗号方式と共通鍵暗号方式とを組み合わせることで復号を可能としている。すなわち、より安易な実装で、安全性を保証しつつ復号可能に暗号化された状態で平文の大小比較を行える暗号化方式を実現している。
【０１００】
第４の実施形態．
第４の実施形態は、第３の実施形態中にある「第１の実施形態」の構成を「第２の実施形態」の構成にかえたものである。すなわち、第３の実施形態で示した構成およびその動作において第１の実施形態と同様であるとした構成および動作部分を、第２の実施形態と同様としたものである。これにより、本実施形態では、第３の実施形態と比較して、より効率的な方法で暗号化処理および復号処理を行うことができる。
【０１０１】
次に、本発明による順序保存暗号化システムをセキュア・データベースシステムに適用した例について示す。図１４および図１５は、本発明による順序保存暗号化システムのデータベースシステムへの適用例を示すブロック図である。なお、図１４では、セキュア・データベースシステム５００に含まれる順序保存暗号化システムとして第１の実施形態の暗号化方式を実施する暗号化装置１０を備える例を示し、図１５では、セキュア・データベースシステム５００に含まれる順序保存暗号化システムとして第３の実施形態の暗号化方式および復号方式を実施する暗号化装置１０を備える例を示している。
【０１０２】
まず、図１４を参照して、本発明のセキュア・データベースへの適用例を説明する。図１４に示すセキュア・データベースシステム５００は、第１の実施形態の暗号化方式を実施する暗号化装置１０と、セキュア・データベース４０とを備えている。また、セキュア・データベース４０には、データを記憶するデータ記憶手段４０１の他に、データベースに対するデータ操作をとりまとめて行う制御部（不図示）が含まれており、その制御部における一機能として大小比較手段４０２が含まれている。本例の暗号化装置１０は、セキュア・データベース４０が保持するデータの暗号化を行う。
【０１０３】
暗号化装置１０では、パラメータ生成手段１０１および鍵生成手段１０２が、事前（例えば、セキュア・データベース４０の運用前）に、パラメータ生成処理および鍵生成処理を実行し、OPEParamとOPEkeyとを生成しておく。
【０１０４】
ここで、暗号化装置１０に、例えば当該暗号化装置１０を利用しているユーザ（もしくは暗号化装置１０に実装されている何らかのプログラム）から、セキュア・データベース４０に登録させるメッセージとしてMessage[1],..., Message[n]が入力されたとする。暗号化装置１０は、そのようなメッセージMessage[1],..., Message[n]が入力されると、暗号化手段１０３が各メッセージMessageについて暗号化処理を実行することで、それらの出力OPEPart[1],...,OPEPart[n]を計算し、セキュア・データベース４０に送ってもよい。例えば、暗号化手段１０３による暗号化処理がOPEPartGen(OPEParam, Message)として実装されている場合には、OPEPartGen(OPEParam,Message[1]),..., OPEPartGen(OPEParam,Message[n])を実行することで、それらの出力OPEPart[1], ..., OPEPart[n]を得られる。
【０１０５】
セキュア・データベース４０は、送られたデータをデータ記憶手段４０１に記憶させる。本例では、各OPEPartにつき、(i, OPEPart[i])という形式で保存するものとする。すなわち、セキュア・データベース４０は、(1, OPEPart[1]),..., (n, OPEPart[n])をデータ記憶手段４０１に記憶させる。以下、OPEPart[i]の添字iのことをOPEPart[i]またはMessage[i]のＩＤと呼ぶ。
【０１０６】
ここで、例えば暗号化装置１０を利用しているユーザ（もしくは暗号化装置１０に実装されている何らかのプログラム）が、セキュア・データベース４０に記憶させたメッセージMessage[]のうち値がM以上M'以下のメッセージのＩＤが必要になったとする。そのような場合に、暗号化装置１０は、OPEPart_M=OPEPartGen(OPEParam,M)，OPEPart_M'=OPEPartGen(OPEParam,M')を計算し，OPEPart_M，OPEPart_M'を比較対象データとしてセキュア・データベース４０に送る。
【０１０７】
セキュア・データベース４０の大小比較手段４０２は、OPEPart[1]からOPEPart[n]の中から、OPEPart_M≦OPEPart[i]≦OPEPart_M'を満たすiのリストListを、検索結果として出力する。
【０１０８】
順序保存暗号の性質より、M≦Message[i]≦M'となる必要十分条件はOPEPart_M≦OPEPart[i]≦OPEPart_M'となることである。従って、上述のプロトコルを行うことでM≦Message[i]≦M'を満たすiのリストが得られる。
【０１０９】
以上のプロトコルは、例えば以下の状況で有用である。暗号化装置１０は何らかのアプリケーションの会員とそのＩＤのリストを保管しているとし、ＩＤ＝ｉである会員の年齢がMessage[i]であるとする。そのような場合に、例えば、M=20,M'=29として上記比較処理を行えば、M≦Message[i]≦M'を満たすiのリスト、すなわち２０代の会員のＩＤのリストを得られる。すると、そのリストを基に、年齢が２０代の会員の人数が把握できるので、それを基に統計処理を行ったり、また例えば、ＩＤで対応付けられている別の会員データベース等から年齢が２０代の会員の名前等を得るといったことが可能になる。
【０１１０】
なお、数だけを知りたい場合には、セキュア・データベース４０の大小比較手段４０２は、OPEPart_M≦OPEPart[i]≦OPEPart_M'を満たすiの数を、検索結果として出力してもよい。
【０１１１】
なお、暗号化装置１０を第２の実施形態の暗号化方式を実施する暗号化装置１０とすれば、より効率的に暗号化処理を行うことができる。
【０１１２】
次に、図１５を参照して、本発明のセキュア・データベースへの他の適用例を説明する。なお、図１５に示す例は、第３の実施形態の順序保存暗号化システムがデータベースシステムに適用された例である。図１５に示すセキュア・データベース５００は、第３の実施形態の暗号化方式および復号方式を実施する暗号化装置１０と、セキュア・データベース４０とを備えている。また、セキュア・データベース４０には、データを記憶するデータ記憶手段４０１の他に、データベースに対するデータ操作をとりまとめて行う制御部（不図示）が含まれており、その制御部における一機能として大小比較手段４０２が含まれている。本例の暗号化装置１０は、セキュア・データベース４０が保持するデータの暗号化および復号を行う。
【０１１３】
暗号化装置１０では、パラメータ生成手段２０１および鍵生成手段２０２が、事前（例えば、セキュア・データベース４０の運用前）に、パラメータ生成処理および鍵生成処理を実行し、Paramとkey=(OPEKey, MACKey, SymKey)とを生成しておく。
【０１１４】
ここで、暗号化装置１０に、例えば当該暗号化装置１０を利用しているユーザ（もしくは暗号化装置１０に実装されている何らかのプログラム）から、セキュア・データベース４０に登録させるメッセージとしてMessage[1],..., Message[n]が入力されたとする。暗号化装置１０は、そのようなメッセージMessage[1],..., Message[n]が入力されると、暗号化手段２０３が各メッセージMessageについて暗号化処理を実行することで、それらの出力Cipher[1]=(OPEPart[1], SymPart[1], MACPart[1]),..., Cipher[n]=(OPEPart[n], SymPart[n], MACPart[n])を計算し、セキュア・データベース４０に送ってもよい。例えば、暗号化手段２０３による暗号化処理がCipherGen(OPEParam, Key, Message)として実装されている場合には、CipherGen(OPEParam, Key, Message[1]),..., CipherGen(OPEParam, Key, Message[n])を実行することで、それらの出力Cipher[1], ..., Cipher [n]が得られる。なお、Enc()内には、既に説明したように第１の実施形態の暗号化処理OPEPartGen(OPEParam, Message)を呼び出す処理が含まれている。また、以下、Cipher[i].OPEPartと記した場合には、Ciper[i]に含まれるOPEPart[i]を指すものとする。
【０１１５】
セキュア・データベース４０は、送られたデータをデータ記憶手段４０１に記憶させる。本例では、各Cipherにつき、(i, Cipher[i])という形式で保存するものとする。すなわち、セキュア・データベース４０は、(1, Cipher[1]),..., (n, Cipher[n])をデータ記憶手段４０１に記憶させる。以下、Cipher[i]の添字iのことをCipher[i]またはMessage[i]のＩＤと呼ぶ。
【０１１６】
ここで、例えば暗号化装置１０を利用しているユーザ（もしくは暗号化装置１０に実装されている何らかのプログラム）が、セキュア・データベース４０に記憶させたメッセージMessage[]のうち値がM以上M'以下のメッセージが必要になったとする。そのような場合に、まず暗号化装置１０は、OPEPart_M=OPEPartGen(OPEParam,M)，OPEPart_M'=OPEPartGen(OPEParam,M')を計算し，OPEPart_M，OPEPart_M'を比較対象データとしてセキュア・データベース４０に送る。
【０１１７】
セキュア・データベース４０の大小比較手段４０２は、Cipher[1]からCipher[n]の中からOPEPart_M≦Cipher[i].OPEPart≦OPEPart_M'を満たすiのリストListを、検索結果として出力する。
【０１１８】
順序保存暗号の性質より、M≦Message[i]≦M'となる必要十分条件はOPEPart_M≦Cipher[i].OPEPart≦OPEPart_M'となることである。従って、上述のプロトコルを行うことでM≦Message[i]≦M'を満たすiのリストが得られる。
【０１１９】
次いで、暗号化装置１０は、得られたリストを基に、そのリストに含まれるiが示すCiper[i]を復号して該当するメッセージを得る。例えば、i=1,3,5がリストに含まれていたとする。また、復号手段２０４による復号処理がCipherDec(OPEParam, Key, Cipher)として実装されている場合には、CipherDec(OPEParam, Key, Cipher[1]), CipherDec(OPEParam, Key, Cipher[3]), CipherDec(OPEParam, Key, Cipher[5])を実行することで、それらの出力Message[1], Message[3], Message[5]が得られる。
【０１２０】
以上のように、本発明によれば復号処理を行うことなしにデータの大小比較を行うことができるので、データを復号して取り出す際にも、必要なデータを絞り込んだ上で復号処理を行うといったことが可能となる。
【０１２１】
次に、本発明による順序保存暗号化システムの最小構成について説明する。図１６は、本発明による順序保存暗号化システムの最小の構成例を示すブロック図である。図１６に示すように、本発明による順序保存暗号化システムは、最小の構成要素として、暗号化手段１を含む。
【０１２２】
図１６に示す最小構成の順序保存暗号化システムでは、暗号化手段１は、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または所定の疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する。
【０１２３】
従って、最小構成の順序保存暗号化システムによれば、安全性の保証を維持したまま、より簡易なアルゴリズムで順序保存暗号化をすることができる。
【０１２４】
また、図１７は、本発明によるデータベースシステムの最小の構成例を示すブロック図である。図１７に示すように、本発明によるデータベースシステムは、最小の構成要素として、暗号化手段１と、データ記憶手段２と、大小比較手段３とを含む。
【０１２５】
図１７に示すデータベースシステムでは、暗号化手段１は、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文OPEPartを生成する。
【０１２６】
また、データ記憶手段２は、暗号化手段１によって生成された暗号文OPEPartをデータとして記憶する。
【０１２７】
また、大小比較手段３は、データ記憶手段２に記憶されているデータの内容について、任意の平文Mとの大小を判定する際に、暗号化手段１によって順序保存暗号化された平文Mの暗号文OPEPart_Mと判定対象とされたデータとの大小を比較することにより判定する。
【０１２８】
従って、最小構成のデータベースシステムによれば、データの秘匿性を保証しつつ、データの有用性を高めることができる。
【０１２９】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１３０】
また、上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１３１】
（付記１）平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または所定の疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する暗号化手段を備えたことを特徴とする順序保存暗号化システム。
【０１３２】
（付記２）平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段を備え、暗号化手段は、平文を入力として受け取ると、秘密鍵に基づき、所定の確率分布に従う第１の値として、第１の集合Sの元のうち平文から定まる値MB以下の元に対応する第２の集合Lの元の個数C''を算出し、所定の確率分布に従う第２の値として、平文空間の元数から定まる値C'を算出し、第１の値C''に第２の値C'を加えることにより、順序保存された暗号文OPEPartを生成する付記１に記載の順序保存暗号化システム。
【０１３３】
（付記３）所定の疑似ランダム関数への鍵を秘密鍵として生成する鍵生成手段を備え、暗号化手段は、平文を入力として受け取ると、秘密鍵に基づき、平文から定まる値MBを計算し、所定の確率分布に従う第１の値として、値MBを近似解の精度とする二分法により値MBNumを求め、所定の確率分布に従う第２の値として、第１の値MBNumを近似解の精度とする二分法により値MBValを求め、第２の値MBValを利用して、順序保存された暗号文OPEPartを生成し、第１の値MBNumを求める二分法は、二分法の上限Highと下限Lowとそれらにおける値HighNum，LowNumを基に上限Highと下限Lowの間にある中間Midにおける値MidNumを、二項分布を用いて計算するものであり、第２の値MBValを求める二分法は、二分法の上限HighNumと下限LowNumとそれらにおける値HighVal，LowValを基に上限HighNumと下限LowNumの間にある中間MidNumにおける値MidValを、二項分布を用いて計算するものであり、第１の値MBNumを求める二分法および第２の値MBValを求める二分法に用いられる二項分布は、疑似ランダム関数に秘密鍵を入力して得られる疑似乱数を用いて生成される付記１に記載の順序保存暗号化システム。
【０１３４】
（付記４）鍵生成手段は、秘密鍵に加えて、共通鍵暗号方式の共通鍵と、メッセージ認証子のMAC鍵とを生成し、暗号化手段は、平文を入力として受け取ると、秘密鍵を用いて順序保存された暗号文OPEPartを生成し、さらに、共通鍵を用いて平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、暗号文OPEPartと暗号文SymPartとを組み合わせてなる複合暗号文に対して、MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成し、暗号化手段により生成される暗号文Cipherを入力されると、暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文とMAC鍵とを用いて検証し、正当性が確認された場合に、復元された暗号文SymPartを共通鍵を用いて復号して平文を得る復号手段を備えた付記２または付記３に記載の順序保存暗号化システム。
【０１３５】
（付記５）所定の確率分布は、ある実数をｐとするとき、確率pで0、確率1-pで1になる確率分布である付記１から付記４のうちのいずれかに記載の順序保存暗号化システム。
【０１３６】
（付記６）平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する暗号化手段を備えたことを特徴とする暗号化装置。
【０１３７】
（付記７）平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段を備え、暗号化手段は、平文を入力として受け取ると、秘密鍵に基づき、所定の確率分布に従う第１の値として、第１の集合Sの元のうち平文から定まる値MB以下の元に対応する第２の集合Lの元の個数C''を算出し、所定の確率分布に従う第２の値として、平文空間の元数から定まる値C'を算出し、第１の値C''に第２の値C'を加えることにより、順序保存された暗号文OPEPartを生成する付記６に記載の暗号化装置。
【０１３８】
（付記８）所定の疑似ランダム関数への鍵を秘密鍵として生成する鍵生成手段を備え、暗号化手段は、平文を入力として受け取ると、秘密鍵に基づき、平文から定まる値MBを計算し、所定の確率分布に従う第１の値として、値MBを近似解の精度とする二分法により値MBNumを求め、所定の確率分布に従う第２の値として、第１の値MBNumを近似解の精度とする二分法により値MBValを求め、第２の値MBValを利用して、順序保存された暗号文OPEPartを生成し、第１の値MBNumを求める二分法は、二分法の上限Highと下限Lowとそれらにおける値HighNum，LowNumを基に上限Highと下限Lowの間にある中間Midにおける値MidNumを、二項分布を用いて計算するものであり、第２の値MBValを求める二分法は、二分法の上限HighNumと下限LowNumとそれらにおける値HighVal，LowValを基に上限HighNumと下限LowNumの間にある中間MidNumにおける値MidValを、二項分布を用いて計算するものであり、第１の値MBNumを求める二分法および第２の値MBValを求める二分法に用いられる二項分布は、疑似ランダム関数に秘密鍵を入力して得られる疑似乱数を用いて生成される付記６に記載の暗号化装置。
【０１３９】
（付記９）鍵生成手段は、秘密鍵に加えて、共通鍵暗号方式の共通鍵と、メッセージ認証子のMAC鍵とを生成し、暗号化手段は、平文を入力として受け取ると、秘密鍵を用いて順序保存された暗号文OPEPartを生成し、さらに、共通鍵を用いて平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、暗号文OPEPartと暗号文SymPartとを組み合わせてなる複合暗号文に対して、MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成し、暗号化手段により生成される暗号文Cipherを入力されると、暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文とMAC鍵とを用いて検証し、正当性が確認された場合に、復元された暗号文SymPartを共通鍵を用いて復号して平文を得る復号手段を備えた付記７または付記８に記載の暗号化装置。
【０１４０】
（付記１０）所定の確率分布は、ある実数をｐとするとき、確率pで0、確率1-pで1になる確率分布である付記６から付記９のうちのいずれかに記載の暗号化装置。
【０１４１】
（付記１１）平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文OPEPartを生成する暗号化手段と、暗号化手段によって生成された暗号文OPEPartをデータとして記憶するデータ記憶手段と、データ記憶手段に記憶されているデータの内容について、任意の平文Mとの大小を判定する大小比較手段とを備え、大小比較手段は、暗号化手段によって順序保存暗号化された平文Mの暗号文OPEPart_Mと判定対象とされたデータとの大小を比較することにより、データの内容と任意の平文Mとの大小を判定することを特徴とするデータベースシステム。
【０１４２】
（付記１２）平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する鍵生成手段を備え、暗号化手段は、平文を入力として受け取ると、秘密鍵に基づき、所定の確率分布に従う第１の値として、第１の集合Sの元のうち平文から定まる値MB以下の元に対応する第２の集合Lの元の個数C''を算出し、所定の確率分布に従う第２の値として、平文空間の元数から定まる値C'を算出し、第１の値C''に第２の値C'を加えることにより、順序保存された暗号文OPEPartを生成する付記１１に記載のデータベースシステム。
【０１４３】
（付記１３）所定の疑似ランダム関数への鍵を秘密鍵として生成する鍵生成手段を備え、暗号化手段は、平文を入力として受け取ると、秘密鍵に基づき、平文から定まる値MBを計算し、所定の確率分布に従う第１の値として、値MBを近似解の精度とする二分法により値MBNumを求め、所定の確率分布に従う第２の値として、第１の値MBNumを近似解の精度とする二分法により値MBValを求め、第２の値MBValを利用して、順序保存された暗号文OPEPartを生成し、第１の値MBNumを求める二分法は、二分法の上限Highと下限Lowとそれらにおける値HighNum，LowNumを基に上限Highと下限Lowの間にある中間Midにおける値MidNumを、二項分布を用いて計算するものであり、第２の値MBValを求める二分法は、二分法の上限HighNumと下限LowNumとそれらにおける値HighVal，LowValを基に上限HighNumと下限LowNumの間にある中間MidNumにおける値MidValを、二項分布を用いて計算するものであり、第１の値MBNumを求める二分法および第２の値MBValを求める二分法に用いられる二項分布は、疑似ランダム関数に秘密鍵を入力して得られる疑似乱数を用いて生成される付記１１に記載のデータベースシステム。
【０１４４】
（付記１４）鍵生成手段は、秘密鍵に加えて、共通鍵暗号方式の共通鍵と、メッセージ認証子のMAC鍵とを生成し、暗号化手段は、平文を入力として受け取ると、秘密鍵を用いて順序保存された暗号文OPEPartを生成し、さらに、共通鍵を用いて平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、暗号文OPEPartと暗号文SymPartとを組み合わせてなる複合暗号文に対して、MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成し、暗号化手段により生成される暗号文Cipherを入力されると、暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文とMAC鍵とを用いて検証し、正当性が確認された場合に、復元された暗号文SymPartを共通鍵を用いて復号して平文を得る復号手段を備え、データ記憶手段は、暗号化手段により生成される暗号文Cipherをデータとして記憶し、大小比較手段は、暗号化手段によって順序保存暗号化された平文Mの暗号文OPEPart_Mと判定対象とされたデータから復元される暗号文OPEPartとの大小を比較することにより、データの内容と任意の平文Mとの大小を判定する付記１２または付記１３に記載のデータベースシステム。
【０１４５】
（付記１５）所定の確率分布は、ある実数をpとするとき、確率pで0、確率1-pで1になる確率分布である付記１１から付記１４のうちのいずれかに記載のデータベースシステム。
【０１４６】
（付記１６）秘密鍵として、平文空間から一様分布を用いて生成される集合を含むデータまたは所定の疑似ランダム関数への鍵を生成し、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または所定の疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成することを特徴とする順序保存暗号化方法。
【０１４７】
（付記１７）平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成し、平文を入力として受け取ると、秘密鍵に基づき、所定の確率分布に従う第１の値として、第１の集合Sの元のうち平文から定まる値MB以下の元に対応する第２の集合Lの元の個数C''を算出し、所定の確率分布に従う第２の値として、平文空間の元数から定まる値C'を算出し、第１の値C''に第２の値C'を加えることにより、順序保存された暗号文OPEPartを生成する付記１６に記載の順序保存暗号化方法。
【０１４８】
（付記１８）所定の疑似ランダム関数への鍵を秘密鍵として生成し、平文を入力として受け取ると、秘密鍵に基づき、平文から定まる値MBを計算し、所定の確率分布に従う第１の値として、値MBを近似解の精度とする二分法により値MBNumを求め、所定の確率分布に従う第２の値として、第１の値MBNumを近似解の精度とする二分法により値MBValを求め、第２の値MBValを利用して、順序保存された暗号文OPEPartを生成し、第１の値MBNumを求める二分法は、二分法の上限Highと下限Lowとそれらにおける値HighNum，LowNumを基に上限Highと下限Lowの間にある中間Midにおける値MidNumを、二項分布を用いて計算するものであり、第２の値MBValを求める二分法は、二分法の上限HighNumと下限LowNumとそれらにおける値HighVal，LowValを基に上限HighNumと下限LowNumの間にある中間MidNumにおける値MidValを、二項分布を用いて計算するものであり、第１の値MBNumを求める二分法および第２の値MBValを求める二分法に用いられる二項分布は、疑似ランダム関数に秘密鍵を入力して得られる疑似乱数を用いて生成される付記１６に記載の順序保存暗号化方法。
【０１４９】
（付記１９）秘密鍵に加えて、共通鍵暗号方式の共通鍵と、メッセージ認証子のMAC鍵とを生成し、平文を入力として受け取ると、秘密鍵を用いて順序保存された暗号文OPEPartを生成し、さらに、共通鍵を用いて平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、暗号文OPEPartと暗号文SymPartとを組み合わせてなる複合暗号文に対して、MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成し、暗号文Cipherを入力されると、暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文とMAC鍵とを用いて検証し、正当性が確認された場合に、復元された暗号文SymPartを共通鍵を用いて復号して平文を得る付記１７または付記１８に記載の順序保存暗号化方法。
【０１５０】
（付記２０）所定の確率分布は、ある実数をｐとするとき、確率pで0、確率1-pで1になる確率分布である付記１６から付記１９のうちのいずれかに記載の順序保存暗号化方法。
【０１５１】
（付記２１）コンピュータに、平文を入力として受け取ると、平文から定まる値と、秘密鍵に含まれる平文空間から一様分布を用いて生成される集合または疑似ランダム関数への鍵とに基づいて生成される確率分布であって条件確率が二項分布を用いて表される所定の確率分布に従って、順序保存された暗号文を生成する処理を実行させるための順序保存暗号化プログラム。
【０１５２】
（付記２２）コンピュータに、平文空間から一様ランダムに選ばれた元達からなる第１の集合Sを生成し、第１の集合Sに値を取る一様乱数からなる第２の集合Lを生成し、第１の集合Sと第２の集合Lとを含むデータを秘密鍵として生成する処理、および平文を入力として受け取ると、秘密鍵に基づき、所定の確率分布に従う第１の値として、第１の集合Sの元のうち平文から定まる値MB以下の元に対応する第２の集合Lの元の個数C''を算出し、所定の確率分布に従う第２の値として、平文空間の元数から定まる値C'を算出し、第１の値C''に第２の値C'を加えることにより、順序保存された暗号文OPEPartを生成する処理を実行させる付記２１に記載の順序保存暗号化プログラム。
【０１５３】
（付記２３）コンピュータに、所定の疑似ランダム関数への鍵を秘密鍵として生成する処理、および平文を入力として受け取ると、秘密鍵に基づき、平文から定まる値MBを計算し、所定の確率分布に従う第１の値として、値MBを近似解の精度とする二分法により値MBNumを求め、所定の確率分布に従う第２の値として、第１の値MBNumを近似解の精度とする二分法により値MBValを求め、第２の値MBValを利用して、順序保存された暗号文OPEPartの生成処理を実行させ、第１の値MBNumを求める二分法は、二分法の上限Highと下限Lowとそれらにおける値HighNum，LowNumを基に上限Highと下限Lowの間にある中間Midにおける値MidNumを、二項分布を用いて計算するものであり、第２の値MBValを求める二分法は、二分法の上限HighNumと下限LowNumとそれらにおける値HighVal，LowValを基に上限HighNumと下限LowNumの間にある中間MidNumにおける値MidValを、二項分布を用いて計算するものであり、第１の値MBNumを求める二分法および第２の値MBValを求める二分法に用いられる二項分布は、疑似ランダム関数に秘密鍵を入力して得られる疑似乱数を用いて生成されるものである付記２１に記載の順序保存暗号化プログラム。
【０１５４】
（付記２４）コンピュータに、秘密鍵に加えて、共通鍵暗号方式の共通鍵と、メッセージ認証子のMAC鍵とを生成する処理、平文を入力として受け取ると、秘密鍵を用いて順序保存された暗号文OPEPartを生成し、さらに、共通鍵を用いて平文を共通暗号化方式により暗号化して暗号文SymPartを生成し、暗号文OPEPartと暗号文SymPartとを組み合わせてなる複合暗号文に対して、MAC鍵を用いて生成されるメッセージ認証子MACPartを付加することにより、暗号文Cipherを生成する処理、および暗号文Cipherを入力されると、暗号文Cipherから暗号文OPEPartと暗号文SymPartとメッセージ認証子MACPartとを復元し、復元されたメッセージ認証子MACPartの正当性を、復元された暗号文OPEPartと復元された暗号文SymPartとを組み合わせてなる複合暗号文とMAC鍵とを用いて検証し、正当性が確認された場合に、復元された暗号文SymPartを共通鍵を用いて復号して平文を得る処理を実行させる付記２２または付記２３に記載の順序保存暗号化プログラム。
【０１５５】
（付記２５）所定の確率分布は、ある実数をｐとするとき、確率pで0、確率1-pで1になる確率分布である付記２１から付記２４のうちのいずれかに記載の順序保存暗号化プログラム。
【０１５６】
この出願は、２０１３年２月２８日に出願された日本特許出願２０１３−０３８２３８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【０１５７】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【０１５８】
本発明は、データの秘匿性を保証したまま、暗号化されたままの状態で大小比較を行いたい用途に好適に適用できる。本発明は、例えばセキュア・データベースに利用できる。
【符号の説明】
【０１５９】
１  暗号化手段
２  データ記憶手段
３  大小比較手段
１０  暗号化装置
２０  復号装置
３０  鍵生成装置
４０  セキュア・データベース
１０１、２０１  パラメータ生成手段
１０２、２０２  鍵生成手段
１０３、２０３  暗号化手段
２０４  復号手段
４０１  データ記憶手段
４０２  大小比較手段
５００  セキュア・データベースシステム
【図１】
0006477461.tif 000002
【図２】
0006477461.tif 000003
【図３】
0006477461.tif 000004
【図４】
0006477461.tif 000005
【図５】
0006477461.tif 000006
【図６】
0006477461.tif 000007
【図７】
0006477461.tif 000008
【図８】
0006477461.tif 000009
【図９】
0006477461.tif 000010
【図１０】
0006477461.tif 000011
【図１１】
0006477461.tif 000012
【図１２】
0006477461.tif 000013
【図１３】
0006477461.tif 000014
【図１４】
0006477461.tif 000015
【図１５】
0006477461.tif 000016
【図１６】
0006477461.tif 000017
【図１７】
0006477461.tif 000018