説明

暗号化装置、復号装置、暗号化方法、及び復号方法

【課題】 順序保存関数に関する演算を効率的に実行する。
【解決手段】 平文d、シードS、平文空間D={d_1,...,d_m}、暗号文空間R={r_1,..,r_n}が入力され、平文空間の中間の値d_cを決定し、シードSを用いてa=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、d=d_cが成立しているかを判定し、成立の場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立しない場合にd< d_cが成立しているかを判定し、成立の場合、D= {d_{1},…,d_{c-1}}、R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}とし、成立していない場合、D= {d_{c+1},…,d_{m}}、R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は暗号化装置、復号装置、暗号化方法、及び復号方法に関する。特に、単純な分布に従う試行のシミュレート方法を用い、効率的に処理を実行する暗号化装置、復号装置、暗号化方法、及び復号方法に関する。
【0002】
なお、本願において、以降、暗号化処理が施される前のデータを平文とし、暗号化処理が施された後のデータを暗号文と呼ぶ。
【0003】
また、以降、本願において次のように記載する。
【0004】
暗号化関数は3変数の関数Enc(,,)と表す。Enc(,,)は第1変数に補助パラメータ、第2変数に鍵、第3変数に平文を入力としてとり、対応した暗号文を出力する。また、復号関数は3変数関数Dec(,,)と表す。Dec(,,)は第一変数に補助パラメータ、第二変数に鍵、第3変数に暗号文を入力としてとり、対応した平文を出力するものとする。なお補助パラメータは複数の情報から構成される場合があるため、それらをまとめるための表現として[]を用いる。例えば、A,B,Cを補助パラメータとして用いる場合であれば、[A,B,C]と書く。さらに、min()が集合を引数に取る関数であり、入力された集合の中から最も小さな値を出力する関数とする。また、max()は集合を引数に取る関数であり、入力された集合の中から最も大きな値を出力する関数とする。size()は集合を引数に取る関数であり、入力された集合の要素数を出力する関数とする。ceil()は実数を入力として、入力を越えない最大の整数を出力する関数とする。
【背景技術】
【0005】
データベースに登録されている情報の漏洩対策として、登録情報の暗号化が挙げられる。しかし、一般的な暗号方式を用いると、データベースの利便性が大きく損なわれる。例えば登録されている暗号化されているデータに対し、範囲検索を行うことを考える。このとき、通常の暗号化方式を用いる限り、暗号化されたデータから元のデータが目的の範囲に含まれているかどうかの判断はできない。つまり、単純に登録された値から条件に一致しているかどうかの判断は出来ず、範囲検索は困難になってしまう。暗号化されたデータのすべてを復号し、条件にあった値かどうかを確認することはできるが、データベース中に含まれている暗号文のすべてを復号する必要があり、非効率的である。
【0006】
このような問題を解決する手段の1つとして、特殊な性質を持った暗号化方法を用いる方法が知られているが、非特許文献1では、平文の数字的な大小を保ちながら暗号化することができる暗号方式を用いることが提案されている。 このような暗号方式があれば、暗号文からの範囲検索が実行可能となる。例えば、データベースに暗号文c_{i_1},...,c_{i_n}が記憶されている場合に、m_{j_1}以上m_{j_2}以下の値を持つデータに対する暗号文を検索する場合を考える。このとき、m_{j_1}の暗号文c_{j_1}とm_{j_2}の暗号文c_{j_2}を作成し、c_{j_1}とc_{j_2}の中間の値を持つ暗号文を検索すれば、目的の暗号文を抽出できる。以降、このような性質を持った暗号方式を順序保存暗号と呼ぶ。
【0007】
しかしながら、非特許文献1に記載の方法では、過去に暗号化した平文をすべて記憶しておく必要がある。この性質は、先に挙げたデータベースを暗号化するためには好ましくない。つまり、非特許文献1に記載の方法を用いると、データベースにデータを追加する際には過去に暗号化したすべての平文の情報を手に入れる手段が必要である。言い換えると、漏洩を防止するためには外部に保管したい情報が、暗号化するために必要な情報となっているので、目的の達成が困難である。
【0008】
従来の順序保存暗号としては、非特許文献1の他に非特許文献2に記載されている方式が挙げられる。
【0009】
非特許文献2に記載の方法においては、暗号化のために必要な情報は鍵情報と平文のみであり、復号のために必要な情報は鍵情報と暗号文のみである。このような方法が暗号化した状態で外部データベースにデータを預ける目的では好ましい。以下で、非特許文献2に記載の方法について説明するが、まず、非特許文献2に記載の方法を説明するために必要な事項の説明を行う。
【0010】
関数F()について、定義域に含まれる任意のx_1,x_2(x_1)に対してF(x_1) < F(x_2)が満たされる場合、F()を順序保存型関数とする。
【0011】
定義域が{1,...,M}であって、値域が{1,...,N}であるような順序保存型関数の総数はN個からM個を選ぶ組み合わせの総数に等しい。以降、A個からB個を選ぶ組み合わせをC(A,B)と書く。
【0012】
順序保存暗号は、この順序保存型関数からひとつの関数F()を指定し、効率的にF()および、その逆関数が計算できるような情報である鍵情報を指定することによって構成することができる。
【0013】
鍵情報はランダムに選択されることが求められるが、選択された鍵情報によって指定される順序保存型関数は定義域と値域によって指定される関数集合の中から出来る限り一様にランダムに選択されることが望ましい。これは、暗号の解読を試みた際に、どの関数を使っているかの推測を困難とするためである。
【0014】
非特許文献2では、このような鍵情報の選択方法として、超幾何分布に従った乱数生成方法が用いられている。超幾何分布とは以下のような分布である。
【0015】
(超幾何分布)
ビンにN個のボールが入っており、そのうち、M個が黒、N-M個が白である場合を考える。ビンからランダムにy個のボールを取り出したとき、引いたボールに含まれる黒いボールの数を確率変数とする確率分布が超幾何分布に等しい。ある分布に従う試行の結果がxとなる確率は確率密度関数と呼ばれる。xの確率密度関数Pr(x)はN,M,yを用いて以下の式によって表されることが知られている。
【0016】
Pr(x;N,M,y) = (C(y,x)C(N-y,M-x))/C(N,M)

ここで、ある分布に従った乱数を生成することを、試行とする。例えば、超幾何分布に従う試行というように用いる。コンピュータやハードウェアでなんらかの分布に従った試行を実行したい場合、実際にビンにボールを入れてボールを取り出すことはできないため、分布に従った試行をシミュレートする分布シミュレーションアルゴリズムが用いられる。分布シミュレーションアルゴリズムには、分布を定めるパラメータに加えてシードと呼ばれる値が入力され、シミュレーションアルゴリズムのランダム性はシードによって確保される。以降、超幾何分布にしたがった試行をシミュレートするアルゴリズムは、N,M,yを確率分布を指定するパラメータ、ccをシードとしたとき、HGD(N,M,y,cc)と記載する。
【0017】
シードは擬似乱数生成器を用いて生成する方法が一般的であり、HGD(N,M,y,cc)に用いる擬似乱数を生成するための擬似乱数生成関数をRand_{HGD}(N,M,y,K,Par)とする。Kは擬似乱数生成関数の鍵であり、Parは補助パラメータである。補助パラメータParによってK,N,M,yが同一であってもParが調整でき、異なるシードを生成する。
【0018】
集合Nより一様ランダムに要素を選択するアルゴリズムをシードをkとしてUni(N,cc)とする。Uni(N,cc)で用いるシードを生成するためのアルゴリズムをRand_{Uni}(N,K,Par)とする。Kは擬似乱数生成関数の鍵であり、Parの用途はRand_{HGD}と同じである。
【0019】
超幾何分布に従う試行の効率の良いシミュレートアルゴリズムとしては、非特許文献3に記載の方法が知られている。この方法は浮動小数点数の計算が無限の精度で正確ならば、超幾何分布に従う試行を完全にシミュレートすることができる。
【0020】
非特許文献2に記載の超幾何分布に従う試行のシミュレート方法を用いた順序保存型関数の指定方法を示す。なお、平文空間Dは{1,...,M}であるとする。また暗号文空間Rは{1,...,N}であるとする。このとき、Enc([D,R],K,m)とDec([D,R],K,c)を以下に示す。
【0021】
Enc([D,R],K,m)
1. P = size(D)を計算する。
【0022】
2. Q = size(R)を計算する。
【0023】
3. d = min(D) -1を計算する。
【0024】
4. r = min(R)-1を計算する。
【0025】
5. y = r + ceil(N/2)を計算する。
【0026】
6. P = 1である場合、 cc = Rand_{Uni}(N,K,m)を計算し、x =HGD(D,R,y,cc)を計算し、xを返し終了する。
【0027】
7. cc = Rand_{HGD}(N,M,y,cc)を計算する。
【0028】
8. x = HGD(N,M,y,cc)を計算する。
【0029】
9. mがx以下であるとき、D = {d+1,...,x}, R = {r+1,...,y}とする。
【0030】
10. mがxより大きいとき、D = {x+1,...,d+M}, R = {y+1,...,r+N}とする。
【0031】
11. Enc([D,R],K,m)の返り値を出力し終了する。
【0032】
Dec([D,R],K,c)
1. P = size(D)を計算する。
【0033】
2. Q = size(R)を計算する。
【0034】
3. d = min(D) -1を計算する。
【0035】
4. r = min(R)-1を計算する。
【0036】
5. y = r + ceil(N/2)を計算する。
【0037】
6. P = 1である場合、 m = min(D)を求め、cc = Rand_{Uni}(N,K,m)及び、w = HGD(D,R,y,cc)を計算する。 ここで、m=wであるならば、mを返し、終了する。それ以外の場合、エラーを返し終了する。
【0038】
7. cc = Rand_{HGD}(N,M,y,cc)を計算する。
【0039】
8. x = HGD(N,M,y,cc)を計算する。
【0040】
9. mがx以下であるとき、D = {d+1,...,x}, R = {r+1,...,y}とする。
【0041】
10. mがxより大きいとき、D = {x+1,...,d+M}, R = {y+1,...,r+N}とする。
【0042】
11. Dec([D,R],K,c)の返り値を出力する。
【0043】
以上の方法を第一の方法という。第一の方法は、HGDが完全に超幾何分布に従う志向をシミュレートする条件で、定義域がDであって値域がRである順序保存型関数のすべてから一様ランダムに1つの関数を指定できることが証明されている。暗号文空間を2つに分けながら再帰呼び出しが行われる方法なので、最悪の場合、log(size(N))回の再帰処理が行われる。
【0044】
(負の超幾何分布)
ビンにN個のボールが入っており、そのうち、M個が黒、N-M個が白である場合を考える。ビンからランダムにボールを抜き取っていく試行において(抜き取ったボールは戻さない)、ちょうどx個目の黒いボールを引いたときの、引いたボールの総数yを確率変数とする確率分布が負の超幾何分布に等しい。超幾何分布の確率密度関数Pr(y)はN,M,xを用いて以下の式によって表されることが知られている。
【0045】
Pr(y;N,M,x) = (C(y-1,x-1)C(N-y,M-x))/C(N,M)

以降、負の超幾何分布に従う試行をシミュレートするアルゴリズムを、N,M,xは確率分布を指定するパラメータ、Kをシードとし、NHGD(N,M,x,K)と記載する。
【0046】
NHGD(N,M,x,cc)に用いる擬似乱数を生成するための擬似乱数生成関数をRand_{NHGD}(N,M,x,K,Par)とする。Kは擬似乱数生成関数の鍵であり、Parは補助パラメータである。Parの用途はRand_{HGD}と同じである。
【0047】
負の超幾何分布に従う試行の効率の良いシミュレート方法としては、非特許文献4に記載の方法が知られているが、近似アルゴリズムである。
【0048】
非特許文献4に記載の負の超幾何分布に従う試行のシミュレート方法を用いた順序保存型関数の指定方法を示す。なお、平文空間Dは{1,...,M}であるとする。また暗号文空間Rは{1,...,N}であるとする。このとき、 Enc([D,R],K,m)とDec([D,R],K,c)を以下に示す。
【0049】
Enc([D,R],K,m)
1. P = size(D)を計算する。
【0050】
2. Q = size(R)を計算する。
【0051】
3. d = min(D) -1を計算する。
【0052】
4. r = min(R)-1を計算する。
【0053】
5. x = d + ceil(M/2)を計算する。
【0054】
6. cc = Rand_{NHGD}(N,M,K,m)を計算し、y = NHGD(D,R,x,cc)を計算する。
【0055】
7. m = x であるとき、 yを出力する。
【0056】
8. mがxより小さいとき、D = {d+1,...,x-1}, R = {r+1,...,y-1}とする。
【0057】
9. mがxより大きいとき、D = {x+1,...,d+M}, R = {y+1,...,r+N}とする。
【0058】
10. Enc([D,R],K,m)の返り値を出力し終了する。
【0059】
Dec([D,R],K,c)
1. P = size(D)を計算する。
【0060】
2. Q = size(R)を計算する。
【0061】
3. d = min(D) -1を計算する。
【0062】
4. r = min(R)-1を計算する。
【0063】
5. x = d + ceil(M/2)を計算する。
【0064】
6. cc = Rand_{NHGD}(N,M,K,x)及び、y = NHGD(D,R,x,cc)を計算する。 ここで、c=yであるならば、xを返し、終了する。それ以外の場合、エラーを返し終了する。
【0065】
7. cがyより小さいとき、D = {d+1,...,x-1}, R = {r+1,...,y-1}とする。
【0066】
8. cがyより大きいとき、D = {x+1,...,d+M}, R = {y+1,...,r+N}とする。
【0067】
9. Dec([D,R],K,c)の返り値を出力して終了する。
【0068】
以上の方法を第2の方法と呼ぶ。第2の方法は、NHGDが完全に負の超幾何分布に従う試行をシミュレートする条件で、定義域がDであって値域がRである順序保存型関数のすべてから一様ランダムに1つの関数を指定できることが証明されている。暗号文空間を2つに分けながら再帰呼び出しが行われるので、最悪の場合、log(size(M))回の再帰処理が行われる。
【0069】
以下、第2の方法の実施する装置の構成およびフローチャートを示す。第2の方法を実施する装置は暗号化装置100と復号装置200を備える。
【0070】
図1は第2の方法を実施するための暗号化装置100の構成例を示すブロック図である。暗号化装置100の構成について、図1を用いて説明を行う。図1を参照すると、暗号化装置100は、暗号化処理制御部101と、負の超幾何分布シミュレート部102を備え、平文、シード、平文空間、暗号文空間を入力として、暗号文を出力する。
【0071】
図2は暗号化装置100の実施の形態の動作を示すフローチャートである。図2を参照して暗号化装置100の実施の形態の動作について説明する。
【0072】
まず、平文dとシードSと平文空間D={d_1,...,d_m}と暗号文空間R={r_1,..,r_n}が入力される(ステップA1)。
【0073】
暗号化処理制御部101は、平文空間の要素を数字的大小で並べた時の中間の値d_cを求め記憶する(ステップA2)。
【0074】
暗号化処理制御部101は、|R|をボール数、|D|を黒いボール数とし、|D|/2個の黒いボールがでたときの引いたボールの総数eをSをシードとした負の超幾何分布に従う試行のシミュレーション処理を負の超幾何分シュミレート部102を用いて求め、r_eをd_cに対する暗号文とする(ステップA3)。
【0075】
暗号化処理制御部101は、d=d_cが成立しているかを調べる(ステップA4)。
【0076】
ステップA4が成立している場合、暗号化処理制御部101は、r_eをdの暗号文として出力する(ステップA5)。ステップA4が成立していない場合、暗号化処理制御部101は、d < d_cが成立しているかを調べる(ステップA6)。
【0077】
ステップA6が成立している場合、暗号化処理制御部101は、D= {d_1,…,d_{c-1}}とし、R={r_1,..,r_{e-1}}とし、ステップA2に戻る(ステップA8)。ステップA6が成立していない場合、暗号化処理制御部101は、D= {d_{c+1},…,d_m}とし、R={r_{e+1},..,r_n}ステップA2に戻る(ステップA7)。
【0078】
図3は第2の方法を実施するための復号装置200の構成例を示すブロック図である。復号装置200の構成について、図3を用いて説明を行う。図3を参照すると、復号装置200は、復号処理制御部101と、負の超幾何分布シミュレート部102を備え、暗号文、シード、平文空間、暗号文空間を入力として、平文を出力する。
【0079】
図4は復号装置200の実施の形態の動作を示すフローチャートである。図4を参照して復号装置200の実施の形態の動作について説明する。
【0080】
まず、暗号文rとシードSと平文空間D={d_1,...,d_m}と暗号文空間R={r_1,..,r_n}が入力される(ステップB1)。
【0081】
復号処理制御部201は、平文空間の要素を数字的大小で並べた時の中間の値d_cを求め記憶する(ステップB2)。
【0082】
復号処理制御部201は、|R|をボール数、|D|を黒いボール数とし、|D|/2個の黒いボールがでたときの引いたボールの総数eをSをシードとした負の超幾何分布に従う試行のシミュレーション処理によって求め、r_eをd_cに対する暗号文とする(ステップB3)。
【0083】
復号処理制御部201は、r_e=rが成立しているかを調べる(ステップB4)。ステップB4が成立している場合、復号処理制御部201は、r_eをdの暗号文として出力する(ステップB5)。ステップB4が成立していない場合、復号処理制御部201は、r_e < rが成立しているかを調べる(ステップB6)。
【0084】
ステップB6が成立している場合、復号処理制御部201は、D= {d_{c+1},…,d_m}とし、R={r_{e+1},..,r_n}とし、ステップB2に戻る(ステップB7)。ステップB6が成立していない場合、復号処理制御部201は、D= {d_1,…,d_{c-1}}とし、R={r_1,..,r_{e-1}}とし、ステップB2に戻る(ステップB8)。
【先行技術文献】
【非特許文献】
【0085】
【非特許文献1】Alexandra Boldyreva, Nathan Chenette, Younho Lee and Adam O'Neill. Order-Preserving Symmetric Encryption. Advances in Cryptology - Eurocrypt 2009 Proceedings, Lecture Notes in Computer Science Vol. 5479, pp. 224-241, A. Joux ed., 2009.
【非特許文献2】Jun. Li, and Edward. Omiecinski. Efficiency and Security Trade-Off in Supporting Range Queries on Encrypted Databases. pp. 69-83. DBSec 2005:
【非特許文献3】V. Kachitvichyanukul and B. W. Schmeiser. Computer generation of hypergeometric random variates. Journal of Statistical Computation and Simulation, 22(2):127-145,1985.
【非特許文献4】F.Lopes-Blazquez and B.Salamanca Mino. Exact and approximated relations between negative hypergeometric and negative binomial probabilities. Communications in Statistics. Theory and Methods, 30(5):957-967,2001
【非特許文献5】計算機シミュレーションのための確率分布乱数生成法 四辻哲章 プレアデス出版、第1版、2010年7月1日発行、P.244-247、P.228-239
【発明の概要】
【発明が解決しようとする課題】
【0086】
従来の方式は、順序保存型関数から一様ランダムに選択する方法のみを示している。また、超幾何分布や負の超幾何分布に従う試行のシミュレーション方法として効率的であるといわれている方法は複雑である。さらに、超幾何分布のシミュレーション方法として効率的であるとされている方法は浮動小数点数の計算が無制限に精確であるという前提のもとでしか完全に超幾何分布に従う試行シミュレートができない。加えて、負の超幾何分布に従う試行を効率的に実行する方法は近似されたアルゴリズムしか知られていない。
【0087】
つまり、実際にはすべての順序保存型関数から一様ランダムに選択できず、ある程度の誤差を伴う。実際には誤差を許容するならば、よりシンプルな方法を用いて効率的に順序保存型暗号を選択する方法でもよい。
【0088】
本発明の目的は、従来の方法に比べて、単純な分布に従う試行のシミュレート方法を用い、効率的に処理を実行する暗号化装置、復号装置、暗号化方法、及び復号方法を提供することにある。
【課題を解決するための手段】
【0089】
本発明に係わる暗号化装置は、ベータ分布シミュレート部と、暗号化処理制御部とを備え、入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置であって、
前記暗号化処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記ベータ分布シュミレート部を動作させて、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置である。
【0090】
本発明に係わる復号装置は、ベータ分布シミュレート部と、復号処理制御部とを備え、入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置であって、
前記復号処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記ベータ分布シミュレート部を動作させて、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置である。
【0091】
また本発明に係わる暗号化装置は、一様分布シミュレート部と、暗号化処理制御部とを備え、入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置であって、
前記暗号化処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記一様分布シミュレート部を動作させて、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b < 1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置である。
【0092】
また本発明に係わる復号装置は、一様分布シミュレート部と、復号処理制御部とを備え、入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置であって、
前記復号処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記一様分布シミュレート部を動作させて、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b <1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合に、d< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置である。
【0093】
また本発明は、暗号化装置の暗号化方法及び復号装置の復号方法に関する。
【発明の効果】
【0094】
本発明によれば、平文の順序が保存される暗号を用いて、データベースに登録されている暗号文に対し、範囲検索を行うことができる。また、本発明をデータベースの暗号化方法として用いれば、暗号化されるデータのデータ長が長い場合であっても効率的な暗号化処理が実行できるため、暗号化されたデータベースの範囲検索を効率的に実行することが可能となる。
【図面の簡単な説明】
【0095】
【図1】非特許文献2に係わる暗号化装置の一構成例を示すブロック図である。
【図2】図1に示された暗号化装置の動作を示すフローチャートである。
【図3】非特許文献2に係わる復号装置の一構成例を示すブロック図である。
【図4】図3に示された復号装置の動作を示すフローチャートである。
【図5】本発明の第1の実施の形態の暗号化装置300の構成を示すブロック図である。
【図6】本発明の第1の実施の形態の復号装置400の構成を示すブロック図である。
【図7】本発明の第2の実施の形態の暗号化装置310の構成を示すブロック図である。
【図8】本発明の第2の実施の形態の復号装置410の構成を示すブロック図である。
【図9】暗号化装置又は復号装置として機能するコンピュータの一構成例を示すブロック図である。
【図10】図5の暗号化装置の動作を示すフローチャートである。
【図11】図6の復号装置の動作を示すフローチャートである。
【図12】図7の暗号化装置の動作を示すフローチャートである。
【図13】図8の復号装置の動作を示すフローチャートである。
【発明を実施するための形態】
【0096】
以下、本発明に係わる典型的な実施形態について図面を用いて詳細に説明する。
【0097】
本発明に係わる第1の実施形態の暗号化装置及び復号装置は、ベータ分布に従う試行のシミュレーション方法を用いた暗号化装置及び復号装置である。
【0098】
ベータ分布とは、0≦y≦1を確率変数とする確率分布であって、ベータ分布に従う試行の確率密度関数は、以下の式によって表される。
【0099】
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B(a,b)はベータ関数
この分布は、0と1間の値の一様分布に従う独立なa+b-1個の確率変数を大きさの順に並べ替えたときの小さいほうからa番目で大きいほうからb番目の値の確率変数である。
【0100】
a=bである場合ならば、ceil((a+b)/2)番目の値を表す確率変数となる。定義域が{1,...,M}であり、値域が{1,...,N}であるような順序保存関数を一様にランダムに選ぶ場合、同じ要素が選ばれない限り、1からNの中から一様ランダムにM個の値を選び、これを小さいほうから並べた集合に定義域内の小さな値から対応させることで選択できる。
【0101】
つまり、a=bであるベータ分布に従う試行をシミュレートした結果である yに対し、ceil(N*y)は順序保存関数からランダムに関数が選ばれる場合、定義域中の中間の値が、値域のどの値に対応しているかを表すことになる。つまり、負の超幾何分布に従う試行のシミュレートをベータ分布に従う試行のシミュレーションで代替できることを表している。ベータ分布に従う試行は、負の超幾何分布に従う試行に比べて、効率的にシミュレートする方法がよく知られており(非特許文献5など)、さらに、a=bである場合に特に効率的に動作するアルゴリズムが知られている。以上のような方法で、第2の方法における暗号化処理、復号処理において実行される。
【0102】
負の超幾何分布に従う試行のシミュレーションを効率的な方法によって代替することで、定義域、値域に対する順序保存関数の中からほぼ一様ランダムに関数を効率的に指定することができる第2の解決法は、r_eを選択する処理を一様分布に従う試行を用いて行う方法である。すなわち、本発明に係わる第2の実施形態の暗号化装置及び復号装置は、一様分布に従う試行のシミュレーション方法を用いた暗号化装置及び復号装置である。
【0103】
一様分布とは、a≦y≦b (0≦a≦1, 0≦b≦1)を確率変数とする確率分布であって、その確率密度関数は以下の式によって表される。
【0104】
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
この方法は、aとb間の値の一様分布に従う試行によってyを選択し、ceil(N*y)をr_eとする方法である。一様分布は、様々な分布をシミュレートするためにベースの分布として利用されている。この分布に従う試行は非常に簡単にシミュレート可能な値とされているため、順序保存関数に関する演算を効率的に実行することができる。
【0105】
まず、ベータ分布に従う試行のシミュレーション方法を用いた場合の第1の実施形態について説明する。
【0106】
図5は本発明の第1実施形態に係わる暗号化装置のブロック図である。暗号化装置の構成について、図5を用いて説明を行う。
【0107】
図5を参照すると、暗号化装置300は、暗号化処理制御部301と、ベータ分布シミュレート部303 を備え、平文、シード、平文空間、暗号文空間を入力として、暗号文を出力する。
【0108】
図10は、本実施形態の暗号化装置300の動作を示すフローチャートである。これを用いて、暗号化装置300の実施の形態の動作について説明する。
【0109】
まず、平文dとシードSと平文空間D={d_1,...,d_m}と暗号文空間R={r_1,..,r_n}が入力される(m及びnは1を超える自然数)(ステップC1)。
【0110】
暗号化処理制御部301は、平文空間の要素を数字的大小で並べた時の中間の値d_cを求め記憶する。(ステップC2)。
【0111】
暗号化処理制御部301は、Sをシードとしてベータ分布シミュレート部303を動作させ、a=bであるベータ分布に従った試行をシミュレートした結果であるyを生成し、r_{ceil(|R|*y)}をd_cに対する暗号文とする(ステップC3)。
【0112】
暗号化処理制御部301は、d=d_cが成立しているかを調べる(ステップC4)。ステップC4が成立している場合、暗号化処理制御部301は、r_{ceil(|R|*y)}をdの暗号文として出力する(ステップC5)。
【0113】
ステップC4が成立していない場合、暗号化処理制御部301は、d < d_cが成立しているかを調べる(ステップC6)。
【0114】
ステップC6が成立している場合、暗号化処理制御部301は、D= {d_1,…,d_{c-1}}とし、R={r_1,..,r_{ceil(|R|*y)-1}}とし、ステップC2に戻る(ステップC7)。ステップC6が成立していない場合、暗号化処理制御部301は、D= {d_{c+1},…,d_m}とし、R={r_{ceil(|R|*y)+1},..,r_n} とし、ステップC2に戻る(ステップC8)。
【0115】
図6は本発明の第1実施形態に係わる復号装置のブロック図である。復号装置400の構成について、図6を用いて説明を行う。
【0116】
図6を参照すると、復号装置400は、復号処理制御部401と、ベータ分布シミュレート部303を備え、暗号文、シード、平文空間、暗号文空間を入力として、平文を出力する。図11は復号装置400の動作を示すフローチャートである。これを用いて復号装置400の実施の形態の動作について説明する。
【0117】
まず、暗号文rとシードSと平文空間D={d_1,...,d_m}と暗号文空間R={r_1,..,r_n}が入力される(ステップD1)。復号処理制御部401は、平文空間の要素を数字的大小で並べた時の中間の値d_cを求め記憶する(ステップD2)。復号処理制御部401は、Sをシードとしてベータ分布シミュレート部303を動作させ、a=bであるベータ分布に従った試行をシミュレートした結果であるyを生成し、r_e = ceil(|R|*y)をd_cに対する暗号文とする(ステップD3)。
【0118】
復号処理制御部401は、r_e=rが成立しているかを調べる(ステップD4)。ステップD4が成立している場合、復号処理制御部401は、d_c をrの平文として出力する(ステップD5)。
【0119】
ステップD4が成立していない場合、復号処理制御部401は、r_e< rが成立しているかを調べる(ステップD6)。
【0120】
ステップD6が成立している場合、復号処理制御部401は、D= {d_1,…,d_{c-1}}とし、R={r_1,..,r_{e-1}}とし、ステップD2に戻る(ステップD7)。ステップD6が成立していない場合、復号処理制御部401は、D= {d_{c+1},…,d_m}とし、R={r_{e+1},..,r_n} とし、ステップD2に戻る(ステップD8)。
【0121】
次に、一様分布に従う試行のシミュレーション方法を用いた場合の第2の実施形態について説明する。
【0122】
図7は本発明の第2の実施形態に係わる暗号化装置のブロック図である。暗号化装置の構成について、図7を用いて説明を行う。
【0123】
図7を参照すると、暗号化装置310は、暗号化処理制御部301と、 一様分布シミュレート部304 を備え、平文、シード、平文空間、暗号文空間を入力として、暗号文を出力する。
【0124】
図12は、本実施形態の暗号化装置310の実施の形態の動作を示すフローチャートである。これを用いて、暗号化装置310の実施の形態の動作について説明する。
【0125】
まず、平文dとシードSと平文空間D={d_1,...,d_m}と暗号文空間R={r_1,..,r_n}が入力される(ステップE1)。
【0126】
暗号化処理制御部301は、平文空間の要素を数字的大小で並べた時の中間の値d_cを求め記憶する。(ステップE2)。
【0127】
暗号化処理制御部301は、Sをシードとして一様分布シミュレート部304を動作させ、0と1の間の値の一様分布に従った試行をシミュレートした結果であるyを生成し、r_{ceil(|R|*y)}をd_cに対する暗号文とする(ステップE3)。
【0128】
暗号化処理制御部301は、d=d_cが成立しているかを調べる(ステップE4)。ステップE4が成立している場合、暗号化処理制御部301は、r_{ceil(|R|*y)}をdの暗号文として出力する(ステップE5)。
【0129】
ステップE4が成立していない場合、暗号化処理制御部301は、d<d_cが成立しているかを調べる(ステップE6)。
【0130】
ステップE6が成立している場合、暗号化処理制御部301は、D= {d_{c+1},…,d_m}とし、R={r_{ceil(|R|*y)+1},..,r_n}とし、ステップE2に戻る(ステップE7)。ステップE6が成立していない場合、暗号化処理制御部301は、D= {d_1,…,d_{c-1}}とし、R={r_1,..,r_{ceil(|R|*y)-1}}とし、ステップE2に戻る(ステップE8)。
【0131】
図8は本発明の第2の実施形態に係わる復号装置のブロック図である。復号装置410の構成について、図8を用いて説明を行う。
【0132】
図8を参照すると、復号装置410は、復号処理制御部401と、一様分布シミュレート部304を備え、暗号文、シード、平文空間、暗号文空間を入力として、平文を出力する。図13は復号装置410の動作を示すフローチャートである。これを用いて復号装置410の実施の形態の動作について説明する。
【0133】
まず、暗号文rとシードSと平文空間D={d_1,...,d_m}と暗号文空間R={r_1,..,r_n}が入力される(ステップF1)。 復号処理制御部401は、平文空間の要素を数字的大小で並べた時の中間の値d_cを求め記憶する(ステップF2)。復号処理制御部401は、Sをシードとして一様分布シミュレート部304を動作させ、0と1の間の一様分布に従った試行をシミュレートした結果であるyを生成し、r_{ceil(|R|*y)}をd_cに対する暗号文とする(ステップF3)。
【0134】
復号処理制御部401は、r_{ceil(|R|*y)}=rが成立しているかを調べる(ステップF4)。ステップF4が成立している場合、復号処理制御部401は、d_c をrの平文として出力する(ステップF5)。
【0135】
ステップF4が成立していない場合、復号処理制御部401は、r_{ceil(|R|*y)}<rが成立しているかを調べる(ステップF6)。
【0136】
ステップF6が成立している場合、復号処理制御部401は、D= {d_{c+1},…,d_m}とし、R={r_{ceil(|R|*y)+1},..,r_n}とし、ステップF2に戻る(ステップF7)。ステップF6が成立していない場合、復号処理制御部401は、D= {d_1,…,d_{c-1}}とし、R={r_1,..,r_{ceil(|R|*y)-1}}とし、ステップF2に戻る(ステップF8)。
【0137】
上記実施形態の一様分布において、0付近、もしくは1付近が生成されると、各暗号文間の広さが小さくなる可能性がある。暗号文間の広さが小さいと、それらの平文間の差も小さいことが解析できてしまう。
【0138】
これは、a,bが0から1ではなく、0 < a< b < 1であるような区間[a,b]の一様分布を用いることで防ぐことができる。
【0139】
以上説明した、第1及び第2の実施形態の暗号化装置及び復号装置は、ハードウェアで構成することができる。しかし、当該かかる暗号化装置及び復号装置の機能をソフトウェアで実現することができる。図9は、暗号化装置又は復号装置として機能するコンピュータの一構成例を示すブロック図である。
【0140】
図9に示す処理装置10は、CPU11と、CPU11の処理に必要な情報を一時的に記憶する主記憶装置12と、CPU11に 暗号化装置300又は310、復号装置400又は410、としての処理を実行させるためのプログラムが記録された記録媒体13と、平文や、暗号文、鍵情報などが格納されるデータ蓄積装置14と、主記憶装置12、記録媒体13及びデータ蓄積装置14とのデータ転送を制御するメモリ制御インターフェース部15と、入力装置20及び出力装置30とのインターフェース装置であるI/Oインターフェース部16とを有し、それらは バス17を介して接続された構成である。
なお、データ蓄積装置14は、処理装置 10内にある必要はなく、処理装置10から独立して備えていてもよい。
処理装置10は、暗号化装置300又は310、復号装置400又は410、の機能を実現する。
記録媒体13は、磁気ディスク装置、半導体メモリ、光ディスク装置あるいはその他の 記録媒体であってもよい。
【0141】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下の構成には限られない。
【0142】
(付記1)
ベータ分布シミュレート部と、暗号化処理制御部とを備え、入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置であって、
前記暗号化処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記ベータ分布シミュレート部を動作させて、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置。
【0143】
(付記2)
ベータ分布シミュレート部と、復号処理制御部とを備え、入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置であって、
前記復号処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記ベータ分布シミュレート部を動作させて、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置。
【0144】
(付記3)
一様分布シミュレート部と、暗号化処理制御部とを備え、入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置であって、
前記暗号化処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記一様分布シミュレート部を動作させて、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b < 1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置。
【0145】
(付記4)
一様分布シミュレート部と、復号処理制御部とを備え、入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置であって、
前記復号処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記一様分布シミュレート部を動作させて、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b <1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合に、d< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置。
【0146】
(付記5)
入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置の暗号化方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置の暗号化方法。
【0147】
(付記6)
入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置の復号方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置の復号方法。
【0148】
(付記7)
入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置の暗号化方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b < 1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置の暗号化方法。
【0149】
(付記8)
入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置の復号方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b <1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合に、d< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置の復号方法。
【0150】
(付記9)
コンピュータに、
入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する手順を実行させるためのプログラムであって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成する手順と、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定する手順と、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順と、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順とを実行させるためのプログラム。
【0151】
(付記10)
コンピュータに、
入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する手順を実行させるためのプログラムであって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成する手順と、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合にd< d_cが成立しているかを判定する手順と、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順と、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順とを実行させるためのプログラム。
【0152】
(付記11)
コンピュータに、
入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する手順を実行させるためのプログラムであって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b < 1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成する手順と、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定する手順と、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順と、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順とを実行させるためのプログラム。
【0153】
(付記12)
コンピュータに、
入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する手順を実行させるためのプログラムであって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b <1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成する手順と、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合に、d< d_cが成立しているかを判定する手順と、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順と、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る手順とを実行させるためのプログラム。
【産業上の利用可能性】
【0154】
本発明は登録情報が暗号化されているデータベースにおいて範囲検索を行う場合の暗号化装置、暗号化方法、復号装置及び復号方法に適用できる。
【符号の説明】
【0155】
10 処理装置
11 CPU
12 主記憶装置
13 記録媒体
14 データ蓄積装置
15 メモリ制御インターフェース部
16 I/Oインターフェース部
20 入力装置
30 出力装置
100, 300, 310 暗号化装置
101, 301 暗号化処理制御装置
102 負の超幾何分布シミュレート装置
303 ベータ分布シミュレート装置
304 一様分布シミュレート装置
200, 400, 410 復号装置
201, 401 復号処理制御装置

【特許請求の範囲】
【請求項1】
ベータ分布シミュレート部と、暗号化処理制御部とを備え、入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置であって、
前記暗号化処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記ベータ分布シミュレート部を動作させて、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置。
【請求項2】
ベータ分布シミュレート部と、復号処理制御部とを備え、入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置であって、
前記復号処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記ベータ分布シミュレート部を動作させて、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置。
【請求項3】
一様分布シミュレート部と、暗号化処理制御部とを備え、入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置であって、
前記暗号化処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記一様分布シミュレート部を動作させて、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b < 1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置。
【請求項4】
一様分布シミュレート部と、復号処理制御部とを備え、入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置であって、
前記復号処理制御部は、
前記平文空間の中間の値d_cを決定し、前記シードSを用いて前記一様分布シミュレート部を動作させて、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b <1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合に、d< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置。
【請求項5】
入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置の暗号化方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置の暗号化方法。
【請求項6】
入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置の復号方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、ベータ分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= y{a-1}(1-y){b-1}/B(a,b) 0≦a≦1, 0≦b≦1, B (a,b)はベータ関数
a=bであるベータ分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置の復号方法。
【請求項7】
入力された、平文d、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、暗号文を出力する暗号化装置の暗号化方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b < 1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
d=d_cが成立しているかを判定し、成立している場合、r_{ceil(|R|*y)}をd_cに対する暗号文として出力し、成立していない場合にd< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る暗号化装置の暗号化方法。
【請求項8】
入力された、暗号文r、シードS、平文空間D={d_1,...,d_m}、及び暗号文空間R={r_1,..,r_n}に基づいて、平文を出力する復号装置の復号方法であって、
前記平文空間の中間の値d_cを決定し、前記シードSを用い、一様分布に従う試行の確率密度関数を、以下の式で表したときに、
Pr(y)= 1/(b-a) (a≦y≦b)
Pr(y)=0 (y<aまたはb<y)
a, bが0と1の間の値である一様分布又は0< a < b <1を満たすaとbの間の値である一様分布に従う試行をシミュレートした結果であるyを生成し、
r=r_{ceil(|R|*y)}が成立しているかを判定し、成立している場合、d_cを平文として出力し、成立していない場合に、d< d_cが成立しているかを判定し、
d< d_cが成立している場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{1},…,d_{c-1}}、暗号文空間R={r_{1},...,r_{ceil(|R|*y)-1},..,r_n}として、平文空間の中間の値を決定する処理に戻り、
d< d_cが成立していない場合、前記平文空間D={d_1,...,d_m}、及び前記暗号文空間R={r_1,..,r_n}をそれぞれ平文空間D= {d_{c+1},…,d_{m}}、暗号文空間R={r_{ceil(|R|*y)+1},..,r_n}として、平文空間の中間の値を決定する処理に戻る復号装置の復号方法。

【図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


【公開番号】特開2013−33101(P2013−33101A)
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願番号】特願2011−168602(P2011−168602)
【出願日】平成23年8月1日(2011.8.1)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】