JPWO2017122696A1 - 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム - Google Patents

秘匿検索システム、秘匿検索方法及び秘匿検索プログラム Download PDF

Info

Publication number
JPWO2017122696A1
JPWO2017122696A1 JP2017547007A JP2017547007A JPWO2017122696A1 JP WO2017122696 A1 JPWO2017122696 A1 JP WO2017122696A1 JP 2017547007 A JP2017547007 A JP 2017547007A JP 2017547007 A JP2017547007 A JP 2017547007A JP WO2017122696 A1 JPWO2017122696 A1 JP WO2017122696A1
Authority
JP
Japan
Prior art keywords
search
encryption
storage unit
keyword
management
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.)
Granted
Application number
JP2017547007A
Other languages
English (en)
Other versions
JP6239213B1 (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
Application granted granted Critical
Publication of JP6239213B1 publication Critical patent/JP6239213B1/ja
Publication of JPWO2017122696A1 publication Critical patent/JPWO2017122696A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

管理装置(500)は、暗号化タグ(C(D))と暗号化データとを対応付けて保管する。検索装置(400)は、管理装置(500)に保管されている暗号化データを検索する検索キーワード(s)を取得すると、検索キーワード(s)から一意に定まる確定的情報(t)を算出し、検索キーワード(s)に対し確定的情報(t)を用いて確率暗号方式の暗号化を実行することにより検索クエリ(Q(s))を生成する。検索装置(400)は、検索クエリ(Q(s))を管理装置(500)に送信する。管理装置(500)は、検索装置(400)から検索クエリ(Q(s))を受信すると、検索クエリ(Q(s))を復号して得られる検索キーワード(s)が、管理装置(500)に保管されている暗号化タグ(c)を復号して得られる関連キーワードと一致するか否かを判定する。

Description

本発明は、秘匿検索システム、秘匿検索方法及び秘匿検索プログラムに関する。
秘匿検索とは、暗号化したままファイルを検索することができる技術である。クラウドサービスが普及し始めている現在において、安価かつ手間なく利用を開始することができるクラウドストレージが一般的になりつつある。ここで、クラッキング或いはクラウドの信頼性に対する懸念から、クラウドストレージ上ではファイルを暗号化して保管することが考えられる。秘匿検索は、暗号化されているファイルに対して、復号することなく検索できるため、安全性と機能性とを両立することが可能な技術である。
秘匿検索では、2つの暗号化されたキーワードを用いて検索を実現する。1つ目は、暗号化ファイルに関連付ける暗号化キーワードで、以降では暗号化タグという。2つ目は、検索に用いるキーワードを暗号化したキーワードで、以降では暗号化クエリ或いは検索クエリという。秘匿検索では、この暗号化タグの集合に対し、検索クエリを用いて、復号することなく一致する暗号化タグを見つけることで、保管されているファイル或いは検索キーワードの情報を露出することなく検索を実現する。
秘匿検索には、同じ検索キーワードに対して同じ暗号文を生成する確定的暗号化を用いる方式と同じ検索キーワードでも異なる暗号文を生成する確率的暗号化を用いる方式とがある。検索クエリが確定的な確定的暗号化を用いる秘匿検索は、暗号化されたまま検索キーワードの分布を得ることが可能なため、分布の偏りからキーワードを推測されてしまう可能性がある。このため、検索クエリが確率的な確率的暗号化を用いる秘匿検索は、確定的暗号化を用いる秘匿検索と比較して安全性が高い。しかし、一方で、検索クエリが確率的な秘匿検索は、検索クエリが確定的な秘匿検索と比較して検索処理が遅いという課題がある。
検索クエリが確率的な秘匿検索の高速化手法として、特許文献1及び特許文献2がある。また、検索クエリが確定的な秘匿検索の高速化手法であるが、検索クエリが確定的であることを利用して、再検索を高速化する手法が非特許文献1に記されている。また、非特許文献2には、検索クエリが確定的暗号化により生成されていても、頻度分析攻撃に強い暗号化タグの構成法を開示している。
特許文献1及び特許文献2では、検索キーワードに依存する確定的な値を暗号化クエリに含め、暗号化タグの集合にも同様に確定的な値を付加することで検索対象の暗号化タグを限定し、検索処理を高速化している。
特開2012−164031号公報 特開2013−152512号公報
特許文献1及び特許文献2では、検索キーワードに依存する確定的な値を検索クエリに含め、暗号化タグの集合にも同様に確定的な値を付加している。このように、検索クエリ及び暗号化タグに、検索キーワードに依存する確定的な値を含んでいる点で、検索クエリが確率的であるとはいえず、検索処理高速化の代わりに安全性が低下するという課題がある。
本発明は、確率的な検索クエリに検索処理を高速化するための情報を埋め込むことができる秘匿検索システムを提供することを目的とする。
本発明に係る秘匿検索システムは、
記憶装置である管理記憶部を備え、保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードに対し確率暗号方式の暗号化を実行することにより生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管する管理装置と、
前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信する検索装置と
を備え、
前記管理装置は、
前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する。
本発明に係る秘匿検索システムによれば、検索装置が、検索キーワードを取得すると、検索キーワードから一意に定まる確定的情報を算出し、検索キーワードに対し確定的情報を埋め込みつつ確率暗号方式の暗号化を実行することにより検索クエリを生成するので、確率的であり、かつ、検索処理を高速化するための確定的情報が埋め込まれた検索クエリを用いて暗号化タグを検索することができるという効果を奏する。
実施の形態1に係る秘匿検索システム100の構成図。 実施の形態1に係る鍵生成装置200の構成図。 実施の形態1に係る登録装置300の構成図。 実施の形態1に係る検索装置400の構成図。 実施の形態1に係る管理装置500の構成図。 実施の形態1に係る秘匿検索システム100の鍵生成保管処理S110のフロー図。 実施の形態1に係る秘匿検索システム100の登録処理S120のフロー図。 実施の形態1に係る秘匿検索システム100の検索処理S130のフロー図。 実施の形態1に係る検索装置400のステップS802のキーワード暗号化処理のフロー図。 実施の形態1に係る秘匿検索システム100の削除処理S140のフロー図。 実施の形態1に係る鍵生成装置200の変形例の構成図。 実施の形態1に係る登録装置300の変形例の構成図。 実施の形態1に係る検索装置400の変形例の構成図。 実施の形態1に係る管理装置500の変形例の構成図。 実施の形態2に係る秘匿検索システム100aの構成図。 実施の形態2に係る登録装置300aの構成図。 実施の形態2に係る検索装置400aの構成図。 実施の形態2に係る管理装置500aの構成図。 実施の形態2に係る秘匿検索システム100aの登録処理S120aのフロー図。 実施の形態2に係る秘匿検索システム100aの検索処理S130aのフロー図。 実施の形態2に係る検索処理S130aのキーワード暗号化処理S802aのフロー図。 実施の形態3に係る秘匿検索システム100bの構成図。 実施の形態3に係る秘匿検索システム100bの検索処理S130bのフロー図。 実施の形態3に係る検索処理S130bのキーワード暗号化処理S802bのフロー図。
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係る秘匿検索システム100の構成について説明する。
秘匿検索システム100は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とを有する。
秘匿検索システム100では、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とのそれぞれがネットワーク101を経由して接続される。
ネットワーク101は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とを接続する通信路である。ネットワーク101は、具体的には、インターネット、LAN(Local Area Network)であり、他の種類のネットワークが用いられてもよい。
鍵生成装置200は、具体的には、PC(Personal Computer)である。鍵生成装置200は、暗号化に利用する鍵を作成し、ネットワーク101を介して、登録装置300と、検索装置400と、管理装置500とに鍵を送信する。なお、この鍵は、郵送のような方法で直接的に送信してもよい。
登録装置300は、具体的には、PCである。登録装置300は、管理装置500に保管する保管データ及び保管データに関連付ける関連キーワードを暗号化して、暗号化データ及び暗号化タグを生成する。ここで、保管データは保管ファイルともいう。また、暗号化データは、暗号化ファイルともいう。登録装置300は、生成した暗号化データ及び暗号化タグを管理装置500に登録する登録端末として動作するコンピュータである。
登録装置300は、削除要求装置としても機能する。即ち、登録装置300は、管理装置500に対して、管理装置500に保管されている暗号化データ及び暗号化タグの削除を要求する。以下において、暗号化データ及び暗号化タグを保管暗号化データともいう。
検索装置400は、具体的には、PCである。検索装置400は、検索要求装置として機能する。検索装置400は、検索に用いる検索キーワードが暗号化された検索クエリを管理装置500に送信し、検索クエリと暗号化タグとの照合を要求する。
管理装置500は、具体的には、大容量の記憶媒体を持つ計算機である。管理装置500は、保管暗号化データの保管装置として機能する。即ち、管理装置500は、登録装置300から暗号化データ及び暗号化タグの保管の要求があれば、それらを保管する。
管理装置500は、検索装置としても機能する。即ち、管理装置500は、検索装置400からの検索の要求があれば、暗号化タグの集合と検索クエリとを照合し、検索結果を検索装置400に送信する。
管理装置500は、削除装置としても機能する。即ち、管理装置500は、登録装置300から暗号化データ及び暗号化タグ、即ち保管暗号化データの削除の要求があれば、保管している保管暗号化データを削除する。
なお、同じPC内に、鍵生成装置200、登録装置300及び検索装置400のいずれか2つ以上が同時に含まれていてもよい。
次に、秘匿検索システム100の有する各装置の構成について説明する。
<鍵生成装置200>
まず、図2を用いて鍵生成装置200の構成について説明する。
本実施の形態において、鍵生成装置200は、コンピュータである。鍵生成装置200は、CPU(Central Processing Unit)910、記憶装置920、入力インタフェース930、出力インタフェース940及び通信装置950といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを含む。
鍵生成装置200は、機能構成として、パラメータ受信部201と、鍵生成部202と、送信部209と、鍵生成記憶部250とを備える。以下の説明では、鍵生成装置200におけるパラメータ受信部201と、鍵生成部202と、送信部209との機能を、鍵生成装置200の「部」の機能という。鍵生成装置200の「部」の機能は、ソフトウェアで実現される。
また、鍵生成記憶部250は、メモリ921で実現される。鍵生成記憶部250は、鍵生成装置200の各部で使用されるデータを記憶する。
パラメータ受信部201は、パラメータλを受信する。
鍵生成部202は、パラメータ受信部201から受け取ったパラメータλを入力として、データを暗号化又は復号するための鍵K1及び鍵K2を生成する。
送信部209は、鍵生成部202で生成された鍵K1を、登録装置300と検索装置400とに送信する。また、送信部209は、鍵K2を、検索装置400と管理装置500とに送信する。
<登録装置300>
次に、図3を用いて登録装置300の構成について説明する。
本実施の形態において、登録装置300は、コンピュータである。登録装置300は、CPU910、記憶装置920、入力インタフェース930、出力インタフェース940及び通信装置950といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを含む。
登録装置300は、機能構成として、受信部301と、鍵保管部302と、入力部311と、暗号化部312と、送信部319と、登録記憶部350とを備える。以下の説明では、登録装置300における受信部301と、鍵保管部302と、入力部311と、暗号化部312と、送信部319との機能を、登録装置300の「部」の機能という。登録装置300の「部」の機能は、ソフトウェアで実現される。
また、登録記憶部350は、メモリ921で実現される。登録記憶部350は、登録装置300の各部で使用されるデータを記憶する。
受信部301は、鍵生成装置200から送信されてきた鍵K1を受信する。
鍵保管部302は、受信部301から受け取った鍵K1を登録記憶部350に保管する。
入力部311は、データ登録者から入力された保管データDと保管データ名ID(D)と保管データDに関連付ける関連キーワードwの集合W(D)とを、入力インタフェース930を介して受け取る。また、入力部311は、保管データDを削除する削除要求339を受け取る。
暗号化部312は、鍵保管部302から鍵K1を受け取り、入力部311から保管データDと保管データ名ID(D)と関連キーワードwの集合W(D)とを受け取り、鍵K1を用いて保管データDと関連キーワードの集合W(D)とを暗号化する。暗号化部312は、暗号化に用いる第1乱数rの集合R(D)を生成する。
鍵K1を用いて暗号化された保管データDを暗号化データE(D)とする。鍵K1と第1乱数rの集合R(D)とを用いて確率的に暗号化された関連キーワードwの集合W(D)を暗号化タグcの集合C(D)とする。
即ち、暗号化部312は、保管データ名ID(D)と、暗号化タグcの集合C(D)の組(ID(D),C(D))と、第1乱数rの集合R(D)とを生成する。以降では、(ID(D),C(D))を保管暗号化データと書く場合がある。なお、保管データ名ID(D)には暗号化データE(D)が対応付けられているものとする。つまり、保管暗号化データ(ID(D),C(D))とは、保管データ名ID(D)に対応付けられた暗号化データE(D)と暗号化タグcの集合C(D)との組を表すものとする。
なお、関連キーワードwの集合を関連キーワードW(D)、第1乱数rの集合を第1乱数R(D)、暗号化タグcの集合を暗号化タグC(D)と書く場合もある。
送信部319は、暗号化部312から受け取った保管暗号化データ(ID(D),C(D))を管理装置500へ送信する。また、暗号化部312から受け取った第1乱数rの集合R(D)を検索装置400へ送信する。また、送信部319は、入力部311から受け取った削除要求339を管理装置500へ送信する。
<検索装置400>
次に、図4を用いて検索装置400の構成について説明する。
本実施の形態において、検索装置400は、コンピュータである。検索装置400は、CPU910、記憶装置920、入力インタフェース930、出力インタフェース940及び通信装置950といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを含む。
検索装置400は、機能構成として、受信部401と、入力部411と、暗号化部412と、送信部419と、鍵保管部421と、補助情報保管部422と、検索結果出力部439と、検索記憶部450とを備える。以下の説明では、検索装置400における受信部401と、入力部411と、暗号化部412と、送信部419と、鍵保管部421と、補助情報保管部422と、検索結果出力部439との機能を、検索装置400の「部」の機能という。検索装置400の「部」の機能は、ソフトウェアで実現される。
また、検索記憶部450は、メモリ921で実現される。検索記憶部450は、検索装置400の各部で使用されるデータを記憶する。
受信部401は、鍵生成装置200から送信されてきた鍵K1及び鍵K2、又は登録装置300から送信されてきた第1乱数rの集合R(D)、又は管理装置500から送信されてきた検索結果I(s)を受信する。
鍵保管部421は、受信部401から受け取った鍵K1及び鍵K2を検索記憶部450に保管する。
入力部411は、データ検索者から入力された検索キーワードs及び確定的指示fを受け取る。確定的指示fは、具体的にはフラグであり、高速索引作成フラグともいう。
補助情報保管部422は、受信部401から受け取った第1乱数rの集合R(D)を検索記憶部450に保管する。以降では、補助情報保管部422により検索記憶部450に蓄積された全ての第1乱数の集合をRと書く。また、補助情報保管部422は、検索履歴情報451を検索記憶部450に保管する。即ち、補助情報保管部422は、暗号化部412から確定的指示f及び検索キーワードsの確定的情報tを受け取り、受信部401から検索キーワードsの検索結果I(s)を受け取る。そして、補助情報保管部422は、管理装置500により後述する高速索引情報554が作成されたことが確認できた場合は確定的情報tを検索履歴情報451に蓄積する。補助情報保管部422は、高速索引情報554が作成されたことが確認できなければ何も実行しない。以降では、補助情報保管部422により検索記憶部450の検索履歴情報451に蓄積された全ての確定的情報tの集合をTと書く。
検索キーワードsの確定的情報tとは、検索キーワードsと一対一対応する識別子である。即ち、ある検索キーワードsとs’の確定的情報をそれぞれtとt’とするとき、sとs’が一致することは、tとt’が一致することと同値である。確定的情報tは、具体的には、ハッシュ関数といった手法で計算される。確定的情報tは、確定値ともいう。
暗号化部412は、鍵保管部421から鍵K1及び鍵K2、補助情報保管部422から第1乱数の集合R及び確定的情報tの集合T、入力部411から検索キーワードs及び確定的指示fを受け取る。暗号化部412は、検索キーワードの確定的情報t又は検索クエリQ(s)を送信部419へ出力する。
送信部419は、暗号化部412から受け取った確定的情報t又は検索クエリQ(s)を管理装置500へ通信装置950を介して送信する。
検索結果出力部439は、受信部401から受け取った検索結果I(s)に基づき、出力インタフェース940を介して検索結果をデータ検索者に対して出力する。
<管理装置500>
次に、図5を用いて管理装置500の構成について説明する。
本実施の形態において、管理装置500は、コンピュータである。管理装置500は、CPU910、記憶装置920、入力インタフェース930、出力インタフェース940及び通信装置950といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを含む。
管理装置500は、機能構成として、受信部501と、鍵保管部511と、データ保管部521と、高速照合部531と、照合部502と、送信部509と、管理記憶部550とを備える。以下の説明では、管理装置500における受信部501と、鍵保管部511と、データ保管部521と、高速照合部531と、照合部502と、送信部509との機能を、管理装置500の「部」の機能という。管理装置500の「部」の機能は、ソフトウェアで実現される。
また、管理記憶部550は、メモリ921で実現される。管理記憶部550は、管理装置500の各部で使用されるデータを記憶する。
受信部501は、鍵生成装置200から送信された鍵K2、登録装置300から送信された保管暗号化データ(ID(D),C(D))或いは削除要求339、検索装置400から送信された確定的情報t又は検索クエリQ(s)を受信する。
鍵保管部511は、受信部501から受け取った鍵K2を管理記憶部550に保管する。
データ保管部521は、受信部501から受け取った保管暗号化データ(ID(D),C(D))を管理記憶部550に保管する。データ保管部521は、必要があれば、送信されてきた日時といった情報を保管暗号化データ(ID(D),C(D))と共に保管してもよい。また、データ保管部521は、受信部501から受け取った削除要求339に基づき、管理記憶部550に保管している保管暗号化データ(ID(D),C(D))を削除する。
なお、以降の説明では、保管暗号化データ(ID(D),C(D))を保管暗号化データ551、暗号化データE(D)を暗号化データ552、暗号化タグcの集合C(D)を暗号化タグ553として説明する場合がある。
高速照合部531は、照合部502から受け取った確定的情報tとその検索結果I(s)に対して、確定的情報tをキーとして検索結果I(s)を高速に取出せるような高速索引情報554を生成し、高速索引情報554を管理記憶部550に保管する。また、高速照合部531は、受信部501から受け取った確定的情報tに対して、高速索引情報554を用いて対応する検索結果I(s)を管理記憶部550から取り出し、送信部509へ検索結果I(s)を出力する。
照合部502は、受信部501から受け取った検索クエリQ(s)、鍵保管部511から受け取った鍵K2、データ保管部521から受け取った全ての保管暗号化データ(ID(D),C(D))に対して、検索結果I(s)を生成し、送信部509へ出力する。また、検索結果I(s)が空集合でない場合、照合部502は、確定的情報tと検索結果I(s)を高速照合部531へ出力する。
送信部509は、照合部502又は高速照合部531から受け取った検索結果I(s)を検索装置400へ送信する。
次に、秘匿検索システム100が備える鍵生成装置200と登録装置300と検索装置400と管理装置500との各装置のハードウェアについて説明する。
CPU910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。CPU910は、プロセッシングを行うIC(Integrated Circuit)である。CPU910は、プロセッサともいう。
記憶装置920は、補助記憶装置922及びメモリ921を含む。補助記憶装置922は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。メモリ921は、具体的には、RAM(Random Access Memory)である。秘匿検索システム100が備える各装置の記憶部、即ち鍵生成記憶部250、登録記憶部350、検索記憶部450、管理記憶部550は、メモリ921により実現されるが、補助記憶装置922及びメモリ921の両方により実現されてもよい。
入力インタフェース930は、マウス、キーボード、又はタッチパネルといった入力装置に接続されたポートである。入力インタフェース930は、具体的には、USB(Universal Serial Bus)端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。
出力インタフェース940は、ディスプレイといった表示機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
通信装置950は、データを受信するレシーバ及びデータを送信するトランスミッタを含む。通信装置950は、具体的には、通信チップ又はNIC(Network Interface Card)である。
補助記憶装置922には、秘匿検索システム100の各装置の「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリにロードされ、CPU910に読み込まれ、CPU910によって実行される。補助記憶装置922には、OS(Operating System)も記憶されている。OSの少なくとも一部がメモリにロードされ、CPU910はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
秘匿検索システム100の各装置は、1つのCPU910のみを備えていてもよいし、複数のCPU910を備えていてもよい。複数のCPU910が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置、メモリ、又は、CPU910内のレジスタ又はキャッシュメモリに記憶される。
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)といった可搬記録媒体に記憶されてもよい。
なお、秘匿検索プログラム620は、秘匿検索システム100の各装置の「部」として説明している機能を実現するプログラムである。また、秘匿検索プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
***動作の説明***
次に、本実施の形態に係る秘匿検索システム100における秘匿検索方法610及び秘匿検索プログラム620による秘匿検索処理S100について説明する。
秘匿検索処理S100は、鍵生成保管処理S110と、登録処理S120と、検索処理S130と、削除処理S140とを有する。
<鍵生成保管処理S110>
図6を用いて、本実施の形態に係る秘匿検索システム100の鍵生成保管処理S110について説明する。
図6のステップS601からステップS609は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とが実行する処理である。ステップS601からステップS603は鍵生成装置200により実行される鍵生成処理S112である。ステップS604からステップS605は登録装置300により実行される鍵生成処理S113である。ステップS606からステップS607は検索装置400により実行される鍵生成処理S114である。ステップS608からステップS609は管理装置500により実行される鍵生成処理S115である。
ステップS601において、鍵生成装置200のパラメータ受信部201は、鍵生成装置200の通信装置950を介してパラメータλを受信する。
ステップS602において、鍵生成装置200の鍵生成部202は、ステップS601において鍵生成装置200のパラメータ受信部201が受信したパラメータλを入力として、鍵K1及び鍵K2を生成する。
ステップS603において、鍵生成装置200の送信部209は、ステップS602において鍵生成装置200の鍵生成部202が生成した鍵K1及び鍵K2を入力として、鍵K1を登録装置300と検索装置400とに送信する。また、鍵生成装置200の送信部209は、鍵K2を検索装置400と管理装置500とに送信する。
ステップS604において、登録装置300の受信部301は、ステップS603において鍵生成装置200の送信部209が送信した鍵K1を、登録装置300の通信装置950を介して受信する。
ステップS605において、登録装置300の鍵保管部302は、ステップS604において登録装置300の受信部301が受信した鍵K1を保管する。
ステップS606において、検索装置400の受信部401は、ステップS603において鍵生成装置200の送信部209が送信した鍵K1及び鍵K2を、検索装置400の通信装置950を介して受信する。
ステップS607において、検索装置400の鍵保管部421は、ステップS606において検索装置400の受信部401が受信した鍵K1及び鍵K2を保管する。
ステップS608において、管理装置500の受信部501は、ステップS603において鍵生成装置200の送信部209が送信した鍵K2を、管理装置500の通信装置950を介して受信する。
ステップS609において、管理装置500の鍵保管部511は、ステップS608において管理装置500の受信部501が受信した鍵K2を保管する。
以上で、秘匿検索システム100の鍵生成保管処理S110は終了する。
なお、鍵K1,K2は秘密情報であるため、鍵保管部302と、鍵保管部421とは、鍵K1,K2が外部に漏れないように厳重に保管する必要がある。
<登録処理S120>
図7を用いて、本実施の形態に係る秘匿検索システム100の登録処理S120について説明する。
図7のステップS701からステップS708は、登録装置300と検索装置400と管理装置500とが実行する処理である。ステップS701からステップS704は登録装置300により実行される暗号化処理S123である。ステップS705からステップS706は検索装置400により実行される第1乱数保管処理S124である。ステップS707からステップS708は管理装置500により実行されるデータ保管処理S125である。
登録装置300の暗号化処理S123において、登録装置300は、第1乱数R(D)を生成し、第1乱数R(D)を用いて、関連キーワードW(D)に対し確率暗号方式の暗号化を実行し、暗号化タグC(D)を生成する。また、登録装置300は、暗号化タグC(D)と保管データDが暗号化された暗号化データE(D)とを管理装置500に送信する。また、登録装置300は、第1乱数R(D)を検索装置400に送信する。
以下に具体的に説明する。
ステップS701において、登録装置300の入力部311は、データ登録者から、キーボード、マウスあるいは記憶装置から入力された保管データDと保管データ名ID(D)と保管データDに関連付ける関連キーワードwの集合W(D)とを受け取る。もし、データ登録者から保管データ名ID(D)の入力がなければ、入力部311は、入力された保管データDの保管データ名ID(D)を乱数と割り当ててもよいし、他の保管データの保管データ名と重複しないように0より大きい整数の値を順に割り当ててもよい。
ステップS702において、登録装置300の暗号化部312は、ステップS605で鍵保管部302に保管された鍵K1を受け取る。また、暗号化部312は、ステップS701で入力部311に入力された保管データDと保管データ名ID(D)と関連キーワードwの集合W(D)とを受け取る。そして、暗号化部312は、以下の処理を行う。
暗号化部312は、関連キーワードwの集合W(D)の要素の一つを関連キーワードwとする。暗号化部312は、全ての関連キーワードwに対して、乱数生成器によって第1乱数rを生成し、c=E(K1,E(K1,w),r)とする。なお、Eは暗号化関数とする。具体的には、EはAES(Advanced Encryption Standard)のような共通鍵暗号方式、HMAC(Hash−based Message Authentication Code)のようなメッセージ認証符号、SHA(Secure Hash Algorithm)−256のようなハッシュ関数である。ここで、全ての関連キーワードwに対して計算した暗号文、即ち暗号化タグcの集合をC(D)と書く。また、このとき生成した全ての第1乱数rの集合をR(D)と書く。
以上のように、暗号化部312は、保管暗号化データ(ID(D),C(D))と第1乱数rの集合R(D)とを生成する。
ステップS703において、登録装置300の送信部319は、ステップS702で生成した保管暗号化データ(ID(D),C(D))を管理装置500へ送信する。
ステップS704において、登録装置300の送信部319は、ステップS702で生成した第1乱数rの集合R(D)を検索装置400へ送信する。
検索装置400の第1乱数保管処理S124のステップS705において、検索装置400の受信部401は、ステップS704で登録装置300の送信部319から送信された第1乱数rの集合R(D)を、検索装置400の通信装置950を介して受信する。
ステップS706において、検索装置400の補助情報保管部422は、ステップS705で受信部401が受信した第1乱数rの集合R(D)を保管する。以降では、補助情報保管部422に蓄積された全ての第1乱数rの集合をRと書く。
管理装置500のデータ保管処理S125において、管理装置500は、保管データDが暗号化された暗号化データE(D)と、保管データDに関連付けられた関連キーワードW(D)に対し確率暗号方式の暗号化を実行することにより生成された暗号化タグC(D)とを受信する。そして、管理装置500は、暗号化タグC(D)(暗号化タグ553)と暗号化データE(D)(暗号化データ552)とを対応付けて保管暗号化データ(ID(D),C(D))(保管暗号化データ551)として管理記憶部550に保管する。
以下に具体的に説明する。
ステップS707において、管理装置500の受信部501は、ステップS703で登録装置300の送信部319から送信された保管暗号化データ(ID(D),C(D))を、管理装置500の通信装置950を介して受信する。
ステップS708において、管理装置500のデータ保管部521は、ステップS707で受信部501が受信した保管暗号化データ(ID(D),C(D))を管理記憶部550に保管する。上述したように、保管暗号化データ(ID(D),C(D))は、保管データ名ID(D)に対応付けられた暗号化データE(D)と、暗号化タグC(D)との組である。
以上で、秘匿検索システム100の登録処理S120は終了する。
<検索処理S130>
図8を用いて、本実施の形態に係る秘匿検索システム100の検索処理S130について説明する。
図8のステップS801からステップS811は、検索装置400と管理装置500とが実行する処理である。ステップS801からステップS803は検索装置400により実行される検索クエリ生成処理S134である。ステップS804からステップS808は管理装置500によって実行される判定処理S135である。ステップS809からステップS811は検索装置400により実行される結果出力処理S136である。
検索装置400の検索クエリ生成処理S134において、検索装置400は、管理記憶部550に保管されている暗号化データE(D)を検索する検索キーワードsを取得する。検索装置400は、検索キーワードsから一意に定まる確定的情報tを算出し、検索キーワードsに対し確定的情報tを用いて確率暗号方式の暗号化を実行することにより検索クエリQ(s)を生成する。そして、検索装置400は、検索クエリQ(s)を管理装置500に送信する。
以下に具体的に説明する。
ステップS801において、検索装置400の入力部411は、データ検索者により、キーボード、マウスあるいは記憶装置から入力された検索キーワードs及び確定的指示fを受け取る。
ここで、確定的指示fは、検索キーワードsを暗号化する際に確定的情報tを用いるか否かを指示するものであり、具体的にはフラグである。確定的指示fは、高速索引作成フラグともいう。また、検索キーワードsを暗号化する際に確定的情報tを用いるとは、検索クエリQ(s)に高速検索に有効な情報である確定的情報tを埋め込むことを意味する。
検索装置400は、確定的指示fを取得し、確定的指示fにより確定的情報tを用いると指示された場合、検索キーワードsに対し確定的情報tを用いて確率暗号方式の暗号化を実行する。
また、検索装置400は、確定的指示fにより確定的情報tを用いないと指示された場合、検索キーワードsに対し確定的情報を用いずに確率暗号方式の暗号化を実行する。
ステップS802において、検索装置400の暗号化部412は、ステップS607で鍵保管部421に保管された鍵K1及び鍵K2、ステップS706で補助情報保管部422により保管された第1乱数rの集合R、及び補助情報保管部422により管理される確定的情報tの集合T、ステップS801で入力部411に入力された検索キーワードs及び確定的指示fを受け取る。暗号化部412は、受け取ったデータを用いて以下の処理を行う。
図9は、本実施の形態に係る検索装置400のステップS802のキーワード暗号化処理を示すフロー図である。
ステップS401において、検索装置400は、検索キーワードsに対して確定暗号方式の暗号化を実行することにより確定的情報tを算出する。具体的には、暗号化部412は、検索キーワードsの確定的情報tをt=E(K1,s)とする。
ステップS402において、暗号化部412は、確定的情報tを算出すると、算出した確定的情報tが検索記憶部450に蓄積されているか否かを判定する。暗号化部412は、算出した確定的情報tが検索記憶部450に蓄積されている場合(S402でYES)、この確定的情報tを管理装置500に送信する。
具体的には、暗号化部412は、集合Tに、算出した確定的情報tが含まれているか確認する。算出した確定的情報tが集合Tに含まれている場合、暗号化部412は、算出した確定的情報tを送信部419へ出力する(ステップS403)。
ステップS404において、暗号化部412は、確定的情報tが検索記憶部450に蓄積されていない場合(S402でNO)、即ち、算出した確定的情報tが集合Tに含まれていない場合、検索クエリQ(s)を管理装置500に送信する。
暗号化部412は、検索クエリQ(s)を以下のように生成する。暗号化部412は、第2乱数を生成し、第2乱数と、登録装置300から受信した第1乱数Rと、確定的情報tとを用いて、検索キーワードsに対し確率暗号方式の暗号化を実行する。具体的には、暗号化部412は、第1乱数の集合Rの全ての要素ri(0<=i<|R|)に対して、暗号文diをdi=E(K1,t,ri)とする。次に、それぞれの暗号文diに対して、暗号文kiをki=E(K2,di)とする。さらに、乱数生成器によって第2乱数uiを生成し、暗号文qiをqi=(E(ki,t||ui),ui)とする。このとき、確定的指示fが偽の場合は、tの代わりに意味のない乱数を用いる。ここで、演算||はビット列の連結を表す。生成した暗号文qiの集合をQ(s)と書く。暗号文qの集合Q(s)を検索クエリと呼ぶ。最後に、検索クエリQ(s)を送信部419へ出力する(ステップS405)。また、確定的指示f及び確定的情報tを補助情報保管部422に出力する。
ここで、暗号文qiに第2乱数uiを含めず、代わりにqi=E(ki,0λ||t||ui)とすることもできる。検索クエリQ(s)と暗号化タグC(D)との一致判定の際は、暗号文qiを復号した結果、平文に0λが現れるならば一致、そうでなければ不一致として判定できる。
ステップS406において、送信部419は、確定的情報t又は検索クエリQ(s)を管理装置500に送信する。
以上でステップS802の処理を終わり、図8のステップS803に進む。
ステップS803において、検索装置400の送信部419は、ステップS802で暗号化部412が生成した、確定的情報t又は検索クエリQ(s)を管理装置500へ送信する。
以上で検索装置400の検索クエリ生成処理S134の処理を終わり、ステップS804に進む。
管理装置500の判定処理S135において、管理装置500は、検索装置400から検索クエリQ(s)を受信すると、検索クエリQ(s)を復号して得られる検索キーワードsが、管理記憶部550に保管されている暗号化タグC(D)を復号して得られる関連キーワードwと一致するか否かを判定する。管理装置500は、検索クエリQ(s)を復号して得られる検索キーワードsが、暗号化タグC(D)を復号して得られる関連キーワードwと一致した場合、暗号化タグC(D)に対応する暗号化データE(D)を含む検索結果I(s)を検索装置400に送信すると共に、検索クエリQ(s)を復号して得られる確定的情報tと暗号化タグC(D)に対応する暗号化データE(D)とを対応付けて管理記憶部550に記憶する。
管理装置500は、検索装置400から確定的情報tを受信すると、確定的情報tに対応する暗号化データE(D)を管理記憶部550から取得し、取得した暗号化データE(D)を含む検索結果I(s)を検索装置400に送信する。
以下に具体的に説明する。
ステップS804において、管理装置500の受信部501は、ステップS803で検索装置400の送信部419から送信された、確定的情報t又は検索クエリQ(s)を受信する。
ステップS804aにおいて、受信部501が検索クエリQ(s)を受信した場合、処理はステップ805に進み、受信部501が確定的情報tを受信した場合、処理はステップ807に進む。
ステップS805において、管理装置500の照合部502は、ステップS804で受信部501が受信した情報が検索クエリQ(s)であった場合、ステップS609で鍵保管部511が保管した鍵K2、ステップS708でデータ保管部521が保管した全ての保管暗号化データ(ID(D),C(D))に対して、以下の処理を行う。
照合部502は、空の検索結果I(s)を用意する。照合部502は、全ての保管暗号化データ(ID(D),C(D))と検索クエリQ(s)に対して、以下の処理を行う。暗号化タグC(D)の全ての要素cと、検索クエリQ(s)の全ての要素qの、任意のペア(c,q)に対して、一致判定を以下のようにして行う。qの2つの要素をe1,e2とする。暗号文kをk=E(K2,c)とする。復号関数であるDecを用いて、m=Dec(k,e1)とする。mをm1とm2に分割する。m2がe2と一致するとき、cとqは一致したと判定する。これは即ち、検索クエリQ(s)の要素と一致する要素が暗号化タグC(D)に含まれていることを示している。このとき、m1は確定的情報tである。cとqが一致した場合、検索結果I(s)に保管データ名ID(D)を加える。ここで、検索結果I(s)に保管データ名ID(D)を加えるとは、保管データ名ID(D)に対応付けられた暗号化データE(D)を検索結果I(s)に含めることを意味する。
上記の処理は、検索クエリQ(s)を復号して得られる検索キーワードsが、管理記憶部550に保管されている暗号化タグC(D)を復号して得られる関連キーワードwと一致するか否かを判定する処理である。
照合部502は、検索結果I(s)が空集合の場合、即ちステップS805aでYESの場合、送信部509に検索結果I(s)を出力する。照合部502は、検索結果I(s)が空集合でない場合、即ちステップ805aでNOの場合、高速照合部531に確定的情報tとしてのm1及び検索結果I(s)を出力する。
ステップS806において、管理装置500の高速照合部531は、検索クエリQ(s)を復号して得られる確定的情報tと暗号化タグC(D)に対応する暗号化データE(D)とを対応付けて管理記憶部550に記憶する。具体的には、高速照合部531は、ステップS805で照合部502から受け取った確定的情報t及び検索結果I(s)を入力とする。そして、高速照合部531は、確定的情報tをキーとして検索結果I(s)を高速に取出せる高速索引情報554を管理記憶部550に保管する。高速索引情報554は、具体的にはハッシュテーブルを利用することにより実現される。
ステップS807において、管理装置500の高速照合部531は、ステップS804で受信部501が受信した情報が確定的情報tであった場合、受信部501から確定的情報tを受け取る。高速照合部531は、受け取った確定的情報tに対して、高速索引情報554から対応する検索結果I(s)を取り出し、送信部509へI(s)を出力する。高速照合部531は、受け取った確定的情報tに対応する検索結果I(s)がない場合、送信部509へI(s)として空集合を出力する。
ステップS808において、管理装置500の送信部509は、照合部502又は高速照合部531から受け取った検索結果I(s)を検索装置400へ送信する。
以上で管理装置500の判定処理S135の処理を終わり、ステップS809に進む。
検索装置400の結果出力処理S136において、検索装置400は、管理装置500から検索結果I(s)を受信すると、確定的情報tを検索記憶部450に蓄積する。
以下に具体的に説明する。
ステップS809において、検索装置400の受信部401は、ステップS808で管理装置500の送信部509が送信した検索結果I(s)を受信する。
ステップS810において、検索装置400の補助情報保管部422は、ステップS802で暗号化部412が生成した検索キーワードsの確定的情報t及び確定的指示fを受け取る。そして、補助情報保管部422は、ステップS809で受信部401が受信した検索キーワードsに対する検索結果I(s)を受け取り、以下の処理を行う。
確定的指示fが真、かつ、検索結果I(s)が空集合でない場合、即ち確定的情報tが埋め込まれた検索クエリQ(s)に対して暗号化データE(D)ありの場合は、補助情報保管部422は、確定的情報tを検索記憶部450に保管する。また、検索結果I(s)が空集合、即ち検索クエリQ(s)に対して暗号化データE(D)なしの場合、かつ、確定的情報tが補助情報保管部422により既に検索記憶部450に保管されている場合、補助情報保管部422は、保管されている確定的情報tを削除する。
ステップS811において、検索装置400の検索結果出力部439は、受信部401から受け取った検索結果I(s)に基づいて、出力インタフェース940を介してディスプレイに検索結果を出力する。検索結果出力部439は、検索結果I(s)に暗号化データE(D)が含まれる場合は、暗号化データE(D)の保管データ名ID(D)をディスプレイに出力する。また、検索結果出力部439は、検索結果I(s)が空集合の場合は、検索キーワードsによる検索が失敗したことを表す情報をディスプレイに出力する。
ステップS811により、秘匿検索システム100の検索処理は終了する。
<削除処理S140>
図10を用いて、本実施の形態に係る秘匿検索システム100の削除処理S140について説明する。
図10のステップS901からステップS904は、登録装置300と管理装置500とが実行する処理である。ステップS901からステップS902は登録装置300により実行される。ステップS903からステップS904は管理装置500によって実行される。
削除処理S140において、管理装置500は、管理記憶部550に保管されている暗号化データ552を削除する削除要求339を受信し、削除要求339に基づいて管理記憶部550から暗号化データ552を含む保管暗号化データ551を削除する。
以下に具体的に説明する。
ステップS901において、登録装置300の入力部311は、データ登録者から削除したい保管暗号化データについての削除データ名を含む削除要求339を受け取る。なお、削除要求339は、削除データ名そのものでもよい。また、削除要求339は、暗号化データ552に対応する保管暗号化データを特定できるものであれば何でもよい。
ステップS902において、登録装置300の送信部319は、ステップS901で入力部311に入力された削除要求339を管理装置500へ送信する。
ステップS903において、管理装置500の受信部501は、ステップS902で登録装置300の送信部319から送信されてきた削除要求339を受信する。
ステップS904において、管理装置500のデータ保管部521及び高速照合部531は、ステップS903で受信部501が受信した削除要求に含まれる削除データ名に基づき、保管している保管暗号化データ551を削除する。
ステップS904により、秘匿検索システム100の削除処理S140は終了する。
***他の構成***
本実施の形態では、秘匿検索システム100の各装置の機能がソフトウェアで実現されるが、変形例として、秘匿検索システム100の各装置の機能がハードウェアで実現されてもよい。
この本実施の形態の変形例について、図11から図14を用いて説明する。
図11は、本実施の形態の変形例に係る鍵生成装置200の構成を示す図である。
図12は、本実施の形態の変形例に係る登録装置300の構成を示す図である。
図13は、本実施の形態の変形例に係る検索装置400の構成を示す図である。
図14は、本実施の形態の変形例に係る管理装置500の構成を示す図である。
図11から図14に示すように、秘匿検索システム100の各装置は、CPU910及び記憶装置920に替えて処理回路909を備える。
処理回路909は、上述した各装置の「部」の機能及び各装置の記憶部を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、又は、FPGA(Field−Programmable Gate Array)である。
秘匿検索システム100の各装置の「部」の機能は、1つの処理回路909で実現されてもよいし、複数の処理回路909に分散して実現されてもよい。
別の変形例として、秘匿検索システム100の各装置の「部」の機能及び各装置の記憶部がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、各装置の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
CPU910、記憶装置920、及び、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、秘匿検索システム100の各装置の構成が図2から図5及び図11から図14のいずれに示した構成であっても、「部」の機能は、プロセッシングサーキットリにより実現される。
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
***本実施の形態の効果の説明***
本実施の形態に係る秘匿検索システムは、検索を高速に行うために有用な情報が埋め込まれた検索クエリを生成する検索装置の暗号化部と、検索クエリを受信する管理装置の受信部と、関連キーワードが暗号化された暗号化タグを保管する管理装置のデータ保管部と、保管されている暗号化タグ集合の中から、暗号化された検索キーワードと一致するものを取り出す管理装置の照合部とを備える。よって、確率的であり、かつ、検索処理を高速化するための確定的情報が埋め込まれた検索クエリを用いて暗号化タグを検索することができる。また、本実施の形態に係る秘匿検索システムは、暗号化タグ及び検索クエリが、確率的暗号化によって生成されている。よって、暗号化タグ及び検索クエリは、保管データに関連付けられている関連キーワード及び検索キーワードの確定的情報に依らない。これにより暗号化タグ及び検索クエリは頻度分析耐性が高くなり、安全性が高い。
さらに、本実施の形態に係る秘匿検索システムは、一度過去に検索された検索キーワードに対する検索クエリに対しては、高速に検索結果を取り出すことができる高速照合部を備える。よって、検索クエリに対して検索結果の保管暗号化データが存在する場合のみ、検索クエリに対する確定的情報を抽出させ、次回以降の再検索の際はこの確定的情報を基に高速に検索結果を取り出すことができる。この確定的情報の抽出は検索結果の保管暗号化データが存在する場合のみ行われるという点が、安全性が高いまま検索を高速化できるとする理由である。
さらに、本実施の形態に係る秘匿検索システムは、検索クエリ生成時、検索を高速にする情報、すなわち確定的情報を検索クエリに埋め込むかどうかを、確定的指示によりデータ検索者に選択させることができる。よって、本実施の形態に係る秘匿検索システムよれば、事前にデータ検索者が検索クエリに確定的情報を埋め込まないという選択をすることも可能であり、機能性に優れている。
実施の形態2.
本実施の形態では、主に、実施の形態1と異なる点について説明する。
本実施の形態において、実施の形態1と共通する部分については、同一の符号を付し、その説明を省略する場合がある。
本実施の形態に係る秘匿検索システム100aでは、実施の形態1における第1乱数rの代わりに、カウンタ値を用いて秘匿検索を行う。本実施の形態では、登録装置300aの暗号化処理S123aにおいて、第1乱数rの集合R(D)を生成しない。また、検索装置400aの検索クエリ生成処理S134aにおいて、第1乱数rの集合R(D)を用いずに、検索クエリを生成する。
図15を用いて、本実施の形態に係る秘匿検索システム100aの構成について説明する。
秘匿検索システム100aは、鍵生成装置200と、登録装置300aと、検索装置400aと、管理装置500aとを有する。図15は、実施の形態1で説明した図1に対応する。秘匿検索システム100aの基本的な構成及び機能については、実施の形態1で説明した図1と同様であるため、その説明を省略する。
次に、本実施の形態に係る秘匿検索システム100aの有する各装置の構成及び機能について説明する。
<鍵生成装置200>
本実施の形態に係る鍵生成装置200の構成及び機能は、実施の形態1で説明した図2と同様であるため、説明を省略する。
なお、実施の形態1で説明したように、送信部209は、鍵生成部202で生成された鍵K1を、登録装置300aと検索装置400aとに送信し、鍵K2を、検索装置400aと管理装置500aとに送信する。このとき、鍵K2は公知のパラメータとしてもよいし、鍵K2は鍵K1と同一でも構わない。また、鍵K2を用いた暗号化を鍵なしの暗号化で置き換えても構わないし、鍵K2を用いた暗号化を行わなくても構わない。
<登録装置300a>
次に、図16を用いて、本実施の形態に係る登録装置300aの構成及び機能について説明する。
本実施の形態に係る登録装置300aの構成は、実施の形態1で説明した図3と同様である。登録装置300aにおいて、実施の形態1と異なる機能は以下の通りである。
入力部311は、データ登録者から入力された保管データDの集合Uと、Uのそれぞれの要素Dの保管データ名集合IDと、Uのそれぞれの要素Dに関連付ける関連キーワードwの集合Wとを受け取る。また、入力部311は、保管データDを削除する削除要求339を受け取る。本実施の形態では、保管データDの保管データ名をID(D)と表記し、保管データDに関連付けられる関連キーワード集合をW(D)と表記する場合もある。
暗号化部312は、鍵保管部302から鍵K1を受け取り、入力部311から保管データDの集合Uと保管データ名集合IDと関連キーワードwの集合Wとを受け取り、鍵K1を用いて保管データDと、保管データDに関連付られる関連キーワードの集合W(D)とを暗号化する。
鍵K1を用いて暗号化された保管データDを暗号化データE(D)とする。鍵K1を用いて暗号化された関連キーワードwを暗号化タグcとする。なお、暗号化データE(D)の生成には鍵K1と異なる鍵を用いてもよい。
即ち、暗号化部312は、入力部311から受け取った全ての保管データDと、このDの保管データ名ID(D)と関連キーワード集合W(D)に対して、保管データ名ID(D)と暗号化タグcの組(ID(D),c)を生成する。以降では、(ID(D),c)を保管暗号化データと書く場合がある。なお、保管データ名ID(D)には暗号化データE(D)が対応付けられているものとする。つまり、保管暗号化データ(ID(D),c)とは、保管データ名ID(D)に対応付けられた暗号化データE(D)と暗号化タグcとの組を表すものとする。なお、暗号化部312が生成した保管暗号化データ(ID(D),c)の集合を暗号化索引Cと書く場合がある。
送信部319は、暗号化部312から受け取った暗号化索引Cを管理装置500aへ送信する。また、送信部319は、入力部311から受け取った削除要求339を管理装置500aへ送信する。
その他の機能については、実施の形態1で説明したものと同様である。
<検索装置400a>
次に、図17を用いて、本実施の形態に係る検索装置400aの構成及び機能について説明する。
図17は、実施の形態1で説明した図4に対応する図である。図17において図4と異なる構成は次の通りである。本実施の形態に係る検索装置400は、検索記憶部450に第1乱数Rを記憶していない。その他の構成は、図4と同様である。
また、検索装置400において、実施の形態1と異なる機能は以下の通りである。
受信部401は、鍵生成装置200から送信されてきた鍵K1及び鍵K2、又は管理装置500から送信されてきた検索結果I(s)を受信する。
補助情報保管部422は、検索履歴情報451を検索記憶部450に保管する。即ち、補助情報保管部422は、暗号化部412から確定的指示f及び検索キーワードsの確定的情報tを受け取り、受信部401から検索キーワードsの検索結果I(s)を受け取る。そして、補助情報保管部422は、管理装置500により後述する高速索引情報554が作成されたことが確認できた場合は確定的情報tを検索履歴情報451に蓄積する。補助情報保管部422は、高速索引情報554が作成されたことが確認できなければ何も実行しない。以降では、補助情報保管部422により検索記憶部450の検索履歴情報451に蓄積された全ての確定的情報tの集合をTと書く。
暗号化部412は、鍵保管部421から鍵K1及び鍵K2、補助情報保管部422から確定的情報tの集合T、入力部411から検索キーワードs及び確定的指示fを受け取る。暗号化部412は、検索キーワードの確定的情報t又は検索クエリQ(s)を送信部419へ出力する。
受信部401、補助情報保管部422及び暗号化部412の機能については、第1乱数Rを扱わないという点以外は、実施の形態1と同様である。また、その他の機能については、実施の形態1と同様である。
<管理装置500a>
次に、図18を用いて、本実施の形態に係る管理装置500aの構成及び機能について説明する。
本実施の形態に係る管理装置500aの構成は、実施の形態1で説明した図5と同様である。管理装置500aにおいて、実施の形態1と異なる機能は以下の通りである。
受信部501は、鍵生成装置200から送信された鍵K2、登録装置300から送信された暗号化索引Cあるいは削除要求339、検索装置400から送信された確定的情報t又は検索クエリQ(s)を受信する。
データ保管部521は、受信部501から受け取った暗号化索引Cを管理記憶部550に保管する。また、データ保管部521は、受信部501から受け取った削除要求339に基づき、管理記憶部550に保管している保管暗号化データ(ID(D),c)を削除する。
なお、以降の説明では、保管暗号化データ(ID(D),c)を保管暗号化データ551、暗号化データE(D)を暗号化データ552、暗号化タグcを暗号化タグ553として説明する場合がある。
照合部502は、受信部501から受け取った検索クエリQ(s)、鍵保管部511から受け取った鍵K2、データ保管部521から受け取った全ての保管暗号化データ(ID(D),c)に対して、検索結果I(s)を生成し、送信部509へ出力する。また、検索結果I(s)が空集合でない場合、照合部502は、確定的情報tと検索結果I(s)を高速照合部531へ出力する。
その他の機能については、実施の形態1と同様である。
本実施の形態に係る秘匿検索システム100aが備える鍵生成装置200と登録装置300aと検索装置400aと管理装置500aとの各装置のハードウェアについては、実施の形態1と同様である。
***動作の説明***
次に、本実施の形態に係る秘匿検索システム100aにおける秘匿検索方法610及び秘匿検索プログラム620による秘匿検索処理S100aについて説明する。
実施の形態1と同様に、秘匿検索システム100aの秘匿検索処理S100は、鍵生成保管処理S110と、登録処理S120aと、検索処理S130aと、削除処理S140とを有する。
<鍵生成保管処理S110>
本実施の形態に係る秘匿検索システム100の鍵生成保管処理S110は、実施の形態1で説明した図6と同様であるため説明を省略する。
<登録処理S120a>
図19を用いて、本実施の形態に係る秘匿検索システム100aの登録処理S120aについて説明する。図19は、実施の形態1で説明した図7に対応する図である。図19において図7と同様の処理については同一の符号を付し、その説明を省略する場合がある。
図19のステップS701、ステップS702a及びステップS703は登録装置300aにより実行される暗号化処理S123aである。ステップS707からステップS708は管理装置500aにより実行されるデータ保管処理S125である。本実施の形態では、ステップS704と、ステップS705からステップS706の第1乱数保管処理S124とが存在しない点が実施の形態1とは異なる。
登録装置300aの暗号化処理S123aにおいて、登録装置300aは、保管データ集合Uと、Uのそれぞれの要素Dの保管データ名ID(D)と、Uのそれぞれの要素Dに関連付けられた関連キーワード集合W(D)に対し暗号化を実行し、暗号化索引Cを生成する。また、登録装置300は、暗号化索引Cと、暗号化データE(D)とを管理装置500aに送信する。
以下に具体的に説明する。
ステップS701において、登録装置300aの入力部311は、データ登録者から、キーボード、マウスあるいは記憶装置から入力された保管データDと保管データ名ID(D)と保管データDに関連付ける関連キーワードwの集合W(D)とを受け取る。もし、データ登録者から保管データ名ID(D)の入力がなければ、入力部311は、入力された保管データDの保管データ名ID(D)を乱数と割り当ててもよいし、他の保管データの保管データ名と重複しないように0より大きい整数の値を順に割り当ててもよい。
ステップS702aにおいて、登録装置300aの暗号化部312は、ステップS605で鍵保管部302に保管された鍵K1を受け取る。また、暗号化部312は、ステップS701で入力部311に入力された保管データ集合Uと、Uのそれぞれの要素Dの保管データ名ID(D)と、Uのそれぞれの要素Dの関連キーワードwの集合W(D)とを受け取る。そして、暗号化部312は、以下の処理を行う。
保管データDの関連キーワードの集合W(D)の要素の一つを関連キーワードwとする。暗号化部312は、Wに含まれる全ての関連キーワードwに対して、c=E(K1,w,j)とする。また、(ID(D),c)として、暗号化索引Cの要素である保管暗号化データを生成する。ただし、jはwに対して重複なく割り振られる値である。具体的には、複数の保管データに関連するキーワードwが存在する場合、それぞれの保管データに対して暗号化タグc=E(K1,w,j)が生成されるが、このときjは重複することなく割り振る。すなわち、暗号化タグcの集合を考えると、無視できる確率を除いてその集合の要素は互いに異なる。jは、具体的には、カウンタ値である。jをカウンタ値とした場合、キーワードw毎にカウンタ値jを初期値1として設定し、同じキーワードwの暗号化タグcを生成するたびにjに1を加える。jは、具体的には、ハッシュチェインのハッシュ値である。jをハッシュ値とした場合、キーワードw毎にハッシュ値jを初期値1として設定し、同じキーワードwの暗号化タグcを生成するたびにjをjのハッシュ値に更新する。なお、Eは暗号化関数とする。具体的には、EはAES(Advanced Encryption Standard)のような共通鍵暗号方式、HMAC(Hash−based Message Authentication Code)のようなメッセージ認証符号、SHA(Secure Hash Algorithm)−256のようなハッシュ関数である。
以上のように、登録装置300aの暗号化部312は、暗号化索引Cを生成する。
なお、関連キーワードwが関連付いていない保管データDに対して、j>|U|であるようなjを用いて保管暗号化データを生成し暗号化索引Cに追加してよい。これにより、暗号化索引Cにおける保管データ名の出現頻度を均一にすることもできる。また、どの保管データDにも関連付いていない関連キーワードに対して保管暗号化データを生成し暗号化索引Cに追加してよい。これにより、暗号化索引Cのサイズを調節することもできる。
ステップS703において、登録装置300aの送信部319は、ステップS702aで生成した暗号化索引Cを管理装置500aへ送信する。
管理装置500aのデータ保管処理S125において、管理装置500aは、保管データDが暗号化された暗号化データE(D)と、保管データDに関連付けられた関連キーワードW(D)に対し暗号化を実行することにより生成された暗号化索引Cとを受信する。そして、管理装置500aは、暗号化データE(D)と暗号化索引Cとを管理記憶部550に保管する。
以下に具体的に説明する。
ステップS707において、管理装置500aの受信部501は、ステップS703で登録装置300aの送信部319から送信された暗号化索引Cを、管理装置500aの通信装置950を介して受信する。
ステップS708において、管理装置500aのデータ保管部521は、ステップS707で受信部501が受信した暗号化索引Cを管理記憶部550に保管する。上述したように、暗号化索引Cは、保管データ名ID(D)に対応付けられた暗号化データE(D)と、暗号化タグcとの組の集合である。
以上で、秘匿検索システム100aの登録処理S120aは終了する。
<検索処理S130a>
図20を用いて、本実施の形態に係る秘匿検索システム100aの検索処理S130aについて説明する。図20は、実施の形態1で説明した図8に対応する図である。図20において、図8と同様の処理ついては同一の符号を付し、その説明を省略する場合がある。
図20のステップS801からステップS811は、検索装置400aと管理装置500aとが実行する処理である。ステップS801からステップS803は検索装置400aにより実行される検索クエリ生成処理S134aである。ステップS804からステップS808は管理装置500aによって実行される判定処理S135aである。ステップS809からステップS811は検索装置400aにより実行される結果出力処理S136である。
検索装置400aの検索クエリ生成処理S134aにおいて、検索装置400aは、管理記憶部550に保管されている暗号化データE(D)を検索する検索キーワードsを取得する。検索装置400aは、検索キーワードsから一意に定まる確定的情報tを算出し、検索キーワードsに対し確定的情報tを用いて確率暗号方式の暗号化を実行することにより検索クエリQ(s)を生成する。そして、検索装置400aは、検索クエリQ(s)を管理装置500aに送信する。
以下に具体的に説明する。
ステップS801において、検索装置400aの入力部411は、データ検索者により、キーボード、マウスあるいは記憶装置から入力された検索キーワードs及び確定的指示fを受け取る。
ここで、確定的指示fは、検索キーワードsを暗号化する際に確定的情報tを用いるか否かを指示するものであり、具体的にはフラグである。確定的指示fは、高速索引作成フラグともいう。また、検索キーワードsを暗号化する際に確定的情報tを用いるとは、検索クエリQ(s)に高速検索に有効な情報である確定的情報tを埋め込むことを意味する。
検索装置400aは、確定的指示fを取得し、確定的指示fにより確定的情報tを用いると指示された場合、検索キーワードsに対し確定的情報tを用いて確率暗号方式の暗号化を実行する。
また、検索装置400aは、確定的指示fにより確定的情報tを用いないと指示された場合、検索キーワードsに対し確定的情報tを用いずに確率暗号方式の暗号化を実行する。ステップS801の処理は、実施の形態1と同様である。
ステップS802aにおいて、検索装置400aの暗号化部412は、ステップS607で鍵保管部421に保管された鍵K1及び鍵K2、及び補助情報保管部422により管理される確定的情報tの集合T、ステップS801で入力部411に入力された検索キーワードs及び確定的指示fを受け取る。暗号化部412は、受け取ったデータを用いて以下の処理を行う。
図21を用いて、本実施の形態に係る検索処理S130aのキーワード暗号化処理S802aについて説明する。図21は、実施の形態1で説明した図9に対応する図である。図21において、図9と同様の処理ついては同一の符号を付し、その説明を省略する場合がある。
ステップS401において、検索装置400aは、検索キーワードsに対して確定暗号方式の暗号化を実行することにより確定的情報tを算出する。具体的には、暗号化部412は、検索キーワードsの確定的情報tをt=E(K1,s)とする。なお、確定的情報tの生成に用いる鍵はK1と異なる鍵を用いてもよい。
ステップS402において、暗号化部412は、ステップS401で確定的情報tを算出すると、算出した確定的情報tが検索記憶部450に蓄積されているか否かを判定する。暗号化部412は、算出した確定的情報tが検索記憶部450に蓄積されている場合(S402でYES)、この確定的情報tを管理装置500aに送信する。
具体的には、暗号化部412は、集合Tに、算出した確定的情報tが含まれているか確認する。算出した確定的情報tが集合Tに含まれている場合、暗号化部412は、算出した確定的情報tを送信部419へ出力する(ステップS403)。
ステップS404aにおいて、暗号化部412は、確定的情報tが検索記憶部450に蓄積されていない場合(S402でNO)、すなわち、算出した確定的情報tが集合Tに含まれていない場合、検索クエリQ(s)を管理装置500aに送信する。
暗号化部412は、検索クエリQ(s)を以下のように生成する。暗号化部412は、乱数を生成し、確定的情報tとを用いて、検索キーワードsに対し確率暗号方式の暗号化を実行する。具体的には、暗号化部412は、1から保管データ集合Uの要素数のカウンタ値j(1<=j<|U|)に対して、暗号文diをdi=E(K1,w,j)とする。次に、それぞれの暗号文diに対して、暗号文kiをki=E(K2,di)とする。さらに、乱数生成器によって乱数vを生成し、暗号文qiをqi=(E(ki,t||v),v)とする。このとき、確定的指示fが偽の場合は、tの代わりに意味のない乱数を用いる。ここで、演算||はビット列の連結を表す。生成した暗号文qiの集合をQ(s)と書く。暗号文qiの集合Q(s)を検索クエリと呼ぶ。なお、乱数vは、qiそれぞれに含めずに、Q(s)にひとつだけ含めてもよい。最後に、暗号化部412は、検索クエリQ(s)を送信部419へ出力する(ステップS405)。また、暗号化部412は、確定的指示f及び確定的情報tを補助情報保管部422に出力する。
なお、暗号文qiに乱数vを含めず、代わりにqi=E(ki,0λ||t||vi)とすることもできる。検索クエリQ(s)と暗号化タグcとの一致判定の際は、暗号文qiを復号した結果、平文に0λが現れるならば一致、そうでなければ不一致として判定できる。
ステップS406において、送信部419は、確定的情報t又は検索クエリQ(s)を管理装置500aに送信する。
以上でステップS802aの処理を終わり、図20のステップS803に進む。なお、ステップS802aにおいて、ステップS401からステップS403、及びステップS405からステップS406の処理は、実施の形態1と同様である。
ステップS803において、検索装置400aの送信部419は、ステップS802aで暗号化部412が生成した、確定的情報t又は検索クエリQ(s)を管理装置500aへ送信する。
以上で検索装置400aの検索クエリ生成処理S134aの処理を終わり、ステップS804に進む。
管理装置500aの判定処理S135aにおいて、管理装置500aは、検索装置400aから検索クエリQ(s)を受信すると、検索クエリQ(s)を復号して得られる検索キーワードsが、管理記憶部550に保管されている暗号化タグcを復号して得られる関連キーワードwと一致するか否かを判定する。管理装置500aは、検索クエリQ(s)を復号して得られる検索キーワードsが、暗号化タグcを復号して得られる関連キーワードwと一致した場合、暗号化タグcに対応する暗号化データE(D)を含む検索結果I(s)を検索装置400aに送信すると共に、検索クエリQ(s)を復号して得られる確定的情報tと暗号化タグcに対応する暗号化データE(D)とを対応付けて管理記憶部550に記憶する。
管理装置500aは、検索装置400aから確定的情報tを受信すると、確定的情報tに対応する暗号化データE(D)を管理記憶部550から取得し、取得した暗号化データE(D)を含む検索結果I(s)を検索装置400aに送信する。
以下に具体的に説明する。
ステップS804において、管理装置500aの受信部501は、ステップS803で検索装置400aの送信部419から送信された、確定的情報t又は検索クエリQ(s)を受信する。
ステップS804aにおいて検索クエリか確定的情報かを判定し、受信部501が検索クエリQ(s)を受信した場合、処理はステップ805a1に進み、受信部501が確定的情報tを受信した場合、処理はステップ807に進む。
ステップS805a1において、管理装置500aの照合部502は、ステップS804で受信部501が受信した情報が検索クエリQ(s)であった場合、ステップS609で鍵保管部511が保管した鍵K2、ステップS708でデータ保管部521が保管した全ての保管暗号化データ(ID(D),c)に対して、以下の処理を行う。
照合部502は、空の検索結果I(s)を用意する。照合部502は、全ての保管暗号化データ(ID(D),c)と検索クエリQ(s)に対して、以下の処理を行う。暗号化索引Cに含まれる全ての暗号化タグcと、検索クエリQ(s)の全ての要素qの、任意のペア(c,q)に対して、一致判定を以下のようにして行う。qの2つの要素をe1,e2とする。暗号文kをk=E(K2,c)とする。復号関数であるDecを用いて、m=Dec(k,e1)とする。mをm1とm2に分割する。m2がe2と一致するとき、cとqは一致したと判定する。これは即ち、検索クエリQ(s)の要素と一致する要素が暗号化索引Cに含まれていることを示している。このとき、m1は確定的情報tである。cとqが一致した場合、検索結果I(s)に保管データ名ID(D)を加える。ここで、検索結果I(s)に保管データ名ID(D)を加えるとは、保管データ名ID(D)に対応付けられた暗号化データE(D)を検索結果I(s)に含めることを意味する。
上記の処理は、検索クエリQ(s)を復号して得られる検索キーワードsが、管理記憶部550に保管されている暗号化タグcを復号して得られる関連キーワードwと一致するか否かを判定する処理である。
照合部502は、検索結果I(s)が空集合の場合、即ち、ステップS805aでYESの場合、送信部509に検索結果I(s)を出力する。照合部502は、検索結果I(s)が空集合でない場合、即ちステップ805aでNOの場合、高速照合部531に確定的情報tとしてのm1及び検索結果I(s)を出力する。
ステップS806において、管理装置500aの高速照合部531は、検索クエリQ(s)を復号して得られる確定的情報tと検索結果I(s)とを対応付けて管理記憶部550に記憶する。具体的には、高速照合部531は、ステップS805a1で照合部502から受け取った確定的情報t及び検索結果I(s)を入力とする。そして、高速照合部531は、確定的情報tをキーとして検索結果I(s)を高速に取出せる高速索引情報554を管理記憶部550に保管する。高速索引情報554は、具体的にはハッシュテーブルを利用することにより実現される。
ステップS807において、管理装置500aの高速照合部531は、ステップS804で受信部501が受信した情報が確定的情報tであった場合、受信部501から確定的情報tを受け取る。高速照合部531は、受け取った確定的情報tに対して、高速索引情報554から対応する検索結果I(s)を取り出し、送信部509へI(s)を出力する。高速照合部531は、受け取った確定的情報tに対応する検索結果I(s)がない場合、送信部509へI(s)として空集合を出力する。
ステップS808において、管理装置500aの送信部509は、照合部502又は高速照合部531から受け取った検索結果I(s)を検索装置400へ送信する。
以上で管理装置500aの判定処理S135aの処理を終わり、ステップS809に進む。なお、ステップS803、ステップS804及びステップS804aの処理は、実施の形態1と同様である。また、ステップS805a、ステップS806、ステップS807及びステップS808の処理は、実施の形態1と同様である。
検索装置400aの結果出力処理S136において、検索装置400aは、管理装置500aから検索結果I(s)を受信すると、確定的情報tを検索記憶部450に蓄積する。ステップS809からステップS811の結果出力処理S136は、実施の形態1と同様である。
以上により、秘匿検索システム100aの検索処理S130aは終了する。
なお、秘匿検索システム100aの削除処理S140については、実施の形態1で説明した図10の処理と同様であるため、説明を省略する。
***本実施の形態の効果の説明***
本実施の形態に係る秘匿検索システムは、検索を高速に行うために有用な情報が埋め込まれた検索クエリを生成する検索装置の暗号化部と、検索クエリを受信する管理装置の受信部とを備える。また、秘匿検索システムは、関連キーワードが暗号化された暗号化タグを保管する管理装置のデータ保管部と、保管されている暗号化タグ集合の中から、暗号化された検索キーワードと一致するものを取り出す管理装置の照合部とを備える。よって、本実施の形態に係る秘匿検索システムは、確率的であり、かつ、検索処理を高速化するための確定的情報が埋め込まれた検索クエリを用いて暗号化タグを検索することができる。また、本実施の形態に係る秘匿検索システムは、検索クエリが、確率的暗号化によって生成されている。よって、検索クエリは、検索キーワードの確定的情報に依らない。これにより検索クエリは頻度分析耐性が高くなり、安全性が高い。
また、本実施の形態に係る秘匿検索システムは、暗号化タグが、確定的暗号化によって生成されているが、暗号化タグcを生成する際、同じ関連キーワードwに対してカウンタ値jを重複なく入力することで、同じ関連キーワードwに対する暗号化タグcも重複しない。すなわち、カウンタ値を使用することで暗号文を常に変化させ、頻度分析を回避している。これにより暗号化タグは頻度分析耐性が高くなり、安全性が高い。また、本実施の形態に係る秘匿検索システムでは、検索装置において第1乱数rを記憶させる必要がなくなった。
実施の形態3.
本実施の形態では、主に、実施の形態2と異なる点について説明する。
本実施の形態において、実施の形態2と共通する部分については、同一の符号を付し、その説明を省略する場合がある。
***構成の説明***
図22を用いて、本実施の形態に係る秘匿検索システム100bの構成について説明する。
秘匿検索システム100bは、鍵生成装置200と、登録装置300aと、検索装置400bと、管理装置500bとを有する。図22は、実施の形態2で説明した図15に対応する。秘匿検索システム100bの基本的な構成及び機能については、実施の形態2で説明した図15と同様であるため、その説明を省略する。
また、鍵生成装置200と登録装置300aとの各々の構成及び機能については、実施の形態2と同様であるため、その説明を省略する。
また、検索装置400bと管理装置500bとの各々の構成は、実施の形態2と同様であるため、その説明を省略する。なお、検索装置400bでは、暗号化部412の機能が実施の形態2と異なる。また、管理装置500bでは、照合部502の機能が実施の形態2と異なる。
本実施の形態に係る秘匿検索システム100bでは、実施の形態2と異なり、検索クエリが2つの第1暗号文Q1(s)及び第2暗号文Q2(s)で構成される。第1暗号文Q1(s)は、暗号化タグと一致判定可能な暗号文である。第2暗号文Q2(s)は、第1暗号文Q1(s)と一致した暗号化タグを用いて確定的情報を計算可能な暗号文である。第1暗号文Q1(s)は、検索用暗号文ともいう。第2暗号文Q2(s)は、高速再検索用暗号文ともいう。
検索装置400bは、乱数とカウンタ値とを用いて、検索キーワードに対し確率暗号方式の暗号化を実行する。検索装置400bは、暗号化タグと一致判定される第1暗号文Q1(s)と、第1暗号文Q1(s)と一致した前記暗号化タグを用いて確定的情報を算出するための第2暗号文Q2(s)とを生成する。
***動作の説明***
次に、本実施の形態に係る秘匿検索システム100bにおける秘匿検索方法610及び秘匿検索プログラム620による秘匿検索処理S100bについて説明する。
実施の形態2と同様に、秘匿検索システム100bの秘匿検索処理S100bは、鍵生成保管処理S110と、登録処理S120aと、検索処理S130bと、削除処理S140とを有する。
鍵生成保管処理S110と登録処理S120aと削除処理S140との各々については、実施の形態2と同様であるため、その説明を省略する。
<検索処理S130b>
図23を用いて、本実施の形態に係る秘匿検索システム100bの検索処理S130bについて説明する。図23は、実施の形態2で説明した図20に対応する図である。図23において、図20と同様の処理ついては同一の符号を付し、その説明を省略する場合がある。
図23のステップS801からステップS811は、検索装置400bと管理装置500bとが実行する処理である。ステップS801からステップS803は検索装置400bにより実行される検索クエリ生成処理S134bである。ステップS804からステップS808は管理装置500bによって実行される判定処理S135bである。ステップS809からステップS811は検索装置400bにより実行される結果出力処理S136である。
検索装置400bの検索クエリ生成処理S134bにおいて、検索装置400bは、管理記憶部550に保管されている暗号化データE(D)を検索する検索キーワードsを取得する。検索装置400bは、検索キーワードsから一意に定まる確定的情報tを算出し、検索キーワードsに対し確定的情報tを用いて確率暗号方式の暗号化を実行することにより検索クエリQ(s)を生成する。そして、検索装置400bは、検索クエリQ(s)を管理装置500bに送信する。
以下に具体的に説明する。
ステップS801の処理は、実施の形態2と同様である。
ステップS802bにおいて、検索装置400bの暗号化部412は、ステップS607で鍵保管部421に保管された鍵K1及び鍵K2、及び補助情報保管部422により管理される確定的情報tの集合T、ステップS801で入力部411に入力された検索キーワードs及び確定的指示fを受け取る。暗号化部412は、受け取ったデータを用いて以下の処理を行う。
図24を用いて、本実施の形態に係る検索処理S130bのキーワード暗号化処理S802bについて説明する。図24は、実施の形態2で説明した図21に対応する図である。図24において、図21と同様の処理ついては同一の符号を付し、その説明を省略する場合がある。
ステップS401において、検索装置400bは、検索キーワードsに対して確定暗号方式の暗号化を実行することにより確定的情報tを算出する。具体的には、暗号化部412は、検索キーワードsの確定的情報tをt=E(K1,s)とする。なお、確定的情報tの生成に用いる鍵はK1と異なる鍵を用いてもよい。
ステップS402において、暗号化部412は、ステップS401で確定的情報tを算出すると、算出した確定的情報tが検索記憶部450に蓄積されているか否かを判定する。暗号化部412は、算出した確定的情報tが検索記憶部450に蓄積されている場合(S402でYES)、この確定的情報tを管理装置500bに送信する。
具体的には、暗号化部412は、集合Tに、算出した確定的情報tが含まれているか確認する。算出した確定的情報tが集合Tに含まれている場合、暗号化部412は、算出した確定的情報tを送信部419へ出力する(ステップS403)。
ステップS401からステップS403の処理は、実施の形態2と同様である。
ステップS404bにおいて、暗号化部412は、確定的情報tが検索記憶部450に蓄積されていない場合(S402でNO)、すなわち、算出した確定的情報tが集合Tに含まれていない場合、検索クエリQ(s)を管理装置500bに送信する。
暗号化部412は、検索クエリQ(s)を以下のように生成する。検索クエリQ(s)は2つの要素、すなわち第1暗号文Q1(s)と第2暗号文Q2(s)で構成されている。暗号化部412は、乱数生成器によって乱数vを生成し、確定的情報tを用いて、検索キーワードsに対し確率暗号方式の暗号化を実行する。具体的には、暗号化部412は、1から保管データ集合Uの要素数のカウンタ値j(1<=j<=|U|)に対して、暗号文djをdj=E(K1,s,j)とする。次に、それぞれの暗号文djに対して、暗号文Q1j(s)をQ1j(s)=(E(K2,dj,v),v)とする。さらに、暗号文Q2j(s)をQ2j(s)=F(dj,t||vj)とする。ただし、vjは乱数で、Q2j(s)毎に生成してもよいし、Q(s)毎に生成してもよい。また、暗号化Fは秘密鍵djにより復号処理が可能な暗号化アルゴリズムとする。例えば、AESでもよい。このとき、確定的指示fが偽の場合は、tの代わりに意味のない乱数を用いる。ここで、演算||はビット列の連結を表す。生成した暗号文qj=(Q1j(s),Q2j(s))の集合をQ(s)と書く。暗号文qjの集合Q(s)を検索クエリと呼ぶ。なお、乱数vは、Q1j(s)及びQ2j(s)のそれぞれに含めずに、Q(s)に1つだけ含めてもよい。最後に、暗号化部412は、検索クエリQ(s)を送信部419へ出力する(ステップS405)。また、暗号化部412は、確定的指示f及び確定的情報tを補助情報保管部422に出力する。
ステップS406において、送信部419は、確定的情報t又は検索クエリQ(s)を管理装置500bに送信する。
以上でステップS802bの処理を終わり、図23のステップS803に進む。なお、ステップS802bにおいて、ステップS401からステップS403、及びステップS405からステップS406の処理は、実施の形態2と同様である。
ステップS803において、検索装置400bの送信部419は、ステップS802bで暗号化部412が生成した、確定的情報t又は検索クエリQ(s)を管理装置500bへ送信する。
以上で検索装置400bの検索クエリ生成処理S134bの処理を終わり、ステップS804に進む。
管理装置500bの判定処理S135bにおいて、管理装置500bは、検索装置400bから検索クエリQ(s)を受信すると、検索クエリQ(s)を復号して得られる検索キーワードsが、管理記憶部550に保管されている暗号化タグcを復号して得られる関連キーワードwと一致するか否かを判定する。管理装置500bは、検索クエリQ(s)を復号して得られる検索キーワードsが、暗号化タグcを復号して得られる関連キーワードwと一致した場合、暗号化タグcに対応する暗号化データE(D)を含む検索結果I(s)を検索装置400bに送信すると共に、検索クエリQ(s)を復号して得られる確定的情報tと暗号化タグcに対応する暗号化データE(D)とを対応付けて管理記憶部550に記憶する。
管理装置500bは、検索装置400bから確定的情報tを受信すると、確定的情報tに対応する暗号化データE(D)を管理記憶部550から取得し、取得した暗号化データE(D)を含む検索結果I(s)を検索装置400bに送信する。
以下に具体的に説明する。
ステップS804において、管理装置500bの受信部501は、ステップS803で検索装置400bの送信部419から送信された、確定的情報t又は検索クエリQ(s)を受信する。
ステップS804aにおいて検索クエリか確定的情報かを判定し、受信部501が検索クエリQ(s)を受信した場合、処理はステップ805b1に進み、受信部501が確定的情報tを受信した場合、処理はステップ807に進む。
ステップS805b1において、管理装置500bの照合部502は、ステップS804で受信部501が受信した情報が検索クエリQ(s)であった場合、ステップS609で鍵保管部511が保管した鍵K2、ステップS708でデータ保管部521が保管した全ての保管暗号化データ(ID(D),c)に対して、以下の処理を行う。
照合部502は、空の検索結果I(s)を用意する。照合部502は、全ての保管暗号化データ(ID(D),c)と検索クエリQ(s)に対して、以下の処理を行う。
暗号化索引Cに含まれる全ての暗号化タグcと、検索クエリQ(s)の全ての要素Q1j(1<=j<=|U|)に対して、一致判定を以下のようにして行う。はじめに、Q1jに含まれる乱数vを用いて、全ての暗号化タグcに対して、c’=E(K2,c,v)を計算する。次に、計算した全てのc’に含まれるようなQ1jを求める。この処理は、Q1jとc’との共通部分を計算する処理であり、ソート、二分木探索あるいはハッシュマップなどにより効率的に計算される。このとき、計算されたQ1jはcに一致したと判定される。これは、検索クエリQ(s)の要素と一致する要素が暗号化索引Cに含まれていることを示している。すなわち、第1暗号文Q1(s)は、暗号化タグcと一致判定される。
ここで、Q1jのうち、c’に含まれるようなQ1jを1つ選び、これをQ1j’とする。そして、Q1j’と一致するc’に対応するcに対して、m=Dec(c,Q2j’)とする。このとき、mは確定的情報tである。すなわち、第2暗号文Q2(s)は、第1暗号文Q1(s)と一致した暗号化タグcを用いて確定的情報tを算出するために用いられる。cとQ1jが一致した場合、そのcに対応する保管データ名ID(D)を検索結果I(s)に加える。ここで、検索結果I(s)に保管データ名ID(D)を加えるとは、保管データ名ID(D)に対応付けられた暗号化データE(D)を検索結果I(s)に含めることを意味する。
上記の処理は、検索クエリQ(s)を復号して得られる検索キーワードsが、管理記憶部550に保管されている暗号化タグcを復号して得られる関連キーワードwと一致するか否かを判定する処理である。
照合部502は、検索結果I(s)が空集合の場合、即ち、ステップS805aでYESの場合、送信部509に検索結果I(s)を出力する。照合部502は、検索結果I(s)が空集合でない場合、即ちステップ805aでNOの場合、高速照合部531に確定的情報tとしてのm及び検索結果I(s)を出力する。
ステップS806において、管理装置500bの高速照合部531は、検索クエリQ(s)を復号して得られる確定的情報tと検索結果I(s)とを対応付けて管理記憶部550に記憶する。具体的には、高速照合部531は、ステップS805b1で照合部502から受け取った確定的情報t及び検索結果I(s)を入力とする。そして、高速照合部531は、確定的情報tをキーとして検索結果I(s)を高速に取出せる高速索引情報554を管理記憶部550に保管する。高速索引情報554は、具体的にはハッシュテーブルを利用することにより実現される。
ステップS807において、管理装置500bの高速照合部531は、ステップS804で受信部501が受信した情報が確定的情報tであった場合、受信部501から確定的情報tを受け取る。高速照合部531は、受け取った確定的情報tに対して、高速索引情報554から対応する検索結果I(s)を取り出し、送信部509へI(s)を出力する。高速照合部531は、受け取った確定的情報tに対応する検索結果I(s)がない場合、送信部509へI(s)として空集合を出力する。
ステップS808において、管理装置500bの送信部509は、照合部502又は高速照合部531から受け取った検索結果I(s)を検索装置400bへ送信する。
以上で管理装置500bの判定処理S135bの処理を終わり、ステップS809に進む。なお、ステップS803、ステップS804及びステップS804aの処理は、実施の形態2と同様である。また、ステップS805a、ステップS806、ステップS807及びステップS808の処理は、実施の形態2と同様である。
検索装置400bの結果出力処理S136において、検索装置400bは、管理装置500bから検索結果I(s)を受信すると、確定的情報tを検索記憶部450に蓄積する。ステップS809からステップS811の結果出力処理S136は、実施の形態2と同様である。
以上により、秘匿検索システム100bの検索処理S130bは終了する。
***本実施の形態の効果の説明***
本実施の形態に係る秘匿検索システムは、検索を高速に行うために有用な情報が埋め込まれた検索クエリを生成する検索装置の暗号化部と、検索クエリを受信する管理装置の受信部とを備える。また、秘匿検索システムは、関連キーワードが暗号化された暗号化タグを保管する管理装置のデータ保管部と、保管されている暗号化タグ集合の中から、暗号化された検索キーワードと一致するものを取り出す管理装置の照合部とを備える。よって、本実施の形態に係る秘匿検索システムは、確率的であり、かつ、検索処理を高速化するための確定的情報が埋め込まれた検索クエリを用いて暗号化タグを検索することができる。また、本実施の形態に係る秘匿検索システムは、検索クエリが、確率的暗号化によって生成されている。よって、検索クエリは、検索キーワードの確定的情報に依らない。これにより検索クエリは頻度分析耐性が高くなり、安全性が高い。
さらに、本実施の形態に係る秘匿検索システムでは、2つの集合の共通部分を求める処理を利用して検索を行うため、ソート、二分木探索あるいはハッシュマップなどにより効率的に計算される。よって、本実施の形態に係る秘匿検索システムによれば、より高速に検索を実行でき、効率的である。
以上、実施の形態1から3について説明した。実施の形態1から3では、秘匿検索システムは、鍵生成装置、登録装置、検索装置、管理装置を備え、各装置が1つのコンピュータである場合について説明した。しかし、鍵生成装置と登録装置とが1つのコンピュータであってもよい。また、検索装置と管理装置とが1つのコンピュータであってもよい。また、全ての装置が1つのコンピュータで実現されていても構わない。上記の実施の形態1から3で説明した機能を実現することができれば、秘匿検索システムの各装置をどのように組み合わせて秘匿検索システムを構成しても構わない。
また、秘匿検索システムの各装置において、「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、秘匿検索システムの各装置の機能ブロックは、上記の実施の形態1及び2で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せで各装置を構成しても構わない。また、これらの機能ブロックを、任意のブロック構成で各装置を構成しても構わない。
また、実施の形態1から3のうち、複数を部分的に組合せて実施しても構わない。あるいは、これらの実施の形態のうち、1つの発明を部分的に実施しても構わない。その他、これらの実施の形態を、全体としてあるいは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物あるいは用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
100 秘匿検索システム、101 ネットワーク、200 鍵生成装置、201 パラメータ受信部、202 鍵生成部、209 送信部、250 鍵生成記憶部、300 登録装置、301 受信部、302 鍵保管部、311 入力部、312 暗号化部、319 送信部、350 登録記憶部、339 削除要求、400 検索装置、401 受信部、411 入力部、412 暗号化部、419 送信部、421 鍵保管部、422 補助情報保管部、439 検索結果出力部、450 検索記憶部、451 検索履歴情報、500 管理装置、501 受信部、511 鍵保管部、521 データ保管部、531 高速照合部、502 照合部、509 送信部、550 管理記憶部、551 保管暗号化データ、552 暗号化データ、553 暗号化タグ、554 高速索引情報、610 秘匿検索方法、620 秘匿検索プログラム、909 処理回路、910 CPU、920 記憶装置、930 入力インタフェース、940 出力インタフェース、950 通信装置、921 メモリ、922 補助記憶装置、S100 秘匿検索処理、S110 鍵生成保管処理、S120 登録処理、S130 検索処理、S134 検索クエリ生成処理、S135 判定処理、S136 結果出力処理、S140 削除処理、K1,K2 鍵、E(D) 暗号化データ、C(D) 暗号化タグ、s 検索キーワード、f 確定的指示、t 確定的情報、Q(s) 検索クエリ、r 第1乱数、ui 第2乱数、λ パラメータ、100a 秘匿検索システム、300a 登録装置、400a 検索装置、500a 管理装置、S100a 秘匿検索処理、S120a 登録処理、S130a 検索処理、S134a 検索クエリ生成処理、S135a 判定処理、v 乱数、100b 秘匿検索システム、400b 検索装置、500b 管理装置、S100b 秘匿検索処理、S130b 検索処理、S134b 検索クエリ生成処理、S135b 判定処理、Q1 第1暗号文、Q2 第2暗号文。

Claims (20)

  1. 記憶装置である管理記憶部を備え、保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードに対し確率暗号方式の暗号化を実行することにより生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管する管理装置と、
    前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信する検索装置と
    を備え、
    前記管理装置は、
    前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する秘匿検索システム。
  2. 前記管理装置は、
    前記検索クエリを復号して得られる前記検索キーワードが、前記暗号化タグを復号して得られる関連キーワードと一致した場合、前記暗号化タグに対応する前記暗号化データを含む検索結果を前記検索装置に送信し、
    前記検索装置は、
    記憶装置である検索記憶部を備え、前記管理装置から前記検索結果を受信すると、前記確定的情報を前記検索記憶部に蓄積する請求項1に記載の秘匿検索システム。
  3. 前記管理装置は、
    前記検索クエリを復号して得られる前記検索キーワードが、前記暗号化タグを復号して得られる関連キーワードと一致した場合、前記検索クエリを復号して得られる前記確定的情報と前記暗号化タグに対応する前記暗号化データとを対応付けて前記管理記憶部に記憶する請求項2に記載の秘匿検索システム。
  4. 前記検索装置は、
    前記確定的情報を算出すると、前記確定的情報が前記検索記憶部に蓄積されているか否かを判定し、前記確定的情報が前記検索記憶部に蓄積されていない場合に前記検索クエリを前記管理装置に送信し、前記確定的情報が前記検索記憶部に蓄積されている場合に前記確定的情報を前記管理装置に送信し、
    前記管理装置は、
    前記検索装置から前記確定的情報を受信すると、前記確定的情報に対応する前記暗号化データを前記管理記憶部から取得し、取得した前記暗号化データを含む前記検索結果を前記検索装置に送信する請求項3に記載の秘匿検索システム。
  5. 前記検索装置は、
    前記検索キーワードに対して確定暗号方式の暗号化を実行することにより前記確定的情報を算出する請求項1から4のいずれか1項に記載の秘匿検索システム。
  6. 前記検索装置は、
    前記検索キーワードを暗号化する際に前記確定的情報を用いるか否かを指示する確定的指示を取得し、前記確定的指示により前記確定的情報を用いると指示された場合、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行し、前記確定的指示により前記確定的情報を用いないと指示された場合、前記検索キーワードに対し前記確定的情報を用いずに確率暗号方式の暗号化を実行する請求項1から5のいずれか1項に記載の秘匿検索システム。
  7. 前記秘匿検索システムは、さらに、
    第1乱数を生成し、前記第1乱数を用いて、前記関連キーワードに対し確率暗号方式の暗号化を実行することにより前記暗号化タグを生成し、前記暗号化タグと前記暗号化データとを前記管理装置に送信すると共に、前記第1乱数を前記検索装置に送信する登録装置を備え、
    前記検索装置は、
    第2乱数を生成し、前記第2乱数と、前記登録装置から受信した前記第1乱数と、前記確定的情報とを用いて、前記検索キーワードに対し確率暗号方式の暗号化を実行する請求項1から6のいずれか1項に記載の秘匿検索システム。
  8. 前記管理装置は、
    前記管理記憶部に保管されている前記暗号化データを削除する削除要求を受信し、前記削除要求に基づいて前記管理記憶部から前記暗号化データを削除する請求項1から7のいずれか1項に記載の秘匿検索システム。
  9. 記憶装置である管理記憶部を備えた管理装置と検索装置とを有する秘匿検索システムの秘匿検索方法において、
    前記管理装置が、保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードに対し確率暗号方式の暗号化を実行することにより生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管し、
    前記検索装置が、前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信し、
    前記管理装置が、前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する秘匿検索方法。
  10. 記憶装置である管理記憶部を備えた管理装置と検索装置とを有する秘匿検索システムの秘匿検索プログラムにおいて、
    保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードに対し確率暗号方式の暗号化を実行することにより生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管するデータ保管処理と、
    前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信する検索クエリ生成処理と、
    前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する判定処理と
    をコンピュータに実行させる秘匿検索プログラム。
  11. 記憶装置である管理記憶部を備え、保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードを暗号化して生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管する管理装置と、
    前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信する検索装置と
    を備え、
    前記管理装置は、
    前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する秘匿検索システム。
  12. 前記管理装置は、
    前記検索クエリを復号して得られる前記検索キーワードが、前記暗号化タグを復号して得られる関連キーワードと一致した場合、前記暗号化タグに対応する前記暗号化データを含む検索結果を前記検索装置に送信し、
    前記検索装置は、
    記憶装置である検索記憶部を備え、前記管理装置から前記検索結果を受信すると、前記確定的情報を前記検索記憶部に蓄積する請求項11に記載の秘匿検索システム。
  13. 前記管理装置は、
    前記検索クエリを復号して得られる前記検索キーワードが、前記暗号化タグを復号して得られる関連キーワードと一致した場合、前記検索クエリを復号して得られる前記確定的情報と前記暗号化タグに対応する前記暗号化データとを対応付けて前記管理記憶部に記憶する請求項12に記載の秘匿検索システム。
  14. 前記検索装置は、
    前記確定的情報を算出すると、前記確定的情報が前記検索記憶部に蓄積されているか否かを判定し、前記確定的情報が前記検索記憶部に蓄積されていない場合に前記検索クエリを前記管理装置に送信し、前記確定的情報が前記検索記憶部に蓄積されている場合に前記確定的情報を前記管理装置に送信し、
    前記管理装置は、
    前記検索装置から前記確定的情報を受信すると、前記確定的情報に対応する前記暗号化データを前記管理記憶部から取得し、取得した前記暗号化データを含む前記検索結果を前記検索装置に送信する請求項13に記載の秘匿検索システム。
  15. 前記検索装置は、
    前記検索キーワードに対して確定暗号方式の暗号化を実行することにより前記確定的情報を算出する請求項11から14のいずれか1項に記載の秘匿検索システム。
  16. 前記検索装置は、
    前記検索キーワードを暗号化する際に前記確定的情報を用いるか否かを指示する確定的指示を取得し、前記確定的指示により前記確定的情報を用いると指示された場合、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行し、前記確定的指示により前記確定的情報を用いないと指示された場合、前記検索キーワードに対し前記確定的情報を用いずに確率暗号方式の暗号化を実行する請求項11から15のいずれか1項に記載の秘匿検索システム。
  17. 前記秘匿検索システムは、さらに、
    カウンタ値を生成し、前記カウンタ値を用いて、前記関連キーワードに対し暗号化を実行することにより前記暗号化タグを生成し、前記暗号化タグと前記暗号化データとを前記管理装置に送信する登録装置を備え、
    前記検索装置は、
    乱数を生成し、前記乱数と、前記登録装置で生成した前記カウンタ値とを用いて、前記検索キーワードに対し確率暗号方式の暗号化を実行する請求項11から16のいずれか1項に記載の秘匿検索システム。
  18. 前記検索装置は、
    前記乱数と前記カウンタ値とを用いて、前記検索キーワードに対し確率暗号方式の暗号化を実行し、前記暗号化タグと一致判定される第1暗号文と、前記第1暗号文と一致した前記暗号化タグを用いて前記確定的情報を算出するための第2暗号文とを生成する請求項17に記載の秘匿検索システム。
  19. 記憶装置である管理記憶部を備えた管理装置と検索装置とを有する秘匿検索システムの秘匿検索方法において、
    前記管理装置が、保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードを暗号化して生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管し、
    前記検索装置が、前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信し、
    前記管理装置が、前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する秘匿検索方法。
  20. 記憶装置である管理記憶部を備えた管理装置と検索装置とを有する秘匿検索システムの秘匿検索プログラムにおいて、
    保管データが暗号化された暗号化データと、前記保管データに関連付けられた関連キーワードを暗号化して生成された暗号化タグとを受信し、前記暗号化タグと前記暗号化データとを対応付けて前記管理記憶部に保管するデータ保管処理と、
    前記管理記憶部に保管されている前記暗号化データを検索する検索キーワードを取得すると、前記検索キーワードから一意に定まる確定的情報を算出し、前記検索キーワードに対し前記確定的情報を用いて確率暗号方式の暗号化を実行することにより検索クエリを生成し、前記検索クエリを前記管理装置に送信する検索クエリ生成処理と、
    前記検索装置から前記検索クエリを受信すると、前記検索クエリを復号して得られる前記検索キーワードが、前記管理記憶部に保管されている前記暗号化タグを復号して得られる関連キーワードと一致するか否かを判定する判定処理と
    をコンピュータに実行させる秘匿検索プログラム。
JP2017547007A 2016-01-14 2017-01-11 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム Active JP6239213B1 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
PCT/JP2016/051006 WO2017122326A1 (ja) 2016-01-14 2016-01-14 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JPPCT/JP2016/051006 2016-01-14
PCT/JP2016/079421 WO2017122393A1 (ja) 2016-01-14 2016-10-04 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JPPCT/JP2016/079421 2016-10-04
PCT/JP2017/000679 WO2017122696A1 (ja) 2016-01-14 2017-01-11 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム

Publications (2)

Publication Number Publication Date
JP6239213B1 JP6239213B1 (ja) 2017-11-29
JPWO2017122696A1 true JPWO2017122696A1 (ja) 2018-01-25

Family

ID=59311136

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017547007A Active JP6239213B1 (ja) 2016-01-14 2017-01-11 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム

Country Status (5)

Country Link
US (1) US10872158B2 (ja)
EP (1) EP3382576B1 (ja)
JP (1) JP6239213B1 (ja)
CN (1) CN108351905B (ja)
WO (3) WO2017122326A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019142268A1 (ja) * 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
WO2019220531A1 (ja) 2018-05-15 2019-11-21 三菱電機株式会社 秘匿検索装置および秘匿検索方法
JP6918253B2 (ja) * 2018-12-28 2021-08-11 三菱電機株式会社 秘匿検索システムおよび秘匿検索方法
US11281733B2 (en) * 2019-03-14 2022-03-22 Microsoft Technology Licensing, Llc Selective presentation of rich experiences in search
DE112020005557B4 (de) 2020-01-14 2023-09-28 Mitsubishi Electric Corporation Registrierungseinrichtung, suchoperationseinrichtung, datenverwaltungseinrichtung, registrierungsprogramm, suchoperationsprogramm und datenverwaltungsprogramm
JP7016458B2 (ja) * 2020-01-14 2022-02-04 三菱電機株式会社 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム
CN114091054A (zh) * 2021-11-03 2022-02-25 深圳前海微众银行股份有限公司 一种双向隐匿数据查询方法及装置
JP7455287B2 (ja) * 2021-12-14 2024-03-25 三菱電機株式会社 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム
JP7217836B1 (ja) * 2021-12-27 2023-02-03 三菱電機株式会社 データ管理装置、秘匿検索システム、秘匿検索方法、および、秘匿検索プログラム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
JP2005101883A (ja) 2003-09-25 2005-04-14 Hitachi Ltd 電子メール文書原本性保証装置
JP4395611B2 (ja) 2003-10-28 2010-01-13 独立行政法人情報通信研究機構 暗号化データベース検索装置および方法ならびに暗号化データベース検索プログラム
JP2006072585A (ja) 2004-08-31 2006-03-16 Planet:Kk 移動体通信端末を用いた認証方法
JP2006113704A (ja) 2004-10-13 2006-04-27 Toshiba Corp 医用システムのパスワード管理方法及び医用装置用パスワード管理システム
JP5140026B2 (ja) 2009-03-19 2013-02-06 株式会社日立製作所 データベース処理方法、データベース処理プログラム、および、暗号化装置
JP5425307B2 (ja) 2010-07-08 2014-02-26 三菱電機株式会社 キーワード変換装置、キーワード変換プログラム、記録媒体及びキーワード変換方法
US8533489B2 (en) * 2010-09-29 2013-09-10 Microsoft Corporation Searchable symmetric encryption with dynamic updating
JP5412414B2 (ja) * 2010-12-08 2014-02-12 株式会社日立製作所 検索可能暗号処理システム
US8429421B2 (en) 2010-12-17 2013-04-23 Microsoft Corporation Server-side encrypted pattern matching
JP5420085B2 (ja) 2011-01-13 2014-02-19 三菱電機株式会社 データ処理装置及びデータ保管装置
JP2012164031A (ja) 2011-02-03 2012-08-30 Mitsubishi Electric Corp データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
EP2680251B1 (en) 2011-02-22 2016-05-25 Mitsubishi Electric Corporation Search system, search method for search system, information processing device, search program, corresponding keyword management device and corresponding keyword management system
JP5816299B2 (ja) 2011-12-01 2015-11-18 株式会社日立製作所 秘匿検索方法および秘匿検索装置
JP5800720B2 (ja) 2012-01-24 2015-10-28 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
US9355359B2 (en) * 2012-06-22 2016-05-31 California Institute Of Technology Systems and methods for labeling source data using confidence labels
JP5255154B1 (ja) 2012-12-26 2013-08-07 株式会社エアー 部分一致検索の可能な暗号システム
JP5963936B2 (ja) * 2013-02-25 2016-08-03 三菱電機株式会社 サーバ装置、秘匿検索プログラム,記録媒体及び秘匿検索システム
JP6054790B2 (ja) 2013-03-28 2016-12-27 三菱スペース・ソフトウエア株式会社 遺伝子情報記憶装置、遺伝子情報検索装置、遺伝子情報記憶プログラム、遺伝子情報検索プログラム、遺伝子情報記憶方法、遺伝子情報検索方法及び遺伝子情報検索システム
JP6144992B2 (ja) 2013-08-08 2017-06-07 株式会社日立製作所 検索可能暗号処理システム及び方法
JP6208586B2 (ja) 2014-01-16 2017-10-04 株式会社日立製作所 検索可能暗号処理システムおよび検索可能暗号処理方法
JP2015170057A (ja) * 2014-03-05 2015-09-28 富士通株式会社 秘匿検索装置、秘匿検索方法および秘匿検索プログラム
US10747888B2 (en) 2014-06-30 2020-08-18 Nicira, Inc. Method and apparatus for differently encrypting data messages for different logical networks
WO2016063344A1 (ja) * 2014-10-21 2016-04-28 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JP6381128B2 (ja) 2015-02-05 2018-08-29 国立研究開発法人産業技術総合研究所 検索システム、クライアント、サーバ、検索プログラムおよび検索方法
US9894042B2 (en) * 2015-07-24 2018-02-13 Skyhigh Networks, Inc. Searchable encryption enabling encrypted search based on document type

Also Published As

Publication number Publication date
CN108351905B (zh) 2022-05-31
US20180365433A1 (en) 2018-12-20
EP3382576A4 (en) 2018-10-03
WO2017122326A1 (ja) 2017-07-20
WO2017122696A1 (ja) 2017-07-20
EP3382576B1 (en) 2020-08-12
CN108351905A (zh) 2018-07-31
WO2017122393A1 (ja) 2017-07-20
EP3382576A1 (en) 2018-10-03
JP6239213B1 (ja) 2017-11-29
US10872158B2 (en) 2020-12-22

Similar Documents

Publication Publication Date Title
JP6239213B1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP6208586B2 (ja) 検索可能暗号処理システムおよび検索可能暗号処理方法
JP5420085B2 (ja) データ処理装置及びデータ保管装置
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
JP6234605B2 (ja) サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
CN111587452B (zh) 登记装置、检索操作装置、数据管理装置和计算机能读取的存储介质
JP6038427B1 (ja) 暗号化装置、暗号化方法、暗号化プログラム及び保管装置
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
KR101979267B1 (ko) 클라우드 저장 기반 암호화 시스템 및 방법
JP6289768B2 (ja) 暗号化装置、暗号化プログラム及び暗号化方法
WO2014141802A1 (ja) 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
US20210081562A1 (en) Data processing apparatus, data processing method, and computer readable medium
JP6672451B2 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
US11106740B2 (en) Search device, search system, search method, and computer readable medium
JP7217844B1 (ja) 秘匿検索システムおよび秘匿検索方法
JP7016458B2 (ja) 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム
JP6493402B2 (ja) 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム
CN117413489A (zh) 加密标签生成装置、隐匿检索系统、加密标签生成方法和加密标签生成程序

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170906

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170906

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170927

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: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171031

R150 Certificate of patent or registration of utility model

Ref document number: 6239213

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250