JP7016458B2 - 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム - Google Patents
秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム Download PDFInfo
- Publication number
- JP7016458B2 JP7016458B2 JP2021564626A JP2021564626A JP7016458B2 JP 7016458 B2 JP7016458 B2 JP 7016458B2 JP 2021564626 A JP2021564626 A JP 2021564626A JP 2021564626 A JP2021564626 A JP 2021564626A JP 7016458 B2 JP7016458 B2 JP 7016458B2
- Authority
- JP
- Japan
- Prior art keywords
- index
- search
- key
- keyword
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6227—Protecting 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Bioethics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Description
共通鍵方式では、共通鍵暗号技術が利用され、かつ、登録者及び検索者が限定される。
公開鍵方式では、公開鍵暗号技術が利用され、かつ、検索者は限定されるが登録者は限定されない。
登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶している登録データ記憶部と、
前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成する索引生成部と、
前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成する暗号化索引生成部と
を備える登録装置を備える。
まず、秘匿検索における、登録者と検索者とデータ管理装置とのそれぞれの処理を簡単に説明する。
登録者は、暗号化データを登録するユーザである。登録者は、データを登録する装置を含んでもよい。
検索者は、暗号化データを検索するユーザである。検索者は、データを検索する装置を含んでもよい。
データ管理装置は、暗号化データを保管している装置である。
まず、登録者は、登録するデータを暗号化することにより暗号化データを生成する。
次に、登録者は、暗号化データを検索するための登録キーワードを生成する。
次に、登録者は、登録キーワードを暗号化する。暗号化された登録キーワードを暗号化タグという。暗号化タグには、登録キーワード以外のデータが組み込まれていてもよい。暗号化タグに基づいて登録キーワードを推測することは困難である。
次に、登録者は、暗号化タグを暗号化データに関連付ける。暗号化タグの数は1つである必要はない。即ち、登録者は、複数の暗号化タグを暗号化データに関連付けてもよい。
そして、登録者は、暗号化データと暗号化タグとをデータ管理装置に登録する。
まず、検索者は、検索することに用いる検索キーワードを選ぶ。
次に、検索者は、秘密鍵を用いて検索キーワードを暗号化する。秘密鍵には、検索者の情報が組み込まれている。暗号化された検索キーワードを検索クエリという。検索クエリには、検索キーワード以外のデータが組み込まれていてもよい。検索クエリに基づいて秘密鍵又は検索キーワード等を推測することは困難である。
次に、検索者は、検索クエリをデータ管理装置に送信することによって、データ管理装置に検索キーワードに対応するデータを検索することを要求する。
そして、検索者は、検索クエリに対応する暗号化データをデータ管理装置から受け取る。
データ管理装置には、暗号化データと暗号化タグとの組が少なくとも1つ登録されている。
まず、データ管理装置は、検索クエリを受け取る。
次に、データ管理装置は、特殊な演算を実行することによって、検索クエリに対応する暗号化タグを選択する。特殊な演算は、暗号化タグを復号せずに、検索キーワードを各暗号化タグに対応する登録キーワードと比較するための演算である。
そして、データ管理装置は、選択した暗号化タグに関連付けられた暗号化データを検索者に送信する。
本実施の形態に係る秘匿検索システム100は、マルチユーザ型の共通鍵暗号方式を用いて索引を生成し、生成した索引を暗号化し、暗号化した索引を復号し、復号した索引を用いることによって、秘匿検索を行う。
図1は、秘匿検索システム100の構成例を示している。
秘匿検索システム100は、本図に示すように、マスター鍵装置200と、登録鍵装置300と、索引開示鍵装置400と、ユーザ鍵装置500と、登録装置600と、検索操作装置700と、データ管理装置800とを備える。秘匿検索システムは、本図に示す少なくとも1つの装置から成ってもよい。
秘匿検索システム100が備える各装置は、ネットワーク101を介して互いに接続されている。秘匿検索システム100が備える少なくとも1つの装置は、他の全ての装置と接続されていなくてもよい。
マスター鍵装置200は、本図に示すように、プロセッサ201と、メモリ202と、補助記憶装置203と、入出力インタフェース204と、通信装置205と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置203は、OS(Operating System)を記憶している。OSの少なくとも一部は、メモリ202にロードされて、プロセッサ201によって実行される。つまり、プロセッサ201は、OSを実行しながら、マスター鍵プログラムを実行する。
登録鍵装置300は、本図に示すように、本図に示すように、プロセッサ301と、メモリ302と、補助記憶装置303と、入出力インタフェース304と、通信装置305と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置303は、OSを記憶している。OSの少なくとも一部は、メモリ302にロードされて、プロセッサ301によって実行される。つまり、プロセッサ301は、OSを実行しながら、登録鍵プログラムを実行する。
索引開示鍵装置400は、本図に示すように、プロセッサ401と、メモリ402と、補助記憶装置403と、入出力インタフェース404と、通信装置405と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置403は、OSを記憶している。OSの少なくとも一部は、メモリ402にロードされて、プロセッサ401によって実行される。つまり、プロセッサ401は、OSを実行しながら、索引開示鍵プログラムを実行する。
生成部420は、本図に示すように、索引開示鍵生成部421を備える。
ユーザ鍵装置500は、本図に示すように、プロセッサ501と、メモリ502と、補助記憶装置503と、入出力インタフェース504と、通信装置505と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置503は、OSを記憶している。OSの少なくとも一部は、メモリ502にロードされて、プロセッサ501によって実行される。つまり、プロセッサ501は、OSを実行しながら、ユーザ鍵プログラムを実行する。
生成部520は、本図に示すように、ユーザ鍵生成部521を備える。
登録装置600は、本図に示すように、プロセッサ601と、メモリ602と、補助記憶装置603と、入出力インタフェース604と、通信装置605と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置603は、OSを記憶している。OSの少なくとも一部は、メモリ602にロードされて、プロセッサ601によって実行される。つまり、プロセッサ601は、OSを実行しながら、登録プログラムを実行する。
生成部620は、本図に示すように、暗号文データ生成部621と、キーワード生成部622と、中間タグ生成部623と、索引生成部624と、暗号化索引生成部625と、乱数生成部626と、暗号化タグ生成部627とを備える。
中間タグ生成部623は、ワイルドカードを中間タグMTに組み込んでもよい。
索引生成部624は、中間タグMTを用いて登録キーワード索引を生成してもよい。
暗号化タグ生成部627は、登録キーワードWと、暗号化タグ乱数と、暗号化タグ関数と、照合子関数とを用いて暗号化タグ照合子を生成する。暗号化タグ生成部627は、暗号化タグ乱数と、暗号化タグ照合子を暗号化タグCTに結合してもよい。照合子関数は、暗号化タグCTに対応する暗号化タグ照合子を生成することに用いられる関数である。
検索操作装置700は、本図に示すように、プロセッサ701と、メモリ702と、補助記憶装置703と、入出力インタフェース704と、通信装置705と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置703は、OSを記憶している。OSの少なくとも一部は、メモリ702にロードされて、プロセッサ701によって実行される。つまり、プロセッサ701は、OSを実行しながら、検索操作プログラムを実行する。
生成部720は、本図に示すように、検索クエリ生成部721と、索引クエリ生成部722とを備える。
データ管理装置800は、本図に示すように、プロセッサ801と、メモリ802と、補助記憶装置803と、入出力インタフェース804と、通信装置805と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
補助記憶装置803は、OSを記憶している。OSの少なくとも一部は、メモリ802にロードされて、プロセッサ801によって実行される。つまり、プロセッサ801は、OSを実行しながら、データ管理プログラムを実行する。
復号部820は、本図に示すように、暗号化索引復号部821を備える。
検索部840は、本図に示すように、索引照合部841と、暗号化タグ抽出部842と、暗号化タグ照合部843と、暗号文データ抽出部844とを備える。
索引照合部841は、索引クエリIQの内、索引開示位置情報Posに対応する部分を部分索引クエリIQ′とする。
暗号化タグ照合部843は、暗号化タグCTと、検索クエリSQと、暗号化タグCTに結合された暗号化タグ乱数と、暗号化タグ関数と、照合子関数とを用いて、判定用照合子を生成する。暗号化タグ照合部843は、判定用照合子と、暗号化タグに結合された暗号化タグ照合子とが等しい場合に、登録キーワードWと、検索キーワードwとが一致していると判定する。判定用照合子は、検索キーワードwが登録キーワードWと一致しているか否かを判定することに用いられるデータである。
暗号化タグ照合部843は、登録キーワードW及び検索キーワードwと、権限者属性情報及び検索者属性情報とがそれぞれ一致している可能性があると索引照合部841が判定した場合に、照合処理を実行してもよい。
マスター鍵装置200の動作手順は、マスター鍵方法に相当する。また、マスター鍵装置200の動作を実現するプログラムは、マスター鍵プログラムに相当する。
登録鍵装置300の動作手順は、登録鍵方法に相当する。また、登録鍵装置300の動作を実現するプログラムは、登録鍵プログラムに相当する。
索引開示鍵装置400の動作手順は、索引開示鍵方法に相当する。また、索引開示鍵装置400の動作を実現するプログラムは、索引開示鍵プログラムに相当する。
ユーザ鍵装置500の動作手順は、ユーザ鍵方法に相当する。また、ユーザ鍵装置500の動作を実現するプログラムは、ユーザ鍵プログラムに相当する。
登録装置600の動作手順は、登録方法に相当する。また、登録装置600の動作を実現するプログラムは、登録プログラムに相当する。
検索操作装置700の動作手順は、検索操作方法に相当する。また、検索操作装置700の動作を実現するプログラムは、検索操作プログラムに相当する。
データ管理装置800の動作手順は、データ管理方法に相当する。また、データ管理装置800の動作を実現するプログラムは、データ管理プログラムに相当する。
秘匿検索システム100の動作手順は、秘匿検索方法に相当する。秘匿検索方法は、マスター鍵方法と、登録鍵方法と、索引開示鍵方法と、ユーザ鍵方法と、登録方法と、検索操作方法と、データ管理方法との総称である。
なお、以下において、秘匿検索システム100が、特許文献1が開示するマルチユーザ型の共通鍵方式を用いる場合を説明する。しかし、秘匿検索システム100は、別のマルチユーザ型の共通鍵方式を用いる場合においても、以下の例と同様に秘匿検索方法を実行することができる。
マスター鍵生成処理は、マスター鍵装置200によって実行される処理である。
生成部220は、マスター鍵MKを生成する。
生成部220は、具体例として、256ビットのランダムなビット列をマスター鍵MKとして生成する。本例において、生成部220は、256ビットのマスター鍵MKを生成する。
生成部220は、マスター鍵MKを記憶部291に記憶させる。その結果、マスター鍵MKは、記憶部291に保管される。
出力部230は、マスター鍵MKを出力する。
出力部230は、具体例として、通信装置205を用いて、マスター鍵MKを登録鍵装置300へ送信する。
登録鍵生成処理は、登録鍵装置300によって実行される処理である。
受付部310は、マスター鍵MKを受け付ける。
受付部310は、具体例として、通信装置305を用いて、マスター鍵装置200からマスター鍵MKを受信する。受付部310は、登録鍵装置300に入力されたマスター鍵MKを、入出力インタフェース304を介して受け付けてもよい。
生成部320は、マスター鍵MKを用いて登録鍵EKを生成する。生成部320は、登録鍵EKを生成するためにデータ鍵DKとタグ鍵TKとを生成する。
EK = (DK,TK)
登録鍵EKは、データ鍵DKとタグ鍵TKとを含んでいる。
生成部320は、登録鍵EKを記憶部391に記憶させる。その結果、登録鍵EKは、記憶部391に保管される。
出力部330は、登録鍵EKを出力する。
出力部330は、具体例として、通信装置305を用いて、索引開示鍵装置400とユーザ鍵装置500と登録装置600とのそれぞれに登録鍵EKを送信する。
出力部330は、登録装置600に登録鍵EKの代わりにタグ鍵TKを送信してもよい。
索引開示鍵生成処理は、索引開示鍵装置400によって実行される処理である。
受付部410は、登録鍵EKを受け付ける。
受付部410は、具体例として、通信装置405を用いて、登録鍵装置300から登録鍵EKを受信する。受付部410は、索引開示鍵装置400に入力された登録鍵EKを、入出力インタフェース404を介して受け付けてもよい。
受付部410は、索引長ILENを受け付ける。
受付部410は、具体例として、索引開示鍵装置400に入力された索引長ILENを、入出力インタフェース404を介して受け付ける。受付部410は、索引長ILENをアプリケーションプログラムから受け付けてもよい。
索引長ILENは、1以上の整数であり、登録装置600において生成される索引Iのデータ長をバイト単位で表した値である。具体例として、ILEN=32とすると、索引Iのデータ長は、32バイト又は32バイトに比例する値である。
索引開示鍵生成部421は、タグ鍵TKと索引長ILENとを用いて、索引開示鍵IKを生成する。
IK = (IK_1,・・・,IK_ILEN)
まず、索引開示鍵生成部421は、タグ鍵TKと番号jとを連結して連結値TK|jを得る。x|yは、データxのビット列とデータyのビット列とを連結したデータのビット列が表す値を表す。連結することは、特に断りがない限り、ビット列を連結することを意味する。
IK_j = F_1(TK|j)
関数F_1は、どのような一方向性関数であってもよい。一方向性関数は、具体例として、擬似ランダム関数、ハッシュ関数、共通鍵暗号方式、又は公開鍵暗号方式である。
生成部420は、索引開示鍵IKを記憶部491に記憶させる。その結果、索引開示鍵IKは、記憶部491に保管される。
出力部430は、索引開示鍵IKを出力する。
出力部430は、具体例として、通信装置405を用いて、索引開示鍵IKを登録装置600へ送信する。
ユーザ鍵生成処理は、ユーザ鍵装置500によって実行される処理である。
受付部510は、登録鍵EKを受け付ける。
受付部510は、具体例として、通信装置505を用いて、登録鍵装置300から登録鍵EKを受信する。受付部510は、ユーザ鍵装置500に入力された登録鍵EKを、入出力インタフェース504を介して受け付けてもよい。
受付部510は、登録鍵EKを記憶部591に記憶させる。その結果、登録鍵EKは、記憶部591に保管される。
受付部510は、属性情報Aを受け付ける。属性情報Aは、検索者属性情報に対応する。
受付部510は、具体例として、ユーザ鍵装置500に入力された属性情報Aを、入出力インタフェース504を介して受け付ける。受付部510は、属性情報Aをアプリケーションプログラムから受け付けてもよい。
属性情報は、各検索者の属性値を層ごとに示す。属性値は、属性情報の各値である。
1つの番号は、1つの検索者の分類に対応する。1つの番号が複数の検索者に対応することもある。
第1層の属性(第1属性)は、検索者が所属する事業部を示す。
第2層の属性(第2属性)は、検索者が所属する部を示す。
第3層の属性(第3属性)は、検索者が所属する課を示す。
第4層の属性(第4属性)は、検索者の氏名を示す。
番号1の属性情報は、Neさんの属性情報である。Neさんは、Di事業部のDe部のSc課に所属する。
番号2の属性情報は、Nfさんの属性情報である。Nfさんは、Di事業部のDe部のSd課に所属する。
番号3の属性情報は、Di事業部のDe部のSc課に所属する検索者に対応する。番号3の第4属性は、ワイルドカード*である。ワイルドカード*は、属性値が限定されないことを表す。そのため、番号3に対応する属性情報は、検索者の氏名を限定しないことを示す。なお、ワイルドカード*は、コンピュータにおいて、全てのビットが1の値、又は*の文字コード等に置き換えられる。
番号4の属性情報は、Di事業部のDe部に所属する検索者に対応する。番号4の第3属性及び第4属性は、ワイルドカード*である。そのため、番号4に対応する属性情報は、検索者の課及び氏名を限定しないことを示す。
属性情報Aは、次のように表されてもよい。
A = (A_1,・・・,A_L)
ユーザ鍵生成部521は、データ鍵DKと属性情報Aとを用いて、ユーザデータ鍵UDKを生成する。
ユーザデータ鍵UDKは、具体例として、ユーザデータ部分鍵UDK_jと、フラグ値Db_jとを有する。jは、1以上L以下の整数である。
まず、ユーザ鍵生成部521は、属性値A_jと番号jとを連結して連結値A_j|jを得る。
次に、ユーザ鍵生成部521は、データ鍵DKと連結値A_j|jとを入力として関数F_2を実行し、ユーザデータ鍵UDK_jを得る。関数F_2は、どのような一方向性関数であってもよい。
ユーザ鍵生成部521は、属性値A_jがワイルドカード*であるか判定する。
ユーザ鍵生成部521は、属性値A_jがワイルドカード*である場合、フラグ値Db_jを1とする。
ユーザ鍵生成部521は、属性値A_jがワイルドカード*でない場合、フラグ値Db_jを0とする。
ユーザデータ鍵UDKは、以下のように表されてもよい。
UDK = ((UDK_1,Db_1),・・・,(UDK_L,Db_L))
Db_j = 1 (A_j=*である場合)
Db_j = 0 (A_j≠*である場合)
UDK_j = F_2(DK,A_j|j)
ユーザ鍵生成部521は、具体例として、関数G_1を用いてユーザタグ鍵UTKを次のように生成する。関数G_1は、具体例として、擬似ランダム関数、ハッシュ関数、又は暗号化モードECB(Electronic CodeBook)を用いた共通鍵暗号方式の関数である。関数G_1は、ユーザ鍵関数に対応する。
UTK = ((UTK_1,Tb_1),・・・,(UTK_L,Tb_L))
Tb_j = 1 (A_j=*である場合)
Tb_j = 0 (A_j≠*である場合)
UTK_j = G_1(TK,A_j|j)
生成部520は、ユーザ鍵UKを記憶部591に記憶させる。その結果、ユーザ鍵UKは、記憶部591に保管される。
ユーザ鍵UKは、ユーザデータ鍵UDKとユーザタグ鍵UTKとの組である。ユーザ鍵UKは、属性情報Aが組み込まれた鍵である。
ユーザ鍵UKは、次のように表されてもよい。ユーザ鍵UKの一部をユーザ鍵UKと呼んでもよい。
UK=(UDK,UTK)
出力部530は、ユーザ鍵UKを出力する。
出力部530は、具体例として、通信装置505を用いて、ユーザ鍵UKを検索操作装置700へ送信する。
データ登録処理は、登録装置600と、データ管理装置800とによって実行される処理である。
受付部610は、登録鍵EKを受け付ける。
受付部610は、具体例として、通信装置605を用いて、登録鍵装置300から登録鍵EKを受信する。受付部610は、登録装置600に入力された登録鍵EKを、入出力インタフェース604を介して受け付けてもよい。
受付部610は、登録鍵EKを記憶部691に記憶させる。その結果、登録鍵EKは、記憶部691に保管される。
受付部610は、本ステップの処理の代わりに、本ステップ中の登録鍵EKをタグ鍵TKと読み替えた処理を実行してもよい。
受付部610は、索引開示鍵IKを受け付ける。
受付部610は、具体例として、通信装置605を用いて、索引開示鍵装置400から索引開示鍵IKを受信する。受付部610は、登録装置600に入力された索引開示鍵IKを、入出力インタフェース604を介して受け付けてもよい。
受付部610は、索引開示鍵IKを記憶部691に記憶させる。索引開示鍵IKは、記憶部691に記憶される。
受付部610は、平文Mと属性情報Bとを受け付ける。平文Mは、登録データに対応する。登録データは、データ管理装置800に登録されているデータである。平文Mは、典型的には、暗号化されていないデータである。平文Mには、ファイル名File(M)がメタデータとして含まれる。ファイル名File(M)は、暗号化されていてもよい。属性情報Bは、権限者属性情報に対応する。
受付部610は、具体例として、登録装置600に入力された平文Mと属性情報Bとを入出力インタフェース604を介して受け付ける。受付部610は、平文Mと属性情報Bとをアプリケーションプログラムから受け付けてもよい。
権限者は、平文Mを参照する権限を有する利用者である。つまり、権限者は、検索者の一部である。
属性情報Bは、具体例として、属性情報Aと同様に以下のように表されてもよい。
B = (B_1,・・・,B_L)
暗号文データ生成部621は、データ鍵DKと平文Mと属性情報Bとを用いて、暗号文データCを生成する。暗号文データCは、平文Mのメタデータとしてファイル名File(M)を含む。
暗号文データ生成部621は、具体例として、参考文献1で開示された暗号方式、又は、IDベース暗号等の属性ベース暗号を生成する方式を用いて、暗号文データCを生成する。
キーワード生成部622は、平文Mに対応する登録キーワードWを生成する。登録キーワードWは、本ステップにおいて生成されたキーワードである。キーワード生成部622は、1つのキーワードを登録キーワードWとして生成してもよいし、複数のキーワードを登録キーワードWとして生成してもよい。
キーワード生成部622は、具体例として、平文Mが名前を含む場合、名前をそのまま1つのキーワードとして生成する。また、キーワード生成部622は、平文Mが文章である場合、その文章に対して形態素解析又は自然言語処理等を行い、その結果を用いて複数のキーワードを生成してもよい。
キーワード生成部622は、登録装置600に入力されたキーワードを、入出力インタフェース604を介して受け付けてもよい。また、キーワード生成部622は、アプリケーションプログラムからキーワードを受け付けてもよい。
中間タグ生成部623は、タグ鍵TKと属性情報Bと登録キーワードWとを用いて、中間タグMTを生成する。中間タグMTは、タグ鍵TKと属性情報Bと登録キーワードWとを入力として確定的関数を実行した結果得られる確定的データである。確定的関数は、入力値が確定的関数の定義域に属する値であれば、入力値がどのような値であっても、入力値に対応する出力値が常に同じである関数である。確定的関数は、出力値が確率的に定まらない関数である。つまり、同じ登録キーワードWを使って生成された中間タグMTはいつも同じ値となる。確定的データは、確定的関数を実行して得られたデータである。即ち、確定的データは、確率的に定まるデータではない。
中間タグMTは、暗号化タグ生成部627が算出する暗号化タグCTを生成することに用いる一時データに相当する。
MT=D_1(TK,B,W)
中間タグMTは、属性要素MT_{j,0,W}と、ワイルドカード要素MT_{j,1,W}とを有する。jは、1以上L以下の整数である。ここで、属性要素とワイルドカード要素とは、それぞれL個ある。そのため、中間タグMTは、2L個の要素を持つ。中間タグMTは、1人の権限者に対応する。
まず、中間タグ生成部623は、属性値B_jと番号jとを連結して連結値B_j|jを得る。
次に、中間タグ生成部623は、タグ鍵TKと連結値B_j|jとを入力として関数G_1を実行し、関数値B_j^を得る。
次に、中間タグ生成部623は、関数値B_j^と、登録キーワードWとを入力として関数G_2を実行し、関数値B_j^^を得る。
関数値B_j^^が、属性要素MT_{j,0,W}である。
なお、関数G_2は、関数G_1と同様である。関数G_2は、検索クエリ関数に対応する。
まず、中間タグ生成部623は、ワイルドカード*と、番号jとを連結して連結値*_jを得る。
次に、中間タグ生成部623は、タグ鍵TKと連結値*_jとを入力として関数G_1を実行し、関数値*_j^を得る。
次に、中間タグ生成部623は、関数値*_j^と登録キーワードWとを入力として関数G_2を実行し、関数値*_j^^を得る。関数値*_j^^がワイルドカード要素MT_{j,1,W}である。
MT = (MT_{1,0,W},MT_{1,1,W},・・・,MT_{L,0,W},MT_{L,1,W})
MT_{j,0,W} = (G_2(G_1(TK,B_j|j),W)
MT_{j,1,W} = (G_2(G_1(TK,*|j),W)
jは、1以上L以下の整数である。
索引生成部624は、中間タグMTを用いて索引Iを生成する。
索引生成部624は、中間タグMTを入力として確定的関数を実行し、確定的関数の実行結果を索引Iとする。即ち、索引Iは確定的データである。
データ管理装置800は、索引Iと、索引クエリIQとを比較することにより、登録キーワードWと、検索キーワードwとが一致する可能性があるか否かを高速に判断する。ここで、索引クエリIQは、索引クエリ生成部722が検索クエリSQと対応するよう生成したクエリである。索引クエリIQの一部を索引クエリIQと呼んでもよい。登録キーワードWは、暗号化タグCTに含まれている。検索キーワードwは、検索クエリに含まれている。
登録キーワードWと検索キーワードwとが一致する可能性があると判断された場合、暗号化タグ照合部843は、暗号化タグCTと、検索クエリSQとを照合する処理(以下、照合処理)を実行する。一方、登録キーワードWと検索キーワードwとが一致する可能性がないと判断された場合、暗号化タグ照合部843は、照合処理を実行しない。
データ管理装置800は、照合処理において、データ管理装置800に保管されている全ての暗号化タグCTに対して検索クエリSQを照合しない。その代わりに、データ管理装置800は、索引Iと索引クエリIQとを使うことによって、検索キーワードwと一致する登録キーワードWを含む可能性のある暗号化タグCTを絞りこみ、絞りこんだ暗号化タグCTを用いて照合処理を実行する。そのため、データ管理装置800は、暗号化タグCTを検索することに要する時間を削減することができる。
I = D_2(MT) = (I_1,・・・,I_ILEN)
確定的関数D_2は、長さILENのベクトル値を出力する。
D_2´(MT_{1,0,東京})=10・・・01・・・1
D_2´(MT_{1,1,東京})=00・・・11・・・0
・・・
D_2´(MT_{L,0,東京})=00・・・01・・・0
D_2´(MT_{L,1,東京})=11・・・10・・・0
I = (I_1,・・・,I_ILEN)
I_1 = (I_10_1,I_11_1,・・・,I_L0_1,I_L1_1)
= (1,0,・・・,0,1)
I_2 = (I_10_2,I_11_2,・・・,I_L0_2,I_L1_2)
= (0,0,・・・,0,1)
・・・
I_ILEN = (I_10_ILEN,I_11_ILEN,・・・,I_L0_ILEN,I_L1_ILEN)
= (0,1,・・・,0,1)
即ち、I_1は、D_2´(MT_{1,0,東京}),・・・,D_2´(MT_{L,1,東京})の1ビット目から構成される。同様に、I_ILENは、D_2´(MT_{1,0,東京}),・・・,D_2´(MT_{L,1,東京})のILENビット目から構成される。
D_2´(MT_{j,b,東京}) = MT_{j,b,東京} = (I_jb_1,・・・,I_jb_ILEN,*_(ILEN+1),・・・))
jは、1以上ILEN以下の整数である。bは、0又は1である。なお、索引生成部624は、この場合において、中間タグMTの(ILEN+1)番目以降のベクトル要素値を無視して索引Iを生成する。
暗号化索引生成部625は、索引開示鍵IKを用いて索引Iを暗号化することにより、暗号化索引EIを生成する。
EI=(EI_1,・・・,EI_ILEN)
EI_1 = Enc(IK_1,I_1)
・・・
EI_ILEN = Enc(IK_ILEN,I_ILEN)
乱数生成部626は、乱数TRを生成する。乱数TRは、暗号化タグ乱数に対応する。乱数TRの少なくとも1つの要素を、暗号化タグ乱数と呼んでもよい。乱数生成部626は、乱数TRをどのように生成してもよい。乱数TRは、乱数の要素から成るベクトルであってもよい。乱数生成部626は、具体例として、乱数TRとして一様乱数の要素から成るベクトルを生成する。
乱数生成部626は、暗号化タグ生成部627で暗号化タグCTを生成するために利用される方式によって、1つの乱数TRを生成してもよい。乱数生成部626は、複数の乱数から成るTRを生成してもよい。
暗号化タグ生成部627は、タグ鍵TKと、中間タグMTと、乱数TRとを用いて暗号化タグCTを生成する。
CT = (CT_{1,0,W},CT_{1,1,W},・・・,CT_{L,0,W},CT_{L,1,W},VER,R_0)
CT_{j,0,W} = G_3(G_2(G_1(TK,B_j|j),W)|R_0)+R_j
CT_{j,1,W} = G_3(G_2(G_1(TK,*|j),W)|R_0)+R_j
VER = G_4(R_1+・・・+R_L)
jは、1以上L以下の整数である。VERは、暗号化タグ照合子に対応する。
本明細書において、「+」という記号は、特に断りがない限り、排他的論理和を表す。ただし、+の前後の項が文字ではなく数字である場合、特に断りがない限り、加算を表す。
登録部630は、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組をデータ管理装置800に登録する。
受付部810は、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組を受信し、受信した組を記憶部891に記憶させる。つまり、受付部810は、暗号文データCと、暗号化タグCTと、暗号化索引EIとを互いに対応付けて記憶部891に記憶させる。その結果、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組が記憶部891に保管される。
データ管理装置800は、ファイル名と、暗号化データCと、暗号化タグCTと、暗号化索引EIとを互いに対応付けて登録データベース892に登録する。
記憶部891は、登録データベース892を記憶している。
索引開示処理は、データ管理装置800によって実行される処理である。本処理は、索引開示鍵IKの一部であるi番目索引開示鍵IK_iが新しく開示された場合、記憶部891に保管された暗号化索引EIに対して行われる。iは、1以上ILEN以下の整数である。本処理は、IK_iが開示されてから新たにデータ登録処理が行われた場合、ステップS611で記憶部891に保管された直後の暗号化索引EIに対して行われてもよい。
受付部810は、索引開示鍵IKのi番目索引開示鍵IK_iを受け付ける。iは、1以上ILEN以下の整数である。
受付部810は、具体例として、通信装置805を用いて、索引開示鍵装置400から索引開示鍵のi番目索引開示鍵IK_iを受信する。受付部810は、データ管理装置800に入力されたi番目索引開示鍵IK_iを、入出力インタフェース804を介して受け付けてもよい。
受付部810は、i番目索引開示鍵IK_iを記憶部891に記憶させる。その結果、i番目索引開示鍵IK_iは、記憶部891に保管される。
受付部810は、暗号化索引EIを受け付ける。
受付部810は、具体例として、データ管理装置800に入力された暗号化索引EIを、入出力インタフェース804を介して受け付ける。受付部810は、暗号化索引EIをアプリケーションプログラムから受け付けてもよい。
記憶部891に保管された暗号化索引EI、又はステップS611で記憶部891に保管された直後の暗号化索引EI等が、本ステップにおける暗号化索引EIに該当する。
暗号化索引復号部821は、i番目索引開示鍵IK_iを用いてi番目暗号化索引EI_iを復号することにより、i番目索引I_iを復元する。i番目暗号化索引EI_iは、暗号化索引EIの一部である。i番目索引I_iは、索引Iの一部である。
即ち、暗号化索引復号部821は、復号関数Decを用いて、以下のようにしてI_iを復元する。復号関数Decは、確率的暗号化関数Encに対応する関数である。
I_i = Dec(IK_i,EI_i)
登録部830は、i番目索引I_iを暗号化索引EIと対応付けて登録データベース892に登録する。
データ管理装置800は、抽出された暗号化索引EIと、復元された1番目索引I_1とを対応付けて登録する。登録データベース892は、索引開示後データベース893のように更新される。
本図の索引開示後データベース893には、1番目暗号化索引EI_1が登録されていない。しかし、登録部830は、登録データベース892から1番目暗号化索引EI_1を削除しなくてもよい。
記憶部891は、索引開示後データベース893を記憶している。
登録部830は、記憶部891が記憶している索引開示位置情報Posを更新する。索引開示位置情報Posは、現在公開されている索引開示鍵に対応する索引Iの位置を示す情報である。索引開示位置情報Posは、典型的には、秘匿検索システム100が稼働を開始した直後に作られるデータである。ここで、索引開示位置情報Posは集合であり、索引開示位置情報Posの初期値は空集合である。索引開示鍵IKは、典型的には、登録装置600により公開される。
検索処理は、検索操作装置700によって実行される処理である。
受付部710は、ユーザ鍵UKを受け付ける。
受付部710は、具体例として、通信装置705を用いて、ユーザ鍵装置500からユーザ鍵UKを受信する。受付部710は、検索操作装置700に入力されたユーザ鍵UKを、入出力インタフェース704を介して受け付けてもよい。
受付部710は、ユーザ鍵UKを記憶部791に記憶させる。その結果、ユーザ鍵UKは、記憶部791に保管される。
ユーザ鍵UKは、ユーザデータ鍵UDKと、ユーザタグ鍵UTKとを含んでいる。
受付部710は、検索キーワードwを受け付ける。
受付部710は、具体例として、検索操作装置700に入力された検索キーワードwを入出力インタフェース704を介して受け付ける。受付部710は、検索キーワードwをアプリケーションプログラムから受け付けてもよい。
検索クエリ生成部721は、ユーザタグ鍵UTKと検索キーワードwとを用いて、検索クエリSQを生成する。
SQ = ((SQ_1,Qb_1),・・・,(SQ_L,Qb_L))
Qb_j = Tb_j
SQ_j = G_2(UTK_j,w)
jは、1以上L以下の整数である。
索引クエリ生成部722は、検索クエリSQを用いて、索引クエリIQを生成する。索引クエリIQは、検索クエリSQを入力として確定的関数D_2を実行した結果得られる確定的データである。索引クエリIQは、記憶部891に保管された索引Iを検索する際に用いられるデータである。
検索部840が登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとがそれぞれ一致する可能性があると判断した場合、暗号化タグ照合部843は、暗号化タグCTと検索クエリSQとを用いて照合処理を行う。一方、それ以外の場合、暗号化タグ照合部843は、照合処理を行わない。
IQ = D_2(SQ) = (IQ_1,・・・,IQ_ILEN)
D_2´(MT_{1,Qb_1,東京}) = D_2´(SQ_1)
・・・
D_2´(MT_{L,Qb_L,東京}) = D_2´(SQ_L)
かつ
IQ_j = (IQ_1_j,・・・,IQ_L_j)
= (I_1(Qb_1)_j,・・・,I_L(Qb_L)_j)
jは、1以上L以下の整数である。
D_2´(SQ_1)=D_2´(MT_{1,0,東京})=1・・・01・・・1
・・・
D_2´(SQ_L)=D_2´(MT_{L,0,東京})=0・・・01・・・0
かつ
I_10_1 = IQ_1_1 = 1
・・・
I_L0_1 = IQ_L_1 = 0
・・・
I_10_ILEN = IQ_1_ILEN = 0
・・・
I_L0_ILEN = IQ_L_ILEN = 0
I_1[Qb_1,・・・,Qb_L] = (I_1(Qb_1)_1,・・・,I_L(Qb_1)_1)
上記の例において、I_1[Qb_1,・・・,Qb_L]は、I_1[0,・・・,0]=(1,・・・,0)と表せる。
この場合、同様に、1以上ILEN以下の整数jについても、登録キーワードWのj番目索引I_jに対して、I_j[Qb_1,・・・,Qb_L]=IQ_jとなる。
上記の対偶より、I_j[Qb_1,・・・,Qb_L]≠IQ_jであれば、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方が一致しないということが言える。
なお、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方が一致しない場合において、I_j[Qb_1,・・・,Qb_L]=IQ_jとなる可能性はある。しかし、その可能性は十分に低い。
全てのjにおいてこの式が成り立つ場合、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとがそれぞれ一致する可能性がある。そのため、この場合、検索部840は、暗号化タグCTと検索クエリSQとを照合する。
一方、全てのjに対してこの式が成り立たない場合、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方は一致しない。そのため、検索部840は、暗号化タグCTと検索クエリSQとを照合しない。
検索部840は、このようにして、照合する暗号化タグCTを絞ることができる。
要求部730は、通信装置705を用いて、検索クエリSQと索引クエリIQとをデータ管理装置800へ送信する。
要求部730は、通信装置705が暗号化検索結果{C}をデータ管理装置800から受信することを待つ。要求部730が暗号化検索結果{C}を受信することを待つ最大時間は、どのような値であってもよい。
通信装置705が暗号化検索結果{C}を受信した場合、検索操作装置700は、ステップS707に進む。それ以外の場合、検索操作装置700は、ステップS708に進む。
暗号化検索結果{C}は、データ管理装置800が検索処理を実行した結果ヒットした少なくとも1つの暗号文データCから成る集合である。
復号部740は、ユーザデータ鍵UDKを用いて、暗号化検索結果{C}に含まれる各暗号文データCから平文Mを復号する。
本ステップを実行することによって得られた少なくとも1つの平文Mから成る集合を、検索結果{M}とする。
出力部750は、検索結果{M}を出力する。
出力部750は、具体例として、入出力インタフェース704を介して、ディスプレイに検索結果{M}を表示する。
検索結果{M}が得られなかった場合、出力部750は、具体例として、検索された平文Mが無い、もしくは復号できなかった旨のメッセージを表示する。検索結果{M}が得られなかった場合は、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方が一致する可能性がない場合、検索された暗号文データCが無い場合、又は暗号文データCから平文Mを復号できなかった場合である。
データ検索処理は、データ管理装置800によって実行される処理である。
受付部810は、通信装置805を用いて、検索クエリSQと索引クエリIQとを検索操作装置700から受信する。
索引照合部841は、記憶部891から公開索引群{I′}と、索引開示位置情報Posとを読み出す。{I′}は、少なくとも1つの索引Iから成る集合である。{I′}の各要素をIi′と表す。Ii′と暗号化索引EIiとは、暗号化タグCTiにそれぞれ対応する。暗号化タグCTiは、暗号化タグ生成部627が複数の互いに異なる登録キーワードWを用いて複数の暗号化タグを生成し、各暗号化タグに通し番号を割り当てた場合における、i番目の暗号化タグである。各公開索引Ii′は、暗号化索引を復号した値から成る。
Ii′_j[Qb_1,・・・,Qb_L] = IQ_j
それ以外の場合、データ管理装置800は、ステップS826に進む。
このとき、部分索引クエリIQ′は、次のように索引開示位置情報Posから抽出される。
IQ′=(IQ_1,IQ_2)
IQ_1 = (IQ_1_1,・・・,IQ_L_1)
IQ_2 = (IQ_1_2,・・・,IQ_L_2)
即ち、IQ′は、索引クエリIQの1番目の要素と2番目の要素とを抽出したものである。
Ii′ = (Ii′_1,Ii′_2)
Ii′_1 = (Ii′_10_1,Ii′_11_1,・・・,Ii′_L0_1,Ii′_L1_1)
Ii′_2 = (Ii′_10_2,Ii′_11_2,・・・,Ii′_L0_2,Ii′_L1_2)
iは、1以上N以下の整数である。
Ii′_1[Qb_1,・・・,Qb_L] = IQ_1
Ii′_2[Qb_1,・・・,Qb_L] = IQ_2
ここで、Qb_1,・・・,Qb_Lは、検索クエリSQに含まれる値である。
Ii′_1[0,・・・,0] = IQ_1 = (1,・・・,0)
Ii′_2[0,・・・,0] = IQ_2 = (0,・・・,0)
暗号化タグ抽出部842は、ステップS822において部分索引クエリIQ′と一致した公開索引群{Ii′}に対応づけて保管されている暗号化タグ群{CTi}を抽出する。
ここで、暗号化タグ群の要素数をnとする。即ち、暗号化タグ群{CTi}={CT1,・・・,CTn}である。
暗号化タグ照合部843は、ステップS823で抽出された暗号化タグ群{CTi}={CT1,・・・,CTn}と、検索クエリSQとを照合する。
R_j′ = CTi_{j,Qb_j,W}+G_3(SQ_j|R_0)
VER′ = G_4(R_1′+・・・+R_L′)
jは、1以上L以下の整数である。
暗号文データ抽出部844は、暗号文データ群{CTi′}を抽出する。暗号文データ群{CTi′}は、ステップS824において検索クエリSQと一致した暗号化タグから成る集合である。この暗号文データ群{CTi′}を暗号化検索結果{C}と呼ぶ。
ステップS825において暗号化検索結果{C}が抽出された場合、出力部850は、通信装置805を用いて、ステップS825で抽出された暗号化検索結果{C}を検索操作装置700へ送信する。
それ以外の場合、出力部850は、何もせずに本フローチャートの処理を終了してもよく、検索結果{C}がないことを示す情報を検索操作装置700へ送信してもよい。
データ削除処理は、登録装置600又は検索操作装置700と、データ管理装置800とによって実行される処理である。
受付部610又は受付部710は、削除するファイルの名称を削除ファイル名として受け付ける。削除ファイル名は、具体例として、検索操作処理によって得られる。
受付部610が削除ファイル名を受け付けた場合、出力部640は、通信装置605を用いて、削除ファイル名をデータ管理装置800へ送信する。
受付部810は、通信装置805を用いて、登録装置600もしくは検索操作装置700から削除ファイル名を受信する。
受付部810は、削除ファイル名に対応する暗号化データCと暗号化タグCTと暗号化索引EIと索引Iとを記憶部891から削除する。
以上のように、本実施の形態に係る秘匿検索システム100によれば、マルチユーザ型の秘匿検索を、公開鍵暗号技術を用いずに共通鍵暗号技術を用いて実現することができる。
検索操作装置700は、部分的に開示された索引開示鍵に対応する索引クエリを、検索者に対応するユーザ鍵を使って生成する。
データ管理装置800は、検索対象とする暗号化タグを、索引と索引クエリとを使って絞り込む。そのため、データ管理装置800は、索引を使うことにより不要な秘匿検索の少なくとも一部を実行せずに済む。
これらのことにより、秘匿検索システム100は、マルチユーザ型の共通鍵方式における検索処理を比較的高速に実行することができる。
<変形例1>
本明細書に記載されている少なくとも2つの装置は、1つのコンピュータから成ってもよい。
データ管理装置800は、公開されている索引開示鍵IKを全て使用しなくてもよい。本変形例において、索引開示位置情報Posは、データ管理装置800が用いた索引開示鍵IKに対応する索引Iの位置を示す情報のみから成る。
図27は、本変形例に係るマスター鍵装置200のハードウェア構成例を示している。
マスター鍵装置200は、プロセッサ201とメモリ202と補助記憶装置203との少なくとも1つに代えて、処理回路209を備える。
処理回路209は、受付部210と生成部220と出力部230と記憶部291との少なくとも一部を実現するハードウェアである。
処理回路209は、専用のハードウェアであってもよく、メモリ202に格納されるプログラムを実行するプロセッサ201であってもよい。
マスター鍵装置200は、処理回路209を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路209の役割を分担する。
プロセッサ201とメモリ202と補助記憶装置203と処理回路209とを、総称して「プロセッシングサーキットリー」という。つまり、マスター鍵装置200の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
図28は、本変形例に係る登録鍵装置300のハードウェア構成例を示している。
登録鍵装置300は、プロセッサ301とメモリ302と補助記憶装置303との少なくとも1つに代えて、処理回路309を備える。処理回路309は、処理回路209と同様である。
処理回路309は、受付部310と生成部320と出力部330と記憶部391との少なくとも一部を実現するハードウェアである。
登録鍵装置300の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
図29は、本変形例に係る索引開示鍵装置400のハードウェア構成例を示している。
索引開示鍵装置400は、プロセッサ401とメモリ402と補助記憶装置403との少なくとも1つに代えて、処理回路409を備える。処理回路409は、処理回路209と同様である。
処理回路409は、受付部410と生成部420と出力部430と記憶部491との少なくとも一部を実現するハードウェアである。
索引開示鍵装置400の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
図30は、本変形例に係るユーザ鍵装置500のハードウェア構成例を示している。
ユーザ鍵装置500は、プロセッサ501とメモリ502と補助記憶装置503との少なくとも1つに代えて、処理回路509を備える。処理回路509は、処理回路209と同様である。
処理回路509は、受付部510と生成部520と出力部530と記憶部591とを実現するハードウェアである。
ユーザ鍵装置500の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
図31は、本変形例に係る登録装置600のハードウェア構成例を示している。
登録装置600は、プロセッサ601とメモリ602と補助記憶装置603との少なくとも1つに代えて、処理回路609を備える。処理回路609は、処理回路209と同様である。
処理回路609は、受付部610と生成部620と登録部630と出力部640と記憶部691との少なくとも一部を実現するハードウェアである。
登録装置600の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
図32は、本変形例に係る検索操作装置700のハードウェア構成例を示している。
検索操作装置700は、プロセッサ701とメモリ702と補助記憶装置703との少なくとも1つに代えて、処理回路709を備える。処理回路709は、処理回路209と同様である。
処理回路709は、受付部710と生成部720と要求部730と復号部740と出力部750と記憶部791との少なくとも一部を実現するハードウェアである。
検索操作装置700の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
図33は、本変形例に係るデータ管理装置800のハードウェア構成例を示している。
データ管理装置800は、プロセッサ801とメモリ802と補助記憶装置803との少なくとも1つに代えて、処理回路809を備える。処理回路809は、処理回路209と同様である。
処理回路809は、受付部810と復号部820と登録部830と検索部840と出力部850と記憶部891との少なくとも一部を実現するハードウェアである。
データ管理装置800の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
実施の形態1について説明したが、本実施の形態のうち、複数の部分を組み合わせて実施しても構わない。あるいは、本実施の形態のうち、1つの部分を実施しても構わない。その他、本実施の形態は、必要に応じて種々の変更がなされても構わず、全体としてあるいは部分的に、どのように組み合わせて実施されても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本開示と、その適用物と、用途の範囲とを制限することを意図するものではない。フローチャート等を用いて説明した手順は、適宜変更してもよい。
Claims (10)
- 登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶している登録データ記憶部と、
前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成する索引生成部と、
前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成する暗号化索引生成部と
を備える登録装置を備える秘匿検索システム。 - 前記登録装置は、乱数を暗号化タグ乱数として生成する乱数生成部と、前記権限者属性情報と、前記登録キーワードと、前記ユーザ鍵関数と、前記検索クエリ関数とを用いて、前記登録キーワードに対応する中間タグを生成する中間タグ生成部と、前記中間タグと、前記暗号化タグ乱数と、前記登録キーワードが組み込まれた暗号化タグを生成する暗号化タグ関数とを用いて前記暗号化タグを生成する暗号化タグ生成部とを備え、
前記索引生成部は、前記中間タグを用いて前記登録キーワード索引を生成する請求項1に記載の秘匿検索システム。 - 前記検索クエリを記憶している管理データ記憶部と、
前記暗号化タグを受け付け、かつ、前記暗号化タグを管理データ記憶部に記憶させる管理データ受付部と
を備えるデータ管理装置を備え、
前記暗号化タグ生成部は、前記登録キーワードと、前記暗号化タグ乱数と、前記暗号化タグ関数と、暗号化タグに対応する暗号化タグ照合子を生成する照合子関数とを用いて前記暗号化タグ照合子を生成し、かつ、前記暗号化タグ乱数と、前記暗号化タグ照合子を前記暗号化タグに結合し、
前記登録装置は、前記暗号化タグを前記データ管理装置に出力する登録データ出力部を備え、
前記データ管理装置は、前記暗号化タグと、前記検索クエリと、前記暗号化タグに結合された前記暗号化タグ乱数と、前記暗号化タグ関数と、前記照合子関数とを用いて、前記検索キーワードが前記登録キーワードと一致しているか否かを判定するための判定用照合子を生成し、かつ、前記判定用照合子と、前記暗号化タグに結合された暗号化タグ照合子とが等しい場合に、前記登録キーワードと、前記検索キーワードとが一致していると判定する照合処理を実行する暗号化タグ照合部を備える請求項2に記載の秘匿検索システム。 - 前記索引開示鍵は、前記暗号化索引の少なくとも一部を復号することができる鍵であり、
前記管理データ記憶部は、前記索引開示鍵と、前記索引クエリとを記憶しており、
前記登録データ出力部は、前記暗号化索引を前記データ管理装置に出力し、
前記管理データ受付部は、前記暗号化索引を受け付け、かつ、前記暗号化索引を前記管理データ記憶部に記憶させ、
前記データ管理装置は、前記索引開示鍵を用いて前記暗号化索引を復号することによって前記登録キーワード索引の少なくとも一部である部分登録キーワード索引を生成する暗号化索引復号部と、前記索引クエリに含まれ、かつ、前記部分登録キーワード索引に対応する部分索引クエリと、前記部分登録キーワード索引とが一致している場合に、前記登録キーワード及び前記検索キーワードと、前記権限者属性情報及び前記検索者属性情報とがそれぞれ一致している可能性があると判定する索引照合部とを備え、
前記暗号化タグ照合部は、前記登録キーワード及び前記検索キーワードと、権限者属性情報及び検索者属性情報とがそれぞれ一致している可能性があると前記索引照合部が判定した場合に、前記照合処理を実行する請求項3に記載の秘匿検索システム。 - 前記管理データ記憶部は、前記暗号化索引の前記少なくとも一部に対応する位置を示す索引開示位置情報を記憶しており、
前記索引照合部は、前記索引クエリの内、前記索引開示位置情報に対応する部分を前記部分索引クエリとする請求項4に記載の秘匿検索システム。 - 前記ユーザ鍵と、前記検索キーワードとを記憶している検索データ記憶部と、
前記ユーザ鍵と、前記検索キーワードと、前記検索クエリ関数とを用いて前記検索クエリを生成する検索クエリ生成部と、
前記検索クエリと、前記索引クエリ関数とを用いて前記索引クエリを生成する索引クエリ生成部と、
前記検索クエリと、前記索引クエリとを前記データ管理装置に出力する検索データ出力部と
を備える検索操作装置を備え、
前記管理データ受付部は、前記検索クエリと、前記索引クエリとを受け付け、かつ、前記検索クエリと、前記索引クエリとを前記管理データ記憶部に記憶させる請求項4又は5に記載の秘匿検索システム。 - 前記検索者属性情報を記憶しているユーザデータ記憶部と、
前記検索者属性情報と、前記ユーザ鍵関数とを用いて前記ユーザ鍵を生成するユーザ鍵生成部と、
前記ユーザ鍵を前記検索操作装置に出力するユーザデータ出力部と
を備えるユーザ鍵装置を備え、
前記検索操作装置は、前記ユーザ鍵を受け付け、かつ、前記ユーザ鍵を前記検索データ記憶部に記憶させる検索データ受付部を備える請求項6に記載の秘匿検索システム。 - 前記権限者属性情報は、前記検索者属性情報に含まれる属性がどのようなものであっても前記検索者属性情報に対応する検索者に前記登録キーワードを検索することを許可することを示すワイルドカードを含んでおり、
前記中間タグ生成部は、前記ワイルドカードを前記中間タグに組み込む請求項2から7のいずれか1項に記載の秘匿検索システム。 - コンピュータである登録装置が備える登録データ記憶部が、登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶しており、
前記登録装置が備える索引生成部が、前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成し、
前記登録装置が備える暗号化索引生成部が、前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成する秘匿検索方法。 - 登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶しているコンピュータに、
前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成させ、
前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成させる秘匿検索プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/000845 WO2021144834A1 (ja) | 2020-01-14 | 2020-01-14 | 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021144834A1 JPWO2021144834A1 (ja) | 2021-07-22 |
JP7016458B2 true JP7016458B2 (ja) | 2022-02-04 |
Family
ID=76863898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021564626A Active JP7016458B2 (ja) | 2020-01-14 | 2020-01-14 | 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220277100A1 (ja) |
JP (1) | JP7016458B2 (ja) |
CN (1) | CN114902314A (ja) |
DE (1) | DE112020005626T5 (ja) |
WO (1) | WO2021144834A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114945963A (zh) * | 2020-01-14 | 2022-08-26 | 三菱电机株式会社 | 登记装置、检索操作装置、数据管理装置、登记程序、检索操作程序以及数据管理程序 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019142651A1 (ja) | 2018-01-17 | 2019-07-25 | 三菱電機株式会社 | 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム |
WO2019215818A1 (ja) | 2018-05-08 | 2019-11-14 | 三菱電機株式会社 | 登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラム |
-
2020
- 2020-01-14 DE DE112020005626.0T patent/DE112020005626T5/de active Pending
- 2020-01-14 CN CN202080092007.4A patent/CN114902314A/zh active Pending
- 2020-01-14 JP JP2021564626A patent/JP7016458B2/ja active Active
- 2020-01-14 WO PCT/JP2020/000845 patent/WO2021144834A1/ja active Application Filing
-
2022
- 2022-05-11 US US17/742,179 patent/US20220277100A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019142651A1 (ja) | 2018-01-17 | 2019-07-25 | 三菱電機株式会社 | 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム |
WO2019215818A1 (ja) | 2018-05-08 | 2019-11-14 | 三菱電機株式会社 | 登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラム |
Non-Patent Citations (3)
Title |
---|
平野 貴人,アクセス制御可能な共通鍵検索可能暗号の高安全化と高速化,2020年 暗号と情報セキュリティシンポジウム(SCIS2020)予稿集、[USB] 2020年 暗,2020年01月21日,pp.1-8 |
平野 貴人,共通鍵暗号技術のみから構成されたマルチユーザ秘匿検索,2018年 暗号と情報セキュリティシンポジウム(SCIS2018)予稿集 [USB] 2018年 暗,2018年01月23日,pp.1-8 |
平野 貴人,確定値を部分的に使った高速な共通鍵暗号ベース秘匿検索,CSS2017 コンピュータセキュリティシンポジウム2017 論文集 合同開催 マルウェア対策研究人,日本,一般社団法人情報処理学会 コンピュータセキュリティ,2017年10月16日,pp.749-756 |
Also Published As
Publication number | Publication date |
---|---|
WO2021144834A1 (ja) | 2021-07-22 |
CN114902314A (zh) | 2022-08-12 |
JPWO2021144834A1 (ja) | 2021-07-22 |
DE112020005626T5 (de) | 2022-09-01 |
US20220277100A1 (en) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110326253B (zh) | 用于对加密数据进行模糊关键字搜索的方法和系统 | |
US9977918B2 (en) | Method and system for verifiable searchable symmetric encryption | |
WO2012095973A1 (ja) | データ処理装置及びデータ保管装置 | |
US10872158B2 (en) | Secret search system, secret search method, and computer readable medium | |
US20170288858A1 (en) | Server apparatus, search system, terminal apparatus, search method, non-transitory computer readable medium storing server program, and non-transitory computer readable medium storing terminal program | |
US11233629B2 (en) | Registration apparatus, search operation apparatus, data management apparatus | |
JP2012164031A (ja) | データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム | |
CN108370312B (zh) | 加密装置、检索装置、计算机能读取的记录介质、加密方法和检索方法 | |
CN111052108A (zh) | 数据处理装置、数据处理方法和数据处理程序 | |
JP7016458B2 (ja) | 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム | |
US11902418B2 (en) | Registration device, search operation device, and data management device | |
US20230289345A1 (en) | Searchable encryption system | |
JP6672451B2 (ja) | 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法 | |
Handa et al. | Keyword binning-based efficient search on encrypted cloud data | |
US11106740B2 (en) | Search device, search system, search method, and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211029 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20211029 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211130 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211215 |
|
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: 20211228 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220125 |