JP5274271B2 - 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法 - Google Patents

検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法 Download PDF

Info

Publication number
JP5274271B2
JP5274271B2 JP2009007892A JP2009007892A JP5274271B2 JP 5274271 B2 JP5274271 B2 JP 5274271B2 JP 2009007892 A JP2009007892 A JP 2009007892A JP 2009007892 A JP2009007892 A JP 2009007892A JP 5274271 B2 JP5274271 B2 JP 5274271B2
Authority
JP
Japan
Prior art keywords
search
index
source
integer
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009007892A
Other languages
English (en)
Other versions
JP2010164835A (ja
Inventor
充洋 服部
伊藤  隆
規 松田
健 米田
宏郷 辻
英憲 太田
陽一 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009007892A priority Critical patent/JP5274271B2/ja
Publication of JP2010164835A publication Critical patent/JP2010164835A/ja
Application granted granted Critical
Publication of JP5274271B2 publication Critical patent/JP5274271B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Description

この発明は、暗号化したままの状態で、暗号化した索引を暗号化した検索文により検索する秘匿検索に関する。
秘匿検索とは、大量の暗号化されたデータのなかから欲しいデータを検索する場合において、暗号化されたデータを復号することなく、暗号化されたままの状態で検索をすることである。
秘匿検索には、検索に用いるキーワードをあらかじめ定めて索引キーワードとし、これを暗号化したものに対して、検索キーワードを指定して検索を行い、索引キーワードと検索キーワードとが一致するものを抽出する方式がある。
また、このような特殊な暗号方式を実現するための技術として、代数曲線上のペアリングなどの双線形ペアリング写像を利用する方式がある。
特表2005−500740号公報 特開2007−114494号公報
Dan Boneh、Matthew Franklin著「Identity−Based Encryption from the Weil Pairing」、Crypto 2001、LNCS第2139巻、213〜229ページ、Springer−Verlag、2001年。 Dan Boneh、Giovanni Di Crescenzo、Rafail Ostrovsky、Giuseppe Persiano著「Public Key Encryption with keyword Search」、Eurocrypt 2004、LNCS第3027巻、506〜522ページ、2004年。 Jonathan Katz、Amit Sahai、Brent Waters著「Predicate Encryption Supporting Disjunctions,Polynomial Equations,and Inner Products」、Eurocrypt 2008、LNCS第4965巻、146〜162ページ、2008年。
索引キーワードが複数種類あり、そのうちの一定数以上が、対応する検索キーワードと一致するものを抽出したい場合、索引キーワードが1つの場合における秘匿検索を応用し、抽出された集合に対して集合演算により抽出したいデータの集合を得る方式が考えられる。
しかし、この方式では、どのキーワードが一致したかすべてわかってしまうので、暗号方式としての安全性が低くなる可能性がある。
この発明は、例えば、上記のような課題を解決するためになされたものであり、検索実行時にどのキーワードが一致したかについての情報をできるだけ隠蔽することにより、暗号方式としての安全性を高めることを目的とする。
この発明にかかる検索システムは、
索引暗号化装置と、検索暗号化装置と、検索装置とを有し、
上記索引暗号化装置は、データを記憶する記憶装置と、データを処理する処理装置と、索引記憶部と、索引暗号化部とを有し、
上記索引記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数(nは1以上の整数。)に対応するn個の索引データを記憶し、
上記索引暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記索引記憶部が記憶した索引データを暗号化して、n個の暗号化索引データとし、
上記検索暗号化装置は、データを記憶する記憶装置と、データを処理する処理装置と、検索記憶部と、多項式値算出部と、検索暗号化部とを有し、
上記検索記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数に対応するn個の検索データを記憶し、
上記多項式値算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、(d−1)次の一変数多項式(dは1以上n以下の整数。)に上記整数を代入した値を算出して、n個の多項式値とし、
上記検索暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記検索記憶部が記憶した検索データと、上記多項式値算出部が算出した多項式値との組を暗号化して、n個の暗号化検索データとし、
上記検索装置は、データを処理する処理装置と、データを記憶する記憶装置と、暗号化索引記憶部と、暗号化検索記憶部と、判定対象選択部と、補間係数値算出部と、写像算出部と、比較算出部と、判定部とを有し、
上記暗号化索引記憶部は、上記記憶装置を用いて、上記索引暗号化装置が暗号化したn個の暗号化索引データを記憶し、
上記暗号化検索記憶部は、上記記憶装置を用いて、上記検索暗号化装置が暗号化したn個の暗号化検索データを記憶し、
上記判定対象選択部は、上記処理装置を用いて、1以上n以下のn個の整数のなかからd個の整数を選択して、d個の判定対象整数とし、
上記補間係数値算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数に基づいて、ラグランジュの補間係数の値を算出して、d個の補間係数値とし、
上記写像算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記暗号化索引記憶部が記憶した暗号化索引データと、上記暗号化検索記憶部が記憶した暗号化検索データと、上記補間係数値算出部が算出した補間係数値との組を写像して、d個の写像データとし、
上記比較算出部は、上記処理装置を用いて、上記写像算出部が写像したd個の写像データに基づいて、比較データを算出し、
上記判定部は、上記処理装置を用いて、上記比較算出部が算出した比較データに基づいて、上記判定対象選択部が選択したd個の判定対象整数について、上記索引データと、上記検索データとが一致するか否かを判定することを特徴とする。
この発明にかかる検索システムによれば、(d−1)次の一変数多項式の値を用いて、検索データを暗号化し、ラグランジュの補間係数の値を用いて、検索を実行するので、n個のデータのうちd個以上が一致する場合に、一致することを検索装置が判定でき、d個未満しか一致しない場合には、いずれのデータが一致したかを検索装置が知ることができない。これにより、索引データや検索データに関する情報の漏洩を防ぐことができる。
実施の形態1における検索システム800の全体構成の一例を示すシステム構成図。 実施の形態1における復号装置810、暗号化装置820、サーバ装置830の外観の一例を示す斜視図。 実施の形態1における復号装置810、暗号化装置820、サーバ装置830のハードウェア資源の一例を示す図。 実施の形態1における設定装置100の構成の一例を示すブロック構成図。 実施の形態1における検索暗号化装置300の構成の一例を示すブロック構成図。 実施の形態1における索引暗号化装置200の構成の一例を示すブロック構成図。 実施の形態1における検索装置400の構成の一例を示すブロック構成図。 実施の形態1におけるデータ暗号化装置840、暗号化データ記憶装置850、データ復号装置860の構成の一例を示すブロック構成図。 実施の形態1における設定処理S610の流れの一例を示すフローチャート図。 実施の形態1における索引暗号化処理S630の流れの一例を示すフローチャート図。 実施の形態1における検索暗号化処理S650の流れの一例を示すフローチャート図。 実施の形態1における検索実行処理S670の流れの一例を示すフローチャート図。 実施の形態2における設定装置100の構成の一例を示すブロック構成図。 実施の形態2における検索暗号化装置300の構成の一例を示すブロック構成図。 実施の形態2における索引暗号化装置200の構成の一例を示すブロック構成図。 実施の形態2における検索装置400の構成の一例を示すブロック構成図。 実施の形態2における設定処理S610の流れの一例を示すフローチャート図。 実施の形態2における索引暗号化処理S630の流れの一例を示すフローチャート図。 実施の形態2における検索暗号化処理S650の流れの一例を示すフローチャート図。 実施の形態2における検索実行処理S670の流れの一例を示すフローチャート図。
実施の形態1.
実施の形態1について、図1〜図12を用いて説明する。
図1は、この実施の形態における検索システム800の全体構成の一例を示すシステム構成図である。
検索システム800は、復号装置810、暗号化装置820、サーバ装置830を有する。
暗号化装置820は、データ本体(平文データ)とデータ本体をキーワード検索するための索引とを暗号化して、サーバ装置830に送る。サーバ装置830は、暗号化装置820から送られたデータ本体や索引を復号することができない。サーバ装置830は、暗号化されたデータ本体と索引とを、暗号化されたまま蓄積する。復号装置810は、キーワード検索を実行するための検索文を暗号化して、サーバ装置830に送る。サーバ装置830は、復号装置810から送られた検索文を復号することができない。サーバ装置830は、暗号化されたままの検索文により、暗号化されたまま蓄積した索引を検索し、ヒットしたか否かを判定して、検索結果を返す。サーバ装置830は、復号装置810からの要求により、検索にヒットした索引に対応するデータ本体を復号装置810に送る。復号装置810は、サーバ装置830から送られたデータ本体を復号して、復号したデータ本体を取得する。
データ本体は、例えば、指紋・光彩・静脈などの生体情報を表わす画像データ、電子メール、その他のデータベースの各レコードなどである。
1つのデータ本体に対して、所定の数(以下「索引数n」と呼ぶ。)の索引が付けられる。例えば、画像データに対しては、位置や大きさなどを正規化した上で各ピクセルの値を索引とする。電子メールに対しては、差出人や日付などを索引とする。データベースに対しては、各フィールドのデータを索引とする。
検索条件は、閾値dと、各索引に対応するデータとを指定する。各索引の内容と、その索引に対して指定したデータとが一致する数が閾値d以上である場合に、ヒットしたと判定される。例えば、画像データであれば、閾値として指定した数以上のピクセルの値が一致するものがヒットするので、類似する画像を検索することができる。
なお、指定したデータが異なる位置の索引と一致しても、それは一致したものとは数えない。例えば、電子メールの差出人を検索するために指定したデータが、電子メールの送信先と一致しても、一致したとは数えない。
復号装置810は、設定装置100、検索暗号化装置300、データ復号装置860を有する。
設定装置100は、索引や検索文を暗号化したり、検索したりするために必要なパラメータを設定する。設定装置100は、設定したパラメータの一部(以下「公開パラメータ」と呼ぶ。)を、検索システム800内で公開し、他の一部(以下「秘密パラメータ」と呼ぶ。)を、検索暗号化装置300に対して秘密裡に通知する。
検索暗号化装置300は、設定装置100が設定した秘密パラメータ(秘密情報)を秘密裡に保持する。検索暗号化装置300は、検索条件を入力し、秘密パラメータや公開パラメータ(公開情報)を用いて、検索文を暗号化する。暗号化された検索文(以下「暗号化検索データ」と呼ぶ。)は、サーバ装置830に対して通知される。
データ復号装置860は、サーバ装置830から通知されたデータ本体を復号する。
暗号化装置820は、索引暗号化装置200、データ暗号化装置840を有する。
索引暗号化装置200は、設定装置100が設定した公開パラメータを用いて、索引を暗号化する。
データ暗号化装置840は、データ本体を暗号化する。なお、データ暗号化装置840がデータ本体を暗号化し、データ復号装置860が復号する暗号方式は、既存の公開鍵暗号方式や共通鍵暗号方式などであってもよい。
暗号化された索引(以下「暗号化索引データ」と呼ぶ。)と暗号化されたデータ本体とは組として、サーバ装置830に対して通知される。
サーバ装置830は、検索装置400、暗号化データ記憶装置850を有する。
検索装置400は、暗号化装置820から通知された暗号化索引データを蓄積し、復号装置810から通知された暗号化検索データにより、検索を実行する。
暗号化データ記憶装置850は、暗号化装置820から通知されたデータ本体を暗号化されたまま蓄積する。
なお、復号装置810・暗号化装置820・サーバ装置830の数は、1つに限らず、2つ以上であってもよい。復号装置810が複数ある場合、暗号化装置820は、各復号装置810について設定されたパラメータを用いて、索引データを暗号化する。したがって、1つの索引データに対して、復号装置810の数と等しい数の暗号化索引データを生成する。また、サーバ装置830は、各復号装置810について暗号化装置820が生成した暗号化索引データを蓄積し、各復号装置810からの要求にしたがって、その復号装置810について蓄積した暗号化検索データにより、検索を実行する。
図2は、この実施の形態における復号装置810、暗号化装置820、サーバ装置830の外観の一例を示す斜視図である。
復号装置810、暗号化装置820、サーバ装置830は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
図3は、この実施の形態における復号装置810、暗号化装置820、サーバ装置830のハードウェア資源の一例を示す図である。
復号装置810、暗号化装置820、サーバ装置830は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図4は、この実施の形態における設定装置100の構成の一例を示すブロック構成図である。
設定装置100は、設定記憶部110、ペアリング値算出部121、秘密生成部130、公開算出部140、公開出力部150を有する。
設定記憶部110は、磁気ディスク装置920を用いて、あらかじめ、検索システム800の基本設定を表わすパラメータを記憶している。設定記憶部110が記憶するパラメータは、あらかじめ定められているものであってもよいし、設定装置100が設定したものであってもよい。
検索システム800は、群を用いて、暗号演算を行う。検索システム800が暗号演算に用いる群は、CPU911を用いて、群演算を計算可能な群であり、例えば、代数曲線上の点がなす群である。以下では、群演算を乗法的に記述する。例えば、群演算による元aと元bとの結合を「積」と呼び「a・b」あるいは「ab」と記述する。また、元aの逆元を「1/a」と記述し、元aと元bの逆元1/bとの積を「商」と呼び「a/b」と記述する。また、m個の元aの積を「累乗」と呼び「a」あるいは「a^m」と記述する。すなわち、「a=a・a」「a=a・a・a」「a=a・a・…・a(m個)」である。
検索システム800では、三つの群G,G,Gを暗号演算に用いる。三つの群G,G,Gはいずれも、離散対数問題を解くことが困難な群である。なお、群Gと群Gとは、同一の群であってもよい。三つの群G,G,Gの位数は、いずれも素数pである。群Gの元と群Gの元との組を群Gの元へ写すペアリング写像e:G×G→Gが定義されていて、CPU911を用いて、計算可能である。群Gの元gと群Gの元hとの組をペアリング写像eで写した群Gの元を「e(g,h)」と記述する。ペアリング写像eは、双線形であり、非縮退である。すなわち、群Gの任意の元g、群Gの任意の元h、任意の整数a,bについて、次の式が成立する(双線形性)。
Figure 0005274271
また、元gが群Gの単位元でなく、かつ、元hが群Gの単位元でなければ、e(g,h)は、群Gの単位元ではない(非縮退性)。
また、以下の説明において、整数の演算は、特に断わりのない限り、pを法とする剰余類からなる有限体Zにおける四則演算による。すなわち、加算・減算・乗算は、通常の整数の加算・減算・乗算の結果をpで割った余りを求めることにより演算し、除算は、除数の逆数(除数との乗算の結果が1になる整数)を乗ずることにより演算する。
設定装置100は、あらかじめ定められた群G〜G、ペアリング写像eなどを用いる構成であってもよいし、安全性の程度を定める指標であるセキュリティパラメータkを入力して、入力したセキュリティパラメータkに基づいて、暗号演算に用いる群G〜G、ペアリング写像eなどを定義する構成であってもよい。その場合、設定装置100は、定義した群G〜G、ペアリング写像eなど公開パラメータの一部として公開する。
設定記憶部110は、第一生成元記憶部111、第二生成元記憶部112、第三生成元記憶部113、索引数記憶部115を有する。
第一生成元記憶部111は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。第二生成元記憶部112は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。第三生成元記憶部113は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。索引数記憶部115は、磁気ディスク装置920を用いて、索引数nを記憶する。なお、索引数nは、1以上の整数である。
なお、設定装置100は、索引数入力部を有する構成であってもよい。その場合、索引数入力部は索引数を入力し、索引数記憶部115は、索引数入力部が入力した索引数を記憶する。
ペアリング値算出部121は、CPU911を用いて、第一生成元記憶部111が記憶した生成元gと、第二生成元記憶部112が記憶した生成元gとを入力する。ペアリング値算出部121は、CPU911を用いて、生成元gと生成元gとの組をペアリング写像eにより写像した元e(g,g)を算出する。ペアリング値算出部121は、CPU911を用いて、算出した元を、群Gの生成元gとして出力する。第三生成元記憶部113は、CPU911を用いて、ペアリング値算出部121が出力した群Gの生成元gを入力し、磁気ディスク装置920を用いて、記憶する。
秘密生成部130は、CPU911を用いて、秘密パラメータを生成する。秘密生成部130は、秘密整数生成部131、秘密乱数生成部132を有する。
秘密整数生成部131は、CPU911を用いて、1以上p未満の整数をランダムに生成する。秘密整数生成部131は、CPU911を用いて、生成した整数を秘密整数yとして出力する。
秘密乱数生成部132は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、1以上p未満の整数を1つずつランダムに生成する。秘密乱数生成部132は、CPU911を用いて、生成したn個の整数を秘密乱数u(iは1以上n以下の整数。)として出力する。
公開算出部140は、CPU911を用いて、公開パラメータを算出する。公開算出部140は、公開元算出部141、公開乱数元算出部142を有する。
公開元算出部141は、CPU911を用いて、第三生成元記憶部113が記憶した群Gの生成元gと、秘密整数生成部131が出力した秘密整数yとを入力する。公開元算出部141は、CPU911を用いて、入力した生成元gと秘密整数yとに基づいて、元gのy乗である群Gの元g を算出する。公開元算出部141は、CPU911を用いて、算出した元を、公開元Yとして出力する。
公開乱数元算出部142は、CPU911を用いて、第一生成元記憶部111が記憶した群Gの生成元gと、秘密乱数生成部132が出力したn個の秘密乱数uとを入力する。公開乱数元算出部142は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、生成元gと、対応する秘密乱数uとに基づいて、元gのu乗である群Gの元[g^u]を算出する。公開乱数元算出部142は、CPU911を用いて、算出したn個の元を公開乱数元U(iは1以上n以下の整数。)として出力する。
公開出力部150は、公開算出部140が算出した公開パラメータを公開する。公開出力部150は、公開元出力部151、公開乱数元出力部152を有する。
公開元出力部151は、CPU911を用いて、公開元算出部141が出力した公開元Yを入力する。公開元出力部151は、CPU911を用いて、入力した公開元Yを外部に出力する。
公開乱数元出力部152は、CPU911を用いて、公開乱数元算出部142が出力したn個の公開乱数元Uを入力する。公開乱数元出力部152は、CPU911を用いて、入力したn個の公開乱数元Uを外部に出力する。
群G及び群Gは、離散対数問題を解くことが困難な群であるから、公開元Y及び公開乱数元Uを公開しても、秘密整数y及び秘密乱数uを第三者が知ることはできない。
図5は、この実施の形態における検索暗号化装置300の構成の一例を示すブロック構成図である。
検索暗号化装置300は、設定記憶部310、秘密記憶部320、検索条件入力部330、閾値記憶部341、多項式係数生成部342、多項式係数記憶部343、多項式値算出部344、検索変換部352、検索整数記憶部353、検索元算出部360、暗号化検索出力部370を有する。
設定記憶部310は、磁気ディスク装置920を用いて、検索システム800の基本設定や設定装置100が公開した公開パラメータなどを記憶する。設定記憶部310は、第二生成元記憶部312、索引数記憶部315を有する。
第二生成元記憶部312は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。索引数記憶部315は、磁気ディスク装置920を用いて、索引数nを記憶する。
秘密記憶部320は、耐タンパ性のある記憶装置を用いて、設定装置100が設定した秘密パラメータを記憶する。秘密記憶部320は、秘密整数記憶部321、秘密乱数記憶部323を有する。
秘密整数記憶部321は、耐タンパ性のある記憶装置を用いて、設定装置100が生成した秘密整数yを記憶する。秘密乱数記憶部323は、耐タンパ性のある記憶装置を用いて、設定装置100が生成したn個の秘密乱数uを記憶する。
検索条件入力部330は、キーボード902などの入力装置を用いて、検索条件を入力する。検索条件入力部330は、閾値入力部331、検索入力部332を有する。
閾値入力部331は、キーボード902などの入力装置を用いて、閾値dを入力する。閾値入力部331は、CPU911を用いて、入力した閾値dを出力する。
検索入力部332は、キーボード902などの入力装置を用いて、1以上n以下のn個の整数それぞれについて、任意の長さの文字列を入力する。検索入力部332は、CPU911を用いて、入力したn個の文字列を検索文字列ω(iは1以上n以下の整数。)として出力する。
検索入力部332が入力する検索文字列ωに対応する整数iは、一致判定をする索引の番号に対応している。例えば、1番目の索引が「氏名」、2番目の索引が「性別」、3番目の索引が「年齢」を表わす場合、検索入力部332は、1番目の検索文字列ωとして利用者が検索したい「氏名」を入力し、2番目の検索文字列ωとして利用者が検索したい「性別」を入力し、3番目の検索文字列ωとして利用者が検索したい「年齢」を入力する。
なお、ある番号の索引を検索の対象としない場合には、検索入力部332は、その整数についての検索文字列ωを入力しない。上記の例において、「性別」を不問としたい場合には、検索入力部332は、2番目の検索文字列ωを入力しない。その場合、その番号の索引が検索文字列と一致することはないので、閾値入力部331は、閾値dとして1つ少ない閾値を入力する。
閾値記憶部341は、CPU911を用いて、閾値入力部331が出力した閾値dを入力する。閾値記憶部341は、磁気ディスク装置920を用いて、入力した閾値dを記憶する。
多項式係数生成部342は、CPU911を用いて、閾値記憶部341が記憶した閾値dに基づいて、1以上(d−2)以下の(d−2)個の整数それぞれについて、0以上p未満の整数を1つずつランダムに生成する。多項式係数生成部342は、CPU911を用いて、整数(d−1)について、1以上p未満の整数をランダムに生成する。多項式係数生成部342は、生成した(d−1)個の整数を多項式係数a(jは1以上(d−1)以下の整数。)として出力する。
多項式係数記憶部343は、CPU911を用いて、多項式係数生成部342が出力した(d−1)個の多項式係数aを入力する。多項式係数記憶部343は、RAM914を用いて、入力した(d−1)個の多項式係数aを記憶する。
多項式値算出部344は、CPU911を用いて、多項式係数記憶部343が記憶した(d−1)個の多項式係数aと、秘密整数記憶部321が記憶した秘密整数yとを入力する。多項式値算出部344は、CPU911を用いて、入力した(d−1)個の多項式係数aと、秘密整数yとに基づいて、多項式係数aをj次の項の係数とし、秘密整数yを定数項とする多項式f(x)=Σ(a・x)+yについて、xに1以上n以下のn個の整数それぞれを代入した値を算出する。多項式値算出部344は、CPU911を用いて、算出したn個の値を多項式値f(i)(iは1以上n以下の整数。)として出力する。
具体的には、多項式値算出部344は、CPU911を用いて、1以上d−1以下の(d−1)個の整数jそれぞれについて、整数iのj乗を算出し、算出した整数iと、多項式係数aとの積(a・i)を算出する。多項式値算出部344は、CPU911を用いて、算出した(d−1)個の積(a・i)と、秘密整数yとの総和[Σ(a・i)+y]を算出して、多項式値f(i)とする。多項式値算出部344は、これを1以上n以下のn個の整数iについて繰り返す。
検索変換部352は、CPU911を用いて、検索入力部332が出力したn個の検索文字列ωを入力する。検索変換部352は、CPU911を用いて、入力したn個の検索文字列ωそれぞれについて、所定の写像Hにより、検索文字列ωを写像した整数を算出する。検索変換部352は、CPU911を用いて、算出したn個の整数を検索整数η(iは1以上n以下の整数。)として出力する。
写像Hは、任意の長さの文字列を1以上p未満の整数に写す写像である。写像Hは、衝突耐性を有する。すなわち、任意の二つの文字列について、写像Hにより写した整数が等しくなる確率が極めて低い。例えば、検索変換部352は、写像Hとして、ハッシュ関数を用いる。あるいは、検索変換部352は、ハッシュ関数に、検索文字列ωの番号である整数iと検索文字列ωとを結合した文字列[i‖ω]を入力する構成であってもよいし、ハッシュ関数の出力の逆数や、ハッシュ関数の出力の定数倍などを、写像Hにより写した整数とする構成であってもよい。
なお、検索入力部332が、ある整数についての検索文字列ωを入力しなかった場合、検索変換部352は、その整数について、1以上p未満の整数をランダムに生成して、検索整数ηとする。
検索整数記憶部353(検索記憶部)は、CPU911を用いて、検索変換部352が出力したn個の検索整数ηを入力する。検索整数記憶部353は、磁気ディスク装置920を用いて、入力したn個の検索整数η(検索データ)を記憶する。
検索元算出部360は、CPU911を用いて、n個の検索元T(iは1以上n以下の整数。)を算出する。検索元Tは、検索整数ηを暗号化したものであり、暗号化検索データの一部である。検索元算出部360は、指数算出部361、累乗部366を有する。
指数算出部361は、CPU911を用いて、秘密乱数記憶部323が記憶したn個の秘密乱数uと、多項式値算出部344が出力したn個の多項式値f(i)と、検索整数記憶部353が記憶したn個の検索整数ηとを入力する。指数算出部361は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する秘密乱数uと、対応する多項式値f(i)と、対応する検索整数ηとに基づいて、秘密乱数uと検索整数ηとの積で、多項式値f(i)を割った商f(i)/(u・η)(iは1以上n以下の整数。)を算出する。指数算出部361は、CPU911を用いて、算出したn個の商を出力する。
累乗部366は、CPU911を用いて、第二生成元記憶部312が記憶した群Gの生成元gと、指数算出部361が出力したn個の商f(i)/(u・η)とを入力する。累乗部366は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、生成元gと、対応する商f(i)/(u・η)とに基づいて、元gのf(i)/(u・η)乗である群Gの元を算出する。累乗部366は、CPU911を用いて、算出したn個の元を検索元Tとして出力する。
暗号化検索出力部370は、CPU911を用いて、暗号化検索データを外部に出力する。暗号化検索出力部370は、閾値出力部371、検索元出力部372を有する。
閾値出力部371は、CPU911を用いて、閾値記憶部341が記憶した閾値dを入力する。閾値出力部371は、CPU911を用いて、入力した閾値dを外部に出力する。
検索元出力部372は、CPU911を用いて、累乗部366が出力したn個の検索元Tを入力する。検索元出力部372は、CPU911を用いて、入力したn個の検索元Tを外部に出力する。
なお、暗号化検索出力部370は、閾値出力部371が出力する閾値dを表わすデータと、検索元出力部372が出力するn個の検索元Tを表わすデータとを1つに結合し、暗号化検索データ(検索文)として出力する構成であってもよい。
図6は、この実施の形態における索引暗号化装置200の構成の一例を示すブロック構成図である。
索引暗号化装置200は、設定記憶部210、索引入力部221、索引変換部223、索引整数記憶部224、索引乱数生成部230、判定元算出部240、索引元算出部250、暗号化索引出力部260を有する。
設定記憶部210は、検索システム800の基本設定や設定装置100が公開した公開パラメータを記憶する。設定記憶部210は、索引数記憶部215、公開元記憶部216、公開乱数元記憶部217を有する。
索引数記憶部215は、磁気ディスク装置920を用いて、索引数nを記憶する。公開元記憶部216は、磁気ディスク装置920を用いて、設定装置100が設定した公開元Yを記憶する。公開乱数元記憶部217は、磁気ディスク装置920を用いて、設定装置100が設定したn個の公開乱数元Uを記憶する。
索引入力部221は、キーボード902などの入力装置を用いて、1以上n以下のn個の整数それぞれについて、任意の長さの文字列(キーワード)を入力する。索引入力部221は、CPU911を用いて、入力したn個の文字列を索引文字列w(iは1以上n以下の整数。)として出力する。
索引変換部223は、CPU911を用いて、索引入力部221が記憶したn個の索引文字列wを入力する。索引変換部223は、CPU911を用いて、入力したn個の索引文字列wそれぞれについて、写像Hにより、索引文字列wを写像した整数を算出する。索引変換部223は、CPU911を用いて、算出したn個の整数を索引整数h(iは1以上n以下の整数。)として出力する。
写像Hは、検索変換部352が用いる写像と同じ写像であり、衝突耐性を有する。したがって、索引文字列wと検索文字列ωとが一致する場合、索引整数hと検索整数ηとは等しく、索引文字列wと検索文字列ωとが一致しない場合、索引整数hと検索整数ηとは等しくない。
索引整数記憶部224(索引記憶部)は、CPU911を用いて、索引変換部223が出力したn個の索引整数hを入力する。索引整数記憶部224は、磁気ディスク装置920を用いて、入力したn個の索引整数h(索引データ)を記憶する。
なお、一部あるいはすべてのデータ本体に対する索引として、n個未満の索引文字列を指定することとしてもよい。その場合、索引入力部221は、索引文字列を指定しない整数についての索引文字列wを入力せず、索引変換部223が、0以上p未満の整数をランダムに生成して索引整数hとし、索引整数記憶部224が記憶する。
索引乱数生成部230は、CPU911を用いて、1以上p未満の整数をランダムに生成する。索引乱数生成部230は、CPU911を用いて、生成した整数を索引乱数sとして出力する。
判定元算出部240は、CPU911を用いて、判定元E’を算出する。判定元E’は、索引乱数sを暗号化したものであり、暗号化索引データの一部である。判定元算出部240は、累乗部242を有する。
累乗部242は、CPU911を用いて、公開元記憶部216が記憶した公開元Yと、索引乱数生成部230が出力した索引乱数sとを入力する。累乗部242は、CPU911を用いて、入力した公開元Yと索引乱数sとに基づいて、元Yのs乗である群Gの元Yを算出する。累乗部242は、CPU911を用いて、算出した元Yを判定元E’として出力する。
ここで、公開元Yは、元gのy乗であるから、判定元E’は、元gの(s・y)乗である。
索引元算出部250は、CPU911を用いて、n個の索引元E(iは1以上n以下の整数。)を算出する。索引元Eは、索引整数hを暗号化したものであり、暗号化索引データの一部である。索引元算出部250は、指数算出部251、累乗部253を有する。
指数算出部251は、CPU911を用いて、索引整数記憶部224が記憶したn個の索引整数hと、索引乱数生成部230が出力した索引乱数sとを入力する。指数算出部251は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、索引乱数sと、対応する索引整数hとに基づいて、索引乱数sと索引整数hとの積s・hを算出する。指数算出部251は、CPU911を用いて、算出したn個の積s・hを出力する。
累乗部253は、CPU911を用いて、公開乱数元記憶部217が記憶したn個の公開乱数元Uと、指数算出部251が出力したn個の積s・hとを入力する。累乗部253は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する公開乱数元Uと、対応する積s・hとに基づいて、元Uの(s・h)乗である群Gの元を算出する。累乗部253は、CPU911を用いて、算出したn個の元を索引元Eとして出力する。
ここで、公開乱数元Uは、元gのu乗であるから、索引元Eは、元gの(s・h・u)乗である。
暗号化索引出力部260は、CPU911を用いて、暗号化索引データを外部に出力する。暗号化索引出力部260は、索引元出力部261、判定元出力部262を有する。
索引元出力部261は、CPU911を用いて、累乗部253が出力したn個の索引元Eを入力する。索引元出力部261は、CPU911を用いて、入力したn個の索引元Eを外部に出力する。
判定元出力部262は、CPU911を用いて、累乗部242が出力した判定元E’を入力する。判定元出力部262は、CPU911を用いて、入力した判定元E’を外部に出力する。
なお、暗号化索引出力部260は、索引元出力部261が出力するn個の索引元Eを表わすデータと、判定元出力部262が出力する判定元E’を表わすデータとを1つに結合し、暗号化索引データ(キーワード暗号文)として出力する構成であってもよい。
図7は、この実施の形態における検索装置400の構成の一例を示すブロック構成図である。
検索装置400は、索引数記憶部415、暗号化索引記憶部420、暗号化検索記憶部430、判定対象選択部441、補間係数値算出部442、写像元算出部450、比較元算出部460、判定部470を有する。
索引数記憶部415は、磁気ディスク装置920を用いて、索引数nを記憶する。
暗号化索引記憶部420は、磁気ディスク装置920を用いて、索引暗号化装置200が出力した暗号化索引データを記憶する。暗号化索引記憶部420は、1つのデータ本体に対して1つずつの暗号化索引データを記憶する。暗号化索引記憶部420は、索引元記憶部421、判定元記憶部422を有する。
索引元記憶部421は、磁気ディスク装置920を用いて、1つの暗号化索引データについてn個ずつの索引元Eを記憶する。判定元記憶部422は、磁気ディスク装置920を用いて、1つの暗号化索引データについて1つずつの判定元E’を記憶する。
暗号化検索記憶部430は、磁気ディスク装置920を用いて、検索暗号化装置300が出力した暗号化検索データを記憶する。暗号化検索記憶部430は、閾値記憶部431、検索元記憶部432を有する。
閾値記憶部431は、磁気ディスク装置920を用いて、閾値dを記憶する。検索元記憶部432は、磁気ディスク装置920を用いて、n個の検索元Tを記憶する。
判定対象選択部441は、CPU911を用いて、1以上n以下のn個の整数からなる集合の部分集合であり、d個の整数からなる集合Sを選択する。
判定対象選択部441は、CPU911を用いて、閾値記憶部431が記憶した閾値dを入力する。判定対象選択部441は、CPU911を用いて、1以上n以下のn個の整数のなかから、d個の整数を選択する。判定対象選択部441は、CPU911を用いて、選択したd個の整数(集合S)を出力する。
補間係数値算出部442は、CPU911を用いて、ラグランジュの補間係数の値を算出する。ラグランジュの補間係数は、次の式により定義される。
Figure 0005274271
集合Sはd個の元からなるので、ラグランジュの補間係数は変数xについて(d−1)次の多項式である。
補間係数値算出部442は、ラグランジュの補間係数の変数xに0を代入したときの値Δi,S(0)を算出する。
補間係数値算出部442は、CPU911を用いて、判定対象選択部441が出力したd個の整数を入力する。補間係数値算出部442は、CPU911を用いて、入力したd個の整数それぞれについて、ラグランジュの補間係数の値を算出する。補間係数値算出部442は、CPU911を用いて、算出したd個のラグランジュの補間係数の値を補間係数値Δi,Sとして出力する。
具体的には、判定対象選択部441が選択したd個の整数のうち、補間係数値を求める対象である整数を対象整数iとし、対象整数i以外の(d−1)個の整数を対象外整数jとすると、補間係数値算出部442は、CPU911を用いて、(d−1)個の対象外整数jそれぞれについて、対象外整数jから対象整数iを差し引いた差(j−i)を算出し、算出した差(j−i)で対象外整数jを割った商[j/(j−i)]を算出する。補間係数値算出部442は、CPU911を用いて、算出した(d−1)個の商[j/(j−i)]すべての総積Π[j/(j−i)]を算出して、補間係数値Δi,Sとする。
写像元算出部450(写像算出部)は、CPU911を用いて、d個の写像元e’(写像データ)を算出する。写像元算出部450は、ペアリング値算出部451、累乗部455を有する。
ペアリング値算出部451は、CPU911を用いて、検索条件に合うか否かを判定する対象である索引について索引元記憶部421が記憶したn個の索引元Eと、検索元記憶部432が記憶したn個の検索元Tとを入力する。ペアリング値算出部451は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する索引元Eと、対応する検索元Tとに基づいて、索引元Eと検索元Tとの組をペアリング写像eにより写像した群Gの元e(E,T)を算出する。ペアリング値算出部451は、CPU911を用いて、算出したn個の元e(E,T)をペアリング値e(iは1以上n以下の整数。)として出力する。
ここで、索引元Eは、元gの(s・h・u)乗であり、検索元Tは、元gの[f(i)/(u・η)]乗であるから、ペアリング値eは、元gの[f(i)・s・h/η]乗である。
累乗部455は、CPU911を用いて、補間係数値算出部442が出力したd個の補間係数値Δi,Sと、ペアリング値算出部451が出力したn個のペアリング値eのうちd個の補間係数値Δi,Sに対応する(すなわち、判定対象選択部441が選択したd個の整数に対応する)d個のペアリング値eとを入力する。累乗部455は、判定対象選択部441が選択したd個の整数それぞれについて、対応する補間係数値Δi,Sと、対応するペアリング値eとに基づいて、ペアリング値eのΔi,S乗である群Gの元を算出する。累乗部455は、CPU911を用いて、算出したd個の元を写像元e’として出力する。
比較元算出部460(比較算出部)は、CPU911を用いて、比較元B(比較データ)を算出する。比較元算出部460は、総積部461を有する。
総積部461は、CPU911を用いて、累乗部455が出力したd個の写像元e’を入力する。総積部461は、CPU911を用いて、入力したd個の元e’すべての総積Π[e’]を算出する。総積部461は、CPU911を用いて、算出した総積Π[e’]を比較元Bとして出力する。
ここで、比較元Bは、
Figure 0005274271
である。
判定部470は、CPU911を用いて、検索条件に合うか否かを判定する対象である索引について判定元記憶部422が記憶した判定元E’と、総積部461が出力した比較元Bとを入力する。判定部470は、入力した判定元E’と比較元Bとを比較し、一致する場合に、その索引が検索条件に合うと判定する。判定部470は、CPU911を用いて、判定した結果を検索結果として出力する。
ここで、
Figure 0005274271
とおく。ラグランジュの補間係数Δi,S(x)は、定義より明らかに、x=iのとき1、x∈Sかつx≠iのとき0である。したがって、x∈Sのとき、φ(x)=f(x)である。φ(x)及びf(x)は、xについての(d−1)次多項式であり、d個のxについてφ(x)=f(x)であるから、φ(x)≡f(x)である。したがって、
Figure 0005274271
である。
すべてのi∈Sについて、h=ηである場合、比較元Bは、
Figure 0005274271
であるから、比較元Bは、判定元E’と一致する。
一方、いずれかのi∈Sについて、h≠ηである場合、B=E’となる確率は、極めて低い。例えば、i∈S’(S’はSの部分集合であり空集合でない。)について、h≠ηであり、それ以外のi∈Sについて、h=ηだとすると、
Figure 0005274271
であるから、B=E’となるのは、
Figure 0005274271
の場合のみである。この値は、0以上p未満のランダムな値をとるから、0になる確率は1/pである。pは通常大きな数であるから、この確率は、極めて低い。
図8は、この実施の形態におけるデータ暗号化装置840、暗号化データ記憶装置850、データ復号装置860の構成の一例を示すブロック構成図である。
データ暗号化装置840は、本体記憶部841、暗号化鍵記憶部842、本体暗号化部843を有する。
本体記憶部841は、磁気ディスク装置920を用いて、データ本体(平文データ)を記憶する。
暗号化鍵記憶部842は、磁気ディスク装置920を用いて、データ本体の暗号化に用いる暗号化鍵を記憶する。
本体暗号化部843は、CPU911を用いて、本体記憶部841が記憶したデータ本体と、暗号化鍵記憶部842が記憶した暗号化鍵とを入力する。本体暗号化部843は、CPU911を用いて、入力した暗号化鍵により、入力したデータ本体を暗号化する。本体暗号化部843は、CPU911を用いて、暗号化したデータ本体を暗号化データ本体として出力する。
本体暗号化部843が用いる暗号方式は、例えばRSA暗号など一般的な公開鍵暗号方式であってもよいし、例えばAES暗号など一般的な共通鍵暗号方式であってもよいし、IDベース暗号などの暗号方式であってもよい。あるいは、本体暗号化部843は、ランダムに生成した共通鍵を用いて共通鍵暗号方式でデータ本体を暗号化した上で、暗号化鍵記憶部842が記憶した暗号化鍵を用いて公開鍵暗号方式などの暗号方式で共通鍵を暗号化し、暗号化したデータ本体と暗号化した共通鍵とを結合したものを暗号化データ本体とする構成としてもよい。
暗号化データ記憶装置850は、暗号化本体記憶部851、検索結果入力部852、検索本体出力部853を有する。
暗号化本体記憶部851は、磁気ディスク装置920を用いて、データ暗号化装置840が出力した暗号化データ本体を記憶する。
検索結果入力部852は、CPU911を用いて、検索装置400が出力した検索結果を入力する。
検索本体出力部853は、CPU911を用いて、検索結果入力部852が入力した検索結果に基づいて、検索条件に合う索引に対応づけられた暗号化データ本体を、暗号化本体記憶部851が記憶した暗号化データ本体のなかから取得する。検索本体出力部853は、CPU911を用いて、取得した暗号化データ本体を出力する。
なお、検索にヒットするか否かのみが問題となり、データ本体がない場合や、暗号化データ本体を暗号化索引データと結合した形式で検索装置400が記憶する構成の場合には、暗号化データ記憶装置850がない構成であってもよい。
データ復号装置860は、復号鍵記憶部861、本体復号部862、復号本体出力部863を有する。
復号鍵記憶部861は、磁気ディスク装置920を用いて、データ暗号化装置840が記憶した暗号化鍵に対応する復号鍵を記憶する。
本体復号部862は、CPU911を用いて、暗号化データ記憶装置850が出力した暗号化データ本体と、復号鍵記憶部861が記憶した復号鍵とを入力する。本体復号部862は、CPU911を用いて、入力した復号鍵により、入力した暗号化データ本体を復号する。本体復号部862は、復号したデータ本体を復号データ本体として出力する。
復号本体出力部863は、CPU911を用いて、本体復号部862が出力した復号データ本体を入力する。復号本体出力部863は、CPU911を用いて、入力した復号データ本体を外部に出力する。
図9は、この実施の形態における設定処理S610の流れの一例を示すフローチャート図である。
設定処理S610において、設定装置100は、検索システム800で用いるパラメータを設定する。設定処理S610は、第三生成元算出工程S611、秘密整数生成工程S613、公開元算出工程S615、整数選択工程S616、秘密乱数生成工程S617、公開乱数元算出工程S619、整数繰り返し工程S620を有する。
第三生成元算出工程S611において、ペアリング値算出部121は、CPU911を用いて、第一生成元記憶部111が記憶した群Gの生成元gと、第二生成元記憶部112が記憶した群Gの生成元gとに基づいて、元gと元gとの組をペアリング写像eにより写像した群Gの元e(g,g)を算出して、元gとする。
秘密整数生成工程S613において、秘密整数生成部131は、CPU911を用いて、1以上p未満の整数をランダムに生成して、秘密整数yとする。
公開元算出工程S615において、公開元算出部141は、CPU911を用いて、第三生成元算出工程S611でペアリング値算出部121が算出した元gと、秘密整数生成工程S613で秘密整数生成部131が生成した秘密整数yとに基づいて、元gのy乗である群Gの元g を算出して、公開元Yとする。
整数選択工程S616において、秘密乱数生成部132は、CPU911を用いて、1以上n以下のn個の整数のなかから、整数を1つずつ順に選択して、整数iとする。
秘密乱数生成工程S617において、秘密乱数生成部132は、CPU911を用いて、整数選択工程S616で選択した整数iについて、1以上p未満の整数をランダムに生成して、秘密乱数uとする。
公開乱数元算出工程S619において、公開乱数元算出部142は、CPU911を用いて、整数選択工程S616で秘密乱数生成部132が選択した整数iについて、第一生成元記憶部111が記憶した群Gの生成元gと、第二秘密乱数生成工程S617で秘密乱数生成部132が生成した秘密乱数uとに基づいて、元gのu乗である群Gの元を算出して、公開乱数元Uとする。
整数繰り返し工程S620において、秘密乱数生成部132は、1以上n以下のすべての整数を、整数選択工程S616で選択したか否かを判定する。まだ選択していない整数があると判定した場合、秘密乱数生成部132は、整数選択工程S616に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、設定装置100は、設定処理S610を終了する。
図10は、この実施の形態における索引暗号化処理S630の流れの一例を示すフローチャート図である。
索引暗号化処理S630において、索引暗号化装置200は、暗号化した索引を生成する。索引暗号化処理S630は、索引乱数生成工程S631、判定元算出工程S633、整数選択工程S635、索引整数算出工程S636、索引元算出工程S637、整数繰り返し工程S638を有する。
索引乱数生成工程S631において、索引乱数生成部230は、CPU911を用いて、1以上p未満の整数をランダムに生成して、索引乱数sとする。
判定元算出工程S633において、累乗部242は、CPU911を用いて、公開元記憶部216が記憶した公開元Yと、索引乱数生成工程S631で索引乱数生成部230が生成した索引乱数sとに基づいて、元Yのs乗である群Gの元Yを算出して、判定元E’とする。
整数選択工程S635において、索引変換部223は、CPU911を用いて、1以上n以下のn個の整数のなかから、整数を1つずつ順に選択して、整数iとする。
索引整数算出工程S636において、索引変換部223は、CPU911を用いて、整数選択工程S635で選択した整数iについて、写像Hにより、索引入力部221が入力した索引文字列wを写像した整数を算出して、索引整数hとする。
索引元算出工程S637において、指数算出部251は、CPU911を用いて、索引乱数生成工程S631で索引乱数生成部230が生成した索引乱数sと、索引整数算出工程S636で索引変換部223が算出した索引整数hとの積(s・h)を算出する。
累乗部253は、CPU911を用いて、整数選択工程S635で索引変換部223が選択した整数iについて、公開乱数元記憶部217が記憶した公開乱数元Uと、指数算出部251が算出した積(s・h)とに基づいて、元Uの(s・h)乗である群Gの元を算出して、索引元Eとする。
整数繰り返し工程S638において、索引変換部223は、CPU911を用いて、1以上n以下のすべての整数を、整数選択工程S635で選択したか否かを判定する。まだ選択していない整数があると判定した場合、索引変換部223は、整数選択工程S635に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、索引暗号化装置200は、索引暗号化処理S630を終了する。
図11は、この実施の形態における検索暗号化処理S650の流れの一例を示すフローチャート図である。
検索暗号化処理S650において、検索暗号化装置300は、暗号化した検索文を生成する。検索暗号化処理S650は、次数選択工程S651、多項式係数生成工程S652、次数繰り返し工程S653、最高次係数生成工程S654、整数選択工程S655、検索整数算出工程S656、多項式値算出工程S657、検索元算出工程S659、整数繰り返し工程S661を有する。
次数選択工程S651において、多項式係数生成部342は、CPU911を用いて、1以上(d−2)以下の(d−2)個の整数のなかから、整数を1つずつ順に選択して、整数jとする。
多項式係数生成工程S652において、多項式係数生成部342は、CPU911を用いて、次数選択工程S651で選択した整数jについて、0以上p未満の整数をランダムに選択して、多項式係数aとする。
次数繰り返し工程S653において、多項式係数生成部342は、CPU911を用いて、1以上(d−2)以下のすべての整数を、次数選択工程S651で選択したか否かを判定する。まだ選択していない整数があると判定した場合、多項式係数生成部342は、次数選択工程S651に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、検索暗号化装置300は、最高次係数生成工程S654へ進む。
最高次係数生成工程S654において、多項式係数生成部342は、CPU911を用いて、整数(d−1)について、1以上p未満の整数をランダムに選択し、多項式係数ad−1とする。
整数選択工程S655において、検索変換部352は、CPU911を用いて、1以上n以下のn個の整数のなかから、整数を1つずつ順に選択して、整数iとする。
検索整数算出工程S656において、検索変換部352は、CPU911を用いて、整数選択工程S655で選択した整数iについて、写像Hにより、検索入力部332が入力した検索文字列ωを写像した整数を算出して、検索整数ηとする。
多項式値算出工程S657において、多項式値算出部344は、CPU911を用いて、秘密整数記憶部321が記憶した秘密整数yと、多項式係数生成工程S652で多項式係数生成部342が生成した(d−2)個の多項式係数aと、最高次係数生成工程S654で多項式係数生成部342が生成した多項式係数ad−1とに基づいて、多項式係数aをj次の項の係数とし、秘密整数yを定数項の係数とする一変数多項式f(x)に、整数選択工程S655で検索変換部352が選択した整数iを代入した値を算出して、多項式値f(i)とする。
検索元算出工程S659において、指数算出部361は、CPU911を用いて、整数選択工程S655で検索変換部352が選択した整数iについて、秘密乱数記憶部323が記憶した秘密乱数uと、検索整数算出工程S656で検索変換部352が算出した検索整数ηと、多項式値算出工程S657で多項式値算出部344が算出した多項式値f(i)とに基づいて、秘密乱数uと検索整数ηとの積(u・η)で、多項式値f(i)を割った商[f(i)/(u・η)]を算出する。
累乗部366は、CPU911を用いて、整数選択工程S655で検索変換部352が選択した整数iについて、第二生成元記憶部312が記憶した群Gの生成元gと、指数算出部361が算出した商[f(i)/(u・η)]とに基づいて、元gの[f(i)/(u・η)]乗である群Gの元を算出して、検索元Tとする。
整数繰り返し工程S661において、検索変換部352は、CPU911を用いて、1以上n以下のすべての整数を、整数選択工程S655で選択したか否かを判定する。まだ選択していない整数があると判定した場合、検索変換部352は、整数選択工程S655に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、検索暗号化装置300は、検索暗号化処理S650を終了する。
図12は、この実施の形態における検索実行処理S670の流れの一例を示すフローチャート図である。
検索実行処理S670において、検索装置400は、検索を実行する。検索実行処理S670は、索引選択工程S671、整数選択工程S672、ペアリング値算出工程S673、整数繰り返し工程S674、判定選択工程S675、判定整数選択工程S676、補間係数値算出工程S677、累乗工程S678、判定整数繰り返し工程S679、総積工程S680、判定工程S681、判定繰り返し工程S682、索引繰り返し工程S683を有する。
索引選択工程S671において、ペアリング値算出部451は、CPU911を用いて、暗号化索引記憶部420が記憶した暗号化索引データのなかから、暗号化索引データを1つずつ順に選択する。
整数選択工程S672において、ペアリング値算出部451は、CPU911を用いて、1以上n以下のn個の整数のなかから、整数を1つずつ順に選択して、整数iとする。
ペアリング値算出工程S673において、ペアリング値算出部451は、CPU911を用いて、索引選択工程S671で選択した暗号化索引データについて索引元記憶部421が記憶した索引元Eと、整数選択工程S672で選択した整数iについて検索元記憶部432が記憶した検索元Tとに基づいて、ペアリング写像eにより、索引元Eと検索元Tとの組を写像した群Gの元を算出して、ペアリング値eとする。
整数繰り返し工程S674において、ペアリング値算出部451は、CPU911を用いて、1以上n以下のすべての整数を、整数選択工程S672で選択したか否かを判定する。まだ選択していない整数があると判定した場合、ペアリング値算出部451は、整数選択工程S672に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、検索装置400は、判定選択工程S675へ進む。
判定選択工程S675において、判定対象選択部441は、CPU911を用いて、閾値記憶部431が記憶した閾値dに基づいて、1以上n以下のn個の整数のなかからd個の整数を選択する組み合わせのなかから、組み合わせを1つずつ順に選択して、集合Sとする。
判定整数選択工程S676において、補間係数値算出部442は、CPU911を用いて、判定選択工程S675で判定対象選択部441が選択した集合Sに含まれる整数のなかから、整数を1つずつ順に選択して、整数iとする。
補間係数値算出工程S677において、補間係数値算出部442は、CPU911を用いて、判定整数選択工程S676で選択した整数iについて、補間係数値Δi,Sを算出する。
累乗工程S678において、累乗部455は、CPU911を用いて、判定整数選択工程S676で補間係数値算出部442が選択した整数iについて、ペアリング値算出工程S673でペアリング値算出部451が算出したペアリング値eと、補間係数値算出工程S677で補間係数値算出部442が算出した補間係数値Δi,Sとに基づいて、ペアリング値eのΔi,S乗である群Gの元を算出して、写像元e’とする。
判定整数繰り返し工程S679において、補間係数値算出部442は、CPU911を用いて、集合Sに含まれるすべての整数を、判定整数選択工程S676で選択したか否かを判定する。まだ選択していない整数があると判定した場合、補間係数値算出部442は、判定整数選択工程S676に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、検索装置400は、総積工程S680へ進む。
総積工程S680において、総積部461は、CPU911を用いて、累乗工程S678で算出したd個の写像元e’の総積を算出して、比較元Bとする。
判定工程S681において、判定部470は、CPU911を用いて、索引選択工程S671でペアリング値算出部451が選択した索引について判定元記憶部422が記憶した判定元E’と、総積工程S680で総積部461が算出した比較元Bとを比較して、等しいか否かを判定する。等しいと判定した場合、判定部470は、CPU911を用いて、索引選択工程S671でペアリング値算出部451が選択した索引が、検索条件に合致したと判定して、索引繰り返し工程S683へ進む。等しくないと判定した場合、検索装置400は、判定繰り返し工程S682へ進む。
判定繰り返し工程S682において、判定対象選択部441は、CPU911を用いて、1以上n以下のn個の整数のなかからd個の整数を選択するすべての組み合わせを、判定選択工程S675で選択したか否かを判定する。まだ選択していない組み合わせがあると判定した場合、判定対象選択部441は、判定選択工程S675に戻り、次の組み合わせを選択する。すべての組み合わせを選択したと判定した場合、判定部470は、索引選択工程S671でペアリング値算出部451が選択した索引が、検索条件に合致しないと判定して、索引繰り返し工程S683へ進む。
索引繰り返し工程S683において、判定部470は、CPU911を用いて、判定工程S681あるいは判定繰り返し工程S682で判定した判定結果を出力する。ペアリング値算出部451は、CPU911を用いて、暗号化索引記憶部420が記憶したすべての暗号化索引データを、索引選択工程S671で選択したか否かを判定する。まだ選択していない暗号化索引データがあると判定した場合、ペアリング値算出部451は、索引選択工程S671に戻り、次の暗号化索引データを選択する。すべての暗号化索引データを選択したと判定した場合、検索装置400は、検索実行処理S670を終了する。
上述したように、判定選択工程S675で判定対象選択部441が選択した集合Sに含まれるd個の整数すべてについて、索引整数hと検索整数ηとが一致する場合のみ、比較元Bと判定元E’とが等しくなるので、その索引に含まれるn個の索引文字列wのうちd個以上の索引文字列wが、検索暗号化装置300が指定した検索文字列ωと一致する場合に、判定部470は、検索条件に合致したと判定する。
このとき、検索装置400は、索引文字列wと検索文字列ωとが一致するd個の整数iを知ることができる。上述した検索実行処理S670では、判定工程S681で比較元Bと判定元E’とが一致した場合、1以上n以下のn個の整数のなかからd個の整数を選択するすべての組み合わせについて判定することをしないので、集合Sに含まれるd個の整数i以外の(n−d)個の整数については、索引文字列wと検索文字列ωとが一致するか否かは明らかにならないが、判定工程S681で比較元Bと判定元E’とが一致した場合でも処理を続行し、1以上n以下のn個の整数のなかからd個の整数を選択するすべての組み合わせについて比較元Bと判定元E’とが判定するか否かを判定する構成とすれば、検索装置400は、1以上n以下のn個の整数すべてについて、索引文字列wと検索文字列ωとが一致するか否かを知ることができる。すなわち、索引文字列wと検索文字列ωとがd個以上一致する場合には、どのデータが一致するかを知ることができる。
しかし、暗号化索引記憶部420が記憶した索引元Eや判定元E’、暗号化検索記憶部430が記憶した検索元Tなどから、索引整数hや検索整数ηを知ることはできないので、たとえ写像Hの逆写像H−1を知っていたとしても、一致した索引文字列wや検索文字列ωを知ることはできない。
また、1以上n以下のn個の整数のうちd個未満の整数について、索引文字列wと検索文字列ωとが一致し、それ以外は一致しない場合、1以上n以下のn個の整数のなかからd個の整数を選択するすべての組み合わせについて、比較元Bは、判定元E’と不一致となる。したがって、どのデータが一致するかを知ることはできない。
索引元Eには、索引文字列wによって定まる索引整数hの要素のほかに、索引ごとに異なるランダムな索引乱数sの要素が含まれている。したがって、ある索引の索引文字列wと別の索引の索引文字列wとが同じであったとしても、索引元Eは索引ごとに異なり、索引文字列wが同じか否かについての情報を隠蔽している。
ある索引文字列wが、ある検索条件における検索文字列ωと一致することがわかると、ある索引における索引文字列wと、他の索引における索引文字列wとが同じか否かを知ることができる。これは、索引文字列wを解読する手がかりになる可能性がある。様々な検索条件による検索を何回も繰り返すことにより手がかりが増えていくと、やがて、索引文字列w、ひいてはデータ本体を解読される可能性がある。
このため、ある索引文字列wが、ある検索条件における検索文字列ωと一致するか否かに関する情報は、できる限り知られないようにしたほうがよい。
この実施の形態における検索システム800は、1以上n以下のn個の整数のうちd個未満の整数について、索引文字列wと検索文字列ωとが一致し、それ以外は一致しない場合、どの索引文字列wと検索文字列ωとが一致したかについての情報を秘匿できる。このため、索引文字列wを解読する手がかりの漏洩を最小限に抑えることができる。
この実施の形態における検索システム800は、索引暗号化装置200と、検索暗号化装置300と、検索装置400とを有する。
上記索引暗号化装置200は、データを記憶する記憶装置(磁気ディスク装置920)と、データを処理する処理装置(CPU911)と、索引記憶部(索引整数記憶部224)と、索引暗号化部(索引元算出部250)とを有する。
上記索引記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数(nは1以上の整数。)に対応するn個の索引データ(索引整数h)を記憶する。
上記索引暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記索引記憶部が記憶した索引データを暗号化して、n個の暗号化索引データ(索引元E)とする。
上記検索暗号化装置300は、データを記憶する記憶装置(磁気ディスク装置920)と、データを処理する処理装置(CPU911)と、検索記憶部(検索整数記憶部353)と、多項式値算出部344と、検索暗号化部(検索元算出部360)とを有する。
上記検索記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数に対応するn個の検索データ(検索整数η)を記憶する。
上記多項式値算出部344は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、(d−1)次の一変数多項式f(x)(dは1以上n以下の整数。)に上記整数を代入した値を算出して、n個の多項式値f(i)とする。
上記検索暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記検索記憶部が記憶した検索データと、上記多項式値算出部344が算出した多項式値f(i)との組を暗号化して、n個の暗号化検索データ(検索元T)とする。
上記検索装置400は、データを処理する処理装置(CPU911)と、データを記憶する記憶装置(磁気ディスク装置920)と、暗号化索引記憶部420と、暗号化検索記憶部430と、判定対象選択部441と、補間係数値算出部442と、写像算出部(写像元算出部450)と、比較算出部(比較元算出部460)と、判定部470とを有する。
上記暗号化索引記憶部420は、上記記憶装置を用いて、上記索引暗号化装置200が暗号化したn個の暗号化索引データ(索引元E)を記憶する。
上記暗号化検索記憶部430は、上記記憶装置を用いて、上記検索暗号化装置300が暗号化したn個の暗号化検索データ(検索元T)を記憶する。
上記判定対象選択部441は、上記処理装置を用いて、1以上n以下のn個の整数のなかからd個の整数を選択して、d個の判定対象整数とする。
上記補間係数値算出部442は、上記処理装置を用いて、上記判定対象選択部441が選択したd個の判定対象整数に基づいて、ラグランジュの補間係数の値を算出して、d個の補間係数値Δi,Sとする。
上記写像算出部は、上記処理装置を用いて、上記判定対象選択部441が選択したd個の判定対象整数それぞれについて、上記暗号化索引記憶部420が記憶した暗号化索引データと、上記暗号化検索記憶部430が記憶した暗号化検索データと、上記補間係数値算出部442が算出した補間係数値との組を写像して、d個の写像データ(写像元e’)とする。
上記比較算出部は、上記処理装置を用いて、上記写像算出部が写像したd個の写像データに基づいて、比較データ(比較元B)を算出する。
上記判定部470は、上記処理装置を用いて、上記比較算出部が算出した比較データに基づいて、上記判定対象選択部441が選択したd個の判定対象整数について、上記索引データと、上記検索データとが一致するか否かを判定する。
この実施の形態における検索システム800によれば、(d−1)次の一変数多項式f(x)の値f(i)を用いて、検索データを暗号化し、ラグランジュの補間係数の値Δi,Sを用いて、検索を実行するので、n個のデータのうちd個以上が一致する場合に、一致することを検索装置400が判定でき、d個未満しか一致しない場合には、いずれのデータが一致したかを検索装置400が知ることができない。これにより、索引データや検索データに関する情報の漏洩を防ぐことができる。
この実施の形態における検索システム800において、上記補間係数値算出部442は、上記処理装置(CPU911)を用いて、上記判定対象選択部441が選択したd個の判定対象整数のうちの一つを対象整数iとし、上記判定対象選択部441が選択したd個の判定対象整数のうち上記対象整数以外の(d−1)個の判定対象整数を(d−1)個の対象外整数jとし、(d−1)個の対象外整数jそれぞれについて、上記対象外整数jから上記対象整数iを差し引いた差(j−i)で、上記対象外整数jを割った商[j/(j−i)]を算出し、算出した(d−1)個の商の総積Π[j/(j−i)]を算出して、上記対象整数iについての補間係数値Δi,Sとする。
この実施の形態における検索システム800によれば、未知の一変数関数について、判定対象選択部441が選択したd個の判定対象整数を代入したときの値が既知である場合におけるラグランジュの補間係数について、補間係数値算出部442が、ラグランジュの補間係数に0を代入したときの値を算出して補間係数値Δi,Sとするので、判定対象選択部441が選択したd個の判定対象整数について、索引データと検索データとが一致する場合に、比較元Bが、一変数多項式f(x)に0を代入したときの値f(0)に対応する値となる。検索装置400は、これを利用することにより、判定対象選択部441が選択したd個の判定対象整数について、索引データと検索データとが一致するか否かを判定する。
この実施の形態における検索システム800において、上記多項式値算出部344は、上記処理装置(CPU911)を用いて、所定の秘密整数yを上記一変数多項式f(x)の定数項として、上記多項式値f(i)を算出する。
上記索引暗号化部(判定元算出部240)は、上記秘密整数yを暗号化したデータ(公開元Y)に基づいて、上記索引データを暗号化する。
この実施の形態における検索システム800によれば、検索暗号化装置300は、秘密変数yを(d−1)次の一変数多項式f(x)の定数項とすることにより、秘密整数yについての情報をn個の多項式値f(i)に分散して埋め込む。このため、n個の多項式値f(i)のうちd個以上を知ることができれば、秘密整数yを求めることができる。検索装置400は、秘密整数yを直接求めることはしないが、判定対象選択部441が選択したd個の判定対象整数について、索引データと検索データとが一致する場合に、d個の多項式値f(i)に対応する暗号化されたデータから、秘密整数yに対応する暗号化されたデータを求めることができる。検索装置400は、これを利用することにより、判定対象選択部441が選択したd個の判定対象整数について、索引データと検索データとが一致するか否かを判定する。
この実施の形態における検索システム800は、更に、設定装置100を有する。
上記設定装置100は、秘密整数生成部131と、公開元算出部141とを有する。
上記秘密整数生成部131は、上記処理装置を用いて、1以上p未満の整数(pは素数。)をランダムに生成して、秘密整数yとする。
上記公開元算出部141は、上記処理装置を用いて、0以上p未満の整数を位数pの群の元に単射する第一の写像により、上記秘密整数生成部131が生成した秘密整数yを写像した元を算出して、公開元Yとする。
上記索引暗号化装置200は、公開元記憶部216と、索引整数記憶部224と、索引元算出部250と、判定元算出部240とを有する。
上記公開元記憶部216は、上記記憶装置を用いて、上記設定装置100が算出した公開元Yを記憶する。
上記索引整数記憶部224は、上記記憶装置を用いて、n個の1以上p未満の整数を、1以上n以下のn個の整数iそれぞれに対応する索引整数hとして記憶する。
上記索引元算出部250は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記索引整数記憶部224が記憶した索引整数hに基づいて、0以上p未満の整数を位数pの群の元に単射する第二の写像により、上記索引整数hを写像した元を算出して、n個の索引元Eとする。
上記判定元算出部240は、上記処理装置を用いて、上記公開元記憶部216が記憶した公開元Yに基づいて、位数pの群の元を位数pの群の元に単射する第三の写像により、上記公開元Yを写像した元を算出して、判定元E’とする。
上記検索暗号化装置300は、秘密整数記憶部321と、検索整数記憶部353と、多項式係数生成部342と、検索元算出部360とを有する。
上記秘密整数記憶部321は、上記記憶装置を用いて、上記設定装置100が生成した秘密整数yを記憶する。
上記検索整数記憶部353は、上記記憶装置を用いて、n個の1以上p未満の整数を、1以上n以下のn個の整数iそれぞれに対応する検索整数ηとして記憶する。
上記多項式係数生成部342は、上記処理装置を用いて、(d−1)個の0以上p未満の整数をランダムに生成して、(d−1)個の多項式係数aとする。
上記多項式値算出部344は、上記処理装置を用いて、上記秘密整数記憶部321が記憶した秘密整数yを、上記一変数多項式f(x)の定数項とし、上記多項式係数生成部342が生成した(d−1)個の多項式係数aを、上記一変数多項式f(x)の1次から(d−1)次までの各項の係数として、上記多項式値f(i)を算出する。
上記検索元算出部360は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記検索整数記憶部353が記憶した検索整数ηと、上記多項式値算出部344が算出した多項式値f(i)とに基づいて、1以上p未満の整数と0以上p未満の整数との組を位数pの群の元に写像する第四の写像により、上記検索整数ηと上記多項式値f(i)との組を写像した元を算出して、n個の検索元Tとする。
上記検索装置400は、索引元記憶部421と、判定元記憶部422と、検索元記憶部432と、写像元算出部450と、比較元算出部460とを有する。
上記索引元記憶部421は、上記記憶装置を用いて、上記索引暗号化装置200が算出したn個の索引元Eを記憶する。
上記判定元記憶部422は、上記記憶装置を用いて、上記索引暗号化装置200が算出した判定元E’を記憶する。
上記検索元記憶部432は、上記記憶装置を用いて、上記検索暗号化装置300が算出したn個の検索元Tを記憶する。
上記写像元算出部450は、上記処理装置を用いて、上記判定対象選択部441が選択したd個の判定対象整数iそれぞれについて、上記索引元記憶部421が記憶した索引元Eと、上記検索元記憶部432が記憶した検索元Tと、上記補間係数値算出部442が算出した補間係数値Δi,Sとに基づいて、位数pの群の元と位数pの群の元と0以上p未満の整数との組を位数pの群の元に写像する第五の写像により、上記索引元Eと上記検索元Tと上記補間係数値Δi,Sとの組を写像した元を算出して、d個の写像元e’とする。
上記比較元算出部460は、上記処理装置を用いて、上記写像元算出部450が算出したd個の写像元e’を群演算により結合した元を算出して、比較元Bとする。
上記判定部470は、上記処理装置を用いて、上記比較元算出部460が算出した比較元Bと、上記判定元記憶部422が記憶した判定元E’とが等しい場合に、上記判定対象選択部441が選択したd個の判定対象整数iについて、上記索引整数hと、上記検索整数ηとが一致すると判定する。
この実施の形態における検索システム800によれば、位数pが素数である群を用いて、暗号化処理をするので、用いることができる群や写像の種類が多く、安全性の高いシステムを構築することができる。
ここでいうところの第一の写像をφ、第二の写像をφ、第三の写像をφ、第四の写像をφ、第五の写像をφとすると、この実施の形態で用いる写像φ〜φは、次の式で定義される。
Figure 0005274271
すなわち、第一の写像φは、0以上p未満の整数を位数pの群Gの元へ写す写像であり、整数xを、元e(g,g)のx乗へ写す。pは素数であり、元gは群Gの単位元でなく、元gは群Gの単位元でなく、ペアリング写像eは双線形かつ非縮退なので、元e(g,g)は群Gの単位元ではない。したがって、第一の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。
第二の写像φは、0以上p未満の整数を位数pの群Gの元へ写す写像であり、整数xを、元[gの(u・s)乗]のx乗へ写す。生成元gは群Gの単位元でなく、秘密乱数u及び索引乱数sは0でないので、元[gの(u・s)乗]は群Gの単位元ではない。したがって、第二の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。
第三の写像φは、位数pの群Gの元を位数pの群Gの元へ写す写像であり、元Xを、元Xのs乗へ写す。索引乱数sは0でない。したがって、第三の写像φは全単射であり、群Gの自己同型写像である。
第四の写像φは、1以上p未満の整数と0以上p未満の整数との組を位数pの群Gの元へ写す写像であり、整数xと整数xとの組(x,x)を、元[gの(1/u)乗]の(x/x)乗へ写す。生成元gは群Gの単位元でないので、元[gの(1/u)乗]は群Gの単位元ではない。したがって、整数xを固定して考えると、第四の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。また、整数xを固定して考えると、第四の写像φは単射であり、群Gから単位元を除いた集合に対する全単射である。
第五の写像φは、位数pの群Gの元と位数pの群Gの元と0以上p未満の整数との組を位数pの群Gの元へ写す写像であり、元Xと元Xと整数xとの組(X,X,x)を、元e(X,X)のx乗へ写す。ペアリング写像eは双線形かつ非縮退である。したがって、X,xを固定して考えると、第五の写像φは群Gから群Gへの準同型写像であり、xが0でないとき全単射である。また、X,xを固定して考えると、第五の写像φは群Gから群Gへの準同型写像であり、xが0でないとき全単射である。更に、X,Xを固定して考えると、第五の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。
上記判定元算出部240は、0以上p未満の任意の整数xについて、上記任意の整数xを上記第一の写像φにより写像した元φ(x)を、上記第三の写像φにより写像した元φ(φ(x))が、上記任意の整数xと等しい数の所定の元Zを、群演算により結合した元[Z]と等しくなる写像を、上記第三の写像φとして用いる。
上記写像元算出部450は、1以上p未満の任意の第一の整数xについて、上記任意の第一の整数xを上記第二の写像φにより写像した元φ(x)と、上記任意の第一の整数xと第二の整数xとの組を上記第四の写像φにより写像した元φ(x,x)と、第三の整数xとの組を、上記第五の写像により写像した元φ(x),φ(x,x),x)が、上記第二の整数xと上記第三の整数xとの積と等しい数の上記所定の元Zを、群演算により結合した元[Z^(x・x)]と等しくなる写像を、上記第五の写像φとして用いる。
この実施の形態における検索システム800によれば、判定対象選択部441が選択したd個の判定対象整数について、索引整数hと検索整数ηとが一致する場合に、比較元算出部460が算出する比較元Bと、判定元算出部240が算出する判定元E’とが一致する。検索装置400は、これを利用することにより、判定対象選択部441が選択したd個の判定対象整数について、索引整数hと検索整数ηとが一致するか否かを判定する。
例えば、この実施の形態における写像φ〜φについては、次の関係が成り立つ。
Figure 0005274271
上記5つの写像φ〜φは、この実施の形態における例に限らない。上述した関係が成り立つ組み合わせであれば、検索装置400における検索が可能である。
この実施の形態における検索システム800において、上記設定装置100は、更に、秘密乱数生成部132と、公開乱数元算出部142とを有する。
上記秘密乱数生成部132は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、1以上p未満の整数をランダムに生成して、n個の秘密乱数uとする。
上記公開元算出部141は、上記処理装置を用いて、第一の群Gの元と第二の群Gの元との組を第三の群Gの元に写像する双線形ペアリング写像e(上記第一の群G及び上記第二の群G及び上記第三の群Gの位数はp。)により、上記第一の群Gの生成元である第一生成元gと、上記第二の群Gの生成元である第二生成元gとの組を写像した元である第三生成元gと、上記秘密整数生成部131が生成した秘密整数yとに基づいて、上記秘密整数yと等しい数の上記第三生成元gを、上記第三の群Gの群演算により結合した元g を算出して、公開元Yとする。
上記公開乱数元算出部142は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記第一生成元gと、上記秘密乱数生成部132が生成した秘密乱数uとに基づいて、上記秘密乱数uと等しい数の上記第一生成元gを、上記第一の群Gの群演算により結合した元[g^u]を算出して、n個の公開乱数元Uとする。
上記索引暗号化装置200は、更に、公開乱数元記憶部217と、索引乱数生成部230とを有する。
上記公開乱数元記憶部217は、上記記憶装置を用いて、上記設定装置100が算出したn個の公開乱数元Uを記憶する。
上記索引乱数生成部230は、上記処理装置を用いて、1以上p未満の整数をランダムに生成して、索引乱数sとする。
上記判定元算出部240は、上記処理装置を用いて、上記公開元記憶部216が記憶した公開元Yと、上記索引乱数生成部230が生成した索引乱数sとに基づいて、上記索引乱数sと等しい数の上記公開元Yを、上記第三の群Gの群演算により結合した元Yを算出して、判定元E’とする。
上記索引元算出部250は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記公開乱数元記憶部217が記憶した公開乱数元Uと、上記索引整数記憶部224が記憶した索引整数hと、上記索引乱数生成部230が生成した索引乱数sとに基づいて、上記索引整数hと上記索引乱数sとの積と等しい数の上記公開乱数元Uを、上記第一の群Gの群演算により結合した元[U^(s・h)]を算出して、n個の索引元Eとする。
上記検索暗号化装置300は、更に、秘密乱数記憶部323を有する。
上記秘密乱数記憶部323は、上記記憶装置を用いて、上記設定装置100が生成したn個の秘密乱数uを記憶する。
上記検索元算出部360は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記第二生成元gと、上記秘密乱数記憶部323が記憶した秘密乱数uと、上記検索整数記憶部353が記憶した検索整数ηと、上記多項式値算出部344が算出した多項式値f(i)とに基づいて、上記秘密乱数uと上記検索整数ηとの積で上記多項式値f(i)を割った商と等しい数の上記第二生成元gを、上記第二の群Gの群演算により結合した元[g^{f(i)/(u・η)}]を算出して、n個の検索元Tとする。
上記検索装置400において、上記写像元算出部450は、上記処理装置を用いて、上記判定対象選択部441が選択したd個の判定対象整数iそれぞれについて、上記索引元記憶部421が記憶した索引元Eと、上記検索元記憶部432が記憶した検索元Tとに基づいて、上記双線形ペアリング写像eにより上記索引元Eと上記検索元Tとの組を写像した上記第三の群Gの元e(E,T)を算出して、d個のペアリング値eとし、上記判定対象選択部441が選択したd個の判定対象整数iそれぞれについて、算出した上記ペアリング値eと、上記補間係数値算出部442が算出した補間係数値Δi,Sとに基づいて、上記補間係数値Δi,Sと等しい数の上記ペアリング値eを、上記第三の群Gの群演算により結合した元[e^Δi,S]を算出して、d個の写像元e’とする。
上記比較元算出部460は、上記処理装置を用いて、上記写像元算出部450が算出したd個の写像元e’を、上記第三の群Gの群演算により結合した元Π(e’)を算出して、比較元Bとする。
安全性の証明については省略するが、この実施の形態における検索システム800によれば、索引整数や検索整数を解読しようとする第三者の攻撃に対して、安全性を有する。
この実施の形態における検索システム800において、上記索引暗号化装置200は、更に、索引変換部223を有する。
上記索引変換部223は、上記処理装置を用いて、1以上n以下のn個の整数iに対応するn個の索引文字列wを入力し、1以上n以下のn個の整数iそれぞれについて、任意の長さの文字列を1以上p未満の整数に変換する変換写像Hにより、入力した索引文字列wを変換して、n個の索引整数hとする。
上記索引整数記憶部224は、上記記憶装置を用いて、上記索引変換部223が変換したn個の索引整数hを記憶する。
上記検索暗号化装置300は、更に、検索変換部352を有する。
上記検索変換部352は、上記処理装置を用いて、1以上n以下のn個の整数iに対応するn個の検索文字列ωを入力し、1以上n以下のn個の整数iそれぞれについて、上記変換写像Hにより、入力した検索文字列ωを変換して、n個の検索整数ηとする。
上記検索整数記憶部353は、上記記憶装置を用いて、上記検索変換部352が変換したn個の検索整数ηを記憶する。
この実施の形態における検索システム800によれば、索引データ及び検索データとして、1以上p未満の整数に限らず、任意の長さの文字列を用いることができるので、検索システム800を応用できる範囲が広くなる。
この実施の形態における索引暗号化装置200によれば、算出した暗号化索引データを第三者に知られても、もとである索引データを知られることはなく、それでいて、暗号化索引データを用いて、n個ある索引データのうちd個以上が検索データと一致するものを検索することを可能にする。また、n個ある索引データのうち検索データと一致するものがd個未満の場合には、どの索引データが検索データと一致したかについても知られずに済むので、より高い安全性を実現できる。
この実施の形態における検索暗号化装置300によれば、算出した暗号化検索データを第三者に知られても、もとである検索データを知られることはなく、それでいて、暗号化検索データを用いて、n個ある索引データのうちd個以上が検索データと一致するものを検索することを可能にする。また、n個ある索引データのうち検索データと一致するものがd個未満の場合には、どの索引データが検索データと一致したかについても知られずに済むので、より高い安全性を実現できる。
この実施の形態における検索装置400によれば、暗号化索引データ及び暗号化検索データのいずれも復号することなく、n個ある索引データのうちd個以上が検索データと一致するものを検索することができる。
この実施の形態における索引暗号化装置200・検索暗号化装置300・検索装置400は、いずれも、コンピュータを、索引暗号化装置200または検索暗号化装置300または検索装置400として機能させるコンピュータプログラムを、コンピュータが実行することにより、実現することができる。
この実施の形態における検索システム800において、索引暗号化装置200が索引データを暗号化した暗号化索引データと、検索暗号化装置300が検索データを暗号化した暗号化検索データとを用いて、検索装置400が上記索引データと上記検索データとが一致するか否かを判定する検索方法は、以下の工程を有する。
上記索引暗号化装置200が、1以上n以下のn個の整数i(nは1以上の整数。)に対応するn個の索引データ(索引整数h)を記憶する。
上記索引暗号化装置200が、1以上n以下のn個の整数iそれぞれについて、記憶した索引データを暗号化して、n個の暗号化索引データ(索引元E)とする。
上記検索暗号化装置300が、1以上n以下のn個の整数iに対応するn個の検索データ(検索整数η)を記憶する。
上記検索暗号化装置300が、1以上n以下のn個の整数iそれぞれについて、(d−1)次の一変数多項式f(x)(dは1以上n以下の整数。)に上記整数iを代入した値を算出して、n個の多項式値f(i)とする。
上記検索暗号化装置300が、1以上n以下のn個の整数iそれぞれについて、記憶した検索データと、算出した多項式値f(i)との組を暗号化して、n個の暗号化検索データ(検索元T)とする。
上記検索装置400が、上記索引暗号化装置200が暗号化したn個の暗号化索引データを記憶する。
上記検索装置400が、上記検索暗号化装置300が暗号化したn個の暗号化検索データを記憶する。
上記検索装置400が、1以上n以下のn個の整数のなかからd個の整数を選択して、d個の判定対象整数iとする。
上記検索装置400が、選択したd個の判定対象整数iに基づいて、ラグランジュの補間係数の値を算出して、d個の補間係数値Δi,Sとする。
上記検索装置400が、選択したd個の判定対象整数iそれぞれについて、記憶した暗号化索引データと、記憶した暗号化検索データと、算出した補間係数値Δi,Sとの組を写像して、d個の写像データ(写像元e’)とする。
上記検索装置400が、写像したd個の写像データに基づいて、比較データ(比較元B)を算出する。
上記検索装置400が、算出した比較データに基づいて、選択したd個の判定対象整数iについて、上記索引データと、上記検索データとが一致するか否かを判定する。
この実施の形態における検索方法によれば、検索暗号化装置300が、(d−1)次の一変数多項式f(x)の値f(i)を用いて、検索データを暗号化し、検索装置400が、ラグランジュの補間係数の値Δi,Sを用いて、検索を実行するので、n個のデータのうちd個以上が一致する場合に、一致することを検索装置400が判定でき、d個未満しか一致しない場合には、いずれのデータが一致したかを検索装置400が知ることができない。これにより、索引データや検索データに関する情報の漏洩を防ぐことができる。
以上説明した検索システム800によれば、暗号化したままの状態でのキーワード検索が可能であり、複数のキーワードのうち、ある一定個以上が一致すれば検索にヒットする。検索にヒットしない場合には、どのキーワードが一致し、どのキーワードが一致しなかったかについての情報が漏れない。
これに対し、単一のキーワードの検索方式を応用しても、複数のキーワードのうち、ある一定個以上が一致するか否かを判定することは可能である。すなわち、データ作成者(索引暗号化装置)が、キーワード数(索引数)に応じて複数の暗号化タグ(暗号化索引データ)を生成し、データ検索者(検索暗号化装置)も、検索キーワード数(索引数)に応じて複数の検索用トラップドア(検索暗号化データ)を生成して、データ保管サーバ(検索装置)が検索を実行して、それぞれのキーワードが一致するものを抽出すれば、複数のキーワードのうち一定個以上以上が一致するか否かを調べることができる。しかし、この方式の場合、データ保管サーバ(検索装置)は、キーワード自体を知ることはできないものの、どの暗号化タグとどの検索用トラップドアが何個一致したかが分かってしまう。したがって、この情報を利用して、データ保管サーバは、データ検索者がどのようなデータを検索しようとしているかについて推測をすることが可能になってしまう。
以上説明した検索システム800によれば、複数キーワードのうち一定個以上が一致するか否かが検索可能で、かつ、どの暗号化キーワードが何個一致したかに関する情報の漏洩を従来よりも低減させることができる。
以上説明した検索システム800は、素数位数の群におけるペアリングを利用している。これに対し、合成数位数の群におけるペアリングを利用する方式も考えられるが、その場合、利用できるペアリングの種類が限定されてしまう。以上説明した検索システム800によれば、素数位数の群におけるペアリングを利用するので、利用できるペアリングの種類が限定されず、ペアリングの計算量を低減することができる。
なお、以上の説明において、検索暗号化装置300は、暗号化検索データとして閾値dを指定し、検索装置400は、d個以上の索引が一致するデータを検索する構成としているが、検索暗号化装置300が、もっと細かく条件を指定する構成としてもよい。
例えば、検索暗号化装置300は、必ず一致しなければならない索引の番号や、一致するか否かを問わない索引の番号を指定する構成としてもよい。一致するか否かを問わない索引の番号を指定する場合、その番号に対応する検索元Tを暗号化検索データに含める必要はなく、暗号化検索データの量を少なくすることができる。
これを受けて、検索装置400では、判定対象選択部441が、1以上n以下のn個の整数のなかからd個の整数を選択する際、必ず一致しなければならない索引として指定された番号は、選択するd個の整数のなかに必ず含め、一致するか否かを問わない索引として指定された番号は、選択するd個の整数のなかに含めない。これにより、検索装置400における計算量を減らすことができる。
また、索引暗号化装置200は、索引文字列を指定していない索引がある場合、その索引の番号を、暗号化索引データに含めて、検索装置400に知らせる構成としてもよい。その場合、その番号に対応する索引元Eを暗号化索引データに含める必要はなく、暗号化索引データの量を少なくすることができる。
これを受けて、検索装置400では、その暗号化索引データに対して検索を実行する際、判定対象選択部441が、索引文字列を指定していないとされる索引の番号を、選択するd個の整数のなかに含めない。これにより、検索装置400における計算量を減らすことができる。
実施の形態2.
実施の形態2について、図13〜図20を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
この実施の形態における検索システム800の全体構成、復号装置810、暗号化装置820、サーバ装置830の外観及びハードウェア資源は、実施の形態1と同様である。
図13は、この実施の形態における設定装置100の構成の一例を示すブロック構成図である。
設定装置100は、設定記憶部110、秘密生成部130、公開算出部140、公開出力部150を有する。
設定記憶部110は、第一生成元記憶部111、索引数記憶部115を有する。第一生成元記憶部111は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。索引数記憶部115は、磁気ディスク装置920を用いて、索引数nを記憶する。
秘密生成部130は、秘密整数生成部131を有する。秘密整数生成部131は、CPU911を用いて、1以上p以下の整数をランダムに生成し、秘密整数yとして出力する。
公開算出部140は、公開元算出部141、公開乱数元算出部142、第二生成元算出部147を有する。
公開元算出部141は、CPU911を用いて、第一生成元記憶部111が記憶した群Gの生成元gと、秘密整数生成部131が出力した秘密整数yとを入力する。公開元算出部141は、CPU911を用いて、入力した生成元gと秘密整数yとに基づいて、元gのy乗である群Gの元g を算出する。公開元算出部141は、CPU911を用いて、算出した元を公開元g’として出力する。
公開乱数元算出部142は、CPU911を用いて、索引数記憶部115が記憶した索引数nを入力する。公開乱数元算出部142は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、群Gの単位元以外の元をランダムに生成する。公開乱数元算出部142は、CPU911を用いて、生成したn個の元を公開乱数元u(iは1以上n以下の整数。)として出力する。
第二生成元算出部147は、CPU911を用いて、群Gの単位元以外の元をランダムに生成する。第二生成元算出部147は、CPU911を用いて、生成した元を生成元gとして出力する。
公開出力部150は、公開元出力部151、公開乱数元出力部152、第一生成元出力部156、第二生成元出力部157を有する。公開元出力部151は、CPU911を用いて、公開元算出部141が出力した公開元g’を入力して、外部に出力する。公開乱数元出力部152は、CPU911を用いて、公開乱数元算出部142が出力したn個の公開乱数元uを入力して、外部に出力する。第一生成元出力部156は、CPU911を用いて、第一生成元記憶部111が記憶した群Gの生成元gを入力して、外部に出力する。第二生成元出力部157は、第二生成元算出部147が出力した群Gの生成元gを入力して、外部に出力する。
図14は、この実施の形態における検索暗号化装置300の構成の一例を示すブロック構成図である。
検索暗号化装置300は、設定記憶部310、秘密記憶部320、検索条件入力部330、閾値記憶部341、多項式係数生成部342、多項式係数記憶部343、多項式値算出部344、検索変換部352、検索整数記憶部353、検索乱数生成部380、検索乱数元算出部390、検索元算出部360、暗号化検索出力部370を有する。
設定記憶部310は、第一生成元記憶部311、第二生成元記憶部312、索引数記憶部315、公開乱数元記憶部317を有する。第一生成元記憶部311は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。第二生成元記憶部312は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。索引数記憶部315は、磁気ディスク装置920を用いて、索引数nを記憶する。公開乱数元記憶部317は、磁気ディスク装置920を用いて、設定装置100が公開したn個の公開乱数元uを記憶する。
検索乱数生成部380は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、1以上p未満の整数をランダムに生成する。検索乱数生成部380は、CPU911を用いて、生成したn個の整数を検索乱数r(iは1以上n以下の整数。)として出力する。
検索乱数元算出部390は、CPU911を用いて、n個の検索乱数元t(iは1以上n以下の整数。)を算出する。検索乱数元tは、検索乱数を暗号化したものであり、暗号化検索データの一部である。検索乱数元算出部390は、累乗部391を有する。
累乗部391は、CPU911を用いて、第一生成元記憶部311が記憶した群Gの生成元gと、検索乱数生成部380が出力したn個の検索乱数rとを入力する。累乗部391は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、生成元gと、対応する検索乱数rとに基づいて、元gのr乗である群Gの元[g^r]を算出する。累乗部391は、CPU911を用いて、算出したn個の元を検索乱数元t(iは1以上n以下の整数。)として出力する。
検索元算出部360は、関数値算出部362、二つの累乗部365,366、積算出部367を有する。
関数値算出部362は、CPU911を用いて、公開乱数元記憶部317が記憶したn個の公開乱数元uと、検索整数記憶部353が記憶したn個の検索整数ηとを入力する。関数値算出部362は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する公開乱数元uと、対応する検索整数ηとに基づいて、検索整数ηと公開乱数元uとの組を関数Uに代入した値を算出する。関数値算出部362は、CPU911を用いて、算出したn個の値を関数値U(η,u)(iは1以上n以下の整数。)として出力する。
関数Uは、0以上p未満の整数と群Gの元との組を引数とし、値として、群Gの元をとる。関数Uは、例えば、次の式により定義される。
Figure 0005274271
この例において、関数値算出部362は、CPU911を用いて、1以上n以下の整数iについて、第二生成元記憶部312が記憶した群Gの生成元gと、検索変換部352が出力した検索整数ηとに基づいて、元gのη乗である群Gの元[g^η]を算出する。関数値算出部362は、CPU911を用いて、算出した元[g^η]と、公開乱数元記憶部317が記憶した公開乱数元uとの積を算出して、関数値U(η,u)とする。
累乗部365は、CPU911を用いて、関数値算出部362が出力したn個の関数値U(η,u)と、検索乱数生成部380が出力したn個の検索乱数rとを入力する。累乗部365は、1以上n以下のn個の整数それぞれについて、対応する関数値U(η,u)と、対応する検索乱数rとに基づいて、関数値U(η,u)のr乗である群Gの元[U(η,u)^r]を算出する。累乗部365は、CPU911を用いて、算出したn個の元[U(η,u)^r](iは1以上n以下の整数。)を出力する。
累乗部366は、CPU911を用いて、第二生成元記憶部312が記憶した群Gの生成元gと、多項式値算出部344が出力したn個の多項式値f(i)とを入力する。累乗部366は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、生成元gと、対応する多項式値f(i)とに基づいて、元gのf(i)乗である群Gの元[g^f(i)]を算出する。累乗部366は、CPU911を用いて、算出したn個の元[g^f(i)](iは1以上n以下の整数。)を出力する。
積算出部367は、CPU911を用いて、累乗部365が出力したn個の関数値U(η,u)と、累乗部366が出力したn個の元[g^f(i)]とを入力する。積算出部367は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する関数値U(η,u)と、対応する元[g^f(i)]との積を算出する。積算出部367は、CPU911を用いて、算出したn個の積を検索元T(iは1以上n以下の整数。)として出力する。
暗号化検索出力部370は、閾値出力部371、検索元出力部372、検索乱数元出力部373を有する。閾値出力部371は、CPU911を用いて、閾値記憶部341が記憶した閾値dを入力して、外部に出力する。検索元出力部372は、CPU911を用いて、積算出部367が出力したn個の検索元Tを入力して、外部に出力する。検索乱数元出力部373は、CPU911を用いて、累乗部391が出力したn個の検索乱数元tを入力して、外部に出力する。
図15は、この実施の形態における索引暗号化装置200の構成の一例を示すブロック構成図である。
索引暗号化装置200は、設定記憶部210、索引入力部221、索引変換部223、索引整数記憶部224、索引乱数生成部230、判定元算出部240、乱数元算出部270、索引元算出部250、暗号化索引出力部260を有する。
設定記憶部210は、第一生成元記憶部211、第二生成元記憶部212、索引数記憶部215、公開元記憶部216、公開乱数元記憶部217を有する。第一生成元記憶部211は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。第二生成元記憶部212は、磁気ディスク装置920を用いて、群Gの生成元gを記憶する。索引数記憶部215は、磁気ディスク装置920を用いて、索引数nを記憶する。公開元記憶部216は、磁気ディスク装置920を用いて、設定装置100が公開した公開元g’を記憶する。公開乱数元記憶部217は、磁気ディスク装置920を用いて、設定装置100が公開したn個の公開乱数元uを記憶する。
判定元算出部240は、ペアリング値算出部241、累乗部242を有する。
ペアリング値算出部241は、CPU911を用いて、公開元記憶部216が記憶した公開元g’と、第二生成元記憶部212が記憶した群Gの生成元gとを入力する。ペアリング値算出部241は、CPU911を用いて、ペアリング写像eにより、元g’と元gとの組を写像した群Gの元e(g’,g)を算出する。ペアリング値算出部241は、CPU911を用いて、算出した元e(g’,g)を出力する。
累乗部242は、CPU911を用いて、ペアリング値算出部241が出力した元e(g’,g)と、索引乱数生成部230が出力した索引乱数sとを入力する。累乗部242は、CPU911を用いて、元e(g’,g)のs乗である群Gの元[e(g’,g]を算出する。累乗部242は、CPU911を用いて、算出した元を判定元E’として出力する。
ここで、公開元g’は、群Gの生成元gのy乗であるから、判定元E’は、
群Gの元e(g,g)の(s・y)乗である。
乱数元算出部270は、CPU911を用いて、乱数元E”を算出する。乱数元E”は、索引乱数を暗号化したものであり、暗号化索引データの一部である。乱数元算出部270は、累乗部271を有する。
累乗部271は、CPU911を用いて、第一生成元記憶部211が記憶した群Gの生成元gと、索引乱数生成部230が出力した索引乱数sとを入力する。累乗部271は、CPU911を用いて、元gのs乗である群Gの元(g )を算出する。累乗部271は、CPU911を用いて、算出した元(g )を乱数元E”として出力する。
索引元算出部250は、関数値算出部252、累乗部253を有する。
関数値算出部252は、CPU911を用いて、公開乱数元記憶部217が記憶したn個の公開乱数元uと、索引整数記憶部224が記憶したn個の索引整数hとを入力する。関数値算出部252は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する公開乱数元uと、対応する索引整数hとに基づいて、索引整数hと公開乱数元uとの組を関数Uに代入した値を算出する。関数値算出部252は、CPU911を用いて、算出したn個の値を関数値U(h,u)として出力する。
関数Uは、関数値算出部362が用いる関数と同じ関数である。したがって、索引整数hと検索整数ηとが等しければ、関数値算出部252が算出する関数値U(h,u)と関数値算出部362が算出する関数値U(η,u)とは等しい。
累乗部253は、CPU911を用いて、関数値算出部252が出力したn個の関数値U(h,u)と、索引乱数生成部230が出力した索引乱数sとを入力する。累乗部253は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、関数値U(h,u)のs乗である群Gの元[U(h,u]を算出する。累乗部253は、CPU911を用いて、算出したn個の元[U(h,u]を索引元Eとして出力する。
暗号化索引出力部260は、索引元出力部261、判定元出力部263、乱数元出力部264を有する。索引元出力部261は、CPU911を用いて、累乗部253が出力したn個の索引元Eを入力して、外部に出力する。判定元出力部263は、CPU911を用いて、累乗部242が出力した判定元E’を入力して、外部に出力する。乱数元出力部264は、CPU911を用いて、累乗部271が出力した乱数元E”を入力して、外部に出力する。
図16は、この実施の形態における検索装置400の構成の一例を示すブロック構成図である。
検索装置400は、索引数記憶部415、暗号化索引記憶部420、暗号化検索記憶部430、判定対象選択部441、補間係数値算出部442、写像元算出部450、比較元算出部460、判定部470を有する。
暗号化索引記憶部420は、索引元記憶部421、判定元記憶部422、乱数元記憶部424を有する。索引元記憶部421は、磁気ディスク装置920を用いて、1つの暗号化索引データについてn個ずつ索引元Eを記憶する。判定元記憶部422は、磁気ディスク装置920を用いて、1つの暗号化索引データについて1つずつの判定元E’を記憶する。乱数元記憶部424は、磁気ディスク装置920を用いて、1つの暗号化索引データについて1つずつの乱数元E”を記憶する。
暗号化検索記憶部430は、閾値記憶部431、検索元記憶部432、検索乱数元記憶部433を有する。閾値記憶部431は、磁気ディスク装置920を用いて、閾値dを記憶する。検索元記憶部432は、磁気ディスク装置920を用いて、n個の検索元Tを記憶する。検索乱数元記憶部433は、磁気ディスク装置920を用いて、n個の検索乱数元tを記憶する。
写像元算出部450は、二つのペアリング値算出部451,453、除算部454、累乗部455を有する。
ペアリング値算出部451は、CPU911を用いて、乱数元記憶部424が記憶した乱数元E”と、検索元記憶部432が記憶したn個の検索元Tとを入力する。ペアリング値算出部451は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、乱数元E”と、対応する検索元Tとに基づいて、ペアリング写像eにより、乱数元E”と検索元Tとの組を写像した群Gの元e(E”,T)を算出する。ペアリング値算出部451は、CPU911を用いて、算出したn個の元e(E”,T)(iは1以上n以下の整数。)を出力する。
ペアリング値算出部453は、CPU911を用いて、索引元記憶部421が記憶したn個の索引元Eと、検索乱数元記憶部433が記憶したn個の検索乱数元tとを入力する。ペアリング値算出部453は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する索引元Eと、対応する検索乱数元tとに基づいて、ペアリング写像eにより、検索乱数元tと索引元Eとの組を写像した群Gの元e(t,E)を算出する。ペアリング値算出部453は、CPU911を用いて、算出したn個の元e(t,E)(iは1以上n以下の整数。)を出力する。
除算部454は、CPU911を用いて、ペアリング値算出部451が出力したn個の元e(E”,T)と、ペアリング値算出部453が出力したn個の元e(t,E)とを入力する。除算部454は、CPU911を用いて、1以上n以下のn個の整数それぞれについて、対応する元e(E”,T)と、対応する元e(t,E)とに基づいて、元e(E”,T)を元e(t,E)で割った商[e(E”,T)/e(t,E)]を算出する。除算部454は、CPU911を用いて、算出したn個の商をペアリング値e(iは1以上n以下の整数。)として出力する。
ここで、乱数元E”は、群Gの生成元gのs乗であり、検索元Tは、群Gの生成元gのf(i)乗と関数値U(η,u)との積であり、検索乱数元tは、群Gの生成元gのt乗であり、索引元Eは、関数値U(h,u)のs乗であるから、ペアリング値eは、
Figure 0005274271
である。
累乗部455は、CPU911を用いて、補間係数値算出部442が出力したd個の補間係数値Δi,Sと、ペアリング値算出部451が出力したn個のペアリング値eのうち判定対象選択部441が選択したd個の整数に対応するd個のペアリング値eとを入力する。累乗部455は、判定対象選択部441が選択したd個の整数それぞれについて、対応する補間係数値Δi,Sと、対応するペアリング値eとに基づいて、ペアリング値eのΔi,S乗である群Gの元を算出する。累乗部455は、CPU911を用いて、算出したd個の元を写像元e’として出力する。
比較元算出部460は、総積部461を有する。
総積部461は、CPU911を用いて、累乗部455が出力したd個の写像元e’を入力する。総積部461は、CPU911を用いて、入力したd個の写像元e’すべての総積Π[e’]を算出する。総積部461は、CPU911を用いて、算出した総積Π[e’]を比較元Bとして出力する。
ここで、比較元Bは、
Figure 0005274271
である。
判定部470は、CPU911を用いて、検索条件に合うか否かを判定する対象である索引について判定元記憶部422が記憶した判定元E’と、総積部461が出力した比較元Bとを入力する。判定部470は、入力した判定元E’と比較元Bとを比較し、一致する場合に、その索引が検索条件に合うと判定する。判定部470は、CPU911を用いて、判定した結果を出力する。
すべてのi∈Sについて、h=ηである場合、U(h,u)=U(η,u)であるから、比較元Bは、
Figure 0005274271
となり、比較元Bは、判定元E’と一致する。
一方、いずれかのi∈Sについて、h≠ηである場合、B=E’となる確率は、極めて低い。例えば、i∈S’(S’はSの部分集合であり空集合でない。)について、h≠ηであり、それ以外のi∈Sについて、h=ηだとすると、
Figure 0005274271
である。例えば、関数Uが数21で定義される関数である場合、
Figure 0005274271
であるから、B=E’となるのは、
Figure 0005274271
の場合のみである。この値は、0以上p未満のランダムな値をとるから、0になる確率は1/pである。pは通常大きな数であるから、この確率は、極めて低い。
図17は、この実施の形態における設定処理S610の流れの一例を示すフローチャート図である。
設定処理S610は、第二生成元生成工程S612、秘密整数生成工程S614、公開元算出工程S615、整数選択工程S616、公開乱数元生成工程S618、整数繰り返し工程S620を有する。
第二生成元生成工程S612において、第二生成元算出部147は、CPU911を用いて、群Gの元であって単位元でない元をランダムに生成して、生成元gとする。
秘密整数生成工程S614において、秘密整数生成部131は、CPU911を用いて、1以上p未満の整数をランダムに生成して、秘密整数yとする。
公開元算出工程S615において、公開元算出部141は、CPU911を用いて、第一生成元記憶部111が記憶した群Gの生成元gと、秘密整数生成工程S614で秘密整数生成部131が生成した秘密整数yとに基づいて、元gのy乗である群Gの元を算出して、公開元g’とする。
整数選択工程S616において、公開乱数元算出部142は、CPU911を用いて、1以上n以下のn個の整数のなかから、整数を1つずつ順に選択して、整数iとする。
公開乱数元生成工程S618において、公開乱数元算出部142は、CPU911を用いて、整数選択工程S616で選択した整数iについて、群Gの元であって単位元でない元をランダムに生成して、公開乱数元uとする。
整数繰り返し工程S620において、公開乱数元算出部142は、CPU911を用いて、1以上n以下のすべての整数を、整数選択工程S616で選択したか否かを判定する。まだ選択していない整数があると判定した場合、公開乱数元算出部142は、CPU911を用いて、整数選択工程S616に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、設定装置100は、設定処理S610を終了する。
図18は、この実施の形態における索引暗号化処理S630の流れの一例を示すフローチャート図である。
索引暗号化処理S630は、索引乱数生成工程S631、判定元算出工程S632、乱数元算出工程S634、整数選択工程S635、索引整数算出工程S636、索引元算出工程S637、整数繰り返し工程S638を有する。
索引乱数生成工程S631において、索引乱数生成部230は、CPU911を用いて、1以上p未満の整数をランダムに生成して、索引乱数sとする。
判定元算出工程S632において、ペアリング値算出部241は、CPU911を用いて、ペアリング写像eにより、公開元記憶部216が記憶した公開元g’と、第二生成元記憶部212が記憶した群Gの生成元gとの組を写像した群Gの元e(g’,g)を算出する。累乗部242は、CPU911を用いて、ペアリング値算出部241が算出した元e(g’,g)と、索引乱数生成工程S631で索引乱数生成部230が生成した索引乱数sとに基づいて、元e(g’,g)のs乗である群Gの元を算出して、判定元E’とする。
乱数元算出工程S634において、累乗部271は、CPU911を用いて、第一生成元記憶部211が記憶した群Gの生成元gと、索引乱数生成工程S631で索引乱数生成部230が生成した索引乱数sとに基づいて、元gのs乗である群Gの元を算出して、乱数元E”とする。
整数選択工程S635において、索引変換部223は、CPU911を用いて、1以上n以下のn個の整数のなかから、整数を1つずつ順に選択して、整数iとする。
索引整数算出工程S636において、索引変換部223は、CPU911を用いて、整数選択工程S635で選択した整数iについて、写像Hにより、索引入力部221が入力した索引文字列wを写像した整数を算出して、索引整数hとする。
索引元算出工程S637において、関数値算出部252は、CPU911を用いて、整数選択工程S635で索引変換部223が選択した整数iについて、索引整数算出工程S636で索引変換部223が算出した索引整数hと、公開乱数元uとの組を、関数Uに代入した値である群Gの元を算出して、関数値U(h,u)とする。累乗部253は、CPU911を用いて、関数値算出部252が算出した関数値U(h,u)と、索引乱数生成工程S631で索引乱数生成部230が生成した索引乱数sとに基づいて、関数値U(h,u)のs乗である群Gの元を算出して、索引元Eとする。
整数繰り返し工程S638において、索引変換部223は、CPU911を用いて、1以上n以下のすべての整数を、整数選択工程S635で選択したか否かを判定する。まだ選択していない整数があると判定した場合、索引変換部223は、CPU911を用いて、整数選択工程S635に戻り、次の整数を選択する。すべての整数を選択したと判定した場合、索引暗号化装置200は、索引暗号化処理S630を終了する。
図19は、この実施の形態における検索暗号化処理S650の流れの一例を示すフローチャート図である。
検索暗号化処理S650は、次数選択工程S651、多項式係数生成工程S652、次数繰り返し工程S653、最高次係数生成工程S654、整数選択工程S655、検索整数算出工程S656、多項式値算出工程S657、検索乱数生成工程S658、検索元算出工程S659、検索乱数元算出工程S660、整数繰り返し工程S661を有する。
検索乱数生成工程S658において、検索乱数生成部380は、CPU911を用いて、整数選択工程S655で検索変換部352が選択した整数iについて、1以上p未満の整数をランダムに生成して、検索乱数rとする。
検索元算出工程S659において、関数値算出部362は、CPU911を用いて、整数選択工程S655で検索変換部352が選択した整数iについて、検索整数算出工程S656で検索変換部352が算出した検索整数ηと、公開乱数元uとの組を、関数Uに代入した値である群Gの元を算出して、関数値U(η,u)とする。累乗部365は、CPU911を用いて、関数値算出部362が算出した関数値U(η,u)と、検索乱数生成工程S658で検索乱数生成部380が生成した検索乱数rとに基づいて、関数値U(η,u)のr乗である群Gの元[U(η,u)^r]を算出する。累乗部366は、CPU911を用いて、第二生成元記憶部312が記憶した群Gの生成元gと、多項式値算出工程S657で多項式値算出部344が算出した多項式値f(i)とに基づいて、元gのf(i)乗である群Gの元[g^f(i)]を算出する。積算出部367は、CPU911を用いて、累乗部366が算出した元[g^f(i)]と、累乗部365が算出した元[U(η,u)^r]との積である群Gの元を算出して、検索元Tとする。
検索乱数元算出工程S660において、累乗部391は、CPU911を用いて、第一生成元記憶部311が記憶した群Gの生成元gと、検索乱数生成工程S658で検索乱数生成部380が生成した検索乱数rとに基づいて、元gのr乗である群Gの元を算出して、検索乱数元tとする。
図20は、この実施の形態における検索実行処理S670の流れの一例を示すフローチャート図である。
検索実行処理S670は、索引選択工程S671、整数選択工程S672、ペアリング値算出工程S673、整数繰り返し工程S674、判定選択工程S675、判定整数選択工程S676、補間係数値算出工程S677、累乗工程S678、判定整数繰り返し工程S679、総積工程S680、判定工程S681、判定繰り返し工程S682、索引繰り返し工程S683を有する。
ペアリング値算出工程S673において、ペアリング値算出部451は、CPU911を用いて、索引選択工程S671で選択した暗号化索引データについて乱数元記憶部424が記憶した乱数元E”と、整数選択工程S672で選択した整数iについて検索元記憶部432が記憶した検索元Tとに基づいて、ペアリング写像eにより、乱数元E”と検索元Tとの組を写像した群Gの元e(E”,T)を算出して、第一ペアリング値とする。ペアリング値算出部453は、CPU911を用いて、整数選択工程S672で選択した整数iについて、索引元記憶部421が記憶した索引元Eと、検索乱数元記憶部433が記憶した検索乱数元tとに基づいて、ペアリング写像eにより、検索乱数元tと索引元Eとの組を写像した群Gの元e(t,E)を算出して第二ペアリング値とする。除算部454は、CPU911を用いて、ペアリング値算出部451が算出した第一ペアリング値e(E”,T)と、ペアリング値算出部453が算出した第二ペアリング値e(t,E)とに基づいて、第一ペアリング値e(E”,T)を第二ペアリング値e(t,E)で割った商である群Gの元を算出して、ペアリング値eとする。
この実施の形態における検索システム800は、実施の形態1と同様の効果を奏する。
更に、検索暗号化装置300が耐タンパ性のある記憶装置などを用いて秘密裡に保持すべき秘密整数の数が、索引数nにかかわらず1つなので、耐タンパ性のある記憶装置の記憶容量によって、索引数nが制限されることがない。
この実施の形態で用いる写像φ〜φは、次の式で定義される。
Figure 0005274271
すなわち、第一の写像φは、0以上p未満の整数を位数pの群Gの元へ写す写像であり、整数xを、元gのx乗へ写す。元gは群Gの単位元でない。したがって、第一の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。
第二の写像φは、0以上p未満の整数を位数pの群Gの元へ写す写像であり、整数xを、関数値U(x,u)のs乗へ写す。索引整数sは0でない。したがって、関数Uがxについて全単射であれば、第二の写像φも全単射である。
第三の写像φは、位数pの群Gの元を位数pの群Gへ写す写像であり、元Xを、元e(X,g)のs乗へ写す。生成元gは群Gの単位元でなく、ペアリング写像eは双線形かつ非縮退であり、索引乱数sは0でない。したがって、第三の写像φは全単射であり、同型写像である。
第四の写像φは、0以上p未満の整数と0以上p未満の整数との組を位数pの群Gの元へ写す写像であり、整数xと整数xとの組(x,x)を、元gのx乗と関数値U(x,u)のr乗との積へ写す。生成元gは群Gの単位元でなく、検索乱数rは0でない。したがって、xを固定して考えると、xが0でなく、関数Uが全単射であれば、第四の写像φは、全単射である。また、xを固定して考えると、第四の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。
第五の写像φは、位数pの群Gの元と位数pの群Gの元と0以上p未満の整数との組を位数pの群Gの元に写す写像であり、元Xと元Xと整数xとの組(X,X,x)を、元e(g ,X)を元e(g^r,X)で割った商のx乗へ写す。生成元gは群Gの単位元でなく、索引乱数s及び検索乱数rは0でなく、ペアリング写像eは双線形かつ非縮退である。したがって、X,xを固定して考えると、第五の写像φは、xが0でないとき全単射である。また、X,xを固定して考えると、第五の写像φは、xが0でないとき全単射であり、群Gから群Gへの同型写像である。更に、X,Xを固定して考えると、第五の写像φは全単射であり、整数がpを法とする加法についてなす群から群Gへの同型写像である。
また、この実施の形態における写像φ〜φについては、次の関係が成り立つ。
Figure 0005274271
この実施の形態における検索システム800において、上記設定装置100は、更に、公開乱数元算出部142を有する。
上記公開元算出部141は、上記処理装置を用いて、第一の群Gの生成元である第一生成元g(上記第一の群Gの位数はp。)と、上記秘密整数生成部131が生成した秘密整数yとに基づいて、上記秘密整数yと等しい数の上記第一生成元gを、上記第一の群Gの群演算により結合した元g を算出して、公開元g’とする。
上記公開乱数元算出部142は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、第二の群Gの生成元(上記第二の群の位数はp。)をランダムに生成して、n個の公開乱数元uとする。
上記索引暗号化装置200は、更に、公開乱数元記憶部217と、乱数元算出部270とを有する。
上記公開乱数元記憶部217は、上記記憶装置を用いて、上記設定装置100が算出したn個の公開乱数元uを記憶する。
上記索引乱数生成部230は、上記処理装置を用いて、1以上p未満の整数をランダムに生成して、索引乱数sとする。
上記判定元算出部240は、上記処理装置を用いて、上記第二の群Gの生成元である第二生成元gと、上記公開元記憶部216が記憶した公開元g’とに基づいて、上記第一の群Gの元と上記第二の群Gの元との組を第三の群Gの元(上記第三の群の位数はp。)に写像する双線形ペアリング写像eにより、上記公開元g’と上記第二生成元gとの組が写像される上記第三の群Gの元e(g’,g)を算出し、算出した上記第三の群Gの元e(g’,g)と、上記索引乱数生成部230が生成した索引乱数sとに基づいて、上記索引乱数sと等しい数の上記第三の群Gの元e(g’,g)を、上記第三の群Gの群演算により結合した元e(g’,gを算出して、判定元E’とする。
上記乱数元算出部270は、上記処理装置を用いて、上記第一生成元gと、上記索引乱数生成部230が生成した索引乱数sとに基づいて、上記索引乱数sと等しい数の上記第一生成元gを、上記第一の群Gの群演算により結合した元g を算出して、乱数元E”とする。
上記索引元算出部250は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記索引整数記憶部224が記憶した索引整数hと、上記公開乱数元記憶部217が記憶した公開乱数元uとに基づいて、0以上p未満の整数と上記第二の群Gの元との組を上記第二の群Gの元に写像する写像関数Uにより、上記索引整数hと上記公開乱数元uとの組を写像した上記第二の群Gの元を算出して、n個の索引関数値U(h,u)とし、1以上n以下のn個の整数iそれぞれについて、算出した上記索引関数値U(h,u)と、上記索引乱数生成部230が生成した索引乱数sとに基づいて、上記索引乱数sと等しい数の上記索引関数値U(h,u)を、上記第二の群Gの群演算により結合した元U(h,uを算出して、n個の索引元Eとする。
上記検索暗号化装置300は、更に、公開乱数元記憶部317と、検索乱数生成部380と、検索乱数元算出部390とを有する。
上記公開乱数元記憶部317は、上記記憶装置を用いて、上記設定装置100が算出したn個の公開乱数元uを記憶する。
上記検索乱数生成部380は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、1以上p未満の整数をランダムに生成して、n個の検索乱数rとする。
上記検索元算出部360は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記検索整数記憶部353が記憶した検索整数ηと、上記公開乱数元記憶部317が記憶した公開乱数元uとに基づいて、上記写像関数Uにより、上記検索整数ηと上記公開乱数元uとの組を写像して、上記第二の群Gの元を算出して、n個の検索関数値U(η,u)とし、1以上n以下のn個の整数iそれぞれについて、算出した上記検索関数値U(η,u)と、上記検索乱数生成部380が生成した検索乱数rとに基づいて、上記検索乱数rと等しい数の上記検索関数値U(η,u)を、上記第二の群Gの群演算により結合した元[U(η,u)^r]を算出し、上記第二生成元gと、上記多項式値算出部344が算出した多項式値f(i)とに基づいて、上記多項式値f(i)と等しい数の上記第二生成元gを、上記第二の群Gの群演算により結合した元[g^f(i)]を算出し、算出した上記第二の群の二つの元[U(η,u)^r],[g^f(i)]を上記第二の群Gの群演算により結合した元を算出して、n個の検索元Tとする。
上記検索乱数元算出部390は、上記処理装置を用いて、1以上n以下のn個の整数iそれぞれについて、上記第一生成元gと、上記検索乱数生成部380が生成した検索乱数rとに基づいて、上記検索乱数rと等しい数の上記第一生成元gを、上記第一の群Gの群演算により結合した元[g^r]を算出して、n個の検索乱数元tとする。
上記検索装置400は、更に、乱数元記憶部424と、検索乱数元記憶部433とを有する。
上記乱数元記憶部424は、上記記憶装置を用いて、上記索引暗号化装置200が算出した乱数元E”を記憶する。
上記検索乱数元記憶部433は、上記記憶装置を用いて、上記検索暗号化装置300が算出したn個の検索乱数元tを記憶する。
上記写像元算出部450は、上記処理装置を用いて、上記判定対象選択部441が選択したd個の判定対象整数それぞれについて、上記乱数元記憶部424が記憶した乱数元E”と、上記検索元記憶部432が記憶した検索元Tとに基づいて、上記双線形ペアリング写像eにより、上記乱数元E”と上記検索元Tとの組を写像した上記第三の群の元を算出して、d個の第一ペアリング値e(E”,T)とし、上記判定対象選択部441が選択したd個の判定対象整数それぞれについて、上記検索乱数元記憶部433が記憶した検索乱数元tと、上記索引元記憶部421が記憶した索引元Eとに基づいて、上記双線形ペアリング写像eにより、上記検索乱数元tと上記索引元Eとの組を写像した上記第三の群Gの元を算出して、d個の第二ペアリング値e(t,E)とし、上記判定対象選択部441が選択したd個の判定対象整数それぞれについて、算出した上記第一ペアリング値e(E”,T)と、算出した上記第二ペアリング値e(t,E)の逆元とを上記第三の群Gの群演算により結合した元[e(E”,T)/e(t,E)を算出して、d個の写像元e’とする。
上記比較元算出部460は、上記処理装置を用いて、上記写像元算出部450が算出したd個の写像元e’を、上記第三の群Gの群演算により結合した元Π[e’]を算出して、比較元Bとする。
安全性の証明については省略するが、この実施の形態における検索システム800によれば、索引整数や検索整数を解読しようとする第三者の攻撃に対して、安全性を有する。
更に、検索暗号化装置300が秘密裡に保持すべき秘密データの量が少なく、索引数nにかかわらず一定なので、耐タンパ性を有する記憶装置の記憶容量が少なくて済み、また、耐タンパ性を有する記憶装置の記憶容量により、索引数nが制限されることがない。
なお、実施の形態1のなかで説明した各種の変形は、この実施の形態における検索システム800に対しても適用することができる。
以上説明した検索システム800を、例えば、個人の年齢・住所・職業・嗜好などの属性情報を保存したデータベースに適用すれば、ある属性に近い人物のみを抽出する秘匿データマッチングを実現できる。あるいは、画像データをピクセルごとに保存したデータベースに適用すれば、ある画像に近い画像のみを抽出する秘匿画像マッチングを実現できる。あるいは、指紋情報・光彩情報・静脈情報などの生体情報を保存したデータベースに適用すれば、個人識別時に生体情報を用いて検索を行うことにより、生体情報の安全性を保ちつつ個人識別や個人認証を行う生体認証を実現できる。
100 設定装置、110,210,310 設定記憶部、111,211,311 第一生成元記憶部、112,212,312 第二生成元記憶部、113 第三生成元記憶部、115,215,315,415 索引数記憶部、121 ペアリング値算出部、130 秘密生成部、131 秘密整数生成部、132 秘密乱数生成部、140 公開算出部、141 公開元算出部、142 公開乱数元算出部、147 第二生成元算出部、150 公開出力部、151 公開元出力部、152 公開乱数元出力部、156 第一生成元出力部、157 第二生成元出力部、200 索引暗号化装置、216 公開元記憶部、217,317 公開乱数元記憶部、221 索引入力部、223 索引変換部、224 索引整数記憶部、230 索引乱数生成部、240 判定元算出部、241 ペアリング値算出部、242 累乗部、250 索引元算出部、251 指数算出部、252 関数値算出部、253 累乗部、260 暗号化索引出力部、261 索引元出力部、262 判定元出力部、263 判定元出力部、264 乱数元出力部、270 乱数元算出部、271 累乗部、300 検索暗号化装置、320 秘密記憶部、321 秘密整数記憶部、323 秘密乱数記憶部、330 検索条件入力部、331 閾値入力部、332 検索入力部、341 閾値記憶部、342 多項式係数生成部、343 多項式係数記憶部、344 多項式値算出部、352 検索変換部、353 検索整数記憶部、360 検索元算出部、361 指数算出部、362 関数値算出部、365,366 累乗部、367 積算出部、370 暗号化検索出力部、371 閾値出力部、372 検索元出力部、373 検索乱数元出力部、380 検索乱数生成部、390 検索乱数元算出部、391 累乗部、400 検索装置、420 暗号化索引記憶部、421 索引元記憶部、422 判定元記憶部、424 乱数元記憶部、430 暗号化検索記憶部、431 閾値記憶部、432 検索元記憶部、433 検索乱数元記憶部、441 判定対象選択部、442 補間係数値算出部、450 写像元算出部、451,453 ペアリング値算出部、454 除算部、455 累乗部、460 比較元算出部、461 総積部、470 判定部、800 検索システム、810 復号装置、820 暗号化装置、830 サーバ装置、840 データ暗号化装置、841 本体記憶部、842 暗号化鍵記憶部、843 本体暗号化部、850 暗号化データ記憶装置、851 暗号化本体記憶部、852 検索結果入力部、853 検索本体出力部、860 データ復号装置、861 復号鍵記憶部、862 本体復号部、863 復号本体出力部、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (12)

  1. 索引暗号化装置と、検索暗号化装置と、検索装置とを有し、
    上記索引暗号化装置は、データを記憶する記憶装置と、データを処理する処理装置と、索引記憶部と、索引暗号化部とを有し、
    上記索引記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数(nは1以上の整数。)に対応するn個の索引データを記憶し、
    上記索引暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記索引記憶部が記憶した索引データを暗号化して、n個の暗号化索引データとし、
    上記検索暗号化装置は、データを記憶する記憶装置と、データを処理する処理装置と、検索記憶部と、多項式値算出部と、検索暗号化部とを有し、
    上記検索記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数に対応するn個の検索データを記憶し、
    上記多項式値算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、(d−1)次の一変数多項式(dは1以上n以下の整数。)に上記整数を代入した値を算出して、n個の多項式値とし、
    上記検索暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記検索記憶部が記憶した検索データと、上記多項式値算出部が算出した多項式値との組を暗号化して、n個の暗号化検索データとし、
    上記検索装置は、データを処理する処理装置と、データを記憶する記憶装置と、暗号化索引記憶部と、暗号化検索記憶部と、判定対象選択部と、補間係数値算出部と、写像算出部と、比較算出部と、判定部とを有し、
    上記暗号化索引記憶部は、上記記憶装置を用いて、上記索引暗号化装置が暗号化したn個の暗号化索引データを記憶し、
    上記暗号化検索記憶部は、上記記憶装置を用いて、上記検索暗号化装置が暗号化したn個の暗号化検索データを記憶し、
    上記判定対象選択部は、上記処理装置を用いて、1以上n以下のn個の整数のなかからd個の整数を選択して、d個の判定対象整数とし、
    上記補間係数値算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数に基づいて、ラグランジュの補間係数の値を算出して、d個の補間係数値とし、
    上記写像算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記暗号化索引記憶部が記憶した暗号化索引データと、上記暗号化検索記憶部が記憶した暗号化検索データと、上記補間係数値算出部が算出した補間係数値との組を写像して、d個の写像データとし、
    上記比較算出部は、上記処理装置を用いて、上記写像算出部が写像したd個の写像データに基づいて、比較データを算出し、
    上記判定部は、上記処理装置を用いて、上記比較算出部が算出した比較データに基づいて、上記判定対象選択部が選択したd個の判定対象整数について、上記索引データと、上記検索データとが一致するか否かを判定することを特徴とする検索システム。
  2. 上記補間係数値算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数のうちの一つを対象整数とし、上記判定対象選択部が選択したd個の判定対象整数のうち上記対象整数以外の(d−1)個の判定対象整数を(d−1)個の対象外整数とし、(d−1)個の対象外整数それぞれについて、上記対象外整数から上記対象整数を差し引いた差で、上記対象外整数を割った商を算出し、算出した(d−1)個の商の総積を算出して、上記対象整数についての補間係数値とすることを特徴とする請求項1に記載の検索システム。
  3. 上記多項式値算出部は、上記処理装置を用いて、所定の秘密整数を上記一変数多項式の定数項として、上記多項式値を算出することを特徴とする請求項1または請求項2に記載の検索システム。
  4. 上記検索システムは、更に、設定装置を有し、
    上記設定装置は、秘密整数生成部と、公開元算出部とを有し、
    上記秘密整数生成部は、上記処理装置を用いて、1以上p未満の整数(pは素数。)をランダムに生成して、秘密整数とし、
    上記公開元算出部は、上記処理装置を用いて、0以上p未満の整数を位数pの群の元に単射する第一の写像により、上記秘密整数生成部が生成した秘密整数を写像した元を算出して、公開元とし、
    上記索引暗号化装置は、公開元記憶部と、索引整数記憶部と、索引元算出部と、判定元算出部とを有し、
    上記公開元記憶部は、上記記憶装置を用いて、上記設定装置が算出した公開元を記憶し、
    上記索引整数記憶部は、上記記憶装置を用いて、n個の1以上p未満の整数を、1以上n以下のn個の整数それぞれに対応する索引整数として記憶し、
    上記索引元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記索引整数記憶部が記憶した索引整数に基づいて、0以上p未満の整数を位数pの群の元に単射する第二の写像により、上記索引整数を写像した元を算出して、n個の索引元とし、
    上記判定元算出部は、上記処理装置を用いて、上記公開元記憶部が記憶した公開元に基づいて、位数pの群の元を位数pの群の元に単射する第三の写像により、上記公開元を写像した元を算出して、判定元とし、
    上記検索暗号化装置は、秘密整数記憶部と、検索整数記憶部と、多項式係数生成部と、検索元算出部とを有し、
    上記秘密整数記憶部は、上記記憶装置を用いて、上記設定装置が生成した秘密整数を記憶し、
    上記検索整数記憶部は、上記記憶装置を用いて、n個の1以上p未満の整数を、1以上n以下のn個の整数それぞれに対応する検索整数として記憶し、
    上記多項式係数生成部は、上記処理装置を用いて、(d−1)個の0以上p未満の整数をランダムに生成して、(d−1)個の多項式係数とし、
    上記多項式値算出部は、上記処理装置を用いて、上記秘密整数記憶部が記憶した秘密整数を、上記一変数多項式の定数項とし、上記多項式係数生成部が生成した(d−1)個の多項式係数を、上記一変数多項式の1次から(d−1)次までの各項の係数として、上記多項式値を算出し、
    上記検索元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記検索整数記憶部が記憶した検索整数と、上記多項式値算出部が算出した多項式値とに基づいて、1以上p未満の整数と0以上p未満の整数との組を位数pの群の元に写像する第四の写像により、上記検索整数と上記多項式値との組を写像した元を算出して、n個の検索元とし、
    上記検索装置は、索引元記憶部と、判定元記憶部と、検索元記憶部と、写像元算出部と、比較元算出部とを有し、
    上記索引元記憶部は、上記記憶装置を用いて、上記索引暗号化装置が算出したn個の索引元を記憶し、
    上記判定元記憶部は、上記記憶装置を用いて、上記索引暗号化装置が算出した判定元を記憶し、
    上記検索元記憶部は、上記記憶装置を用いて、上記検索暗号化装置が算出したn個の検索元を記憶し、
    上記写像元算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記索引元記憶部が記憶した索引元と、上記検索元記憶部が記憶した検索元と、上記補間係数値算出部が算出した補間係数値とに基づいて、位数pの群の元と位数pの群の元と0以上p未満の整数との組を位数pの群の元に写像する第五の写像により、上記索引元と上記検索元と上記補間係数値との組を写像した元を算出して、d個の写像元とし、
    上記比較元算出部は、上記処理装置を用いて、上記写像元算出部が算出したd個の写像元を群演算により結合した元を算出して、比較元とし、
    上記判定部は、上記処理装置を用いて、上記比較元算出部が算出した比較元と、上記判定元記憶部が記憶した判定元とが等しい場合に、上記判定対象選択部が選択したd個の判定対象整数について、上記索引整数と、上記検索整数とが一致すると判定することを特徴とする請求項1乃至請求項3のいずれかに記載の検索システム。
  5. 上記判定元算出部は、0以上p未満の任意の整数について、上記任意の整数を上記第一の写像により写像した元を、上記第三の写像により写像した元が、上記任意の整数と等しい数の所定の元を、群演算により結合した元と等しくなる写像を、上記第三の写像として用い、
    上記写像元算出部は、1以上p未満の任意の第一の整数について、上記任意の第一の整数を上記第二の写像により写像した元と、上記任意の第一の整数と第二の整数との組を上記第四の写像により写像した元と、第三の整数との組を、上記第五の写像により写像した元が、上記第二の整数と上記第三の整数との積と等しい数の上記所定の元を、群演算により結合した元と等しくなる写像を、上記第五の写像として用いることを特徴とする請求項4に記載の検索システム。
  6. 上記設定装置は、更に、秘密乱数生成部と、公開乱数元算出部とを有し、
    上記秘密乱数生成部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、1以上p未満の整数をランダムに生成して、n個の秘密乱数とし、
    上記公開元算出部は、上記処理装置を用いて、第一の群の元と第二の群の元との組を第三の群の元に写像する双線形ペアリング写像(上記第一の群及び上記第二の群及び上記第三の群の位数はp。)により、上記第一の群の生成元である第一生成元と、上記第二の群の生成元である第二生成元との組を写像した元である第三生成元と、上記秘密整数生成部が生成した秘密整数とに基づいて、上記秘密整数と等しい数の上記第三生成元を、上記第三の群の群演算により結合した元を算出して、公開元とし、
    上記公開乱数元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記第一生成元と、上記秘密乱数生成部が生成した秘密乱数とに基づいて、上記秘密乱数と等しい数の上記第一生成元を、上記第一の群の群演算により結合した元を算出して、n個の公開乱数元とし、
    上記索引暗号化装置は、更に、公開乱数元記憶部と、索引乱数生成部とを有し、
    上記公開乱数元記憶部は、上記記憶装置を用いて、上記設定装置が算出したn個の公開乱数元を記憶し、
    上記索引乱数生成部は、上記処理装置を用いて、1以上p未満の整数をランダムに生成して、索引乱数とし、
    上記判定元算出部は、上記処理装置を用いて、上記公開元記憶部が記憶した公開元と、上記索引乱数生成部が生成した索引乱数とに基づいて、上記索引乱数と等しい数の上記公開元を、上記第三の群の群演算により結合した元を算出して、判定元とし、
    上記索引元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記公開乱数元記憶部が記憶した公開乱数元と、上記索引整数記憶部が記憶した索引整数と、上記索引乱数生成部が生成した索引乱数とに基づいて、上記索引整数と上記索引乱数との積と等しい数の上記公開乱数元を、上記第一の群の群演算により結合した元を算出して、n個の索引元とし、
    上記検索暗号化装置は、更に、秘密乱数記憶部を有し、
    上記秘密乱数記憶部は、上記記憶装置を用いて、上記設定装置が生成したn個の秘密乱数を記憶し、
    上記検索元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記第二生成元と、上記秘密乱数記憶部が記憶した秘密乱数と、上記検索整数記憶部が記憶した検索整数と、上記多項式値算出部が算出した多項式値とに基づいて、上記秘密乱数と上記検索整数との積で上記多項式値を割った商と等しい数の上記第二生成元を、上記第二の群の群演算により結合した元を算出して、n個の検索元とし、
    上記検索装置において、
    上記写像元算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記索引元記憶部が記憶した索引元と、上記検索元記憶部が記憶した検索元とに基づいて、上記双線形ペアリング写像により上記索引元と上記検索元との組を写像した上記第三の群の元を算出して、d個のペアリング値とし、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、算出した上記ペアリング値と、上記補間係数値算出部が算出した補間係数値とに基づいて、上記補間係数値と等しい数の上記ペアリング値を、上記第三の群の群演算により結合した元を算出して、d個の写像元とし、
    上記比較元算出部は、上記処理装置を用いて、上記写像元算出部が算出したd個の写像元を、上記第三の群の群演算により結合した元を算出して、比較元とすることを特徴とする請求項4または請求項5に記載の検索システム。
  7. 上記設定装置は、更に、公開乱数元算出部を有し、
    上記公開元算出部は、上記処理装置を用いて、第一の群の生成元である第一生成元(上記第一の群の位数はp。)と、上記秘密整数生成部が生成した秘密整数とに基づいて、上記秘密整数と等しい数の上記第一生成元を、上記第一の群の群演算により結合した元を算出して、公開元とし、
    上記公開乱数元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、第二の群の生成元(上記第二の群の位数はp。)をランダムに生成して、n個の公開乱数元とし、
    上記索引暗号化装置は、更に、公開乱数元記憶部と、乱数元算出部と、索引乱数生成部とを有し、
    上記公開乱数元記憶部は、上記記憶装置を用いて、上記設定装置が算出したn個の公開乱数元を記憶し、
    上記索引乱数生成部は、上記処理装置を用いて、1以上p未満の整数をランダムに生成して、索引乱数とし、
    上記判定元算出部は、上記処理装置を用いて、上記第二の群の生成元である第二生成元と、上記公開元記憶部が記憶した公開元とに基づいて、上記第一の群の元と上記第二の群の元との組を第三の群の元(上記第三の群の位数はp。)に写像する双線形ペアリング写像により、上記公開元と上記第二生成元との組が写像される上記第三の群の元を算出し、算出した上記第三の群の元と、上記索引乱数生成部が生成した索引乱数とに基づいて、上記索引乱数と等しい数の上記第三の群の元を、上記第三の群の群演算により結合した元を算出して、判定元とし、
    上記乱数元算出部は、上記処理装置を用いて、上記第一生成元と、上記索引乱数生成部が生成した索引乱数とに基づいて、上記索引乱数と等しい数の上記第一生成元を、上記第一の群の群演算により結合した元を算出して、乱数元とし、
    上記索引元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記索引整数記憶部が記憶した索引整数と、上記公開乱数元記憶部が記憶した公開乱数元とに基づいて、0以上p未満の整数と上記第二の群の元との組を上記第二の群の元に写像する写像関数により、上記索引整数と上記公開乱数元との組を写像した上記第二の群の元を算出して、n個の索引関数値とし、1以上n以下のn個の整数それぞれについて、算出した上記索引関数値と、上記索引乱数生成部が生成した索引乱数とに基づいて、上記索引乱数と等しい数の上記索引関数値を、上記第二の群の群演算により結合した元を算出して、n個の索引元とし、
    上記検索暗号化装置は、更に、公開乱数元記憶部と、検索乱数生成部と、検索乱数元算出部とを有し、
    上記公開乱数元記憶部は、上記記憶装置を用いて、上記設定装置が算出したn個の公開乱数元を記憶し、
    上記検索乱数生成部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、1以上p未満の整数をランダムに生成して、n個の検索乱数とし、
    上記検索元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記検索整数記憶部が記憶した検索整数と、上記公開乱数元記憶部が記憶した公開乱数元とに基づいて、上記写像関数により、上記検索整数と上記公開乱数元との組を写像して、上記第二の群の元を算出して、n個の検索関数値とし、1以上n以下のn個の整数それぞれについて、算出した上記検索関数値と、上記検索乱数生成部が生成した検索乱数とに基づいて、上記検索乱数と等しい数の上記検索関数値を、上記第二の群の群演算により結合した元を算出し、上記第二生成元と、上記多項式値算出部が算出した多項式値とに基づいて、上記多項式値と等しい数の上記第二生成元を、上記第二の群の群演算により結合した元を算出し、算出した上記第二の群の二つの元を上記第二の群の群演算により結合した元を算出して、n個の検索元とし、
    上記検索乱数元算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記第一生成元と、上記検索乱数生成部が生成した検索乱数とに基づいて、上記検索乱数と等しい数の上記第一生成元を、上記第一の群の群演算により結合した元を算出して、n個の検索乱数元とし、
    上記検索装置は、更に、乱数元記憶部と、検索乱数元記憶部とを有し、
    上記乱数元記憶部は、上記記憶装置を用いて、上記索引暗号化装置が算出した乱数元を記憶し、
    上記検索乱数元記憶部は、上記記憶装置を用いて、上記検索暗号化装置が算出したn個の検索乱数元を記憶し、
    上記写像元算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記乱数元記憶部が記憶した乱数元と、上記検索元記憶部が記憶した検索元とに基づいて、上記双線形ペアリング写像により、上記乱数元と上記検索元との組を写像した上記第三の群の元を算出して、d個の第一ペアリング値とし、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記検索乱数元記憶部が記憶した検索乱数元と、上記索引元記憶部が記憶した索引元とに基づいて、上記双線形ペアリング写像により、上記検索乱数元と上記索引元との組を写像した上記第三の群の元を算出して、d個の第二ペアリング値とし、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、算出した上記第一ペアリング値と、算出した上記第二ペアリング値の逆元とを上記第三の群の群演算により結合した元を算出して、d個の写像元とし、
    上記比較元算出部は、上記処理装置を用いて、上記写像元算出部が算出したd個の写像元を、上記第三の群の群演算により結合した元を算出して、比較元とすることを特徴とする請求項4または請求項5に記載の検索システム。
  8. 上記索引暗号化装置は、更に、索引変換部を有し、
    上記索引変換部は、上記処理装置を用いて、1以上n以下のn個の整数に対応するn個の索引文字列を入力し、1以上n以下のn個の整数それぞれについて、任意の長さの文字列を1以上p未満の整数に変換する変換写像により、入力した索引文字列を変換して、n個の索引整数とし、
    上記索引整数記憶部は、上記記憶装置を用いて、上記索引変換部が変換したn個の索引整数を記憶し、
    上記検索暗号化装置は、更に、検索変換部を有し、
    上記検索変換部は、上記処理装置を用いて、1以上n以下のn個の整数に対応するn個の検索文字列を入力し、1以上n以下のn個の整数それぞれについて、上記変換写像により、入力した検索文字列を変換して、n個の検索整数とし、
    上記検索整数記憶部は、上記記憶装置を用いて、上記検索変換部が変換したn個の検索整数を記憶することを特徴とする請求項4乃至請求項7のいずれかに記載の検索システム。
  9. データを記憶する記憶装置と、データを処理する処理装置と、検索記憶部と、多項式値算出部と、検索暗号化部とを有し、
    上記検索記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数(nは1以上の整数。)に対応するn個の検索データを記憶し、
    上記多項式値算出部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、(d−1)次の一変数多項式(dは1以上n以下の整数。)に上記整数を代入した値を算出して、n個の多項式値とし、
    上記検索暗号化部は、上記処理装置を用いて、1以上n以下のn個の整数それぞれについて、上記検索記憶部が記憶した検索データと、上記多項式値算出部が算出した多項式値との組を暗号化して、n個の暗号化検索データとすることを特徴とする検索暗号化装置。
  10. データを処理する処理装置と、データを記憶する記憶装置と、暗号化索引記憶部と、暗号化検索記憶部と、判定対象選択部と、補間係数値算出部と、写像算出部と、比較算出部と、判定部とを有し、
    上記暗号化索引記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数(nは1以上の整数。)に対応するn個の索引データをそれぞれ暗号化したn個の暗号化索引データを記憶し、
    上記暗号化検索記憶部は、上記記憶装置を用いて、1以上n以下のn個の整数に対応するn個の検索データをそれぞれ暗号化したn個の暗号化検索データを記憶し、
    上記判定対象選択部は、上記処理装置を用いて、1以上n以下のn個の整数のなかからd個の整数(dは1以上n以下の整数。)を選択して、d個の判定対象整数とし、
    上記補間係数値算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数に基づいて、ラグランジュの補間係数の値を算出して、d個の補間係数値とし、
    上記写像算出部は、上記処理装置を用いて、上記判定対象選択部が選択したd個の判定対象整数それぞれについて、上記暗号化索引記憶部が記憶した暗号化索引データと、上記暗号化検索記憶部が記憶した暗号化検索データと、上記補間係数値算出部が算出した補間係数値との組を写像して、d個の写像データとし、
    上記比較算出部は、上記処理装置を用いて、上記写像算出部が写像したd個の写像データに基づいて、比較データを算出し、
    上記判定部は、上記処理装置を用いて、上記比較算出部が算出した比較データに基づいて、上記判定対象選択部が選択したd個の判定対象整数について、上記索引データと、上記検索データとが一致するか否かを判定することを特徴とする検索装置。
  11. データを記憶する記憶装置と、データを処理する処理装置とを有するコンピュータが実行することにより、上記コンピュータが請求項10に記載の検索暗号化装置または請求項11に記載の検索装置として機能することを特徴とするコンピュータプログラム。
  12. 索引暗号化装置が索引データを暗号化した暗号化索引データと、検索暗号化装置が検索データを暗号化した暗号化検索データとを用いて、検索装置が上記索引データと上記検索データとが一致するか否かを判定する検索方法において、
    上記索引暗号化装置が、1以上n以下のn個の整数(nは1以上の整数。)に対応するn個の索引データを記憶し、
    上記索引暗号化装置が、1以上n以下のn個の整数それぞれについて、記憶した索引データを暗号化して、n個の暗号化索引データとし、
    上記検索暗号化装置が、1以上n以下のn個の整数に対応するn個の検索データを記憶し、
    上記検索暗号化装置が、1以上n以下のn個の整数それぞれについて、(d−1)次の一変数多項式(dは1以上n以下の整数。)に上記整数を代入した値を算出して、n個の多項式値とし、
    上記検索暗号化装置が、1以上n以下のn個の整数それぞれについて、記憶した検索データと、算出した多項式値との組を暗号化して、n個の暗号化検索データとし、
    上記検索装置が、上記索引暗号化装置が暗号化したn個の暗号化索引データを記憶し、
    上記検索装置が、上記検索暗号化装置が暗号化したn個の暗号化検索データを記憶し、
    上記検索装置が、1以上n以下のn個の整数のなかからd個の整数を選択して、d個の判定対象整数とし、
    上記検索装置が、選択したd個の判定対象整数に基づいて、ラグランジュの補間係数の値を算出して、d個の補間係数値とし、
    上記検索装置が、選択したd個の判定対象整数それぞれについて、記憶した暗号化索引データと、記憶した暗号化検索データと、算出した補間係数値との組を写像して、d個の写像データとし、
    上記検索装置が、写像したd個の写像データに基づいて、比較データを算出し、
    上記検索装置が、算出した比較データに基づいて、選択したd個の判定対象整数について、上記索引データと、上記検索データとが一致するか否かを判定することを特徴とする検索方法。
JP2009007892A 2009-01-16 2009-01-16 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法 Expired - Fee Related JP5274271B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009007892A JP5274271B2 (ja) 2009-01-16 2009-01-16 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009007892A JP5274271B2 (ja) 2009-01-16 2009-01-16 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法

Publications (2)

Publication Number Publication Date
JP2010164835A JP2010164835A (ja) 2010-07-29
JP5274271B2 true JP5274271B2 (ja) 2013-08-28

Family

ID=42581033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009007892A Expired - Fee Related JP5274271B2 (ja) 2009-01-16 2009-01-16 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法

Country Status (1)

Country Link
JP (1) JP5274271B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5557683B2 (ja) * 2010-10-07 2014-07-23 三菱電機株式会社 情報検索装置および情報検索方法
US9111106B2 (en) 2011-01-13 2015-08-18 Mitsubishi Electric Corporation Data processing apparatus and data storage apparatus
WO2013018683A1 (ja) 2011-07-29 2013-02-07 日本電気株式会社 情報漏えいに耐性を持つインデックス生成システム及びインデックス生成装置並びにその方法
JP5975490B2 (ja) * 2011-09-14 2016-08-23 国立研究開発法人産業技術総合研究所 検索システム、検索方法、およびプログラム
WO2013084957A1 (ja) * 2011-12-09 2013-06-13 日本電気株式会社 暗号化検索データベース装置、暗号化検索用データの追加削除方法および追加削除プログラム
JP5667969B2 (ja) * 2011-12-22 2015-02-12 株式会社日立製作所 検索処理システムおよび部分一致検索方法
JP2014126865A (ja) * 2012-12-27 2014-07-07 Fujitsu Ltd 暗号処理装置および方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3907184B2 (ja) * 2002-06-17 2007-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース検索システム及びデータ共有システム
CN101593196B (zh) * 2008-05-30 2013-09-25 日电(中国)有限公司 用于快速密文检索的方法、装置和系统

Also Published As

Publication number Publication date
JP2010164835A (ja) 2010-07-29

Similar Documents

Publication Publication Date Title
CN108140334B (zh) 隐匿检索系统、管理装置、隐匿检索方法和记录介质
JP6504013B2 (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
JP6058237B1 (ja) 暗号文変換装置、暗号文変換プログラム及び暗号文変換方法
JP5274271B2 (ja) 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法
Sousa et al. Efficient and secure outsourcing of genomic data storage
JP2014126865A (ja) 暗号処理装置および方法
JP5762232B2 (ja) プライバシを保護したまま暗号化された要素の順序を選択するための方法およびシステム
Mohanty et al. $2 dcrypt $: Image scaling and cropping in encrypted domains
Merkepci et al. On Some Novel Results about Split‐Complex Numbers, the Diagonalization Problem, and Applications to Public Key Asymmetric Cryptography
JP6305638B2 (ja) 暗号システム及び鍵生成装置
JP5400740B2 (ja) 検索可能暗号システム、検索可能暗号方法、ストレージ装置、検索装置、及び登録者装置
Lee et al. Selective scalable secret image sharing with verification
Preethi et al. A high secure medical image storing and sharing in cloud environment using hex code cryptography method—secure genius
Chen et al. On the security of a BTC-based-compression image authentication scheme
Kim et al. Privacy-preserving parallel kNN classification algorithm using index-based filtering in cloud computing
Mok et al. Implementing the honey encryption for securing public cloud data storage
KR20240004830A (ko) 완전 동형 암호화에서 사용하기 위한 블라인드 회전
Niu et al. A data-sharing scheme that supports multi-keyword search for electronic medical records
Ruzai et al. New simultaneous Diophantine attacks on generalized RSA key equations
KR101444828B1 (ko) 암호화된 이미지의 저장 및 검색 방법
Thirumalai et al. Modelling a side channel resistant CHAN-PKC cryptomata for medical data security
Karolin et al. Visual Cryptography Secret Share Creation Techniques with Multiple Image Encryption and Decryption Using Elliptic Curve Cryptography
Liu et al. Secure medical data on cloud storage via DNA homomorphic encryption technique
Kebache et al. Reducing the Encrypted Data Size: Healthcare with IoT-Cloud Computing Applications.
Youn et al. Design of additive homomorphic encryption with multiple message spaces for secure and practical storage services over encrypted data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111024

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20121207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130514

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees